Amazon RDS for Db2 DB 인스턴스에 대한 공통 시스템 작업 수행 - Amazon Relational Database Service

Amazon RDS for Db2 DB 인스턴스에 대한 공통 시스템 작업 수행

Db2를 실행하는 Amazon RDS DB 인스턴스에서 시스템과 관련된 일반적인 데이터베이스 관리 작업을 수행할 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

사용자 지정 데이터베이스 엔드포인트 생성

Amazon RDS for Db2로 마이그레이션할 때 사용자 지정 데이터베이스 엔드포인트 URL을 사용하여 애플리케이션 변경을 최소화할 수 있습니다. 예를 들어, db2.example.com을 현재 DNS 레코드로 사용하는 경우 Amazon Route 53에 추가할 수 있습니다. Route 53에서는 프라이빗 호스팅 영역을 사용하여 현재 DNS 데이터베이스 엔드포인트를 RDS for Db2 데이터베이스 엔드포인트에 매핑할 수 있습니다. Amazon RDS 데이터베이스 엔드포인트에 대해 사용자 지정 A 또는 CNAME 레코드를 추가하려면 Amazon Route 53 개발자 안내서의 Amazon Route 53을 사용한 도메인 등록 및 관리를 참조하세요.

참고

도메인을 Route 53으로 이전할 수 없는 경우 DNS 공급자를 사용하여 RDS for Db2 데이터베이스 엔드포인트 URL에 대한 CNAME 레코드를 생성할 수 있습니다. DNS 공급자 설명서를 참조하세요.

권한 부여 및 취소

사용자는 데이터베이스에 연결된 그룹의 멤버십을 통해 데이터베이스에 액세스할 수 있습니다.

다음 프로시저를 사용하여 데이터베이스에 대한 액세스를 제어할 수 있는 권한을 부여하거나 취소할 수 있습니다.

이 프로시저는 로컬 머신에서 IBM Db2 CLP를 실행하여 RDS for Db2 DB 인스턴스에 연결합니다. 로컬 머신에서 실행되는 RDS for Db2 DB 인스턴스에 연결하려면 TCPIP 노드와 데이터베이스를 카탈로그화해야 합니다. 자세한 내용은 IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결 단원을 참조하십시오.

사용자에게 데이터베이스 액세스 권한 부여

사용자에게 데이터베이스 액세스 권한을 부여하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password

    다음 예제와 비슷한 출력이 생성됩니다.

    Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN
  2. rdsadmin.add_user를 호출하여 권한 부여 목록에 사용자를 추가합니다. 자세한 내용은 rdsadmin.add_user 단원을 참조하십시오.

    db2 "call rdsadmin.add_user( 'username', 'password', 'group_name,group_name')"
  3. (선택 사항) rdsadmin.add_groups를 호출하여 사용자에게 그룹을 더 추가합니다. 자세한 내용은 rdsadmin.add_groups 단원을 참조하십시오.

    db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"
  4. 사용자가 사용할 수 있는 권한을 확인합니다. 다음 예제에서 rds_database_alias, master_user, master_password를 사용자 자체 정보로 바꿉니다. username도 사용자의 사용자 이름으로 대체합니다.

    db2 terminate db2 connect to rds_database_alias user master_user using master_password db2 "SELECT SUBSTR(AUTHORITY,1,20) AUTHORITY, D_USER, D_GROUP, D_PUBLIC FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('username', 'U') ) AS T ORDER BY AUTHORITY"

    다음 예제와 비슷한 출력이 생성됩니다.

    AUTHORITY D_USER D_GROUP D_PUBLIC -------------------- ------ ------- -------- ACCESSCTRL N N N BINDADD N N N CONNECT N N N CREATETAB N N N CREATE_EXTERNAL_ROUT N N N CREATE_NOT_FENCED_RO N N N CREATE_SECURE_OBJECT N N N DATAACCESS N N N DBADM N N N EXPLAIN N N N IMPLICIT_SCHEMA N N N LOAD N N N QUIESCE_CONNECT N N N SECADM N N N SQLADM N N N SYSADM * N * SYSCTRL * N * SYSMAINT * N * SYSMON * N * WLMADM N N N
  5. 사용자를 추가한 그룹에 RDS for Db2 역할 ROLE_NULLID_PACKAGES, ROLE_TABLESPACES, ROLE_PROCEDURES를 부여합니다. 자세한 내용은 Amazon RDS for Db2 기본 역할 단원을 참조하십시오.

    참고

    RESTRICTIVE 모드에서 RDS for Db2 DB 인스턴스를 생성합니다. 따라서 RDS for Db2 역할 ROLE_NULLID_PACKAGES, ROLE_TABLESPACES, ROLE_PROCEDURES는 IBM Db2 CLP 및 Dynamic SQL에 대해 NULLID 패키지에서 실행 권한을 부여합니다. 또한 이러한 역할은 테이블스페이스에 대한 사용자 권한을 부여합니다.

    1. Db2 데이터베이스에 연결합니다. 다음 예제에서 database_name, master_user, master_password를 사용자 자체 정보로 바꿉니다.

      db2 connect to database_name user master_user using master_password
    2. 그룹에 ROLE_NULLED_PACKAGES 역할을 부여합니다. 다음 예제에서 group_name을 역할을 추가하려는 그룹의 이름으로 바꿉니다.

      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
    3. 동일한 그룹에 ROLE_TABLESPACES 역할을 부여합니다. 다음 예제에서 group_name을 역할을 추가하려는 그룹의 이름으로 바꿉니다.

      db2 "grant role ROLE_TABLESPACES to group group_name"
    4. 동일한 그룹에 ROLE_PROCEDURES 역할을 부여합니다. 다음 예제에서 group_name을 역할을 추가하려는 그룹의 이름으로 바꿉니다.

      db2 "grant role ROLE_PROCEDURES to group group_name"
  6. 사용자를 추가한 그룹에 connect, bindadd, createtab, IMPLICIT_SCHEMA 권한을 부여합니다. 다음 예제에서 group_name을 사용자를 추가한 두 번째 그룹의 이름으로 대체합니다.

    db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public" db2 "grant connect, bindadd, createtab, implicit_schema on database to group group_name"
  7. 사용자를 추가한 각 추가 그룹에 대해 4~6단계를 반복합니다.

  8. 사용자로 연결하고, 표를 만들고, 표에 값을 넣고, 표에서 데이터를 반환하여 사용자의 액세스 권한을 테스트합니다. 다음 예제에서 rds_database_alias, username, password를 데이터베이스 이름과 사용자의 사용자 이름 및 암호로 바꿉니다.

    db2 connect to rds_database_alias user username using password db2 "create table t1(c1 int not null)" db2 "insert into t1 values (1),(2),(3),(4)" db2 "select * from t1"

사용자의 암호 변경

사용자의 암호를 변경하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.change_password를 호출하여 암호를 변경합니다. 자세한 내용은 rdsadmin.change_password 단원을 참조하십시오.

    db2 "call rdsadmin.change_password( 'username', 'new_password')"

사용자에게 그룹 추가

사용자에게 그룹을 추가하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.add_groups를 호출하여 사용자에게 그룹을 추가합니다. 자세한 내용은 rdsadmin.add_groups 단원을 참조하십시오.

    db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"

사용자로부터 그룹 제거

사용자로부터 그룹을 제거하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.remove_groups를 호출하여 그룹을 제거합니다. 자세한 내용은 rdsadmin.remove_groups 단원을 참조하십시오.

    db2 "call rdsadmin.remove_groups( 'username', 'group_name,group_name')"

사용자 제거

권한 부여 목록에서 사용자를 제거하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.remove_user를 호출하여 권한 부여 목록에서 사용자를 제거합니다. 자세한 내용은 rdsadmin.remove_user 단원을 참조하십시오.

    db2 "call rdsadmin.remove_user('username')"

사용자 표시

권한 부여 목록에 사용자를 표시하려면 rdsadmin.list_users 저장 프로시저를 호출하세요. 자세한 내용은 rdsadmin.list_users 단원을 참조하십시오.

db2 "call rdsadmin.list_users()"

역할 생성

rdsadmin.create_role 저장 프로시저를 사용하여 역할을 생성할 수 있습니다.

역할을 생성하려면
  1. rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. 콘텐츠를 출력하도록 Db2를 설정합니다.

    db2 set serveroutput on
  3. 역할을 생성합니다. 자세한 내용은 rdsadmin.create_role 단원을 참조하십시오.

    db2 "call rdsadmin.create_role( 'database_name', 'role_name')"
  4. 콘텐츠를 출력하지 않도록 Db2를 설정합니다.

    db2 set serveroutput off

역할 부여

rdsadmin.grant_role 저장 프로시저를 사용하여 역할, 사용자 또는 그룹에 역할을 할당할 수 있습니다.

역할을 할당하려면
  1. rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. 콘텐츠를 출력하도록 Db2를 설정합니다.

    db2 set serveroutput on
  3. 역할을 할당합니다. 자세한 내용은 rdsadmin.grant_role 단원을 참조하십시오.

    db2 "call rdsadmin.grant_role( 'database_name', 'role_name', 'grantee', 'admin_option')"
  4. 콘텐츠를 출력하지 않도록 Db2를 설정합니다.

    db2 set serveroutput off

역할 취소

rdsadmin.revoke_role 저장 프로시저를 사용하여 역할, 사용자 또는 그룹에서 역할을 취소할 수 있습니다.

역할을 취소하려면 다음과 같이 하세요.
  1. rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. 역할을 취소합니다. 자세한 내용은 rdsadmin.revoke_role 단원을 참조하십시오.

    db2 "call rdsadmin.revoke_role( ?, 'database_name', 'role_name', 'grantee')"

데이터베이스 권한 부여

DBADM 권한을 가진 마스터 사용자는 역할, 사용자 또는 그룹에 DBADM, ACCESSCTRL 또는 DATAACCESS 권한을 부여할 수 있습니다.

데이터베이스에 권한을 부여하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.dbadm_grant를 호출하여 사용자에게 액세스 권한을 부여합니다. 자세한 내용은 rdsadmin.dbadm_grant 단원을 참조하십시오.

    db2 "call rdsadmin.dbadm_grant( ?, 'database_name, 'authorization', 'grantee')"

사용 사례

다음 절차는 역할 생성, 역할에 DBADM 권한 부여, 사용자에게 역할 할당 및 그룹에 역할 할당 과정을 안내합니다.

  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. TESTDB 데이터베이스에 대해 PROD_ROLE 역할을 생성합니다. 자세한 내용은 rdsadmin.create_role 단원을 참조하십시오.

    db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
  3. PROD_USER 사용자에게 역할을 할당합니다. PROD_USER에 역할을 할당할 수 있는 관리자 권한이 부여됩니다. 자세한 내용은 rdsadmin.grant_role 단원을 참조하십시오.

    db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
  4. (선택 사항) 추가 권한을 제공합니다. 다음 예제에서는 FUNDPROD 데이터베이스에 대해 PROD_ROLE 역할에 DBADM 권한을 부여합니다. 자세한 내용은 rdsadmin.dbadm_grant 단원을 참조하십시오.

    db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
  5. 세션을 종료합니다.

    db2 terminate
  6. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 TESTDB 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to TESTDB user master_username using master_password
  7. 역할에 더 많은 권한을 추가합니다.

    db2 "grant connect, implicit_schema on database to role PROD_ROLE"
  8. 그룹에 PROD_ROLE 역할을 부여합니다.

    db2 "grant role PROD_ROLE to group PRODGRP"

PRODGRP 그룹에 속한 사용자는 이제 TESTDB 데이터베이스 연결, 테이블 생성 또는 스키마 생성과 같은 작업을 수행할 수 있습니다.

데이터베이스 권한 취소

DBADM 권한을 가진 마스터 사용자는 역할, 사용자 또는 그룹의 DBADM, ACCESSCTRL 또는 DATAACCESS 권한을 취소할 수 있습니다.

데이터베이스 권한을 취소하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. rdsadmin.dbadm_revoke를 호출하여 사용자 액세스 권한을 취소합니다. 자세한 내용은 rdsadmin.dbadm_revoke 단원을 참조하십시오.

    db2 "call rdsadmin.dbadm_revoke( ?, 'database_name, 'authorization', 'grantee')"

원격 RDS for Db2 DB 인스턴스에 연결

원격 RDS for Db2 DB 인스턴스에 연결하려면
  1. 클라이언트 측 IBM Db2 CLP 세션을 실행합니다. RDS for Db2 DB 인스턴스 및 데이터베이스 카탈로그화에 대한 자세한 내용은 IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결 섹션을 참조하세요. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 기록해 둡니다.

  2. RDS for Db2 DB 인스턴스에 연결합니다. 다음 예제에서 node_name, master_username, master_password를 카탈로그화한 TCPIP 노드 이름과 RDS for Db2 DB 인스턴스의 마스터 사용자 이름 및 마스터 암호로 대체합니다.

    db2 attach to node_name user master_username using master_password

원격 RDS for Db2 DB 인스턴스에 연결한 후 다음 명령 및 기타 get snapshot 명령을 실행할 수 있습니다. 자세한 내용은 IBM Db2 설명서의 GET SNAPSHOT 명령을 참조하세요.

db2 list applications db2 get snapshot for all databases db2 get snapshot for database manager db2 get snapshot for all applications