Conceder e revogar privilégios do RDS para Db2
Os usuários recebem acesso aos bancos de dados por meio da participação em grupos associados aos bancos de dados.
Use os procedimentos a seguir para conceder e revogar privilégios a fim de controlar o acesso ao banco de dados.
Esses procedimentos usam IBM Db2 CLP em execução em uma máquina local para se conectar a uma instância de banco de dados do RDS para Db2. Catalogue o nó TCP/IP e o banco de dados para se conectar à instância de banco de dados do RDS para Db2 em execução na máquina local. Para obter mais informações, consulte Conectar-se à instância de banco de dados do Amazon RDS para Db2 com o IBM Db2 CLP.
Tópicos
Conceder a um usuário acesso ao banco de dados
Como conceder a um usuário acesso ao banco de dados
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_passwordEsse comando vai produzir uma saída semelhante ao seguinte exemplo:
Database Connection Information Database server = DB2/LINUXX8664 11.5.8.0 SQL authorization ID = ADMIN Local database alias = RDSADMIN -
Adicione um usuário à lista de autorizações chamando
rdsadmin.add_user. Para obter mais informações, consulte rdsadmin.add_user.db2 "call rdsadmin.add_user( 'username', 'password', 'group_name,group_name')" -
(Opcional) Adicione outros grupos ao usuário chamando
rdsadmin.add_groups. Para obter mais informações, consulte rdsadmin.add_groups.db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')" -
Confirme as autoridades que estão disponíveis para o usuário. No exemplo a seguir, substitua
rds_database_alias,master_useremaster_passwordpor suas próprias informações. Além disso, substituausernamepelo nome do usuário.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"Esse comando vai produzir uma saída semelhante ao seguinte exemplo:
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 -
Conceda os perfis do RDS para Db2
ROLE_NULLID_PACKAGES,ROLE_TABLESPACESeROLE_PROCEDURESao grupo ao qual você adicionou o usuário. Para obter mais informações, consulte Perfis padrão do Amazon RDS para Db2.nota
Criamos instâncias de banco de dados do RDS para Db2 no modo
RESTRICTIVE. Portanto, os perfis do RDS para Db2ROLE_NULLID_PACKAGES,ROLE_TABLESPACESeROLE_PROCEDURESconcedem privilégios de execução em pacotesNULLIDpara IBM Db2 CLP e Dynamic SQL. Esses perfis também concedem privilégios de usuário em espaços de tabela.-
Conecte-se ao banco de dados Db2. No exemplo a seguir, substitua
database_name,master_useremaster_passwordpor suas próprias informações.db2 connect todatabase_nameusermaster_userusingmaster_password -
Conceda o perfil
ROLE_NULLED_PACKAGESa um grupo. No exemplo a seguir, substituagroup_namepelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_NULLID_PACKAGES to groupgroup_name" -
Conceda o perfil
ROLE_TABLESPACESao mesmo grupo. No exemplo a seguir, substituagroup_namepelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_TABLESPACES to groupgroup_name" -
Conceda o perfil
ROLE_PROCEDURESao mesmo grupo. No exemplo a seguir, substituagroup_namepelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_PROCEDURES to groupgroup_name"
-
-
Conceda as autoridades
connect,bindadd,createtabeIMPLICIT_SCHEMAao grupo ao qual você adicionou o usuário. No exemplo a seguir, substituagroup_namepelo nome do segundo grupo ao qual você adicionou o usuário.db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public" db2 "grant connect, bindadd, createtab, implicit_schema on database to groupgroup_name" -
Repita as etapas 4 a 6 para cada grupo adicional ao qual o usuário foi adicionado.
-
Para testar o acesso do usuário, faça o seguinte: conecte-se como ele, crie uma tabela, insira valores nela e exiba os dados da tabela. No exemplo a seguir, substitua
rds_database_alias,usernameepasswordpelo nome do banco de dados e pelo nome de usuário e senha do usuário.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"
Alterar a senha de um usuário
Para alterar a senha de um usuário
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Altere a senha chamando
rdsadmin.change_password. Para obter mais informações, consulte rdsadmin.change_password.db2 "call rdsadmin.change_password( 'username', 'new_password')"
Adicionar grupos a um usuário
Como adicionar grupos a um usuário
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Adicione grupos a um usuário chamando
rdsadmin.add_groups. Para obter mais informações, consulte rdsadmin.add_groups.db2 "call rdsadmin.add_groups( 'username', 'group_name,group_name')"
Remover grupos de um usuário
Como remover grupos a um usuário
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Remova grupos chamando
rdsadmin.remove_groups. Para obter mais informações, consulte rdsadmin.remove_groups.db2 "call rdsadmin.remove_groups( 'username', 'group_name,group_name')"
Remover um usuário
Como remover um usuário da lista de autorizações
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Remova um usuário da lista de autorizações chamando
rdsadmin.remove_user. Para obter mais informações, consulte rdsadmin.remove_user.db2 "call rdsadmin.remove_user('username')"
Listar usuários
Para listar usuários em uma lista de autorizações, chame o procedimento armazenado rdsadmin.list_users. Para obter mais informações, consulte rdsadmin.list_users.
db2 "call rdsadmin.list_users()"
Criar uma função
É possível usar o procedimento armazenado rdsadmin.create_role para criar um perfil.
Para criar uma função
-
Conecte-se ao banco de dados
rdsadmin. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Defina o Db2 para gerar conteúdo.
db2 set serveroutput on -
Crie uma função. Para obter mais informações, consulte rdsadmin.create_role.
db2 "call rdsadmin.create_role( 'database_name', 'role_name')" -
Defina o Db2 para não gerar conteúdo.
db2 set serveroutput off
Conceder um perfil
É possível usar o procedimento armazenado rdsadmin.grant_role para atribuir um perfil a um perfil, um usuário ou um grupo.
Como atribuir um perfil
-
Conecte-se ao banco de dados
rdsadmin. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Defina o Db2 para gerar conteúdo.
db2 set serveroutput on -
Atribua um perfil. Para obter mais informações, consulte rdsadmin.grant_role.
db2 "call rdsadmin.grant_role( 'database_name', 'role_name', 'grantee', 'admin_option')" -
Defina o Db2 para não gerar conteúdo.
db2 set serveroutput off
Revogar um perfil
É possível usar o procedimento armazenado rdsadmin.revoke_role para revogar um perfil de um perfil, um usuário ou um grupo.
Como revogar um perfil
-
Conecte-se ao banco de dados
rdsadmin. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Revogue um perfil. Para obter mais informações, consulte rdsadmin.revoke_role.
db2 "call rdsadmin.revoke_role( ?, 'database_name', 'role_name', 'grantee')"
Eliminação de um perfil
É possível usar o procedimento armazenado para descartar um perfil.
Como excluir um perfil
-
Conecte-se ao banco de dados
rdsadmin. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Descarte um perfil. Para obter mais informações, consulte .
db2 "call rdsadmin.drop_role( ?, 'database_name', 'role_name')"
Conceder autorização de banco de dados
O usuário principal, que tem autorização DBADM, pode conceder a autorização DBADM, ACCESSCTRL ou DATAACCESS a um perfil, um usuário ou um grupo.
Como conceder autorização de banco de dados
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Conceda acesso a um usuário chamando
rdsadmin.dbadm_grant. Para obter mais informações, consulte rdsadmin.dbadm_grant.db2 "call rdsadmin.dbadm_grant( ?, 'database_name, 'authorization', 'grantee')"
Exemplo de caso de uso
O procedimento a seguir explica como criar um perfil, conceder autorização DBADM ao perfil, atribuir o perfil a um usuário e a um grupo.
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Crie um perfil chamado
PROD_ROLEpara um banco de dados chamadoTESTDB. Para obter mais informações, consulte rdsadmin.create_role.db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')" -
Atribua o perfil a um usuário denominado
PROD_USER. OPROD_USERrecebe autorização de administrador para atribuir perfis. Para obter mais informações, consulte rdsadmin.grant_role.db2 "call rdsadmin.grant_role( ?, 'TESTDB', 'PROD_ROLE', 'USER PROD_USER', 'Y')" -
(Opcional) Forneça autorização ou privilégios adicionais. O exemplo a seguir concede autorização
DBADMa um perfil denominadoPROD_ROLEpara um banco de dados chamadoFUNDPROD. Para obter mais informações, consulte rdsadmin.dbadm_grant.db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')" -
Encerre a sessão.
db2 terminate -
Conecte-se ao banco de dados
TESTDBusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to TESTDB usermaster_usernameusingmaster_password -
Adicione mais autorizações ao perfil.
db2 "grant connect, implicit_schema on database to role PROD_ROLE" -
Conceda o perfil
PROD_ROLEa um grupo.db2 "grant role PROD_ROLE to group PRODGRP"
Os usuários que pertencem ao grupo PRODGRP agora podem realizar ações como conectar-se ao banco de dados TESTDB, criar tabelas ou esquemas.
Revogar autorização de banco de dados
O usuário principal, que tem a autorização DBADM, pode revogar a autorização DBADM, ACCESSCTRL ou DATAACCESS de um perfil, um usuário ou um grupo.
Como revogar autorização de banco de dados
-
Conecte-se ao banco de dados
rdsadminusando o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2. No exemplo a seguir, substituamaster_usernameemaster_passwordpor suas próprias informações.db2 connect to rdsadmin usermaster_usernameusingmaster_password -
Revogue o acesso do usuário chamando
rdsadmin.dbadm_revoke. Para obter mais informações, consulte rdsadmin.dbadm_revoke.db2 "call rdsadmin.dbadm_revoke( ?, 'database_name, 'authorization', 'grantee')"