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 のデフォルトロール」を参照してください。注記
RDS for Db2 DB インスタンスは
RESTRICTIVE
モードで作成されています。このため、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
を、ユーザーを追加した 2 番目のグループの名前に置き換えます。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
')"