Realizar tarefas comuns do sistema para instâncias de banco de dados do Amazon RDS para Db2 - Amazon Relational Database Service

Realizar tarefas comuns do sistema para instâncias de banco de dados do Amazon RDS para Db2

É possível executar determinadas tarefas comuns de administrador de banco de dados relacionadas ao sistema nas instâncias de bancos de dados do Amazon RDS que executam o Db2. Para oferecer uma experiência de serviço gerenciado, o Amazon RDS não fornece acesso ao shell para instâncias de bancos de dados e restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados.

Criar um endpoint de banco de dados personalizado

Ao migrar para o Amazon RDS para Db2, é possível usar URLs de endpoint de banco de dados personalizados para minimizar as alterações na aplicação. Por exemplo, se você usar db2.example.com como o registro do DNS atual, poderá adicioná-lo ao Amazon Route 53. No Route 53, é possível usar zonas hospedadas privadas para associar o endpoint de banco de dados do DNS atual a um endpoint de banco de dados do RDS para Db2. Para adicionar um registro personalizado A ou CNAME ou um endpoint de banco de dados do Amazon RDS, consulte Registering and managing domains using Amazon Route 53 no Guia do desenvolvedor do Amazon Route 53.

nota

Se não for possível conseguir transferir o domínio para o Route 53, poderá usar o provedor de DNS para criar um registro CNAME para o URL do endpoint do banco de dados do RDS para Db2. Consulte a documentação do provedor de DNS.

Conceder e revogar privilégios

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.

Conceder a um usuário acesso ao banco de dados

Como conceder a um usuário acesso ao banco de dados
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_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
  2. 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')"
  3. (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')"
  4. Confirme as autoridades que estão disponíveis para o usuário. No exemplo a seguir, substitua rds_database_alias, master_user e master_password por suas próprias informações. Além disso, substitua username pelo nome do usuário.

    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"

    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
  5. Conceda os perfis do RDS para Db2 ROLE_NULLID_PACKAGES, ROLE_TABLESPACES e ROLE_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 Db2 ROLE_NULLID_PACKAGES, ROLE_TABLESPACES e ROLE_PROCEDURES concedem privilégios de execução em pacotes NULLID para IBM Db2 CLP e Dynamic SQL. Esses perfis também concedem privilégios de usuário em espaços de tabela.

    1. Conecte-se ao banco de dados Db2. No exemplo a seguir, substitua database_name, master_user e master_password por suas próprias informações.

      db2 connect to database_name user master_user using master_password
    2. Conceda o perfil ROLE_NULLED_PACKAGES a um grupo. No exemplo a seguir, substitua group_name pelo nome do grupo ao qual você deseja adicionar o perfil.

      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
    3. Conceda o perfil ROLE_TABLESPACES ao mesmo grupo. No exemplo a seguir, substitua group_name pelo nome do grupo ao qual você deseja adicionar o perfil.

      db2 "grant role ROLE_TABLESPACES to group group_name"
    4. Conceda o perfil ROLE_PROCEDURES ao mesmo grupo. No exemplo a seguir, substitua group_name pelo nome do grupo ao qual você deseja adicionar o perfil.

      db2 "grant role ROLE_PROCEDURES to group group_name"
  6. Conceda as autoridades connect, bindadd, createtab e IMPLICIT_SCHEMA ao grupo ao qual você adicionou o usuário. No exemplo a seguir, substitua group_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"
  7. Repita as etapas 4 a 6 para cada grupo adicional ao qual o usuário foi adicionado.

  8. 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 e password pelo nome do banco de dados e pelo nome de usuário e senha do usuário.

    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"

Alterar a senha de um usuário

Para alterar a senha de um usuário
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. 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
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. 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
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. 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
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. 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
  1. Conecte-se ao banco de dados rdsadmin. No exemplo a seguir, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. Defina o Db2 para gerar conteúdo.

    db2 set serveroutput on
  3. Crie uma função. Para ter mais informações, consulte rdsadmin.create_role.

    db2 "call rdsadmin.create_role( 'database_name', 'role_name')"
  4. 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
  1. Conecte-se ao banco de dados rdsadmin. No exemplo a seguir, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. Defina o Db2 para gerar conteúdo.

    db2 set serveroutput on
  3. Atribua um perfil. Para ter mais informações, consulte rdsadmin.grant_role.

    db2 "call rdsadmin.grant_role( 'database_name', 'role_name', 'grantee', 'admin_option')"
  4. 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
  1. Conecte-se ao banco de dados rdsadmin. No exemplo a seguir, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. Revogue um perfil. Para ter mais informações, consulte rdsadmin.revoke_role.

    db2 "call rdsadmin.revoke_role( ?, 'database_name', 'role_name', 'grantee')"

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
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. 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.

  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. Crie um perfil chamado PROD_ROLE para um banco de dados chamado TESTDB. Para ter mais informações, consulte rdsadmin.create_role.

    db2 "call rdsadmin.create_role( 'TESTDB', 'PROD_ROLE')"
  3. Atribua o perfil a um usuário denominado PROD_USER. O PROD_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')"
  4. (Opcional) Forneça autorização ou privilégios adicionais. O exemplo a seguir concede autorização DBADM a um perfil denominado PROD_ROLE para um banco de dados chamado FUNDPROD. Para ter mais informações, consulte rdsadmin.dbadm_grant.

    db2 "call rdsadmin.dbadm_grant( ?, 'FUNDPROD', 'DBADM', 'ROLE PROD_ROLE')"
  5. Encerre a sessão.

    db2 terminate
  6. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to TESTDB user master_username using master_password
  7. Adicione mais autorizações ao perfil.

    db2 "grant connect, implicit_schema on database to role PROD_ROLE"
  8. 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
  1. 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, substitua master_username e master_password por suas próprias informações.

    db2 connect to rdsadmin user master_username using master_password
  2. 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')"

Conectar-se à instância de banco de dados remota do RDS para Db2

Como se conectar à instância de banco de dados remota do RDS para Db2
  1. Execute uma sessão IBM Db2 CLP do lado do cliente. Para ter informações sobre como catalogar a instância de banco de dados e banco de dados do RDS para Db2, consulte Conectar-se à instância de banco de dados do Amazon RDS para Db2 com o IBM Db2 CLP. Anote o nome de usuário principal e a senha mestra da instância de banco de dados do RDS para Db2.

  2. Conecte-se à instância de banco de dados do RDS para Db2. No exemplo a seguir, substitua node_name, master_username e master_password pelo nome de nó TCPIP catalogado, além do nome de usuário principal e da senha mestra da instância de banco de dados do RDS para Db2.

    db2 attach to node_name user master_username using master_password

Depois de se conectar à instância de banco de dados remota do RDS para Db2, é possível executar os comandos a seguir e outros comandos get snapshot. Para ter mais informações, consulte GET SNAPSHOT command na documentação do IBM Db2.

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