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 usermaster_usernameusingmaster_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 tords_database_aliasusermaster_userusingmaster_passworddb2 "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 todatabase_nameusermaster_userusingmaster_password -
グループにロール
ROLE_NULLED_PACKAGESを付与します。次の例では、group_nameを、ロールを追加するグループの名前に置き換えます。db2 "grant role ROLE_NULLID_PACKAGES to groupgroup_name" -
同じグループにロール
ROLE_TABLESPACESを付与します。次の例では、group_nameを、ロールを追加するグループの名前に置き換えます。db2 "grant role ROLE_TABLESPACES to groupgroup_name" -
同じグループにロール
ROLE_PROCEDURESを付与します。次の例では、group_nameを、ロールを追加するグループの名前に置き換えます。db2 "grant role ROLE_PROCEDURES to groupgroup_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 groupgroup_name" -
ユーザーを追加する追加のグループごとに、ステップ 4~6 を繰り返します。
-
ユーザーとして接続して、テーブルを作成し、テーブルに値を挿入して、テーブルからデータを返すことで、ユーザーのアクセスをテストします。次の例では、
rds_database_alias、username、passwordをデータベースの名前およびユーザーのユーザー名とパスワードに置き換えます。db2 connect tords_database_aliasuserusernameusingpassworddb2 "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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_password -
ロールを取り消します。詳細については、「rdsadmin.revoke_role」を参照してください。
db2 "call rdsadmin.revoke_role( ?, 'database_name', 'role_name', 'grantee')"
ロールの削除
ロールを削除するには
データベース認可の付与
DBADM 権限を持つマスターユーザーは、ロール、ユーザー、またはグループに DBADM、ACCESSCTRL、または DATAACCESS 権限を付与できます。
データベース認可を付与するには
-
RDS for Db2 DB インスタンスのマスターユーザー名とマスターパスワードを使用して、
rdsadminデータベースに接続します。次の例で、master_usernameとmaster_passwordを自分の情報に置き換えます。db2 connect to rdsadmin usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_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 usermaster_usernameusingmaster_password -
rdsadmin.dbadm_revokeを呼び出して、ユーザーアクセスを取り消します。詳細については、「rdsadmin.dbadm_revoke」を参照してください。db2 "call rdsadmin.dbadm_revoke( ?, 'database_name, 'authorization', 'grantee')"