RDS for Db2에 대한 권한 부여 및 취소
사용자는 데이터베이스에 연결된 그룹의 멤버십을 통해 데이터베이스에 액세스할 수 있습니다.
다음 프로시저를 사용하여 데이터베이스에 대한 액세스를 제어할 수 있는 권한을 부여하거나 취소할 수 있습니다.
이 프로시저는 로컬 머신에서 IBM Db2 CLP를 실행하여 RDS for Db2 DB 인스턴스에 연결합니다. 로컬 머신에서 실행되는 RDS for Db2 DB 인스턴스에 연결하려면 TCPIP 노드와 데이터베이스를 카탈로그화해야 합니다. 자세한 내용은 IBM Db2 CLP을 사용하여 Amazon RDS for Db2 DB 인스턴스에 연결 단원을 참조하십시오.
주제
사용자에게 데이터베이스 액세스 권한 부여
사용자에게 데이터베이스 액세스 권한을 부여하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
다음 예제와 비슷한 출력이 생성됩니다.
Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN
-
rdsadmin.add_user
를 호출하여 권한 부여 목록에 사용자를 추가합니다. 자세한 내용은 rdsadmin.add_user 단원을 참조하십시오.db2 "call rdsadmin.add_user( '
username
', 'password
', 'group_name
,group_name
')" -
(선택 사항)
rdsadmin.add_groups
를 호출하여 사용자에게 그룹을 더 추가합니다. 자세한 내용은 rdsadmin.add_groups 단원을 참조하십시오.db2 "call rdsadmin.add_groups( '
username
', 'group_name
,group_name
')" -
사용자가 사용할 수 있는 권한을 확인합니다. 다음 예제에서
rds_database_alias
,master_user
,master_password
를 사용자 자체 정보로 바꿉니다.username
도 사용자의 사용자 이름으로 대체합니다.db2 terminate db2 connect to
rds_database_alias
usermaster_user
usingmaster_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
-
사용자를 추가한 그룹에 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
패키지에서 실행 권한을 부여합니다. 또한 이러한 역할은 테이블스페이스에 대한 사용자 권한을 부여합니다.-
Db2 데이터베이스에 연결합니다. 다음 예제에서
database_name
,master_user
,master_password
를 사용자 자체 정보로 바꿉니다.db2 connect to
database_name
usermaster_user
usingmaster_password
-
그룹에
ROLE_NULLED_PACKAGES
역할을 부여합니다. 다음 예제에서group_name
을 역할을 추가하려는 그룹의 이름으로 바꿉니다.db2 "grant role ROLE_NULLID_PACKAGES to group
group_name
" -
동일한 그룹에
ROLE_TABLESPACES
역할을 부여합니다. 다음 예제에서group_name
을 역할을 추가하려는 그룹의 이름으로 바꿉니다.db2 "grant role ROLE_TABLESPACES to group
group_name
" -
동일한 그룹에
ROLE_PROCEDURES
역할을 부여합니다. 다음 예제에서group_name
을 역할을 추가하려는 그룹의 이름으로 바꿉니다.db2 "grant role ROLE_PROCEDURES to group
group_name
"
-
-
사용자를 추가한 그룹에
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
" -
사용자를 추가한 각 추가 그룹에 대해 4~6단계를 반복합니다.
-
사용자로 연결하고, 표를 만들고, 표에 값을 넣고, 표에서 데이터를 반환하여 사용자의 액세스 권한을 테스트합니다. 다음 예제에서
rds_database_alias
,username
,password
를 데이터베이스 이름과 사용자의 사용자 이름 및 암호로 바꿉니다.db2 connect to
rds_database_alias
userusername
usingpassword
db2 "create table t1(c1 int not null)" db2 "insert into t1 values (1),(2),(3),(4)" db2 "select * from t1"
사용자의 암호 변경
사용자의 암호를 변경하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
rdsadmin.change_password
를 호출하여 암호를 변경합니다. 자세한 내용은 rdsadmin.change_password 단원을 참조하십시오.db2 "call rdsadmin.change_password( '
username
', 'new_password
')"
사용자에게 그룹 추가
사용자에게 그룹을 추가하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
rdsadmin.add_groups
를 호출하여 사용자에게 그룹을 추가합니다. 자세한 내용은 rdsadmin.add_groups 단원을 참조하십시오.db2 "call rdsadmin.add_groups( '
username
', 'group_name
,group_name
')"
사용자로부터 그룹 제거
사용자로부터 그룹을 제거하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
rdsadmin.remove_groups
를 호출하여 그룹을 제거합니다. 자세한 내용은 rdsadmin.remove_groups 단원을 참조하십시오.db2 "call rdsadmin.remove_groups( '
username
', 'group_name
,group_name
')"
사용자 제거
권한 부여 목록에서 사용자를 제거하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
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 저장 프로시저를 사용하여 역할을 생성할 수 있습니다.
역할을 생성하려면
-
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
콘텐츠를 출력하도록 Db2를 설정합니다.
db2 set serveroutput on
-
역할을 생성합니다. 자세한 내용은 rdsadmin.create_role 단원을 참조하십시오.
db2 "call rdsadmin.create_role( '
database_name
', 'role_name
')" -
콘텐츠를 출력하지 않도록 Db2를 설정합니다.
db2 set serveroutput off
역할 부여
rdsadmin.grant_role 저장 프로시저를 사용하여 역할, 사용자 또는 그룹에 역할을 할당할 수 있습니다.
역할을 할당하려면
-
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
콘텐츠를 출력하도록 Db2를 설정합니다.
db2 set serveroutput on
-
역할을 할당합니다. 자세한 내용은 rdsadmin.grant_role 단원을 참조하십시오.
db2 "call rdsadmin.grant_role( '
database_name
', 'role_name
', 'grantee
', 'admin_option
')" -
콘텐츠를 출력하지 않도록 Db2를 설정합니다.
db2 set serveroutput off
역할 취소
rdsadmin.revoke_role 저장 프로시저를 사용하여 역할, 사용자 또는 그룹에서 역할을 취소할 수 있습니다.
역할을 취소하려면 다음과 같이 하세요.
-
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
역할을 취소합니다. 자세한 내용은 rdsadmin.revoke_role 단원을 참조하십시오.
db2 "call rdsadmin.revoke_role( ?, '
database_name
', 'role_name
', 'grantee
')"
역할 삭제
rdsadmin.drop_role 저장 프로시저를 사용하여 역할을 삭제할 수 있습니다.
역할을 삭제하는 방법
-
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
역할을 삭제합니다. 자세한 내용은 rdsadmin.drop_role 단원을 참조하십시오.
db2 "call rdsadmin.drop_role( ?, '
database_name
', 'role_name
')"
데이터베이스 권한 부여
DBADM
권한을 가진 마스터 사용자는 역할, 사용자 또는 그룹에 DBADM
, ACCESSCTRL
또는 DATAACCESS
권한을 부여할 수 있습니다.
데이터베이스에 권한을 부여하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
rdsadmin.dbadm_grant
를 호출하여 사용자에게 액세스 권한을 부여합니다. 자세한 내용은 rdsadmin.dbadm_grant 단원을 참조하십시오.db2 "call rdsadmin.dbadm_grant( ?, '
database_name
, 'authorization
', 'grantee
')"
사용 사례
다음 절차는 역할 생성, 역할에 DBADM
권한 부여, 사용자에게 역할 할당 및 그룹에 역할 할당 과정을 안내합니다.
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
TESTDB
데이터베이스에 대해PROD_ROLE
역할을 생성합니다. 자세한 내용은 rdsadmin.create_role 단원을 참조하십시오.db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
-
PROD_USER
사용자에게 역할을 할당합니다.PROD_USER
에 역할을 할당할 수 있는 관리자 권한이 부여됩니다. 자세한 내용은 rdsadmin.grant_role 단원을 참조하십시오.db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
-
(선택 사항) 추가 권한을 제공합니다. 다음 예제에서는
FUNDPROD
데이터베이스에 대해PROD_ROLE
역할에DBADM
권한을 부여합니다. 자세한 내용은 rdsadmin.dbadm_grant 단원을 참조하십시오.db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
-
세션을 종료합니다.
db2 terminate
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
TESTDB
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to TESTDB user
master_username
usingmaster_password
-
역할에 더 많은 권한을 추가합니다.
db2 "grant connect, implicit_schema on database to role PROD_ROLE"
-
그룹에
PROD_ROLE
역할을 부여합니다.db2 "grant role PROD_ROLE to group PRODGRP"
PRODGRP
그룹에 속한 사용자는 이제 TESTDB
데이터베이스 연결, 테이블 생성 또는 스키마 생성과 같은 작업을 수행할 수 있습니다.
데이터베이스 권한 취소
DBADM
권한을 가진 마스터 사용자는 역할, 사용자 또는 그룹의 DBADM
, ACCESSCTRL
또는 DATAACCESS
권한을 취소할 수 있습니다.
데이터베이스 권한을 취소하려면
-
RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여
rdsadmin
데이터베이스에 연결합니다. 다음 예제에서master_username
및master_password
를 사용자 자체 정보로 대체합니다.db2 connect to rdsadmin user
master_username
usingmaster_password
-
rdsadmin.dbadm_revoke
를 호출하여 사용자 액세스 권한을 취소합니다. 자세한 내용은 rdsadmin.dbadm_revoke 단원을 참조하십시오.db2 "call rdsadmin.dbadm_revoke( ?, '
database_name
, 'authorization
', 'grantee
')"