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 ter 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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
Esse 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 ter 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 ter 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_user
emaster_password
por suas próprias informações. Além disso, substituausername
pelo nome do usuário.db2 terminate db2 connect to
rds_database_alias
usermaster_user
usingmaster_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"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_TABLESPACES
eROLE_PROCEDURES
ao grupo ao qual você adicionou o usuário. Para ter 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_TABLESPACES
eROLE_PROCEDURES
concedem privilégios de execução em pacotesNULLID
para 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_user
emaster_password
por suas próprias informações.db2 connect to
database_name
usermaster_user
usingmaster_password
-
Conceda o perfil
ROLE_NULLED_PACKAGES
a um grupo. No exemplo a seguir, substituagroup_name
pelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_NULLID_PACKAGES to group
group_name
" -
Conceda o perfil
ROLE_TABLESPACES
ao mesmo grupo. No exemplo a seguir, substituagroup_name
pelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_TABLESPACES to group
group_name
" -
Conceda o perfil
ROLE_PROCEDURES
ao mesmo grupo. No exemplo a seguir, substituagroup_name
pelo nome do grupo ao qual você deseja adicionar o perfil.db2 "grant role ROLE_PROCEDURES to group
group_name
"
-
-
Conceda as autoridades
connect
,bindadd
,createtab
eIMPLICIT_SCHEMA
ao grupo ao qual você adicionou o usuário. No exemplo a seguir, substituagroup_name
pelo 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 group
group_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
,username
epassword
pelo nome do banco de dados e pelo nome de usuário e senha do usuário.db2 connect to
rds_database_alias
userusername
usingpassword
db2 "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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Altere a senha chamando
rdsadmin.change_password
. Para ter 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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Adicione grupos a um usuário chamando
rdsadmin.add_groups
. Para ter 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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Remova grupos chamando
rdsadmin.remove_groups
. Para ter 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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Remova um usuário da lista de autorizações chamando
rdsadmin.remove_user
. Para ter 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 ter 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Defina o Db2 para gerar conteúdo.
db2 set serveroutput on
-
Crie uma função. Para ter 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Defina o Db2 para gerar conteúdo.
db2 set serveroutput on
-
Atribua um perfil. Para ter 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Revogue um perfil. Para ter 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 rdsadmin.drop_role para descartar um perfil.
Como excluir um perfil
-
Conecte-se ao banco de dados
rdsadmin
. No exemplo a seguir, substituamaster_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Descarte um perfil. Para ter mais informações, consulte rdsadmin.drop_role.
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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Conceda acesso a um usuário chamando
rdsadmin.dbadm_grant
. Para ter 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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Crie um perfil chamado
PROD_ROLE
para um banco de dados chamadoTESTDB
. Para ter 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_USER
recebe autorização de administrador para atribuir perfis. Para ter 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
DBADM
a um perfil denominadoPROD_ROLE
para um banco de dados chamadoFUNDPROD
. Para ter 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
TESTDB
usando 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_username
emaster_password
por suas próprias informações.db2 connect to TESTDB user
master_username
usingmaster_password
-
Adicione mais autorizações ao perfil.
db2 "grant connect, implicit_schema on database to role PROD_ROLE"
-
Conceda o perfil
PROD_ROLE
a 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
rdsadmin
usando 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_username
emaster_password
por suas próprias informações.db2 connect to rdsadmin user
master_username
usingmaster_password
-
Revogue o acesso do usuário chamando
rdsadmin.dbadm_revoke
. Para ter mais informações, consulte rdsadmin.dbadm_revoke.db2 "call rdsadmin.dbadm_revoke( ?, '
database_name
, 'authorization
', 'grantee
')"