Amazon RDS for Db2 DB インスタンスの一般的なシステムタスクの実行 - Amazon Relational Database Service

Amazon RDS for Db2 DB インスタンスの一般的なシステムタスクの実行

次に、Db2 を実行している Amazon RDS DB インスタンスで、システムに関連する特定の一般的なデータベース管理者タスクを実行する方法を示します。マネージド型サービスの操作性を実現するために、Amazon RDS では DB インスタンスへのシェルアクセスは提供していません。また、上位の権限を必要とする特定のシステムプロシージャやシステムテーブルへのアクセスが制限されます。

カスタムデータベースエンドポイントの作成

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_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を付与します。

    注記

    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」を参照してください。

    警告

    データベースにアタッチされているすべてのグループをユーザーから削除すると、ユーザーはデータベースに接続できなくなります。これは、Amazon RDS では、ユーザーではなくグループに権限を付与するためです。

    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 権限を持つマスターユーザーは、ロール、ユーザー、またはグループに 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 権限の付与、およびユーザーへのロールの割り当てについて説明します。

ロールを作成して、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"

データベース認証の取り消し

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

リモート 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_namemaster_usernamemaster_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 command」をご参照ください。

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