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

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

授予和撤銷 Db2 RDS 的 權限

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

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

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

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

授予使用者對資料庫的存取權
  1. 使用RDS適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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_alias, master_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適用於 Db2 的 Amazon 預設角色

    注意

    我們在 RESTRICTIVE 模式中RDS為 Db2 資料庫執行個體建立 。因此, RDS的 Db2 角色 ROLE_NULLID_PACKAGESROLE_TABLESPACESROLE_PROCEDURES授予 的 NULLID 套件執行權限 IBM Db2 CLP 以及 Dynamic SQL。 這些角色也會授予使用者資料表空間的權限。

    1. 連線至 Db2 資料庫。在下列範例中,取代 database_name, master_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. connectcreatetabbindaddIMPLICIT_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_alias, usernamepassword 具有資料庫的名稱和使用者的使用者名稱和密碼。

    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適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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_username 以及 master_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_username 以及 master_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_username 以及 master_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授權的主要使用者可以將 ACCESSCTRLDBADMDATAACCESS授權授予角色、使用者或群組。

授予資料庫授權
  1. 使用RDS適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_password 使用您自己的資訊。

    db2 connect to rdsadmin user master_username using master_password
  2. 建立名為 PROD_ROLE的資料庫的 角色TESTDB。如需詳細資訊,請參閱rdsadmin.create_role

    db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
  3. 將角色指派給名為 的使用者PROD_USERPROD_USER 獲得管理員授權來指派角色。如需詳細資訊,請參閱rdsadmin.grant_role

    db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')"
  4. (選用) 提供額外的授權或權限。下列範例會授予DBADM授權給名為 PROD_ROLE的資料庫角色FUNDPROD。如需詳細資訊,請參閱rdsadmin.dbadm_grant

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

    db2 terminate
  6. 使用RDS適用於 Db2 TESTDB 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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適用於 Db2 rdsadmin 資料庫執行個體的主使用者名稱和主密碼連線至資料庫。在下列範例中,取代 master_username 以及 master_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')"