授予及撤銷 RDS for Db2 的權限 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

授予及撤銷 RDS for Db2 的權限

使用者可透過連接到資料庫之群組的成員資格來存取資料庫。

使用下列程序來授予及撤銷許可,以控制對資料庫的存取。

這些程序使用本機電腦上執行的 IBM Db2 CLP 來連線至 RDS for Db2 資料庫執行個體。請務必為 TCPIP 節點和資料庫編製目錄,以連線至在本機電腦上執行的 RDS for Db2 資料庫執行個體。如需詳細資訊,請參閱使用 IBM Db2 CLP 連線至 Amazon RDS for Db2 資料庫執行個體

授予使用者存取資料庫的權限

授予使用者存取資料庫的權限
  1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 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_TABLESPACESROLE_PROCEDURES 授予您新增使用者的目標群組。如需詳細資訊,請參閱Amazon RDS for Db2 預設角色

    注意

    我們會在 RESTRICTIVE 模式中建立 RDS for Db2 資料庫執行個體。因此,RDS for Db2 角色 ROLE_NULLID_PACKAGESROLE_TABLESPACESROLE_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. connectbindaddcreatetabIMPLICIT_SCHEMA 授權授予您新增使用者的目標群組。在下列範例中,將 group_name 取代為您新增使用者的第二個目標群組之名稱。

    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 資料庫執行個體的主使用者名稱和主密碼連線至 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 資料庫執行個體的主使用者名稱和主密碼連線至 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 資料庫執行個體的主使用者名稱和主密碼連線至 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 資料庫執行個體的主使用者名稱和主密碼連線至 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 授權的主要使用者可以將 DBADMACCESSCTRLDATAACCESS 授權授予角色、使用者或群組。

授予資料庫授權
  1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 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 資料庫執行個體的主使用者名稱和主密碼連線至 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 的資料庫,將 DBADM 授權授予名為 PROD_ROLE 的角色。如需詳細資訊,請參閱rdsadmin.dbadm_grant

    db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
  5. 終止您的工作階段。

    db2 terminate
  6. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 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 授權的主要使用者可以從角色、使用者或群組撤銷 DBADMACCESSCTRLDATAACCESS 授權。

撤銷資料庫授權
  1. 使用 RDS for Db2 資料庫執行個體的主使用者名稱和主密碼連線至 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')"