

# Conceder e revogar privilégios do RDS para Db2
<a name="db2-granting-revoking-privileges"></a>

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](db2-connecting-with-clp-client.md).

**Topics**
+ [Conceder a um usuário acesso ao banco de dados](#db2-granting-user-access)
+ [Alterar a senha de um usuário](#db2-changing-user-password)
+ [Adicionar grupos a um usuário](#db2-adding-group-to-user)
+ [Remover grupos de um usuário](#db2-removing-groups-from-user)
+ [Remover um usuário](#db2-removing-user)
+ [Listar usuários](#db2-listing-users-database)
+ [Criar uma função](#db2-creating-role)
+ [Conceder um perfil](#db2-granting-role)
+ [Revogar um perfil](#db2-revoking-role)
+ [Eliminação de um perfil](#db2-dropping-role)
+ [Conceder autorização de banco de dados](#db2-granting-dbadmin-auth)
+ [Revogar autorização de banco de dados](#db2-revoking-dbadmin-auth)

## Conceder a um usuário acesso ao banco de dados
<a name="db2-granting-user-access"></a>

**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
   ```

1. Adicione um usuário à lista de autorizações chamando `rdsadmin.add_user`. Para obter mais informações, consulte [rdsadmin.add\_user](db2-sp-granting-revoking-privileges.md#db2-sp-add-user). 

   ```
   db2 "call rdsadmin.add_user(
       '{{username}}',
       '{{password}}',
       '{{group_name}},{{group_name}}')"
   ```

1.  (Opcional) Adicione outros grupos ao usuário chamando `rdsadmin.add_groups`. Para obter mais informações, consulte [rdsadmin.add\_groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups). 

   ```
   db2 "call rdsadmin.add_groups(
       '{{username}}',
       '{{group_name}},{{group_name}}')"
   ```

1. 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
   ```

1. 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 obter mais informações, consulte [Perfis padrão do Amazon RDS para Db2](db2-default-roles.md).
**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}}
      ```

   1. 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}}"
      ```

   1. 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}}"
      ```

   1. 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}}"
      ```

1. 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}}"
   ```

1. Repita as etapas 4 a 6 para cada grupo adicional ao qual o usuário foi adicionado.

1. 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
<a name="db2-changing-user-password"></a>

**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}}
   ```

1. Altere a senha chamando `rdsadmin.change_password`. Para obter mais informações, consulte [rdsadmin.change\_password](db2-sp-granting-revoking-privileges.md#db2-sp-change-password). 

   ```
   db2 "call rdsadmin.change_password(
       '{{username}}',
       '{{new_password}}')"
   ```

## Adicionar grupos a um usuário
<a name="db2-adding-group-to-user"></a>

**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}}
   ```

1. Adicione grupos a um usuário chamando `rdsadmin.add_groups`. Para obter mais informações, consulte [rdsadmin.add\_groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups). 

   ```
   db2 "call rdsadmin.add_groups(
       '{{username}}',
       '{{group_name}},{{group_name}}')"
   ```

## Remover grupos de um usuário
<a name="db2-removing-groups-from-user"></a>

**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}}
   ```

1. Remova grupos chamando `rdsadmin.remove_groups`. Para obter mais informações, consulte [rdsadmin.remove\_groups](db2-sp-granting-revoking-privileges.md#db2-sp-remove-groups). 

   ```
   db2 "call rdsadmin.remove_groups(
       '{{username}}',
       '{{group_name}},{{group_name}}')"
   ```

## Remover um usuário
<a name="db2-removing-user"></a>

**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}}
   ```

1. Remova um usuário da lista de autorizações chamando `rdsadmin.remove_user`. Para obter mais informações, consulte [rdsadmin.remove\_user](db2-sp-granting-revoking-privileges.md#db2-sp-remove-user). 

   ```
   db2 "call rdsadmin.remove_user('{{username}}')"
   ```

## Listar usuários
<a name="db2-listing-users-database"></a>

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-sp-granting-revoking-privileges.md#db2-sp-list-users).

```
db2 "call rdsadmin.list_users()"
```

## Criar uma função
<a name="db2-creating-role"></a>

É possível usar o procedimento armazenado [rdsadmin.create\_role](db2-sp-granting-revoking-privileges.md#db2-sp-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}}
   ```

1. Defina o Db2 para gerar conteúdo.

   ```
   db2 set serveroutput on 
   ```

1. Crie uma função. Para obter mais informações, consulte [rdsadmin.create\_role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role).

   ```
   db2 "call rdsadmin.create_role(
       '{{database_name}}',
       '{{role_name}}')"
   ```

1. Defina o Db2 para não gerar conteúdo.

   ```
   db2 set serveroutput off
   ```

## Conceder um perfil
<a name="db2-granting-role"></a>

É possível usar o procedimento armazenado [rdsadmin.grant\_role](db2-sp-granting-revoking-privileges.md#db2-sp-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}}
   ```

1. Defina o Db2 para gerar conteúdo.

   ```
   db2 set serveroutput on 
   ```

1. Atribua um perfil. Para obter mais informações, consulte [rdsadmin.grant\_role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role).

   ```
   db2 "call rdsadmin.grant_role(
       '{{database_name}}',
       '{{role_name}}',
       '{{grantee}}',
       '{{admin_option}}')"
   ```

1. Defina o Db2 para não gerar conteúdo.

   ```
   db2 set serveroutput off
   ```

## Revogar um perfil
<a name="db2-revoking-role"></a>

É possível usar o procedimento armazenado [rdsadmin.revoke\_role](db2-sp-granting-revoking-privileges.md#db2-sp-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}}
   ```

1. Revogue um perfil. Para obter mais informações, consulte [rdsadmin.revoke\_role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role).

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

## Eliminação de um perfil
<a name="db2-dropping-role"></a>

É possível usar o procedimento armazenado [rdsadmin.drop\_role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role) para descartar um perfil.

**Como excluir 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}}
   ```

1. Descarte um perfil. Para obter mais informações, consulte [rdsadmin.drop\_role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role).

   ```
   db2 "call rdsadmin.drop_role(
       ?,
       '{{database_name}}',
       '{{role_name}}')"
   ```

## Conceder autorização de banco de dados
<a name="db2-granting-dbadmin-auth"></a>

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}}
   ```

1. Conceda acesso a um usuário chamando `rdsadmin.dbadm_grant`. Para obter mais informações, consulte [rdsadmin.dbadm\_grant](db2-sp-granting-revoking-privileges.md#db2-sp-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}}
   ```

1. Crie um perfil chamado `PROD_ROLE` para um banco de dados chamado `TESTDB`. Para obter mais informações, consulte [rdsadmin.create\_role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role). 

   ```
   db2 "call rdsadmin.create_role(
       'TESTDB',
       'PROD_ROLE')"
   ```

1. Atribua o perfil a um usuário denominado `PROD_USER`. O `PROD_USER` recebe autorização de administrador para atribuir perfis. Para obter mais informações, consulte [rdsadmin.grant\_role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role). 

   ```
   db2 "call rdsadmin.grant_role(
       ?,
       'TESTDB',
       'PROD_ROLE',
       'USER PROD_USER',
       'Y')"
   ```

1. (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 obter mais informações, consulte [rdsadmin.dbadm\_grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant). 

   ```
   db2 "call rdsadmin.dbadm_grant(
       ?,
       'FUNDPROD',
       'DBADM',
       'ROLE PROD_ROLE')"
   ```

1. Encerre a sessão.

   ```
   db2 terminate
   ```

1. 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}}
   ```

1. Adicione mais autorizações ao perfil.

   ```
   db2 "grant connect, implicit_schema on database to role PROD_ROLE"
   ```

1. 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
<a name="db2-revoking-dbadmin-auth"></a>

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}}
   ```

1. Revogue o acesso do usuário chamando `rdsadmin.dbadm_revoke`. Para obter mais informações, consulte [rdsadmin.dbadm\_revoke](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-revoke). 

   ```
   db2 "call rdsadmin.dbadm_revoke(
       ?,
       '{{database_name}},
       '{{authorization}}',
       '{{grantee}}')"
   ```