

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à.

# AWS Identity and Access Management (IAM) e DynamoDB
<a name="identity-and-access-mgmt"></a>

 AWS Identity and Access Management è un AWS servizio che aiuta un amministratore a controllare in modo sicuro l'accesso alle risorse. AWS Gli amministratori controllano chi può essere autenticato (che ha effettuato l'accesso) e autorizzato (che dispone di autorizzazioni) a utilizzare risorse Amazon DynamoDB e DynamoDB Accelerator. È possibile utilizzare IAM per gestire le autorizzazioni di accesso e implementare le policy di sicurezza per Amazon DynamoDB e DynamoDB Accelerator. IAM è un AWS servizio che puoi utilizzare senza costi aggiuntivi. 

 

**Topics**
+ [Identity and Access Management per Amazon DynamoDB](security-iam.md)
+ [Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](specifying-conditions.md)

# Identity and Access Management per Amazon DynamoDB
<a name="security-iam"></a>





AWS Identity and Access Management (IAM) è un servizio Servizio AWS che aiuta un amministratore a controllare in modo sicuro l'accesso alle AWS risorse. Gli amministratori IAM controllano chi può essere *autenticato* (chi ha effettuato l'accesso) e *autorizzato* (chi dispone di autorizzazioni) a utilizzare le risorse DynamoDB. IAM è un software Servizio AWS che puoi utilizzare senza costi aggiuntivi.

**Topics**
+ [Destinatari](#security_iam_audience)
+ [Autenticazione con identità](#security_iam_authentication)
+ [Gestione dell’accesso tramite policy](#security_iam_access-manage)
+ [Funzionamento di Amazon DynamoDB con IAM](security_iam_service-with-iam.md)
+ [Esempi di policy basate su identità per Amazon DynamoDB](security_iam_id-based-policy-examples.md)
+ [Risoluzione dei problemi relativi all'identità e all'accesso di Amazon DynamoDB](security_iam_troubleshoot.md)
+ [Policy IAM per impedire l'acquisto di capacità riservata DynamoDB](iam-policy-prevent-purchase-reserved-capacity.md)

## Destinatari
<a name="security_iam_audience"></a>

Il modo in cui utilizzi AWS Identity and Access Management (IAM) varia in base al tuo ruolo:
+ **Utente del servizio**: richiedi le autorizzazioni all’amministratore se non riesci ad accedere alle funzionalità (consulta [Risoluzione dei problemi relativi all'identità e all'accesso di Amazon DynamoDB](security_iam_troubleshoot.md))
+ **Amministratore del servizio**: determina l’accesso degli utenti e invia le richieste di autorizzazione (consulta [Funzionamento di Amazon DynamoDB con IAM](security_iam_service-with-iam.md))
+ **Amministratore IAM**: scrivi policy per gestire l’accesso (consulta [Esempi di policy basate su identità per Amazon DynamoDB](security_iam_id-based-policy-examples.md))

## Autenticazione con identità
<a name="security_iam_authentication"></a>

L'autenticazione è il modo in cui accedi AWS utilizzando le tue credenziali di identità. Devi autenticarti come utente IAM o assumendo un ruolo IAM. Utente root dell'account AWS

Puoi accedere come identità federata utilizzando credenziali provenienti da una fonte di identità come AWS IAM Identity Center (IAM Identity Center), autenticazione Single Sign-On o credenziali. Google/Facebook Per ulteriori informazioni sull’accesso, consulta [Come accedere all’ Account AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l’utente di Accedi ad AWS *.

Per l'accesso programmatico, AWS fornisce un SDK e una CLI per firmare crittograficamente le richieste. Per ulteriori informazioni, consulta [AWS Signature Version 4 per le richieste API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) nella *Guida per l’utente di IAM*.

### Account AWS utente root
<a name="security_iam_authentication-rootuser"></a>

 Quando si crea un Account AWS, si inizia con un'identità di accesso denominata *utente Account AWS root* che ha accesso completo a tutte Servizi AWS le risorse. Consigliamo vivamente di non utilizzare l’utente root per le attività quotidiane. Per le attività che richiedono le credenziali dell’utente root, consulta [Attività che richiedono le credenziali dell’utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) nella *Guida per l’utente IAM*. 

### Identità federata
<a name="security_iam_authentication-federated"></a>

Come procedura ottimale, richiedi agli utenti umani di utilizzare la federazione con un provider di identità per accedere Servizi AWS utilizzando credenziali temporanee.

Un'*identità federata* è un utente della directory aziendale, del provider di identità Web o Directory Service che accede Servizi AWS utilizzando le credenziali di una fonte di identità. Le identità federate assumono ruoli che forniscono credenziali temporanee.

Per la gestione centralizzata degli accessi, si consiglia di utilizzare AWS IAM Identity Center. Per ulteriori informazioni, consulta [Che cos’è il Centro identità IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) nella *Guida per l’utente di AWS IAM Identity Center *.

### Utenti e gruppi IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* è una identità che dispone di autorizzazioni specifiche per una singola persona o applicazione. Ti consigliamo di utilizzare credenziali temporanee invece di utenti IAM con credenziali a lungo termine. *Per ulteriori informazioni, consulta [Richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) nella Guida per l'utente IAM.*

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) specifica una raccolta di utenti IAM e semplifica la gestione delle autorizzazioni per gestire gruppi di utenti di grandi dimensioni. Per ulteriori informazioni, consulta [Casi d’uso per utenti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) nella *Guida per l’utente di IAM*.

### Ruoli IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* è un’identità con autorizzazioni specifiche che fornisce credenziali temporanee. Puoi assumere un ruolo [passando da un ruolo utente a un ruolo IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o chiamando un'operazione AWS CLI o AWS API. Per ulteriori informazioni, consulta [Metodi per assumere un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) nella *Guida per l’utente di IAM*.

I ruoli IAM sono utili per l’accesso degli utenti federati, le autorizzazioni utente IAM temporanee, l’accesso multi-account, l’accesso multi-servizio e le applicazioni in esecuzione su Amazon EC2. Per maggiori informazioni, consultare [Accesso a risorse multi-account in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) nella *Guida per l’utente IAM*.

## Gestione dell’accesso tramite policy
<a name="security_iam_access-manage"></a>

Puoi controllare l'accesso AWS creando policy e associandole a AWS identità o risorse. Una policy definisce le autorizzazioni quando è associata a un'identità o a una risorsa. AWS valuta queste politiche quando un preside effettua una richiesta. La maggior parte delle politiche viene archiviata AWS come documenti JSON. Per maggiori informazioni sui documenti delle policy JSON, consulta [Panoramica delle policy JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) nella *Guida per l’utente IAM*.

Utilizzando le policy, gli amministratori specificano chi ha accesso a cosa definendo quale **principale** può eseguire **azioni** su quali **risorse** e in quali **condizioni**.

Per impostazione predefinita, utenti e ruoli non dispongono di autorizzazioni. Un amministratore IAM crea le policy IAM e le aggiunge ai ruoli, che gli utenti possono quindi assumere. Le policy IAM definiscono le autorizzazioni indipendentemente dal metodo utilizzato per eseguirle.

### Policy basate sull’identità
<a name="security_iam_access-manage-id-based-policies"></a>

Le policy basate su identità sono documenti di policy di autorizzazione JSON che è possibile collegare a un’identità (utente, gruppo o ruolo). Tali policy controllano le operazioni autorizzate per l’identità, nonché le risorse e le condizioni in cui possono essere eseguite. Per informazioni su come creare una policy basata su identità, consultare [Definizione di autorizzazioni personalizzate IAM con policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l’utente IAM*.

Le policy basate su identità possono essere *policy in linea* (con embedding direttamente in una singola identità) o *policy gestite* (policy autonome collegate a più identità). Per informazioni su come scegliere tra una policy gestita o una policy inline, consulta [Scegliere tra policy gestite e policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) nella *Guida per l’utente di IAM*.

### Policy basate sulle risorse
<a name="security_iam_access-manage-resource-based-policies"></a>

Le policy basate su risorse sono documenti di policy JSON che è possibile collegare a una risorsa. Gli esempi includono le *policy di trust dei ruoli* IAM e le *policy dei bucket* di Amazon S3. Nei servizi che supportano policy basate sulle risorse, gli amministratori dei servizi possono utilizzarli per controllare l’accesso a una risorsa specifica. In una policy basata sulle risorse è obbligatorio [specificare un’entità principale](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

Le policy basate sulle risorse sono policy inline che si trovano in tale servizio. Non è possibile utilizzare le policy AWS gestite di IAM in una policy basata sulle risorse.

### Altri tipi di policy
<a name="security_iam_access-manage-other-policies"></a>

AWS supporta tipi di policy aggiuntivi che possono impostare le autorizzazioni massime concesse dai tipi di policy più comuni:
+ **Limiti delle autorizzazioni**: imposta il numero massimo di autorizzazioni che una policy basata su identità ha la possibilità di concedere a un’entità IAM. Per ulteriori informazioni, consulta [Limiti delle autorizzazioni per le entità IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) nella *Guida per l’utente di IAM*.
+ **Politiche di controllo del servizio (SCPs)**: specificano le autorizzazioni massime per un'organizzazione o un'unità organizzativa in. AWS Organizations Per ulteriori informazioni, consultare [Policy di controllo dei servizi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) nella *Guida per l’utente di AWS Organizations *.
+ **Politiche di controllo delle risorse (RCPs)**: imposta le autorizzazioni massime disponibili per le risorse nei tuoi account. Per ulteriori informazioni, consulta [Politiche di controllo delle risorse (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) nella *Guida per l'AWS Organizations utente*.
+ **Policy di sessione**: policy avanzate passate come parametro quando si crea una sessione temporanea per un ruolo o un utente federato. Per maggiori informazioni, consultare [Policy di sessione](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) nella *Guida per l’utente IAM*.

### Più tipi di policy
<a name="security_iam_access-manage-multiple-policies"></a>

Quando a una richiesta si applicano più tipi di policy, le autorizzazioni risultanti sono più complicate da comprendere. Per scoprire come si AWS determina se consentire o meno una richiesta quando sono coinvolti più tipi di policy, consulta [Logica di valutazione delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) nella *IAM User Guide*.

# Funzionamento di Amazon DynamoDB con IAM
<a name="security_iam_service-with-iam"></a>

Prima di utilizzare IAM per gestire l'accesso a DynamoDB, scopri quali funzionalità di IAM sono disponibili per l'uso con DynamoDB.






| Funzionalità IAM | Supporto in DynamoDB | 
| --- | --- | 
|  [Policy basate sull’identità](#security_iam_service-with-iam-id-based-policies)  |   Sì  | 
|  [Policy basate su risorse](#security_iam_service-with-iam-resource-based-policies)  |   Sì  | 
|  [Operazioni di policy](#security_iam_service-with-iam-id-based-policies-actions)  |   Sì  | 
|  [Risorse relative alle policy](#security_iam_service-with-iam-id-based-policies-resources)  |   Sì  | 
|  [Chiavi di condizione delle policy](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   Sì  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |   No   | 
|  [ABAC (tag nelle policy)](#security_iam_service-with-iam-tags)  |   Sì  | 
|  [Credenziali temporanee](#security_iam_service-with-iam-roles-tempcreds)  |   Sì  | 
|  [Autorizzazioni del principale](#security_iam_service-with-iam-principal-permissions)  |   Sì  | 
|  [Ruoli di servizio](#security_iam_service-with-iam-roles-service)  |   Sì  | 
|  [Ruoli collegati al servizio](#security_iam_service-with-iam-roles-service-linked)  |   Sì  | 

*Per avere una visione di alto livello di come DynamoDB e AWS altri servizi funzionano con la maggior parte delle funzionalità IAM, [AWS consulta i servizi che funzionano con](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) IAM nella IAM User Guide.*

## Policy basate su identità per DynamoDB
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Supporta le policy basate sull’identità:** sì

Le policy basate sull'identità sono documenti di policy di autorizzazione JSON che è possibile allegare a un'identità (utente, gruppo di utenti o ruolo IAM). Tali policy definiscono le operazioni che utenti e ruoli possono eseguire, su quali risorse e in quali condizioni. Per informazioni su come creare una policy basata su identità, consulta [Definizione di autorizzazioni personalizzate IAM con policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l’utente di IAM*.

Con le policy basate sull’identità di IAM, è possibile specificare quali operazioni e risorse sono consentite o respinte, nonché le condizioni in base alle quali le operazioni sono consentite o respinte. Per informazioni su tutti gli elementi utilizzabili in una policy JSON, consulta [Guida di riferimento agli elementi delle policy JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) nella *Guida per l’utente IAM*.

### Esempi di policy basate su identità per DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Per visualizzare esempi di policy basate su identità DynamoDB, consultare [Esempi di policy basate su identità per Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Policy basate su risorse all'interno di DynamoDB
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Supporta le policy basate sulle risorse**: sì

Le policy basate su risorse sono documenti di policy JSON che è possibile collegare a una risorsa. Esempi di policy basate sulle risorse sono le *policy di attendibilità dei ruoli* IAM e le *policy di bucket* Amazon S3. Nei servizi che supportano policy basate sulle risorse, gli amministratori dei servizi possono utilizzarli per controllare l’accesso a una risorsa specifica. Quando è collegata a una risorsa, una policy definisce le operazioni che un principale può eseguire su tale risorsa e a quali condizioni. In una policy basata sulle risorse è obbligatorio [specificare un’entità principale](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html). I principali possono includere account, utenti, ruoli, utenti federati o. Servizi AWS

Per consentire l’accesso multi-account, è possibile specificare un intero account o entità IAM in un altro account come entità principale in una policy basata sulle risorse. Per ulteriori informazioni, consulta [Accesso a risorse multi-account in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) nella *Guida per l’utente IAM*.

## Operazioni delle policy per DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Supporta le operazioni di policy:** si

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L'elemento `Action` di una policy JSON descrive le operazioni che è possibile utilizzare per consentire o negare l'accesso in una policy. Includere le operazioni in una policy per concedere le autorizzazioni a eseguire l’operazione associata.



Per visualizzare un elenco di operazioni DynamoDB, consultare [Operazioni definite da Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions) in *Informazioni di riferimento sull'autorizzazione del servizio*.

Le operazioni delle policy in DynamoDB utilizzano il seguente prefisso prima dell'operazione:

```
aws
```

Per specificare più operazioni in una sola istruzione, occorre separarle con la virgola.

```
"Action": [
      "aws:action1",
      "aws:action2"
         ]
```





Per visualizzare esempi di policy basate su identità DynamoDB, consultare [Esempi di policy basate su identità per Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Operazioni delle policy per DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Supporta le risorse relative alle policy:** sì

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L’elemento JSON `Resource` della policy specifica l’oggetto o gli oggetti ai quali si applica l’operazione. Come best practice, specifica una risorsa utilizzando il suo [nome della risorsa Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Per le azioni che non supportano le autorizzazioni a livello di risorsa, si utilizza un carattere jolly (\$1) per indicare che l’istruzione si applica a tutte le risorse.

```
"Resource": "*"
```

*Per visualizzare un elenco dei tipi di risorse DynamoDB e ARNs relativi, [consulta Resources defined by Amazon DynamoDB nel Service Authorization Reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-resources-for-iam-policies).* Per informazioni sulle operazioni con cui è possibile specificare l'ARN di ogni risorsa, consultare [Operazioni definite da Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).





Per visualizzare esempi di policy basate su identità DynamoDB, consultare [Esempi di policy basate su identità per Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Chiavi di condizione delle policy per DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**Supporta le chiavi di condizione delle policy specifiche del servizio:** sì

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L’elemento `Condition` specifica quando le istruzioni vengono eseguite in base a criteri definiti. È possibile compilare espressioni condizionali che utilizzano [operatori di condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), ad esempio uguale a o minore di, per soddisfare la condizione nella policy con i valori nella richiesta. Per visualizzare tutte le chiavi di condizione AWS globali, consulta le chiavi di [contesto delle condizioni AWS globali nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) per l'*utente IAM*.

Per visualizzare un elenco di chiavi di condizione DynamoDB, consultare [Chiavi di condizione per Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-policy-keys) in *Informazioni di riferimento sull'autorizzazione del servizio*. Per informazioni su operazioni e risorse con cui è possibile utilizzare una chiave di condizione, consultare [Operazioni definite da Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).

Per visualizzare esempi di policy basate su identità DynamoDB, consultare [Esempi di policy basate su identità per Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Liste di controllo degli accessi (ACLs) in DynamoDB
<a name="security_iam_service-with-iam-acls"></a>

**Supporti ACLs**: No 

Le liste di controllo degli accessi (ACLs) controllano quali principali (membri dell'account, utenti o ruoli) dispongono delle autorizzazioni per accedere a una risorsa. ACLs sono simili alle politiche basate sulle risorse, sebbene non utilizzino il formato del documento di policy JSON.

## Controllo degli accessi basato su attributi (ABAC) con DynamoDB
<a name="security_iam_service-with-iam-tags"></a>

**Supporta ABAC (tag nelle policy):** sì

Il controllo degli accessi basato su attributi (ABAC) è una strategia di autorizzazione che definisce le autorizzazioni in base ad attributi chiamati tag. È possibile allegare tag a entità e AWS risorse IAM, quindi progettare politiche ABAC per consentire operazioni quando il tag del principale corrisponde al tag sulla risorsa.

Per controllare l’accesso basato su tag, fornire informazioni sui tag nell’[elemento condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di una policy utilizzando le chiavi di condizione `aws:ResourceTag/key-name`, `aws:RequestTag/key-name` o `aws:TagKeys`.

Se un servizio supporta tutte e tre le chiavi di condizione per ogni tipo di risorsa, il valore per il servizio è **Sì**. Se un servizio supporta tutte e tre le chiavi di condizione solo per alcuni tipi di risorsa, allora il valore sarà **Parziale**.

Per maggiori informazioni su ABAC, consulta [Definizione delle autorizzazioni con autorizzazione ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) nella *Guida per l’utente di IAM*. Per visualizzare un tutorial con i passaggi per l’impostazione di ABAC, consulta [Utilizzo del controllo degli accessi basato su attributi (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) nella *Guida per l’utente di IAM*.

## Utilizzo di credenziali temporanee con DynamoDB
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Supporta le credenziali temporanee:** sì

Le credenziali temporanee forniscono l'accesso a breve termine alle AWS risorse e vengono create automaticamente quando si utilizza la federazione o si cambia ruolo. AWS consiglia di generare dinamicamente credenziali temporanee anziché utilizzare chiavi di accesso a lungo termine. Per ulteriori informazioni, consulta [Credenziali di sicurezza temporanee in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) e [Servizi AWS compatibili con IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) nella *Guida per l’utente IAM*.

## Autorizzazioni del principale tra servizi per DynamoDB
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Supporta l’inoltro delle sessioni di accesso (FAS):** sì

 Le sessioni di accesso inoltrato (FAS) utilizzano le autorizzazioni del principale che chiama e, in combinazione con la richiesta Servizio AWS, Servizio AWS per effettuare richieste ai servizi downstream. Per i dettagli delle policy relative alle richieste FAS, consulta [Forward access sessions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Ruoli di servizio per DynamoDB
<a name="security_iam_service-with-iam-roles-service"></a>

**Supporta i ruoli di servizio:** sì

 Un ruolo di servizio è un [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) che un servizio assume per eseguire operazioni per tuo conto. Un amministratore IAM può creare, modificare ed eliminare un ruolo di servizio dall’interno di IAM. Per ulteriori informazioni, consulta [Create a role to delegate permissions to an Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) nella *Guida per l’utente IAM*. 

**avvertimento**  
La modifica delle autorizzazioni per un ruolo di servizio potrebbe compromettere la funzionalità di DynamoDB. Modifica i ruoli di servizio solo quando DynamoDB fornisce le indicazioni per farlo.

## Ruoli collegati ai servizi creati per DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Supporta i ruoli collegati ai servizi:** sì

 Un ruolo collegato al servizio è un tipo di ruolo di servizio collegato a un. Servizio AWS Il servizio può assumere il ruolo per eseguire un’operazione per tuo conto. I ruoli collegati al servizio vengono visualizzati nel tuo account Account AWS e sono di proprietà del servizio. Un amministratore IAM può visualizzare le autorizzazioni per i ruoli collegati al servizio, ma non modificarle. 

Per ulteriori informazioni su come creare e gestire i ruoli collegati ai servizi, consulta [Servizi AWS supportati da IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Trova un servizio nella tabella che include un `Yes` nella colonna **Service-linked role (Ruolo collegato ai servizi)**. Scegli il collegamento **Sì** per visualizzare la documentazione relativa al ruolo collegato ai servizi per tale servizio.

### Ruoli collegati al servizio supportati in DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked-supported-by-dynamodb"></a>

I seguenti ruoli collegati al servizio sono supportati in DynamoDB.
+ DynamoDB utilizza il **AWSServiceRoleForDynamoDBReplication**ruolo collegato ai servizi per la replica globale delle tabelle su tutto il territorio. Regioni AWS Vedi [Sicurezza per tabelle globali DynamoDB](globaltables-security.md) per ulteriori informazioni sul ruolo collegato al servizio. **AWSServiceRoleForDynamoDBReplication**
+ DynamoDB Accelerator (DAX) utilizza il ** AWSServiceRoleForruolo** DAX collegato ai servizi per la configurazione e la manutenzione di un cluster DAX. **Per ulteriori informazioni sul ruolo collegato ai servizi DAX, vedere[Utilizzo di ruoli IAM collegati ai servizi per DAX](using-service-linked-roles.md). AWSService RoleFor**

Oltre a questi ruoli collegati al servizio DynamoDB, DynamoDB utilizza il servizio Application Auto Scaling per gestire automaticamente le impostazioni di throughput nelle tabelle della modalità con capacità allocata. Il servizio Application Auto Scaling utilizza il ruolo collegato al servizio ** AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable**per gestire le impostazioni di throughput nelle tabelle DynamoDB che hanno l'auto scaling abilitato. Consulta [Ruoli collegati ai servizi per Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) per ulteriori informazioni.

# Esempi di policy basate su identità per Amazon DynamoDB
<a name="security_iam_id-based-policy-examples"></a>

Per impostazione predefinita, gli utenti e i ruoli non dispongono dell'autorizzazione per creare o modificare risorse DynamoDB. Per concedere agli utenti l’autorizzazione a eseguire azioni sulle risorse di cui hanno bisogno, un amministratore IAM può creare policy IAM.

Per informazioni su come creare una policy basata su identità IAM utilizzando questi documenti di policy JSON di esempio, consulta [Creazione di policy IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) nella *Guida per l’utente di IAM*.

*Per dettagli sulle azioni e sui tipi di risorse definiti da DynamoDB, incluso il formato di per ogni tipo di ARNs risorsa, [consulta Azioni, risorse e chiavi di condizione per Amazon DynamoDB nel Service Authorization Reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html).*

**Topics**
+ [Best practice per le policy](#security_iam_service-with-iam-policy-best-practices)
+ [Utilizzo della console DynamoDB](#security_iam_id-based-policy-examples-console)
+ [Consentire agli utenti di visualizzare le loro autorizzazioni](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Utilizzo di policy basate su identità con Amazon DynamoDB](using-identity-based-policies.md)

## Best practice per le policy
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Le policy basate su identità determinano se qualcuno può creare, accedere o eliminare risorse DynamoDB nel tuo account. Queste azioni possono comportare costi aggiuntivi per l’ Account AWS. Quando si creano o modificano policy basate sull’identità, seguire queste linee guida e raccomandazioni:
+ **Inizia con le politiche AWS gestite e passa alle autorizzazioni con privilegi minimi: per iniziare a concedere autorizzazioni** *a utenti e carichi di lavoro, utilizza le politiche gestite che concedono le autorizzazioni per molti casi d'uso comuni.AWS * Sono disponibili nel tuo. Account AWS Ti consigliamo di ridurre ulteriormente le autorizzazioni definendo politiche gestite dai AWS clienti specifiche per i tuoi casi d'uso. Per maggiori informazioni, consulta [Policy gestite da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o [Policy gestite da AWS per le funzioni dei processi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) nella *Guida per l’utente di IAM*.
+ **Applicazione delle autorizzazioni con privilegio minimo** - Quando si impostano le autorizzazioni con le policy IAM, concedere solo le autorizzazioni richieste per eseguire un’attività. È possibile farlo definendo le azioni che possono essere intraprese su risorse specifiche in condizioni specifiche, note anche come *autorizzazioni con privilegio minimo*. Per maggiori informazioni sull’utilizzo di IAM per applicare le autorizzazioni, consulta [Policy e autorizzazioni in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) nella *Guida per l’utente di IAM*.
+ **Condizioni d’uso nelle policy IAM per limitare ulteriormente l’accesso** - Per limitare l’accesso ad azioni e risorse è possibile aggiungere una condizione alle policy. Ad esempio, è possibile scrivere una condizione di policy per specificare che tutte le richieste devono essere inviate utilizzando SSL. Puoi anche utilizzare le condizioni per concedere l'accesso alle azioni del servizio se vengono utilizzate tramite uno specifico Servizio AWS, ad esempio CloudFormation. Per maggiori informazioni, consultare la sezione [Elementi delle policy JSON di IAM: condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) nella *Guida per l’utente di IAM*.
+ **Utilizzo dello strumento di analisi degli accessi IAM per convalidare le policy IAM e garantire autorizzazioni sicure e funzionali** - Lo strumento di analisi degli accessi IAM convalida le policy nuove ed esistenti in modo che aderiscano al linguaggio (JSON) della policy IAM e alle best practice di IAM. Lo strumento di analisi degli accessi IAM offre oltre 100 controlli delle policy e consigli utili per creare policy sicure e funzionali. Per maggiori informazioni, consultare [Convalida delle policy per il Sistema di analisi degli accessi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) nella *Guida per l’utente di IAM*.
+ **Richiedi l'autenticazione a più fattori (MFA**): se hai uno scenario che richiede utenti IAM o un utente root nel Account AWS tuo, attiva l'MFA per una maggiore sicurezza. Per richiedere la MFA quando vengono chiamate le operazioni API, aggiungere le condizioni MFA alle policy. Per maggiori informazioni, consultare [Protezione dell’accesso API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) nella *Guida per l’utente di IAM*.

Per maggiori informazioni sulle best practice in IAM, consulta [Best practice di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) nella *Guida per l’utente di IAM*.

## Utilizzo della console DynamoDB
<a name="security_iam_id-based-policy-examples-console"></a>

Per accedere alla console Amazon DynamoDB, è necessario disporre di un set di autorizzazioni minimo. Queste autorizzazioni devono consentirti di elencare e visualizzare i dettagli sulle risorse DynamoDB presenti nel tuo. Account AWS Se crei una policy basata sull’identità più restrittiva rispetto alle autorizzazioni minime richieste, la console non funzionerà nel modo previsto per le entità (utenti o ruoli) associate a tale policy.

Non è necessario consentire autorizzazioni minime di console per gli utenti che effettuano chiamate solo verso o l' AWS CLI API. AWS Al contrario, è opportuno concedere l’accesso solo alle azioni che corrispondono all’operazione API che stanno cercando di eseguire.

Per garantire che utenti e ruoli possano ancora utilizzare la console DynamoDB, collega anche `ConsoleAccess` DynamoDB o la policy gestita alle entità `ReadOnly` AWS . Per maggiori informazioni, consulta [Aggiunta di autorizzazioni a un utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente di IAM*.

## Consentire agli utenti di visualizzare le loro autorizzazioni
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Questo esempio mostra in che modo è possibile creare una policy che consente agli utenti IAM di visualizzare le policy inline e gestite che sono collegate alla relativa identità utente. Questa policy include le autorizzazioni per completare questa azione sulla console o utilizzando programmaticamente l'API o. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Utilizzo di policy basate su identità con Amazon DynamoDB
<a name="using-identity-based-policies"></a>

Questo argomento tratta l'uso di politiche basate sull'identità AWS Identity and Access Management (IAM) con Amazon DynamoDB e fornisce esempi. Gli esempi illustrano come un amministratore account può collegare policy di autorizzazioni a identità IAM (ovvero utenti, gruppi e ruoli) e quindi concedere autorizzazioni per eseguire operazioni sulle risorse di Amazon DynamoDB.

In questa sezione vengono trattati gli argomenti seguenti:
+ [Autorizzazioni IAM necessarie per utilizzare la console Amazon DynamoDB](#console-permissions)
+ [AWS politiche IAM gestite (predefinite) per Amazon DynamoDB](#access-policy-examples-aws-managed)
+ [Esempi di policy gestite dal cliente](#access-policy-examples-for-sdk-cli)



Di seguito è riportato un esempio di policy delle autorizzazioni.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeQueryScanBooksTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Books"
        }
    ]
}
```

------

 La politica precedente contiene un'istruzione che concede le autorizzazioni per tre azioni DynamoDB (`dynamodb:DescribeTable``dynamodb:Query`, e`dynamodb:Scan`) su una tabella nella `us-west-2` AWS regione, di proprietà dell'account specificato da. AWS `account-id` Il *nome della risorsa Amazon (ARN)* nel valore `Resource` specifica la tabella a cui si applicano le autorizzazioni.

## Autorizzazioni IAM necessarie per utilizzare la console Amazon DynamoDB
<a name="console-permissions"></a>

Per lavorare con la console DynamoDB, un utente deve disporre di un set minimo di autorizzazioni che gli consentano di utilizzare le risorse DynamoDB del proprio AWS account. Oltre a queste autorizzazioni DynamoDB, la console richiede le autorizzazioni dei seguenti servizi:
+  CloudWatch Autorizzazioni Amazon per visualizzare metriche e grafici.
+ AWS Data Pipeline autorizzazioni per esportare e importare dati DynamoDB. 
+  AWS Identity and Access Management autorizzazioni per accedere ai ruoli necessari per le esportazioni e le importazioni.
+ Autorizzazioni di Amazon Simple Notification Service per avvisarti ogni volta che viene attivato un CloudWatch allarme.
+ AWS Lambda autorizzazioni per elaborare i record DynamoDB Streams.

Se decidi di creare una policy IAM più restrittiva delle autorizzazioni minime richieste, la console non funzionerà come previsto per gli utenti con tale policy IAM. Per garantire che tali utenti possano continuare a utilizzare la console DynamoDB, allega anche `AmazonDynamoDBReadOnlyAccess` AWS la policy gestita all'utente, come descritto in. [AWS politiche IAM gestite (predefinite) per Amazon DynamoDB](#access-policy-examples-aws-managed)

Non è necessario consentire autorizzazioni minime per la console per gli utenti che effettuano chiamate solo verso l' AWS CLI API di Amazon DynamoDB.

**Nota**  
 Se fai riferimento a un endpoint VPC, dovrai anche autorizzare la chiamata DescribeEndpoints API per i principali IAM richiedenti con l'azione IAM (dynamodb:). DescribeEndpoints Per ulteriori informazioni, consulta [Policy richieste per gli endpoint](inter-network-traffic-privacy.md#inter-network-traffic-DescribeEndpoints). 

## AWS politiche IAM gestite (predefinite) per Amazon DynamoDB
<a name="access-policy-examples-aws-managed"></a>

AWS affronta alcuni casi d'uso comuni fornendo politiche IAM autonome create e amministrate da. AWS Queste policy AWS gestite concedono le autorizzazioni necessarie per i casi d'uso comuni in modo da evitare di dover verificare quali autorizzazioni sono necessarie. Per ulteriori informazioni, consulta [Policy gestite da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) nella *Guida per l'utente di IAM*.

Le seguenti policy AWS gestite, che puoi allegare agli utenti del tuo account, sono specifiche di DynamoDB e sono raggruppate per scenario d'uso:
+ **AmazonDynamoDBReadOnlyAccess**— Concede l'accesso in sola lettura alle risorse DynamoDB tramite. Console di gestione AWS
+ **AmazonDynamoDBFullAccesso**: garantisce l'accesso completo alle risorse DynamoDB tramite. Console di gestione AWS

Puoi rivedere queste politiche di autorizzazione AWS gestite accedendo alla console IAM e cercando lì policy specifiche.

**Importante**  
La best practice consiste nel creare policy IAM personalizzate che forniscano il [privilegio minimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) agli utenti, ai ruoli o ai gruppi che ne hanno bisogno. 

## Esempi di policy gestite dal cliente
<a name="access-policy-examples-for-sdk-cli"></a>

In questa sezione sono riportati esempi di policy che concedono autorizzazioni per diverse operazioni DynamoDB. Queste politiche funzionano quando si utilizza AWS SDKs o il AWS CLI. Quando si utilizza la console, è necessario concedere autorizzazioni aggiuntive che sono specifiche della console. Per ulteriori informazioni, consulta [Autorizzazioni IAM necessarie per utilizzare la console Amazon DynamoDB](#console-permissions).

**Nota**  
Tutti i seguenti esempi di politiche utilizzano una delle AWS regioni e contengono nomi di account IDs e tabelle fittizi.

Esempi:
+ [Policy IAM per concedere autorizzazioni a tutte le azioni DynamoDB in una tabella](grant-permissions-to-any-action-on-table.md)
+ [Policy IAM per concedere le autorizzazioni di sola lettura su elementi in una tabella DynamoDB](read-only-permissions-on-table-items.md)
+ [Policy IAM per concedere l'accesso a una tabella DynamoDB specifica e ai relativi indici](iam-policy-specific-table-indexes.md)
+ [Policy IAM per l'accesso in lettura, scrittura, aggiornamento ed eliminazione su una tabella DynamoDB](iam-policy-example-data-crud.md)
+ [Politica IAM per separare gli ambienti DynamoDB nello stesso account AWS](iam-policy-separate-environments.md)
+ [Policy IAM per impedire l'acquisto di capacità riservata DynamoDB](iam-prevent-purchase-reserved-capacity.md)
+ [Policy IAM per concedere l'accesso in lettura solo per un flusso DynamoDB (non per la tabella)](iam-policy-read-stream-only.md)
+ [Politica IAM per consentire a una AWS Lambda funzione di accedere ai record di flusso DynamoDB](iam-policy-example-lamda-process-dynamodb-streams.md)
+ [Policy IAM per l'accesso in lettura e scrittura a un cluster DynamoDB Accelerator (DAX)](iam-policy-example-read-write-dax-access.md)

 La *Guida per l'utente di IAM*, include [tre ulteriori esempi di DynamoDB](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html):
+ [Amazon DynamoDB: consente l'accesso a una tabella specifica](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html)
+ [Amazon DynamoDB: consente l'accesso a colonne specifiche](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_columns.html)
+ [Amazon DynamoDB: consente l'accesso a livello di riga a DynamoDB in base a un ID Amazon Cognito](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_rows.html)

# Policy IAM per concedere autorizzazioni a tutte le azioni DynamoDB in una tabella
<a name="grant-permissions-to-any-action-on-table"></a>

La seguente policy concede le autorizzazioni per *tutte* le operazioni DynamoDB su una tabella denominata `Books`. L'ARN della risorsa specificato in `Resource` identifica una tabella in una regione specifica. AWS Se sostituisci il nome della tabella `Books` nell'ARN`Resource` con un carattere jolly (\$1), *tutte* le operazioni DynamoDB saranno consentite su *tutte* le tabelle nell'account. Valuta attentamente le possibili implicazioni per la sicurezza prima di utilizzare un carattere jolly in questa o qualsiasi altra policy IAM.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

**Nota**  
Questo è un esempio di utilizzo di un carattere jolly (\$1) per consentire *tutte* le operazioni, tra cui l'amministrazione, le operazioni dei dati, il monitoraggio e l'acquisto di capacità riservata DynamoDB. Invece, è una best practice specificare in modo esplicito ogni azione da concedere e solo ciò di cui ha bisogno un dato utente, ruolo o gruppo.

# Policy IAM per concedere le autorizzazioni di sola lettura su elementi in una tabella DynamoDB
<a name="read-only-permissions-on-table-items"></a>

La seguente policy di autorizzazioni concede le autorizzazioni solo per le operazioni DynamoDB `GetItem`, `BatchGetItem`, `Scan`, `Query` e `ConditionCheckItem`, quindi imposta l'accesso in sola lettura sulla tabella `Books`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

# Policy IAM per concedere l'accesso a una tabella DynamoDB specifica e ai relativi indici
<a name="iam-policy-specific-table-indexes"></a>

La policy seguente concede le autorizzazioni necessarie per le operazioni di modifica dei dati in una tabella DynamoDB denominata `Books` e tutti i relativi indici. Per ulteriori informazioni sul funzionamento degli indici, consulta [Miglioramento dell’accesso ai dati con gli indici secondari in DynamoDB](SecondaryIndexes.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessTableAllIndexesOnBooks",
            "Effect": "Allow",
            "Action": [
              "dynamodb:PutItem",
              "dynamodb:UpdateItem",
              "dynamodb:DeleteItem",
              "dynamodb:BatchWriteItem",
              "dynamodb:GetItem",
              "dynamodb:BatchGetItem",
              "dynamodb:Scan",
              "dynamodb:Query",
              "dynamodb:ConditionCheckItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

# Policy IAM per l'accesso in lettura, scrittura, aggiornamento ed eliminazione su una tabella DynamoDB
<a name="iam-policy-example-data-crud"></a>

Utilizza questa policy per consentire all'applicazione di creare, leggere, aggiornare ed eliminare dati in tabelle, indici e flussi di Amazon DynamoDB. Sostituisci il nome AWS della regione, l'ID dell'account e il nome della tabella o il carattere jolly (\$1), se appropriato.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBIndexAndStreamAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetShardIterator",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:ListStreams"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/stream/*"
            ]
        },
        {
            "Sid": "DynamoDBTableAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:PutItem",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        },
        {
            "Sid": "DynamoDBDescribeLimitsAccess",
            "Effect": "Allow",
            "Action": "dynamodb:DescribeLimits",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

Per estendere questa policy a tutte le tabelle DynamoDB in AWS tutte le regioni per questo account, usa un carattere jolly (\$1) per la regione e il nome della tabella. Esempio:

```
"Resource":[
                "arn:aws:dynamodb:*:123456789012:table/*",
                "arn:aws:dynamodb:*:123456789012:table/*/index/*"
                ]
```

# Politica IAM per separare gli ambienti DynamoDB nello stesso account AWS
<a name="iam-policy-separate-environments"></a>

Si supponga di avere ambienti separati in cui ogni ambiente mantiene la propria versione di una tabella denominata `ProductCatalog`. Se crei due `ProductCatalog` tabelle nello stesso AWS account, lavorare in un ambiente potrebbe influire sull'altro ambiente a causa del modo in cui sono impostate le autorizzazioni. Ad esempio, le quote sul numero di operazioni simultanee del piano di controllo (ad esempio`CreateTable`) vengono impostate a livello di account. AWS 

Di conseguenza, ogni operazione in un ambiente riduce il numero di operazioni disponibili nell'altro ambiente. Vi è, inoltre, il rischio che il codice in un ambiente possa accedere per errore alle tabelle nell'altro ambiente.

**Nota**  
Se desideri separare i carichi di lavoro di produzione e di test per controllare il potenziale "raggio di esplosione" di un evento, la best practice consiste nel creare account AWS separati per i carichi di lavoro di test e produzione. Per ulteriori informazioni, consulta [Gestione e separazione degli account AWS](https://docs.aws.amazon.com//wellarchitected/latest/security-pillar/aws-account-management-and-separation.html).

Si supponga di avere due sviluppatori, Amit e Alice, che stanno eseguendo il test della tabella `ProductCatalog`. Invece di richiedere a ogni sviluppatore un AWS account separato, i tuoi sviluppatori possono condividere lo stesso account di test AWS . In questo account di test puoi creare per ogni sviluppatore una copia della stessa tabella su cui lavorare, ad esempio `Alice_ProductCatalog` e `Amit_ProductCatalog`. In questo caso, puoi creare gli utenti Alice e Amit nell' AWS account che hai creato per l'ambiente di test. È quindi possibile concedere a questi utenti le autorizzazioni per eseguire le operazioni DynamoDB sulle tabelle di loro proprietà. 

Per concedere queste autorizzazioni utente IAM, è possibile completare una delle operazioni seguenti:
+ Crea una policy separata per ogni utente e quindi collegare separatamente ogni policy al proprio utente. Ad esempio, è possibile collegare la seguente policy all'utente Alice per consentire l'accesso a tutte le operazioni DynamoDB sulla tabella `Alice_ProductCatalog`: 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllAPIActionsOnAliceTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:DescribeContributorInsights",
                "dynamodb:RestoreTableToPointInTime",
                "dynamodb:ListTagsOfResource",
                "dynamodb:CreateTableReplica",
                "dynamodb:UpdateContributorInsights",
                "dynamodb:CreateBackup",
                "dynamodb:DeleteTable",
                "dynamodb:UpdateTableReplicaAutoScaling",
                "dynamodb:UpdateContinuousBackups",
                "dynamodb:TagResource",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:DescribeContinuousBackups",
                "dynamodb:BatchGetItem",
                "dynamodb:UpdateTimeToLive",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:UntagResource",
                "dynamodb:PutItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteTableReplica",
                "dynamodb:DescribeTimeToLive",
                "dynamodb:RestoreTableFromBackup",
                "dynamodb:UpdateTable",
                "dynamodb:DescribeTableReplicaAutoScaling",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:DescribeLimits",
                "dynamodb:ListStreams"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*"
          }
      ]
  }
  ```

------

  Quindi, è possibile creare una policy simile con una risorsa diversa (la tabella `Amit_ProductCatalog`) per l'utente Amit. 
+ Invece di collegare le policy ai singoli utenti, puoi utilizzare variabili di policy IAM per scrivere un'unica policy e collegarla a un gruppo. È necessario creare un gruppo e, per questo esempio, aggiungervi entrambi gli utenti Alice e Amit. Nel seguente esempio vengono concesse le autorizzazioni per eseguire tutte le operazioni DynamoDB sulla tabella `${aws:username}_ProductCatalog`. Quando la policy viene valutata, la variabile `${aws:username}` viene sostituita dal nome utente del richiedente. Ad esempio, se Alice invia una richiesta di aggiunta di un item, l'operazione è consentita solo se l'item viene aggiunto alla tabella `Alice_ProductCatalog`. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ActionsOnUserSpecificTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog"
          },
          {
              "Sid": "AdditionalPrivileges",
              "Effect": "Allow",
              "Action": [
                  "dynamodb:ListTables",
                  "dynamodb:DescribeTable",
                  "dynamodb:DescribeContributorInsights"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*"
          }
      ]
  }
  ```

------

**Nota**  
Quando si utilizzano le variabili di policy IAM, è necessario specificare esplicitamente la versione `2012-10-17` del linguaggio di policy IAM nella policy. La versione predefinita del linguaggio di policy IAM (`2008-10-17`) non supporta le variabili di policy. 

Invece di identificare una tabella specifica come risorsa come si farebbe normalmente, è possibile utilizzare un carattere jolly (\$1) per concedere le autorizzazioni su tutte le tabelle il cui nome abbia il prefisso del nome dell'utente che sta effettuando la richiesta, come mostrato di seguito:

```
"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"
```

# Policy IAM per impedire l'acquisto di capacità riservata DynamoDB
<a name="iam-prevent-purchase-reserved-capacity"></a>

Con la capacità riservata di Amazon DynamoDB, si paga una commissione anticipata una tantum e ci si impegna a pagare per un livello minimo di utilizzo, con un risparmio significativo, per un periodo di tempo. È possibile utilizzare il Console di gestione AWS per visualizzare e acquistare la capacità riservata. Tuttavia, si potrebbe volere che non tutti gli utenti nell'organizzazione abbiano la possibilità di acquistare capacità riservata. Per ulteriori informazioni sulla capacità riservata, consulta [Prezzi di Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB fornisce le seguenti operazioni API per controllare l'accesso alla gestione della capacità riservata:
+ `dynamodb:DescribeReservedCapacity`: restituisce gli acquisti di capacità riservata attualmente in vigore.
+ `dynamodb:DescribeReservedCapacityOfferings`: restituisce i dettagli sui piani di capacità riservata attualmente offerti da AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings`: esegue un acquisto effettivo della capacità riservata.

 Console di gestione AWS Utilizza queste azioni API per visualizzare le informazioni sulla capacità riservata ed effettuare acquisti. Non puoi chiamare queste operazioni da un programma applicativo, poiché sono accessibili solo dalla console. Tuttavia, è possibile consentire o negare l'accesso a queste operazioni in una policy di autorizzazioni IAM.

La seguente politica consente agli utenti di visualizzare gli acquisti e le offerte di capacità riservata utilizzando il Console di gestione AWS , ma i nuovi acquisti vengono negati.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Ricorda che questa policy utilizza il carattere jolly (\$1) per consentire a tutti di descrivere le autorizzazioni, e per impedire a tutti l'acquisto della capacità riservata di DynamoDB.

# Policy IAM per concedere l'accesso in lettura solo per un flusso DynamoDB (non per la tabella)
<a name="iam-policy-read-stream-only"></a>

Quando si abilita DynamoDB Streams su una tabella, vengono acquisite le informazioni su ogni modifica apportata agli elementi nella tabella. Per ulteriori informazioni, consulta [Acquisizione dei dati di modifica per DynamoDB Streams](Streams.md).

In alcuni casi, è possibile che si desideri impedire a un'applicazione di leggere i dati da una tabella DynamoDB, permettendo comunque l'accesso al flusso di tale tabella. Ad esempio, puoi configurare il AWS Lambda polling di uno stream e richiamare una funzione Lambda quando vengono rilevati aggiornamenti degli elementi, quindi eseguire un'elaborazione aggiuntiva.

Per controllare l'accesso a DynamoDB Streams sono disponibili le seguenti operazioni:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

Nella seguente policy esempio vengono concesse le autorizzazioni agli utenti per accedere ai flussi di una tabella denominata `GameScores`. Il carattere jolly (\$1) nell'ARN corrisponde a qualsiasi flusso associato a tale tabella.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGameScoresStreamOnly",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Questa policy concede l'accesso ai flussi della tabella `GameScores`, ma non alla tabella stessa.

# Politica IAM per consentire a una AWS Lambda funzione di accedere ai record di flusso DynamoDB
<a name="iam-policy-example-lamda-process-dynamodb-streams"></a>

Se desideri eseguire determinate azioni in base agli eventi in un flusso DynamoDB, puoi scrivere AWS Lambda una funzione attivata da questi eventi. Una funzione Lambda come questa ha bisogno delle autorizzazioni per leggere i dati da un flusso di DynamoDB. Per ulteriori informazioni sull'uso di Lambda con DynamoDB Streams, consulta [Streams e trigger DynamoDB AWS Lambda](Streams.Lambda.md).

Per concedere autorizzazioni a Lambda, utilizza la policy di autorizzazione associata al ruolo IAM della funzione Lambda (nota anche come ruolo di esecuzione). È possibile specificare questa policy quando si crea la funzione Lambda.

Ad esempio, è possibile associare la seguente policy di autorizzazioni a un ruolo di esecuzione per concedere le autorizzazioni Lambda per eseguire le azioni DynamoDB Streams elencate.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "APIAccessForDynamoDBStreams",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Per ulteriori informazioni, consulta [Autorizzazioni AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) nella *Guida per gli sviluppatori di AWS Lambda *.

# Policy IAM per l'accesso in lettura e scrittura a un cluster DynamoDB Accelerator (DAX)
<a name="iam-policy-example-read-write-dax-access"></a>

La seguente policy consente l'accesso in lettura, scrittura, aggiornamento ed eliminazione a un cluster DynamoDB Accelerator (DAX), ma non alla tabella DynamoDB associata. Per utilizzare questa politica, sostituisci il nome della AWS regione, l'ID dell'account e il nome del cluster DAX.

**Nota**  
Questa policy dà accesso al cluster DAX, ma non alla tabella DynamoDB associata. Assicurati che il cluster DAX disponga delle policy corrette per eseguire le stesse operazioni sulla tabella DynamoDB per conto dell'utente. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonDynamoDBDAXDataOperations",
            "Effect": "Allow",
            "Action": [
                "dax:GetItem",
                "dax:PutItem",
                "dax:ConditionCheckItem",
                "dax:BatchGetItem",
                "dax:BatchWriteItem",
                "dax:DeleteItem",
                "dax:Query",
                "dax:UpdateItem",
                "dax:Scan"
            ],
            "Resource": "arn:aws:dax:eu-west-1:123456789012:cache/MyDAXCluster"
        }
    ]
}
```

------

Per estendere questa politica all'accesso DAX per tutte le AWS regioni di un account, utilizza un carattere jolly (\$1) per il nome della regione.

```
"Resource": "arn:aws:dax:*:123456789012:cache/MyDAXCluster"
```







# Risoluzione dei problemi relativi all'identità e all'accesso di Amazon DynamoDB
<a name="security_iam_troubleshoot"></a>

Utilizza le informazioni seguenti per diagnosticare e risolvere i problemi comuni che possono verificarsi durante l'utilizzo di DynamoDB e IAM.

**Topics**
+ [Non sono autorizzato a eseguire un'operazione in DynamoDB](#security_iam_troubleshoot-no-permissions)
+ [Non sono autorizzato a eseguire iam: PassRole](#security_iam_troubleshoot-passrole)
+ [Voglio consentire a persone esterne a me di accedere Account AWS alle mie risorse DynamoDB](#security_iam_troubleshoot-cross-account-access)

## Non sono autorizzato a eseguire un'operazione in DynamoDB
<a name="security_iam_troubleshoot-no-permissions"></a>

Se ti Console di gestione AWS dice che non sei autorizzato a eseguire un'azione, devi contattare l'amministratore per ricevere assistenza. L'amministratore è la persona da cui si sono ricevuti il nome utente e la password.

Il seguente esempio di errore si verifica quando l'utente `mateojackson` prova a utilizzare la console per visualizzare i dettagli relativi a una risorsa `my-example-widget` fittizia, ma non dispone di autorizzazioni `aws:GetWidget` fittizie.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: aws:GetWidget on resource: my-example-widget
```

In questo caso, Mateo richiede al suo amministratore di aggiornare le policy per poter accedere alla risorsa `my-example-widget` utilizzando l'operazione `aws:GetWidget`.

## Non sono autorizzato a eseguire iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Se si riceve un errore che indica che non si è autorizzati a eseguire l'operazione `iam:PassRole`, è necessario aggiornare le policy per poter passare un ruolo a DynamoDB.

Alcuni Servizi AWS consentono di passare un ruolo esistente a quel servizio invece di creare un nuovo ruolo di servizio o un ruolo collegato al servizio. Per eseguire questa operazione, è necessario disporre delle autorizzazioni per trasmettere il ruolo al servizio.

L'errore di esempio seguente si verifica quando un utente IAM denominato `marymajor` cerca di utilizzare la console per eseguire un'operazione in DynamoDB. Tuttavia, l’azione richiede che il servizio disponga delle autorizzazioni concesse da un ruolo di servizio. Mary non dispone delle autorizzazioni per trasmettere il ruolo al servizio.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

In questo caso, le policy di Mary devono essere aggiornate per poter eseguire l’operazione `iam:PassRole`.

Se hai bisogno di aiuto, contatta il tuo AWS amministratore. L’amministratore è la persona che ti ha fornito le credenziali di accesso.

## Voglio consentire a persone esterne a me di accedere Account AWS alle mie risorse DynamoDB
<a name="security_iam_troubleshoot-cross-account-access"></a>

È possibile creare un ruolo con il quale utenti in altri account o persone esterne all’organizzazione possono accedere alle tue risorse. È possibile specificare chi è attendibile per l’assunzione del ruolo. Per i servizi che supportano politiche basate sulle risorse o liste di controllo degli accessi (ACLs), puoi utilizzare tali politiche per concedere alle persone l'accesso alle tue risorse.

Per maggiori informazioni, consulta gli argomenti seguenti:
+ Per capire se DynamoDB supporta queste funzionalità, consultare [Funzionamento di Amazon DynamoDB con IAM](security_iam_service-with-iam.md).
+ Per scoprire come fornire l'accesso alle risorse di tua proprietà, consulta [Fornire l'accesso a un utente IAM in Account AWS un altro Account AWS di tua proprietà nella](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) *IAM* User Guide.
+ Per scoprire come fornire l'accesso alle tue risorse a terze parti Account AWS, consulta [Fornire l'accesso a soggetti Account AWS di proprietà di terze parti](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) nella *Guida per l'utente IAM*.
+ Per informazioni su come fornire l'accesso tramite la federazione delle identità, consulta [Fornire l'accesso a utenti autenticati esternamente (federazione delle identità)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) nella *Guida per l'utente IAM*.
+ Per informazioni sulle differenze di utilizzo tra ruoli e policy basate su risorse per l’accesso multi-account, consulta [Accesso a risorse multi-account in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) nella *Guida per l’utente di IAM*.

# Policy IAM per impedire l'acquisto di capacità riservata DynamoDB
<a name="iam-policy-prevent-purchase-reserved-capacity"></a>

Con la capacità riservata di Amazon DynamoDB, si paga una commissione anticipata una tantum e ci si impegna a pagare per un livello minimo di utilizzo, con un risparmio significativo, per un periodo di tempo. Puoi utilizzare il Console di gestione AWS per visualizzare e acquistare la capacità riservata. Tuttavia, si potrebbe volere che non tutti gli utenti nell'organizzazione abbiano la possibilità di acquistare capacità riservata. Per ulteriori informazioni sulla capacità riservata, consulta [Prezzi di Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB fornisce le seguenti operazioni API per controllare l'accesso alla gestione della capacità riservata:
+ `dynamodb:DescribeReservedCapacity`: restituisce gli acquisti di capacità riservata attualmente in vigore.
+ `dynamodb:DescribeReservedCapacityOfferings`: restituisce i dettagli sui piani di capacità riservata attualmente offerti da AWS.
+ `dynamodb:PurchaseReservedCapacityOfferings`: esegue un acquisto effettivo della capacità riservata.

 Console di gestione AWS Utilizza queste azioni API per visualizzare le informazioni sulla capacità riservata ed effettuare acquisti. Non puoi chiamare queste operazioni da un programma applicativo, poiché sono accessibili solo dalla console. Tuttavia, è possibile consentire o negare l'accesso a queste operazioni in una policy di autorizzazioni IAM.

La seguente politica consente agli utenti di visualizzare gli acquisti e le offerte di capacità riservata utilizzando il Console di gestione AWS , ma i nuovi acquisti vengono negati.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Ricorda che questa policy utilizza il carattere jolly (\$1) per consentire a tutti di descrivere le autorizzazioni, e per impedire a tutti l'acquisto della capacità riservata di DynamoDB.

# Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi
<a name="specifying-conditions"></a>

Quando si concedono le autorizzazioni in DynamoDB, è possibile specificare le condizioni che determinano il modo in cui una policy di autorizzazioni viene applicata. 

## Panoramica di
<a name="FGAC_DDB.Overview"></a>

In DynamoDB, si ha la possibilità di specificare le condizioni nel momento in cui si concedono le autorizzazioni utilizzando una policy IAM (consultare [Identity and Access Management per Amazon DynamoDB](security-iam.md)). Ad esempio, puoi:
+ Concedere autorizzazioni per permettere agli utenti accesso in sola lettura a determinati elementi e attributi in una tabella o indice secondario.
+ Concedere autorizzazioni per permettere agli utenti di accedere in sola scrittura a determinati attributi in una tabella, in base all'identità di tale utente.

In DynamoDB è possibile specificare le condizioni in una policy IAM utilizzando chiavi di condizione, come illustrato nel caso d'uso nella sezione seguente.

### Caso d'uso delle autorizzazioni
<a name="FGAC_DDB.OverviewUseCase"></a>

Oltre a controllare l'accesso alle operazioni API DynamoDB, è possibile controllare anche l'accesso a singoli elementi e attributi di dati. Ad esempio, puoi eseguire le operazioni seguenti:
+ Concedere autorizzazioni su una tabella, ma limitare l'accesso ad item specifici in tale tabella sulla base di determinati valori delle chiavi primarie. Un esempio potrebbe essere un'app di social network per i giochi, in cui tutti i dati di gioco degli utenti vengono archiviati in un'unica tabella, ma nessun utente può accedere agli elementi dei dati di cui non sono proprietari, come mostrato nell'illustrazione seguente:  
![\[Un caso d’uso che concede l’accesso a livello di tabella a un utente ma limita l’accesso a elementi di dati specifici.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/info-hiding-horizontal.png)
+ Nascondi le informazioni in modo che solo un sottoinsieme di attributi sia visibile all'utente. Un esempio potrebbe essere un'app che mostra dati dei voli per gli aeroporti nelle vicinanze, in base alla posizione dell'utente. I nomi delle compagnie aeree, gli orari di arrivo e di partenza e il numero dei voli vengono tutti visualizzati. Tuttavia, gli attributi come i nomi dei piloti, o il numero dei passeggeri, sono nascosti, come mostrato nell'illustrazione seguente:   
![\[Un caso d’uso che mostra solo un sottoinsieme di dati agli utenti, ma nasconde determinati attributi dei dati.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/info-hiding-vertical.png)

Per implementare questo tipo di controllo degli accessi granulare, scrivere una policy di autorizzazioni IAM che specifichi le condizioni per accedere alle credenziali di sicurezza e le autorizzazioni associate. Quindi applichi la policy agli utenti, ai gruppi o ai ruoli che crei utilizzando la console IAM. La policy IAM può limitare l'accesso ai singoli elementi in una tabella, agli attributi in tali elementi o a entrambi nello stesso tempo.

Puoi utilizzare la federazione delle identità sul Web per controllare l'accesso degli utenti che si autenticano con Facebook, Google o Login with Amazon. Per ulteriori informazioni, consulta [Utilizzo della federazione delle identità Web](WIF.md).

Puoi utilizzare l'elemento `Condition` IAM per implementare una policy di controllo degli accessi fine-grained. Aggiungendo un elemento `Condition` a una policy di autorizzazioni, è possibile consentire o negare l'accesso agli elementi e agli attributi nelle tabelle e negli indici DynamoDB, in base ai tuoi particolari requisiti aziendali. 

Il video seguente spiega il controllo granulare degli accessi in DynamoDB attraverso le condizioni delle policy IAM.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi)


## Comprendere il controllo granulare degli accessi in DynamoDB
<a name="FGAC_DDB.UnderstandingFineGrainedAccess"></a>

Il controllo granulare degli accessi in DynamoDB consente di creare limiti di autorizzazione precisi a più livelli:

1. **Controllo degli accessi a livello di elemento: limita gli utenti ad accedere** solo agli elementi che contengono valori chiave specifici, che in genere corrispondono alla loro identità o all'ambito di autorizzazione.

1. **Controllo dell'accesso a livello di attributo:** limita gli attributi (colonne) che gli utenti possono visualizzare o modificare, in modo da proteggere le informazioni sensibili e consentire l'accesso ai dati non sensibili all'interno degli stessi elementi.

1. **Controlli specifici dell'operazione:** applica regole di autorizzazione diverse in base al tipo di operazione eseguita.

Questi controlli sono implementati tramite policy IAM che utilizzano chiavi di condizione specifiche per DynamoDB.

## Specifica delle condizioni: Uso delle chiavi di condizione
<a name="FGAC_DDB.ConditionKeys"></a>

AWS fornisce un set di chiavi di condizione predefinite (AWS-wide condition keys) per tutti i AWS servizi che supportano IAM per il controllo degli accessi. Ad esempio, puoi utilizzare la chiave di condizione `aws:SourceIp` per controllare l'indirizzo IP del richiedente prima che un'operazione venga effettuata. Per ulteriori informazioni e un elenco delle chiavi AWS-wide, consulta Available [Keys for Conditions](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) nella IAM User Guide.

Di seguito sono riportate le chiavi delle condizioni specifiche del servizio DynamoDB che si applicano a DynamoDB.

**`dynamodb:LeadingKeys`**  
Rappresenta il primo attributo chiave di una tabella, ovvero la chiave di partizione. Il nome della chiave `LeadingKeys` è plurale, anche se la chiave viene utilizzata con operazioni con item singolo. Inoltre, devi utilizzare il modificatore `ForAllValues` quando utilizzi `LeadingKeys` in una condizione.

**`dynamodb:Select`**  
Rappresenta il parametro `Select` di una richiesta. `Select` può essere uno qualsiasi dei seguenti valori:  
+ `ALL_ATTRIBUTES`
+ `ALL_PROJECTED_ATTRIBUTES`
+ `SPECIFIC_ATTRIBUTES`
+ `COUNT`
Sebbene spesso associata alle operazioni di interrogazione e scansione, questa chiave di condizione si applica a tutte le operazioni DynamoDB che restituiscono gli attributi degli articoli ed è essenziale per controllare l'accesso agli attributi in tutte le azioni API. L'utilizzo di vincoli StringEqualsIfExists o vincoli simili su questa chiave di condizione applicherà i vincoli alle operazioni in cui si applica questa chiave di condizione, ignorandoli alle operazioni in cui non è applicabile.

**`dynamodb:Attributes`**  
Rappresenta un elenco degli attributi di *primo livello a cui si accede tramite una richiesta.* Un attributo di primo livello è accessibile tramite una richiesta se esso, o qualsiasi attributo annidato in esso contenuto, è specificato nei parametri della richiesta. Ad esempio, una `GetItem` richiesta che specifica un `ProjectionExpression` di`"Name, Address.City"`, l'`dynamodb:Attributes`elenco includerebbe «Nome» e «Indirizzo». Se il `Attributes` parametro è enumerato in una politica di controllo degli accessi dettagliata, prendi in considerazione anche la possibilità di applicare restrizioni `ReturnValues` e `Select` parametri per garantire l'accesso limitato a determinati attributi attraverso più azioni API come, e. `GetItem` `Query` `Scan`   
Questa condizione viene valutata solo sugli attributi specificati nella richiesta (come in a ProjectionExpression), non sugli attributi nella risposta. Se nella richiesta non ProjectionExpression viene fornito alcun valore, tutti gli attributi verranno restituiti indipendentemente da eventuali restrizioni sugli attributi nella politica. Consulta la sezione «Garantire l'applicazione delle restrizioni basate sugli attributi» di seguito per i dettagli su come proteggere correttamente l'accesso agli attributi.

**`dynamodb:ReturnValues`**  
Rappresenta il `ReturnValues` parametro di una richiesta. A seconda dell'azione dell'API, `ReturnValues` potrebbe essere uno dei seguenti valori:   
+ `ALL_OLD`
+ `UPDATED_OLD`
+ `ALL_NEW`
+ `UPDATED_NEW`
+ `NONE`

**`dynamodb:ReturnConsumedCapacity`**  
Rappresenta il parametro `ReturnConsumedCapacity` di una richiesta. `ReturnConsumedCapacity` può essere uno qualsiasi dei seguenti valori:  
+ `TOTAL`
+ `NONE`

**`dynamodb:FirstPartitionKeyValues`**  
Rappresenta il primo attributo chiave di una tabella, in altre parole, la prima chiave di partizione. Il nome della chiave `FirstPartitionKeyValues` è plurale, anche se la chiave viene utilizzata con operazioni con item singolo. Inoltre, è necessario utilizzare il `ForAllValues` modificatore quando si utilizza in una condizione. `FirstPartitionKeyValues` `FirstPartitionKeyValues`e `LeadingKeys` può essere utilizzato come intercambiabile.

**`dynamodb:SecondPartitionKeyValues`**  
Simile a `dynamodb:FirstPartitionKeyValues`. Rappresenta la seconda chiave di partizione delle risorse. Il nome della chiave `SecondPartitionKeyValues` è plurale, anche se la chiave viene utilizzata con operazioni con item singolo.

**`dynamodb:ThirdPartitionKeyValues`**  
Simile a `dynamodb:FirstPartitionKeyValues`. Rappresenta la chiave di terza partizione delle risorse. Il nome della chiave `ThirdPartitionKeyValues` è plurale, anche se la chiave viene utilizzata con operazioni con item singolo.

**`dynamodb:FourthPartitionKeyValues`**  
Simile a `dynamodb:FirstPartitionKeyValues`. Rappresenta la quarta chiave di partizione delle risorse. Il nome della chiave `FourthPartitionKeyValues` è plurale, anche se la chiave viene utilizzata con operazioni con item singolo.

### Garantire l'applicazione delle restrizioni basate sugli attributi
<a name="FGAC_DDB.EnsuringAttributeRestrictions"></a>

Quando si utilizzano condizioni basate sugli attributi per limitare l'accesso a attributi specifici, è importante capire come vengono valutate queste condizioni:
+ **Le condizioni degli attributi vengono valutate solo sugli attributi specificati nella richiesta**, non sugli attributi nella risposta.
+ **Per le operazioni di lettura senza ProjectionExpression** (GetItem, Query, Scan, ecc.), tutti gli attributi verranno restituiti indipendentemente dalle restrizioni sugli attributi previste dalla policy. Per evitare questa potenziale esposizione di dati sensibili, implementa entrambe le condizioni degli attributi (`dynamodb:Attributes`) e deve essere richiesta una condizione che richieda attributi specifici (`dynamodb:Select`).
+ **Per le operazioni di scrittura** (PutItem UpdateItem,, DeleteItem), il ReturnValues parametro può restituire elementi completi, esponendo potenzialmente attributi limitati anche quando l'operazione di scrittura stessa è conforme alla politica dell'utente. Per evitare questa esposizione, implementate nella vostra policy sia le condizioni relative agli attributi (`dynamodb:Attributes`) che le restrizioni su ReturnValues (`dynamodb:ReturnValues`).

### Limitazione dell'accesso utente
<a name="FGAC_DDB.LimitingAccess"></a>

Molte policy di autorizzazioni IAM permettono agli utenti di accedere solo a quegli elementi in una tabella in cui il valore della chiave di partizione corrisponde all'identificatore dell'utente. Ad esempio, l'app di gioco menzionata in precedenza limita l'accesso in questo modo, tanto che gli utenti possono solo accedere ai dati di gioco collegati al loro ID utente. Le variabili di sostituzione IAM `${www.amazon.com:user_id}`, `${graph.facebook.com:id}` e `${accounts.google.com:sub}` contengono identificatori degli utenti per Login with Amazon, Facebook e Google. Per scoprire come un'applicazione effettua l'accesso a uno di questi provider di identità e ottiene gli identificatori, consulta [Utilizzo della federazione delle identità Web](WIF.md).

**Importante**  
Il controllo granulare degli accessi non è supportato per limitare la replica delle tabelle globali. L’applicazione di condizioni di policy per il controllo granulare degli accessi ai [principali di servizio o ai ruoli collegati al servizio](globaltables-security.md) DynamoDB utilizzati per la replica delle tabelle globali può interrompere la replica all’interno di una tabella globale. 

**Nota**  
Ognuno degli esempi presenti nella sezione seguente imposta la clausola `Effect` su `Allow` e specifica solo le operazioni, le risorse e i parametri permessi. L'accesso è consentito solo a ciò che è elencato esplicitamente nella policy IAM.  
In alcuni casi è possibile riscrivere queste policy in modo che si basino sul rifiuto (vale a dire impostare la clausola `Effect` su `Deny` e invertire tutta la logica nella policy). Tuttavia, si consiglia di evitare di utilizzare le policy basate sul rifiuto con DynamoDB poiché la loro scrittura corretta è difficile rispetto alle policy basate sulle concessioni. Inoltre, le future modifiche all'API DynamoDB (o le modifiche agli input API esistenti) possono rendere una policy basata sul rifiuto inefficace.

### Policy di esempio: utilizzo di condizioni per il controllo granulare degli accessi
<a name="FGAC_DDB.Examples"></a>

In questa sezione vengono illustrate varie policy per implementare il controllo degli accessi granulare sulle tabelle e gli indici di DynamoDB.

**Nota**  
Tutti gli esempi utilizzano la regione us-west-2 e contengono account fittizi. IDs

#### Esempio 1: Controllo di accesso di base basato su chiavi di partizione con restrizioni sugli attributi
<a name="FGAC_DDB.Examples.BasicPartitionKeyAccess"></a>

Ad esempio, considera un'app di gioco per dispositivi mobili che consente ai giocatori di scegliere e giocare a una varietà di giochi diversi. L'app utilizza una tabella DynamoDB `GameScores` denominata per tenere traccia dei punteggi più alti e di altri dati utente. Ogni item nella tabella è identificato univocamente da un ID utente e dal nome del gioco a cui l'utente ha giocato. La tabella `GameScores` ha una chiave primaria costituita da una chiave di partizione (`UserId`) e da una chiave di ordinamento (`GameTitle`). Gli utenti possono avere accesso solo ai dati di gioco associati al proprio ID utente. Un utente che desidera giocare deve appartenere a un ruolo IAM denominato `GameRole`, a cui è collegata una policy di sicurezza.

Per gestire le autorizzazioni degli utenti in quest'app, potresti scrivere una policy di autorizzazioni come la seguente:

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Oltre a concedere le autorizzazioni per operazioni DynamoDB specifiche (elemento `Action`) sulla tabella `GameScores` (elemento `Resource`), l'elemento `Condition` utilizza le seguenti chiavi di condizione specifiche di DynamoDB che limitano le autorizzazioni, come illustrato di seguito:
+ `dynamodb:LeadingKeys`: questa chiave di condizione consente agli utenti di accedere solo agli elementi in cui il valore della chiave di partizione corrisponde al proprio ID utente. Questo ID, `${www.amazon.com:user_id}`, è una variabile di sostituzione. Per ulteriori informazioni sulle variabili di sostituzione, consulta [Utilizzo della federazione delle identità Web](WIF.md).
+ `dynamodb:Attributes`: questa chiave di condizione limita l'accesso agli attributi specificati in modo che solo le operazioni elencate nella policy di autorizzazione possano restituire valori per questi attributi. Inoltre, la clausola `StringEqualsIfExists` garantisce che l'app debba fornire sempre un elenco di attributi specifici su cui agire e che l'app non possa richiedere tutti gli attributi.

Quando viene valutata una policy IAM, il risultato è sempre o true (l'accesso viene consentito) o false (l'accesso viene negato). Se una parte dell'elemento `Condition` è false, l'intera policy restituisce false e l'accesso viene quindi negato.

**Importante**  
Se utilizzi `dynamodb:Attributes`, devi specificare i nomi di tutti gli attributi della chiave primaria e della chiave di indicizzazione per la tabella e qualsiasi indice secondario che sia elencato nella policy. In caso contrario, DynamoDB non potrà utilizzare questi attributi della chiave per effettuare l'operazione richiesta.

I documenti delle policy IAM possono contenere solo i seguenti caratteri Unicode: tabulatore orizzontale (U\$10009), segno di avanzamento riga (U\$1000A), ritorno a capo (U\$1000D), e i caratteri nell'intervallo da U\$10020 a U\$100FF.

#### Esempio 2: concedere autorizzazioni che limitano l'accesso agli elementi con un valore specifico della chiave di partizione
<a name="FGAC_DDB.Examples.PartitionKeyValue"></a>

La seguente policy di autorizzazioni concede le autorizzazioni per permettere un insieme di operazioni DynamoDB sulla tabella `GamesScore`. Utilizza la chiave di condizione `dynamodb:LeadingKeys` per limitare le operazioni degli utenti solo sugli elementi il cui valore di chiave di partizione `UserID` corrisponda all'ID utente univoco di Login with Amazon per questa app.

**Importante**  
L'elenco delle operazioni non include le autorizzazioni per l'operazione `Scan` poiché `Scan` restituisce tutti gli elementi, indipendentemente dalle chiavi principali.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"FullAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**Nota**  
Quando si utilizzano variabili di policy, è necessario specificare esplicitamente la versione 2012-10-17 nella policy. La versione di default della sintassi della policy di accesso, 2008-10-17, non supporta le variabili di policy.

Per implementare l'accesso in sola lettura, puoi rimuovere le operazioni che possono modificare i dati. Nella policy seguente solo quelle operazioni che forniscono accesso in sola lettura sono incluse nella condizione.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"ReadOnlyAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**Importante**  
Se si utilizza `dynamodb:Attributes`, è necessario specificare i nomi di tutti gli attributi della chiave primaria e della chiave di indicizzazione per la tabella e qualsiasi indice secondario che sia elencato nella policy. In caso contrario, DynamoDB non potrà utilizzare questi attributi della chiave per effettuare l'operazione richiesta.

#### Esempio 3: concedere autorizzazioni che limitano l'accesso a attributi specifici in una tabella
<a name="FGAC_DDB.Examples.SpecificAttributes"></a>

La seguente policy di autorizzazioni permette l'accesso solo a due attributi specifici in una tabella aggiungendo la chiave di condizione `dynamodb:Attributes`. Questi attributi possono essere letti, scritti o valutati in una scrittura condizionale o un filtro di scansione.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToSpecificAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem",
            "dynamodb:Scan"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "UserId",
                  "TopScore"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

**Nota**  
La policy adotta un approccio allow list, che permette l'acceso a un insieme denominato di attributi. Puoi scrivere, invece, una policy equivalente che rifiuti l'accesso ad altri attributi. Questo approccio deny list non è consigliato. Gli utenti possono determinare i nomi di questi attributi negati seguendo il principio del privilegio minimo, come spiegato in Wikipedia all'indirizzo http://en.wikipedia. org/wiki/Principle\$1of\$1least\$1privilege e utilizza un approccio basato sulla lista degli indirizzi consentiti per enumerare tutti i valori consentiti, anziché specificare gli attributi negati.

Questa policy non permette `PutItem`, `DeleteItem` o `BatchWriteItem`. Queste operazioni sostituiscono sempre l'intero item precedente, il che permetterebbe agli utenti di eliminare i valori precedenti per gli attributi a cui non hanno il permesso di accedere.

La clausola `StringEqualsIfExists` nella policy di autorizzazioni garantisce quanto segue:
+ Se l'utente specifica il parametro `Select`, allora il suo valore deve essere `SPECIFIC_ATTRIBUTES`. Questo requisito previene che l'operazione API restituisca attributi per cui non si ha il permesso, come ad esempio da una proiezione di indice.
+ Se l'utente specifica il parametro `ReturnValues`, allora il suo valore deve essere `NONE`, `UPDATED_OLD` o `UPDATED_NEW`. Questo viene richiesto poiché l'operazione `UpdateItem` effettua anche operazioni di lettura implicite per verificare che un item esista prima di sostituirlo, in modo tale che i valori di attributo precedenti possano essere restituiti se richiesto. Limitare `ReturnValues` in questo modo garantisce che gli utenti possano solo leggere o scrivere gli attributi permessi.
+ La clausola `StringEqualsIfExists` assicura che, nel contesto delle operazioni consentite, per ogni richiesta possa essere utilizzato solo uno di questi parametri, `Select` o `ReturnValues`.

Di seguito vengono elencate alcune variazioni a questa policy:
+ Per permettere le operazioni di sola lettura, puoi rimuovere `UpdateItem` dall'elenco delle operazioni consentite. Poiché nessuna delle operazioni rimanenti accetta `ReturnValues`, puoi rimuovere `ReturnValues` dalla condizione. Puoi anche modificare `StringEqualsIfExists` in `StringEquals` poiché il parametro `Select` ha sempre un valore (`ALL_ATTRIBUTES`, se non diversamente specificato).
+ Per consentire le operazioni di sola scrittura, puoi rimuovere tutto tranne `UpdateItem` dall'elenco delle operazioni consentite. Poiché `UpdateItem` non accetta il parametro `Select`, puoi rimuovere `Select` dalla condizione. È necessario anche modificare `StringEqualsIfExists` in `StringEquals` poiché il parametro `ReturnValues` ha sempre un valore (`NONE`, se non diversamente specificato).
+ Per permettere tutti gli attributi il cui nome corrisponde a un modello, utilizza `StringLike` anziché `StringEquals` e utilizza un carattere jolly (\$1) che trovi una corrispondenza di modelli con più caratteri.

#### Esempio 4: concedere le autorizzazioni per impedire gli aggiornamenti su determinati attributi
<a name="FGAC_DDB.Examples.PreventUpdates"></a>

La seguente policy di autorizzazioni limita l'accesso degli utenti in modo che possa aggiornare solo gli attributi specifici identificati dalla chiave di condizione `dynamodb:Attributes`. La condizione `StringNotLike` impedisce a un'applicazione di aggiornare gli attributi specificati utilizzando la chiave di condizione `dynamodb:Attributes`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"PreventUpdatesOnCertainAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
         "Condition":{
            "ForAllValues:StringNotLike":{
               "dynamodb:Attributes":[
                  "FreeGamesAvailable",
                  "BossLevelUnlocked"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Tenere presente quanto segue:
+ L'operazione `UpdateItem`, come altre operazioni di scrittura, richiede l'accesso in lettura agli elementi, in modo che possa restituire valori prima e dopo l'aggiornamento. Nella policy limiti l'operazione per poter accedere solo agli attributi che è permesso aggiornare specificando la chiave di condizione `dynamodb:ReturnValues`. La chiave di condizione limita il valore di `ReturnValues` nella richiesta mentre specifica solo `NONE`, `UPDATED_OLD` o `UPDATED_NEW` e non include `ALL_OLD` o `ALL_NEW`.
+ L'`StringEqualsIfExists`operatore assicura che, se `dynamodb:Select` o `dynamodb:ReturnValues` è presente nella richiesta, questa deve corrispondere ai valori specificati. Ciò impedisce alle operazioni di restituire articoli completi.
+ Quando si limitano gli aggiornamenti degli attributi, è necessario controllare anche quali dati possono essere restituiti per impedire la divulgazione di informazioni sugli attributi protetti.
+ Le operazioni `PutItem` e `DeleteItem` sostituiscono un item intero, permettendo quindi alle applicazioni di modificare qualsiasi attributo. Pertanto, quando si limita un'applicazione all'aggiornamento solo di attributi specifici, non è necessario concedere l'autorizzazione per tali attributi. APIs

#### Esempio 5: concedere le autorizzazioni per interrogare solo gli attributi proiettati in un indice
<a name="FGAC_DDB.Examples.QueryProjectedAttributes"></a>

La seguente policy di autorizzazioni consente le query su un indice secondario (`TopScoreDateTimeIndex`), utilizzando la chiave di condizione `dynamodb:Attributes`. Inoltre limita le query in modo che possano richiedere solo gli attributi specifici che sono stati proiettati nell'indice.

Per richiedere all'applicazione di specificare un elenco di attributi nella query, la policy specifica anche la chiave di condizione `dynamodb:Select` in modo che richieda che il parametro `Select` dell'operazione DynamoDB `Query` sia `SPECIFIC_ATTRIBUTES`. L'elenco di attributi è limitato a un elenco specifico che viene fornito utilizzando la chiave di condizione `dynamodb:Attributes`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryOnlyProjectedIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "TopScoreDateTime",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "Attempts"
               ]
            },
            "StringEquals":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La policy di autorizzazione seguente è simile, però la query deve richiedere tutti gli attributi che sono stati proiettati nell'indice.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryAllIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "StringEquals":{
               "dynamodb:Select":"ALL_PROJECTED_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

#### Esempio 6: concedere le autorizzazioni per limitare l'accesso a determinati attributi e valori delle chiavi di partizione
<a name="FGAC_DDB.Examples.AttributesAndKeyValues"></a>

La policy di autorizzazione seguente specifica le operazioni di DynamoDB (specificate nell'elemento `Action`) su una tabella e un indice di tabella (specificati nell'elemento `Resource`). La policy utilizza la chiave `dynamodb:LeadingKeys` condition per limitare le autorizzazioni solo agli elementi il cui valore della chiave di partizione corrisponde all'ID Facebook dell'utente.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToCertainAttributesAndKeyValues",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${graph.facebook.com:id}"
               ],
               "dynamodb:Attributes":[
                  "attribute-A",
                  "attribute-B"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Tenere presente quanto segue:
+ Le azioni di scrittura consentite dalla policy (`UpdateItem`) possono solo modificare l'attributo-A o l'attributo-B.
+ Poiché la policy permette `UpdateItem`, un'applicazione può inserire nuovi item e gli attributi nascosti saranno null nei nuovi item. Se questi attributi sono proiettati in `TopScoreDateTimeIndex`, la policy ha il vantaggio aggiuntivo di impedire le query che causeranno operazioni di recupero dalla tabella.
+ Le applicazioni non possono leggere nessun attributo che non sia elencato in `dynamodb:Attributes`. Con questa policy in atto, un'applicazione deve impostare il parametro `Select` su `SPECIFIC_ATTRIBUTES` nelle richieste di lettura e solo gli attributi nell'allow list possono essere richiesti. Per le richieste di lettura, l'applicazione non può impostare `ReturnValues` su `ALL_OLD` o `ALL_NEW` e non può effettuare operazioni di scrittura condizionali basate su attributi che non siano questi.

#### Esempio 7: negare le autorizzazioni per limitare l'accesso a attributi specifici in una tabella
<a name="FGAC_DDB.Examples.DenySpecificAttributes"></a>

La seguente politica nega l'accesso agli attributi sensibili e garantisce che questa restrizione non possa essere aggirata omettendo un'espressione di proiezione. Consente l'accesso generale alla `CustomerData` tabella negando esplicitamente l'accesso agli attributi e agli attributi. `SSN` `CreditCardNumber`

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData"
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "ForAnyValue:StringEquals":{
               "dynamodb:Attributes":[
                  "SSN",
                  "CreditCardNumber"
               ]
            }
         }
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "StringNotEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

## Argomenti correlati
<a name="w2aac39c21c15c11"></a>
+  [Identity and Access Management per Amazon DynamoDB](security-iam.md) 
+ [Autorizzazioni API DynamoDB: riferimento a operazioni, risorse e condizioni](api-permissions-reference.md)

# Utilizzo della federazione delle identità Web
<a name="WIF"></a>

Quando scrivi un'applicazione destinata a un gran numero di utenti, puoi scegliere di utilizzare la *federazione delle identità Web* per l'autenticazione e l'autorizzazione. La federazione delle identità Web rimuove la necessità di creare singoli utenti . Gli utenti possono invece accedere a un provider di identità e quindi ottenere credenziali di sicurezza temporanee da AWS Security Token Service ().AWS STS L'app può quindi utilizzare queste credenziali per accedere ai servizi AWS .

La federazione delle identità Web supporta i seguenti provider di identità:
+ Login with Amazon
+ Facebook
+ Google

## Risorse aggiuntive per la federazione delle identità Web
<a name="WIF.AdditionalResources"></a>

Le risorse seguenti possono fornire ulteriori informazioni sulla federazione delle identità Web:
+ Il post [Federazione delle identità Web tramite AWS SDK per .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net)sul blog di AWS Developer illustra come utilizzare la federazione delle identità Web con Facebook. Include frammenti di codice in C\$1 che mostrano come assumere un ruolo IAM con l'identità web e come utilizzare credenziali di sicurezza temporanee per accedere a una risorsa. AWS 
+ [AWS Mobile SDK for iOS](https://aws.amazon.com/sdkforios/) e [AWS Mobile SDK per Android](https://aws.amazon.com/sdkforandroid/) contengono app di esempio. Includono codice che mostra come invocare i provider di identità e quindi come utilizzare le informazioni provenienti da questi provider per ottenere e usare credenziali di sicurezza temporanee.
+ L'articolo [Web Identity Federation with Mobile Applications](https://aws.amazon.com/articles/4617974389850313) illustra la federazione delle identità Web e mostra un esempio di come utilizzare la federazione delle identità Web per accedere a una risorsa. AWS 

## Policy di esempio per la federazione delle identità Web
<a name="WIF.Example"></a>

Per mostrare come utilizzare la federazione delle identità web con DynamoDB, rivedi *GameScores*la tabella introdotta in. [Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](specifying-conditions.md) Ecco la chiave principale per. *GameScores*


****  

| Nome tabella | Tipo di chiave primaria | Nome e tipo di chiave di partizione | Nome e tipo di chiave di ordinamento | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Composita | Nome dell'attributo: UserId Tipo: String | Nome dell'attributo: GameTitle Tipo: String | 

Immagina ora che un'app di gioco per dispositivi mobili utilizzi questa tabella e che debba supportare migliaia, o persino milioni, di utenti. Su questa scala, diventa molto difficile gestire i singoli utenti delle app e garantire che ogni utente possa accedere solo ai propri dati nella *GameScores*tabella. Per fortuna, molti utenti dispongono già di account con un provider di identità di terze parti, come Facebook, Google o Login with Amazon. Pertanto, è opportuno utilizzare uno di questi provider per attività di autenticazione.

Per poterlo fare utilizzando la federazione delle identità Web, lo sviluppatore deve registrare l'app con un provider di identità (come Login with Amazon) e ottenere un ID app univoco. Successivamente, lo sviluppatore dovrà creare un ruolo IAM. (In questo esempio, questo ruolo è denominato *GameRole*.) Al ruolo deve essere allegato un documento di policy IAM, che specifichi le condizioni in base alle quali l'app può accedere alla *GameScores*tabella.

Quando un utente desidera giocare, accede al proprio account di Login with Amazon dall'interno dell'app di gioco. L'app chiama quindi AWS Security Token Service (AWS STS), fornendo l'ID dell'app Login *GameRole*with Amazon e richiedendo l'iscrizione. AWS STS restituisce AWS le credenziali temporanee all'app e le consente di accedere alla *GameScores*tabella, in base al documento relativo alla *GameRole*policy.

Il seguente diagramma mostra come questi elementi di integrano fra loro.

![\[Il flusso di lavoro di un’app di videogiochi. L'app utilizza Amazon ID e AWS STS per ottenere credenziali temporanee per accedere a una tabella DynamoDB.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Panoramica sulla federazione delle identità Web**

1. L'app chiama un provider di identità di terza parte per autenticare l'utente e l'app. Il provider di identità restituisce all'app un token di identità Web.

1. L'app chiama AWS STS e trasmette il token di identità web come input. AWS STS autorizza l'app e le fornisce credenziali di AWS accesso temporanee. L'app può assumere un ruolo IAM (*GameRole*) e accedere alle AWS risorse in conformità con la politica di sicurezza del ruolo.

1. L'app chiama DynamoDB per accedere alla tabella. *GameScores* Poiché ha assunto il *GameRole*, l'app è soggetta alla politica di sicurezza associata a quel ruolo. Il documento della policy impedisce all'app di accedere a dati che non appartengono all'utente.

Ancora una volta, ecco la politica di *GameRole*sicurezza mostrata in[Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](specifying-conditions.md):

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La `Condition` clausola determina quali elementi *GameScores*sono visibili all'app. Per farlo, confronta l'ID Login with Amazon con i valori della chiave di partizione `UserId` in `GameScores`. Solo gli elementi appartenenti all'utente corrente possono essere elaborati utilizzando una delle operazioni DynamoDB elencate in questa policy. Altri item nella tabella non sono accessibili. Inoltre, è possibile accedere solo agli attributi specifici elencati nella policy.

# Preparazione per l'utilizzo della federazione delle identità Web
<a name="WIF.PreparingForUse"></a>

Se sei uno sviluppatore app e desideri utilizzare la federazione delle identità Web per la sua app, procedi nel seguente modo:

1. **Registrati come sviluppatore con un provider di identità di terza parte.** I seguenti link esterni forniscono informazioni sulla registrazione con i provider di identità supportati:
   + [Centro Sviluppatori di Login with Amazon](http://login.amazon.com/)
   + [Registrazione](https://business.facebook.com/business/loginpage) sul sito di Facebook
   + [Utilizzo della OAuth versione 2.0 per accedere a Google APIs](https://developers.google.com/accounts/docs/OAuth2) sul sito di Google

1. **Registra l'app con il provider di identità.** Quando lo fai, il provider ti fornisce un ID univoco per la tua app. Se desideri che la tua app funzioni con più provider di identità, è necessario ottenere un ID app da ogni provider.

1. **Crea uno o più ruoli IAM. **È necessario un ruolo per ogni provider di identità di ogni app. Ad esempio, puoi creare un ruolo che può essere assunto da un'app in cui l'utente ha effettuato l'accesso tramite Login with Amazon, un secondo ruolo per la stessa app in cui l'utente ha effettuato l'accesso tramite Facebook e un terzo ruolo per l'app in cui gli utenti effettuano l'eccesso tramite Google.

   Come parte della procedura di creazione dei ruoli, è necessario collegare una policy IAM al ruolo. Il documento di policy dovrebbe definire le risorse di richieste dall'app e le autorizzazioni per accedere a tali risorse.

Per ulteriori informazioni, consulta [Informazioni sulla federazione delle identità Web](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) nella *Guida per l'utente di IAM*. 

**Nota**  
In alternativa AWS Security Token Service, puoi usare Amazon Cognito. Amazon Cognito è il servizio più adatto alla gestione delle credenziali provvisorie per le applicazioni per dispositivi mobili. Per ulteriori informazioni, consulta [Ottenere le credenziali](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html) nella *Guida per gli sviluppatori di Amazon Cognito*. 

## Generazione di una policy IAM tramite la console DynamoDB
<a name="WIF.PreparingForUse.DDBConsole"></a>

La console DynamoDB consente di creare una policy IAM da usare con la federazione delle identità Web. Per poterlo fare, scegli una tabella DynamoDB e specifica il provider di identità, le operazioni e gli attributi da includere nella policy. La console DynamoDB genera quindi una policy che può essere collegata a un ruolo IAM.

1. Accedi Console di gestione AWS e apri la console DynamoDB all'indirizzo. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Nel pannello di navigazione, seleziona **Tabelle**. 

1.  Nell'elenco di tabelle, seleziona la tabella per la quale si desidera creare la policy IAM. 

1.  Seleziona il ppulsante **Azioni** e scegli **Crea una policy di controllo degli accessi**. 

1.  Seleziona il provider di identità, le operazioni e gli attributi per la policy. 

    Dopo aver selezionato le impostazioni desiderate, scegliere **Genera policy** Verrà visualizzata la policy generata; 

1.  Scegli **Vedi la documentazione** e segui i passaggi necessari per associare la policy generata a un ruolo IAM. 

# Scrittura dell'app per l'utilizzo della federazione delle identità Web
<a name="WIF.RunningYourApp"></a>

Per utilizzare la federazione delle identità Web, l'app deve assumere il ruolo IAM creato. Da quel punto in poi, l'app applica la policy d'accesso collegata al ruolo.

In fase di runtime, se l'app utilizza la federazione delle identità Web, deve seguire la procedura seguente:

1. **Autenticarsi con un provider di identità di terza parte.** L'app deve chiamare il provider di identità utilizzando un'interfaccia fornita da quest'ultimo. Il modo esatto in cui si effettua l'autenticazione dell'utente dipende dal provider e dalla piattaforma su cui si esegue l'app. In genere, se l'utente non ha già effettuato l'accesso, il provider di identità si occupa di mostrare una pagina di accesso per tale provider.

   Dopo aver autenticato l'utente, il provider di identità restituisce alla tua app un token di identità Web. Il formato di questo token dipende dal provider, ma in genere è una stringa di caratteri molto lunga.

1. **Ottieni credenziali di AWS sicurezza temporanee.** Per fare ciò, l'app invia una richiesta `AssumeRoleWithWebIdentity` a AWS Security Token Service AWS STS. Questa richiesta contiene i seguenti elementi:
   + Il token dell'identità Web ottenuto nella fase precedente;
   + L'ID app fornito dal provider di identità;
   + L'Amazon Resource Name (ARN) del ruolo IAM che è stato creato per questo provider di identità per questa app.

   AWS STS restituisce un set di credenziali di AWS sicurezza che scadono dopo un determinato periodo di tempo (3.600 secondi, per impostazione predefinita).

   L'esempio seguente mostra una richiesta e la risposta da un'operazione `AssumeRoleWithWebIdentity` in AWS STS. Il token dell'identità Web è stato ottenuto dal provider di identità Login with Amazon.

   ```
   GET / HTTP/1.1
   Host: sts.amazonaws.com
   Content-Type: application/json; charset=utf-8
   URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com
   &DurationSeconds=900&Action=AssumeRoleWithWebIdentity
   &Version=2011-06-15&RoleSessionName=web-identity-federation
   &RoleArn=arn:aws:iam::123456789012:role/GameRole
   &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
   ```

   

   ```
   <AssumeRoleWithWebIdentityResponse
     xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
     <AssumeRoleWithWebIdentityResult>
       <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken>
       <Credentials>
         <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken>
         <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey>
         <Expiration>2013-10-01T22:14:35Z</Expiration>
         <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId>
       </Credentials>
       <AssumedRoleUser>
         <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn>
         <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId>
       </AssumedRoleUser>
     </AssumeRoleWithWebIdentityResult>
     <ResponseMetadata>
       <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId>
     </ResponseMetadata>
   </AssumeRoleWithWebIdentityResponse>
   ```

1. **Accedere alle risorse. AWS ** La risposta da AWS STS contiene le informazioni che sono richieste dall'app per poter accedere alle risorse DynamoDB:
   + I campi `AccessKeyID`, `SecretAccessKey` e `SessionToken` contengono le credenziali di sicurezza valide solo per questo utente e quest'app. 
   + Il campo `Expiration` indica il limite di tempo dopo il quale queste credenziali non sono più valide.
   + Il campo `AssumedRoleId` contiene il nome di un ruolo IAM specifico della sessione che stato assunto dall'app. L'app rispetta i controlli degli accessi nel documento della policy IAM per la durata di questa sessione.
   + Il campo `SubjectFromWebIdentityToken` contiene l'ID univoco presente in una variabile di policy IAM per questo provider di identità specifico. Di seguito sono riportate le variabili di policy IAM per i provider supportati e alcuni valori di esempio:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

Per le policy IAM di esempio in cui vengono utilizzate queste variabili di policy, consulta [Policy di esempio: utilizzo di condizioni per il controllo granulare degli accessi](specifying-conditions.md#FGAC_DDB.Examples).

Per ulteriori informazioni su come AWS STS generare credenziali di accesso temporanee, consulta [Requesting Temporary Security Credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) nella *IAM* User Guide.

# Autorizzazioni API DynamoDB: riferimento a operazioni, risorse e condizioni
<a name="api-permissions-reference"></a>

Quando si configura [Identity and Access Management per Amazon DynamoDB](security-iam.md) e si scrive una policy di autorizzazioni che può essere collegata a un'identità IAM (policy basate su identità), è possibile utilizzare l'elenco di [Operazioni, risorse e chiavi di condizioni per Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) nella *Guida per l'utente di IAM* come riferimento. La pagina elenca ogni operazione dell'API DynamoDB, le azioni corrispondenti per le quali è possibile concedere le autorizzazioni per eseguire l'azione e la risorsa per la quale è possibile concedere AWS le autorizzazioni. Puoi specificare le azioni nel campo `Action` della policy e il valore della risorsa nel campo `Resource`.

È possibile utilizzare le chiavi di condizione AWS-wide nelle policy di DynamoDB per esprimere condizioni. *Per un elenco completo delle chiavi AWS-wide, consulta il [riferimento agli elementi della policy IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) nella IAM User Guide.*

Oltre alle chiavi di condizione AWS-wide, DynamoDB dispone di chiavi specifiche che è possibile utilizzare nelle condizioni. Per ulteriori informazioni, consulta [Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](specifying-conditions.md).

## Argomenti correlati
<a name="w2aac39c21c15c15b9"></a>
+  [Identity and Access Management per Amazon DynamoDB](security-iam.md)
+ [Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](specifying-conditions.md)