

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Concessione e revoca dei privilegi per RDS per Db2
<a name="db2-granting-revoking-privileges"></a>

Gli utenti ottengono l’accesso ai database tramite l’appartenenza a gruppi collegati ai database.

Utilizza le seguenti procedure per concedere e revocare i privilegi per controllare l’accesso al database. 

Queste procedure utilizzano IBM Db2 CLP in esecuzione su un computer locale per connettersi a un’istanza database RDS per Db2. Assicurati di catalogare il nodo TCPIP e il database per connetterti all’istanza database RDS per Db2 in esecuzione sul tuo computer locale. Per ulteriori informazioni, consulta [Connessione a un’istanza database Amazon RDS per Db2 con IBM Db2 CLP](db2-connecting-with-clp-client.md).

**Topics**
+ [Concessione dell’accesso al database a un utente](#db2-granting-user-access)
+ [Modifica della password di un utente](#db2-changing-user-password)
+ [Aggiunta di gruppi a un utente](#db2-adding-group-to-user)
+ [Rimozione di gruppi da un utente](#db2-removing-groups-from-user)
+ [Rimozione di un utente](#db2-removing-user)
+ [Elencare gli utenti](#db2-listing-users-database)
+ [Creazione di un ruolo](#db2-creating-role)
+ [Concessione di un ruolo](#db2-granting-role)
+ [Revoca di un ruolo](#db2-revoking-role)
+ [Eliminazione di un ruolo](#db2-dropping-role)
+ [Concessione dell’autorizzazione per il database](#db2-granting-dbadmin-auth)
+ [Revoca dell’autorizzazione per il database](#db2-revoking-dbadmin-auth)

## Concessione dell’accesso al database a un utente
<a name="db2-granting-user-access"></a>

**Per concedere a un utente l’accesso al tuo database**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

   Questo comando genera un output simile all’esempio seguente:

   ```
   Database Connection Information
       
   Database server        = DB2/LINUXX8664 11.5.8.0
   SQL authorization ID   = ADMIN
   Local database alias   = RDSADMIN
   ```

1. Aggiungi un utente all’elenco di autorizzazioni chiamando `rdsadmin.add_user`. Per ulteriori informazioni, consulta [rdsadmin.add\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-add-user). 

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

1. (Facoltativo) Aggiungi altri gruppi all’utente chiamando `rdsadmin.add_groups`. Per ulteriori informazioni, consulta [rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups). 

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

1. Conferma le autorità disponibili per l’utente. Nell'esempio seguente *rds\$1database\$1alias**master\$1user*, sostituisci e *master\$1password* con le tue informazioni. Inoltre, *username* sostituiscilo con il nome utente dell'utente.

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

   Questo comando genera un output simile all’esempio seguente:

   ```
   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. Concedi i ruoli `ROLE_NULLID_PACKAGES`, `ROLE_TABLESPACES` e `ROLE_PROCEDURES` di RDS per Db2 al gruppo a cui hai aggiunto l’utente. Per ulteriori informazioni, consulta [Ruoli predefiniti di Amazon RDS per Db2](db2-default-roles.md).
**Nota**  
Le istanze database RDS per Db2 vengono create in modalità `RESTRICTIVE`. Pertanto, i ruoli `ROLE_NULLID_PACKAGES`, `ROLE_TABLESPACES` e `ROLE_PROCEDURES` di RDS per Db2 concedono privilegi di esecuzione sui pacchetti `NULLID` per IBM Db2 CLP e Dynamic SQL. Questi ruoli concedono anche privilegi utente sui tablespace. 

   1. Connettiti al tuo database Db2. Nell'esempio seguente *database\$1name**master\$1user*, sostituisci e *master\$1password* con le tue informazioni.

      ```
      db2 connect to database_name user master_user using master_password
      ```

   1. Assegna il ruolo `ROLE_NULLED_PACKAGES` a un gruppo. Nell'esempio seguente, sostituiscilo *group\$1name* con il nome del gruppo a cui desideri aggiungere il ruolo.

      ```
      db2 "grant role ROLE_NULLID_PACKAGES to group group_name"
      ```

   1. Assegna il ruolo `ROLE_TABLESPACES` allo stesso gruppo. Nell'esempio seguente, sostituiscilo *group\$1name* con il nome del gruppo a cui desideri aggiungere il ruolo.

      ```
      db2 "grant role ROLE_TABLESPACES to group group_name"
      ```

   1. Assegna il ruolo `ROLE_PROCEDURES` allo stesso gruppo. Nell'esempio seguente, sostituiscilo *group\$1name* con il nome del gruppo a cui desideri aggiungere il ruolo.

      ```
      db2 "grant role ROLE_PROCEDURES to group group_name"
      ```

1. Concedi le autorità `connect`, `bindadd`, `createtab` e `IMPLICIT_SCHEMA` al gruppo a cui hai aggiunto l’utente. Nell'esempio seguente, *group\$1name* sostituiscilo con il nome del secondo gruppo a cui hai aggiunto l'utente.

   ```
   db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to public"
   db2 "grant connect, bindadd, createtab, implicit_schema on database to group group_name"
   ```

1. Ripeti i passaggi da 4 a 6 per ogni gruppo aggiuntivo a cui hai aggiunto l’utente.

1. Testa l’accesso dell’utente connettendoti come tale utente, creando una tabella, inserendo valori nella tabella e restituendo dati dalla tabella. Nell'esempio seguente, sostituisci *rds\$1database\$1alias**username*, e *password* con il nome del database e il nome utente e la password dell'utente.

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

## Modifica della password di un utente
<a name="db2-changing-user-password"></a>

**Per cambiare la password di un utente**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni. 

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Cambia la password chiamando `rdsadmin.change_password`. Per ulteriori informazioni, consulta [rdsadmin.change\$1password](db2-sp-granting-revoking-privileges.md#db2-sp-change-password). 

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

## Aggiunta di gruppi a un utente
<a name="db2-adding-group-to-user"></a>

**Per aggiungere gruppi a un utente**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni. 

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Aggiungi gruppi a un utente chiamando `rdsadmin.add_groups`. Per ulteriori informazioni, consulta [rdsadmin.add\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-add-groups). 

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

## Rimozione di gruppi da un utente
<a name="db2-removing-groups-from-user"></a>

**Per rimuovere gruppi da un utente**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni. 

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Rimuovi i gruppi chiamando `rdsadmin.remove_groups`. Per ulteriori informazioni, consulta [rdsadmin.remove\$1groups](db2-sp-granting-revoking-privileges.md#db2-sp-remove-groups). 

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

## Rimozione di un utente
<a name="db2-removing-user"></a>

**Per rimuovere un utente dall’elenco di autorizzazioni**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni. 

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Rimuovi un utente dall’elenco di autorizzazioni chiamando `rdsadmin.remove_user`. Per ulteriori informazioni, consulta [rdsadmin.remove\$1user](db2-sp-granting-revoking-privileges.md#db2-sp-remove-user). 

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

## Elencare gli utenti
<a name="db2-listing-users-database"></a>

Per elencare gli utenti in un elenco di autorizzazioni, chiama la stored procedure `rdsadmin.list_users`. Per ulteriori informazioni, consulta [rdsadmin.list\$1users](db2-sp-granting-revoking-privileges.md#db2-sp-list-users).

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

## Creazione di un ruolo
<a name="db2-creating-role"></a>

È possibile utilizzare la stored procedure [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role) per creare un ruolo.

**Per creare un ruolo**

1. Connettiti al database `rdsadmin`. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Imposta Db2 in modo che restituisca il contenuto come output.

   ```
   db2 set serveroutput on 
   ```

1. Creare un ruolo. Per ulteriori informazioni, consulta [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role).

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

1. Imposta Db2 in modo che non restituisca il contenuto come output.

   ```
   db2 set serveroutput off
   ```

## Concessione di un ruolo
<a name="db2-granting-role"></a>

È possibile utilizzare la stored procedure [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role) per assegnare un ruolo a un ruolo, utente o gruppo.

**Per assegnare un ruolo**

1. Connettiti al database `rdsadmin`. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Imposta Db2 in modo che restituisca il contenuto come output.

   ```
   db2 set serveroutput on 
   ```

1. Assegna un ruolo. Per ulteriori informazioni, consulta [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role).

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

1. Imposta Db2 in modo che non restituisca il contenuto come output.

   ```
   db2 set serveroutput off
   ```

## Revoca di un ruolo
<a name="db2-revoking-role"></a>

È possibile utilizzare la stored procedure [rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role) per revocare un ruolo da un ruolo, utente o gruppo.

**Per revocare un ruolo**

1. Connettiti al database `rdsadmin`. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Revoca un ruolo. Per ulteriori informazioni, consulta [rdsadmin.revoke\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-revoke-role).

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

## Eliminazione di un ruolo
<a name="db2-dropping-role"></a>

È possibile utilizzare la stored procedure [rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role) per eliminare un ruolo.

**Per eliminare un ruolo**

1. Connettiti al database `rdsadmin`. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Elimina un ruolo. Per ulteriori informazioni, consulta [rdsadmin.drop\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-drop-role).

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

## Concessione dell’autorizzazione per il database
<a name="db2-granting-dbadmin-auth"></a>

L’utente principale, che dispone dell’autorizzazione `DBADM`, può concedere l’autorizzazione `DBADM`, `ACCESSCTRL` o `DATAACCESS` a un ruolo, utente o gruppo.

**Per concedere l’autorizzazione per il database**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Concedi l’accesso a un utente chiamando `rdsadmin.dbadm_grant`. Per ulteriori informazioni, consulta [rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant). 

   ```
   db2 "call rdsadmin.dbadm_grant(
       ?,
       'database_name,
       'authorization',
       'grantee')"
   ```

**Esempio di caso d’uso**

La procedura seguente illustra come creare un ruolo, concedere l’autorizzazione `DBADM` al ruolo, assegnare il ruolo a un utente e concedere il ruolo a un gruppo.

****

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Crea un ruolo denominato `PROD_ROLE` per un database denominato `TESTDB`. Per ulteriori informazioni, consulta [rdsadmin.create\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-create-role). 

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

1. Assegna il ruolo a un utente denominato `PROD_USER`. All’utente `PROD_USER` viene concessa l’autorizzazione di amministrazione per assegnare ruoli. Per ulteriori informazioni, consulta [rdsadmin.grant\$1role](db2-sp-granting-revoking-privileges.md#db2-sp-grant-role). 

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

1. (Facoltativo) Fornisci ulteriori autorizzazioni o privilegi. Nell’esempio seguente viene concessa l’autorizzazione `DBADM` a un ruolo denominato `PROD_ROLE` per un database denominato `FUNDPROD`. Per ulteriori informazioni, consulta [rdsadmin.dbadm\$1grant](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-grant). 

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

1. Termina la sessione.

   ```
   db2 terminate
   ```

1. Connettiti al database `TESTDB` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to TESTDB user master_username using master_password
   ```

1. Aggiungi altre autorizzazioni al ruolo.

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

1. Assegna il ruolo `PROD_ROLE` a un gruppo.

   ```
   db2 "grant role PROD_ROLE to group PRODGRP"
   ```

Gli utenti che appartengono al gruppo `PRODGRP` possono ora eseguire azioni come la connessione al database `TESTDB`, la creazione di tabelle o la creazione di schemi.

## Revoca dell’autorizzazione per il database
<a name="db2-revoking-dbadmin-auth"></a>

L’utente principale, che dispone dell’autorizzazione `DBADM`, può revocare l’autorizzazione `DBADM`, `ACCESSCTRL` o `DATAACCESS` a un ruolo, utente o gruppo.

**Per revocare l’autorizzazione per il database**

1. Connettiti al database `rdsadmin` utilizzando il nome utente e la password principali dell’istanza database RDS per Db2. Nell'esempio seguente, sostituisci *master\$1username* e *master\$1password* con le tue informazioni.

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. Revoca l’accesso utente chiamando `rdsadmin.dbadm_revoke`. Per ulteriori informazioni, consulta [rdsadmin.dbadm\$1revoke](db2-sp-granting-revoking-privileges.md#db2-sp-dbadm-revoke). 

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