RDS for Db2 の権限の付与と取り消し - Amazon Relational Database Service

RDS for Db2 の権限の付与と取り消し

ユーザーは、データベースにアタッチされているグループのメンバーシップを通じてデータベースへのアクセス権を取得します。

データベースへのアクセスを制御する権限を付与および取り消すには、次の手順に従います。

これらの手順では、ローカルマシンで実行されている 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_aliasmaster_usermaster_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_PACKAGESROLE_TABLESPACES、および ROLE_PROCEDURESを付与します。詳細については、「Amazon RDS for Db2 のデフォルトロール」を参照してください。

    注記

    RDS for Db2 DB インスタンスは RESTRICTIVE モードで作成されています。このため、RDS for Db2 ロール ROLE_NULLID_PACKAGESROLE_TABLESPACES、および ROLE_PROCEDURES によって、IBM Db2 CLP および Dynamic SQL の NULLID パッケージに対する実行権限が付与されます。これらのロールによって、テーブルスペースに対するユーザー権限も付与されます。

    1. Db2 データベースに接続します。次の例で、database_namemaster_usermaster_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. ユーザーを追加したグループに connectbindaddcreatetab、および 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"
  7. ユーザーを追加する追加のグループごとに、ステップ 4~6 を繰り返します。

  8. ユーザーとして接続して、テーブルを作成し、テーブルに値を挿入して、テーブルからデータを返すことで、ユーザーのアクセスをテストします。次の例では、rds_database_aliasusernamepassword をデータベースの名前およびユーザーのユーザー名とパスワードに置き換えます。

    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')"

ロールの削除

ロールを削除するには、rdsadmin.drop_role ストアドプロシージャを使用します。

ロールを削除するには
  1. rdsadmin データベースに接続します。次の例で、master_usernamemaster_password を自分の情報に置き換えます。

    db2 connect to rdsadmin user master_username using master_password
  2. ロールを削除します。詳細については、「rdsadmin.drop_role」を参照してください。

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

データベース認可の付与

DBADM 権限を持つマスターユーザーは、ロール、ユーザー、またはグループに DBADMACCESSCTRL、または 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 権限を持つマスターユーザーは、ロール、ユーザー、またはグループの DBADMACCESSCTRL、または 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')"