

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

# Sicurezza e conformità in Amazon DynamoDB
<a name="security"></a>

La sicurezza del cloud AWS è la massima priorità. In qualità di AWS cliente, puoi beneficiare di un data center e di un'architettura di rete progettati per soddisfare i requisiti delle organizzazioni più sensibili alla sicurezza.

La sicurezza è una responsabilità condivisa tra AWS te e te. Il [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/) descrive questo come sicurezza *del* cloud e sicurezza *nel* cloud:
+ **Sicurezza del cloud**: AWS è responsabile della protezione dell'infrastruttura che gestisce AWS i servizi nel AWS cloud. AWS ti fornisce anche servizi che puoi utilizzare in modo sicuro. L'efficacia della nostra sicurezza è regolarmente testata e verificata da revisori di terze parti come parte dei [programmi di conformitàAWS](https://aws.amazon.com/compliance/programs/). Per ulteriori informazioni sui programmi di conformità che si applicano a DynamoDB, consulta [Servizi AWS coperti dal programma di compliance](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sicurezza nel cloud**: la tua responsabilità è determinata dal AWS servizio che utilizzi. L'utente è anche responsabile per altri fattori, tra cui la riservatezza dei dati, i requisiti dell'azienda e leggi e normative applicabili.

Questa documentazione consente di comprendere come applicare il modello di responsabilità condivisa quando si usa DynamoDB. Nei seguenti argomenti viene descritto come configurare DynamoDB per soddisfare gli obiettivi di sicurezza e conformità. Imparerai anche come utilizzare altri AWS servizi che possono aiutarti a monitorare e proteggere le tue risorse DynamoDB.

**Topics**
+ [AWS politiche gestite per Amazon DynamoDB](ddb-security-iam.awsmanpol.md)
+ [Utilizzo di policy basate su risorse per DynamoDB](access-control-resource-based.md)
+ [Utilizzo del controllo degli accessi basato su attributi con DynamoDB](attribute-based-access-control.md)
+ [Protezione dei dati in DynamoDB](data-protection.md)
+ [AWS Identity and Access Management (IAM) e DynamoDB](identity-and-access-mgmt.md)
+ [Convalida della conformità per settore per DynamoDB](Compliance.md)
+ [Resilienza e ripristino di emergenza in Amazon DynamoDB](disaster-recovery-resiliency.md)
+ [Sicurezza dell'infrastruttura in Amazon DynamoDB](network-isolation.md)
+ [AWS PrivateLink per DynamoDB](privatelink-interface-endpoints.md)
+ [Analisi della configurazione e delle vulnerabilità in Amazon DynamoDB](configuration-vulnerability.md)
+ [Best practice di sicurezza per Amazon DynamoDB](best-practices-security.md)

# AWS politiche gestite per Amazon DynamoDB
<a name="ddb-security-iam.awsmanpol"></a>

DynamoDB AWS utilizza policy gestite per definire una serie di autorizzazioni necessarie al servizio per eseguire azioni specifiche. DynamoDB mantiene e aggiorna AWS le sue policy gestite. Non è possibile modificare le autorizzazioni nelle AWS politiche gestite. Per ulteriori informazioni sulle policy AWS gestite, consulta le [policy AWS gestite](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) nella IAM User Guide.

DynamoDB può occasionalmente aggiungere autorizzazioni aggiuntive a AWS una policy gestita per supportare nuove funzionalità. Questo tipo di aggiornamento interessa tutte le identità (utenti, gruppi e ruoli) a cui è collegata la policy. È molto probabile che una policy AWS gestita venga aggiornata quando viene lanciata una nuova funzionalità o quando diventano disponibili nuove operazioni. DynamoDB non rimuoverà le autorizzazioni da AWS una policy gestita, quindi gli aggiornamenti delle policy non comprometteranno le autorizzazioni esistenti. [Per un elenco completo delle politiche gestite, consulta le politiche AWS gestite.AWS](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/policy-list.html)

## AWS politica gestita: Dynamo DBReplication ServiceRolePolicy
<a name="ddb-security-iam.awsmanpol.policy"></a>

Non è possibile allegare la policy `DynamoDBReplicationServiceRolePolicy` alle entità IAM. Questa policy è associata a un ruolo collegato ai servizi che consente a DynamoDB di eseguire operazioni per conto dell'utente. Per ulteriori informazioni, consulta [Uso di IAM con le tabelle globali](globaltables-security.md).

Questa policy concede autorizzazioni che consentono al ruolo collegato ai servizi di eseguire la replica dei dati tra repliche di tabelle globali. Concede inoltre le autorizzazioni amministrative per gestire le repliche delle tabelle globali per conto dell'utente.

**Dettagli delle autorizzazioni**

Questa policy concede le seguenti autorizzazioni:
+ `dynamodb`: consente di eseguire la replica dei dati e gestire le repliche delle tabelle.
+ `application-autoscaling`: consente di recuperare e gestire le impostazioni di Auto Scaling delle tabelle
+ `account`: consente di recuperare lo stato della regione per valutare l'accessibilità della replica.
+ `iam`: consente di creare il ruolo collegato al servizio per Application Auto Scaling se il ruolo collegato al servizio non esiste già.

La definizione di questa policy gestita è disponibile [qui](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DynamoDBReplicationServiceRolePolicy.html).

## AWS policy gestita: Access\$1v2 AmazonDynamo DBFull
<a name="ddb-security-iam.awsmanpol.fullaccesspolicy-v2"></a>

La policy `AmazonDynamoDBFullAccess_v2` ad ambito ridotto concede privilegi di accesso specifici agli utenti. È possibile allegare la policy `AmazonDynamoDBFullAccess_v2` alle identità IAM. Questa policy concede l'accesso amministrativo alle risorse di Amazon DynamoDB e concede a un'identità IAM (ad esempio un utente, un gruppo o un ruolo) l'accesso alle risorse con cui DynamoDB è Servizi AWS integrato per utilizzare tutte le funzionalità di DynamoDB. L’utilizzo di questa policy consente di accedere a tutte le funzionalità di DynamoDB disponibili nella Console di gestione AWS.

**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:
+ `Amazon DynamoDB`
+ `DynamoDB Accelerator`
+ `AWS KMS`
+ `AWS Resource Groups Tagging`
+ `Lambda`
+ `Application Auto Scaling`
+ `CloudWatch`
+ `Amazon Kinesis`
+ `Amazon EC2`
+ `IAM`

[Per rivedere il formato della policy, consulta Access\$1v2. `JSON` AmazonDynamo DBFull](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess_v2.html)

## AWS politica gestita: AmazonDynamo DBRead OnlyAccess
<a name="ddb-security-iam.awsmanpol.readonlypolicy"></a>

È possibile allegare la policy `AmazonDynamoDBReadOnlyAccess` alle identità IAM.

Questa policy concede l’accesso in lettura ad Amazon DynamoDB.

**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:
+ `Amazon DynamoDB`: fornisce l’accesso in lettura ad Amazon DynamoDB.
+ `Amazon DynamoDB Accelerator (DAX)`: fornisce l’accesso in lettura ad Amazon DynamoDB Accelerator (DAX).
+ `Application Auto Scaling`: consente ai principali di visualizzare le configurazioni da Application Auto Scaling. Ciò è necessario per consentire agli utenti di visualizzare le policy di dimensionamento automatico collegate a una tabella.
+ `CloudWatch`— Consente ai responsabili di visualizzare i dati metrici e gli allarmi configurati in. CloudWatch Ciò è necessario per consentire agli utenti di visualizzare le dimensioni fatturabili della tabella e gli CloudWatch allarmi configurati per una tabella.
+ `AWS Data Pipeline`— Consente ai mandanti di visualizzare AWS Data Pipeline e gli oggetti associati.
+ `Amazon EC2`— Consente ai responsabili di visualizzare Amazon VPCs EC2, le sottoreti e i gruppi di sicurezza.
+ `IAM`: consente ai principali di visualizzare i ruoli IAM.
+ `AWS KMS`— Consente ai responsabili di visualizzare le chiavi configurate in. AWS KMS Ciò è necessario per consentire agli utenti di visualizzare AWS KMS keys ciò che creano e gestiscono nel proprio account.
+ `Amazon SNS`: consente ai principali di elencare gli argomenti relativi ad Amazon SNS e agli abbonamenti per argomento.
+ `AWS Resource Groups`: consente ai principali di visualizzare i gruppi di risorse e le relative query.
+ `AWS Resource Groups Tagging`: consente ai principali di elencare tutte le risorse con tag o con tag apposti in precedenza in una Regione.
+ `Kinesis`: consente ai principali di visualizzare le descrizioni del flusso di dati Kinesis.
+ `Amazon CloudWatch Contributor Insights`: consente ai principali di visualizzare i dati di serie temporali raccolti tramite le regole di Contributor Insights.

Per rivedere il `JSON` formato della politica, consulta [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html).

## DynamoDB aggiorna le policy gestite AWS
<a name="ddb-security-iam.awsmanpol.updates"></a>

Questa tabella mostra gli aggiornamenti alle politiche di gestione degli AWS accessi per DynamoDB.


****  

| Modifica | Descrizione | Data della modifica | 
| --- | --- | --- | 
| AmazonDynamoDBFullAccess: obsoleta | Questa policy è stata sostituita da una policy ad ambito ridotto denominata `AmazonDynamoDBFullAccess_v2`. Dopo **aprile 2025** non sarà possibile associare la policy `AmazonDynamoDBFullAccess` a nuovi utenti, gruppi o ruoli. Per ulteriori informazioni, consulta [AWS policy gestita: Access\$1v2 AmazonDynamo DBFull](#ddb-security-iam.awsmanpol.fullaccesspolicy-v2).  | 28 aprile 2025 | 
| AmazonDynamoDBReadOnlyAccess aggiornamento a una policy esistente | AmazonDynamoDBReadOnlyAccess ha aggiunto le autorizzazioni: dynamodb:GetAbacStatus e dynamodb:UpdateAbacStatus. Queste autorizzazioni ti consentono di visualizzare lo stato ABAC e abilitare ABAC per la tua Account AWS regione corrente. | 18 novembre 2024 | 
| AmazonDynamoDBReadOnlyAccess aggiornamento a una policy esistente | AmazonDynamoDBReadOnlyAccess ha aggiunto l'autorizzazione dynamodb:GetResourcePolicy. Questa autorizzazione fornisce l’accesso alle policy in lettura basate su risorse collegate alle risorse DynamoDB. | 20 marzo 2024 | 
| DynamoDBReplicationServiceRolePolicy aggiornamento a una policy esistente | DynamoDBReplicationServiceRolePolicy ha aggiunto l'autorizzazione dynamodb:GetResourcePolicy. Questa autorizzazione consente al ruolo collegato al servizio di leggere le policy basate su risorse collegate alle risorse DynamoDB. | 15 dicembre 2023 | 
| DynamoDBReplicationServiceRolePolicy aggiornamento a una policy esistente | DynamoDBReplicationServiceRolePolicy ha aggiunto l'autorizzazione account:ListRegions. Questa autorizzazioni consente al ruolo collegato ai servizi di valutare l'accessibilità della replica. | 10 maggio 2023 | 
| DynamoDBReplicationServiceRolePolicy aggiunta all'elenco delle policy gestite | Sono state aggiunte informazioni sulla policy gestita DynamoDBReplicationServiceRolePolicy, utilizzata dal ruolo collegato ai servizi delle tabelle globali DynamoDB. | 10 maggio 2023 | 
| Le tabelle globali DynamoDB hanno iniziato a monitorare le modifiche | Le tabelle globali di DynamoDB hanno iniziato a tenere traccia delle modifiche per AWS le policy gestite. | 10 maggio 2023 | 

# Utilizzo di policy basate su risorse per DynamoDB
<a name="access-control-resource-based"></a>

DynamoDB supporta le policy basate su risorse per tabelle, indici e flussi. Le policy basate su risorse consentono di definire le autorizzazioni di accesso specificando chi ha accesso a ciascuna risorsa e le azioni eseguibili su ciascuna risorsa.

È possibile collegare una policy basata su risorse alle risorse DynamoDB, come una tabella o un flusso. In questa policy si specificano le autorizzazioni per i [principali](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) di Identity and Access Management (IAM) che possono eseguire azioni specifiche su queste risorse DynamoDB. Ad esempio, la policy collegata a una tabella conterrà le autorizzazioni per l’accesso alla tabella e ai relativi indici. Di conseguenza, le policy basate su risorse possono aiutare a semplificare il controllo degli accessi per le tabelle, gli indici e i flussi di DynamoDB definendo le autorizzazioni a livello di risorsa. La dimensione massima di una policy che è possibile collegare a una risorsa DynamoDB è di 20 KB.

Un vantaggio significativo dell’utilizzo di policy basate su risorse consiste nel semplificare il controllo degli accessi multi-account per fornire l’accesso multi-account ai principali IAM in diversi Account AWS. Per ulteriori informazioni, consulta [Policy basata su risorse per accesso multi-account](rbac-examples.md#rbac-examples-cross-account).

Le policy basate su risorse supportano anche le integrazioni con lo strumento di analisi degli accessi esterni [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) e le funzionalità di [blocco dell’accesso pubblico (BPA, Block Public Access).](rbac-bpa-rbp.md) Lo strumento di analisi degli accessi IAM segnala l’accesso multi-account a entità esterne specificate nelle policy basate su risorse. Fornisce inoltre visibilità per aiutare a perfezionare le autorizzazioni e conformarsi al principio del privilegio minimo. Il BPA aiuta a impedire l’accesso pubblico alle tabelle, agli indici e ai flussi di DynamoDB e viene abilitato automaticamente nei flussi di lavoro di creazione e modifica delle policy basate su risorse.

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


**Topics**
+ [Creazione di una tabella con una policy basata su risorse](rbac-create-table.md)
+ [Collegamento di una policy a una tabella DynamoDB esistente](rbac-attach-resource-based-policy.md)
+ [Collegamento di una policy basata su risorse a un flusso DynamoDB](rbac-attach-resource-policy-streams.md)
+ [Rimozione di una policy basata su risorse da una tabella DynamoDB](rbac-delete-resource-based-policy.md)
+ [Accesso multi-account con policy basate su risorse in DynamoDB](rbac-cross-account-access.md)
+ [Blocco dell’accesso pubblico con policy basate su risorse in DynamoDB](rbac-bpa-rbp.md)
+ [Operazioni API DynamoDB supportate da policy basate su risorse](rbac-iam-actions.md)
+ [Autorizzazione con policy basate sull’identità IAM e policy basate su risorse DynamoDB](rbac-auth-iam-id-based-policies-DDB.md)
+ [Esempi di policy basate su risorse per DynamoDB](rbac-examples.md)
+ [Considerazioni sulle policy basate su risorse per DynamoDB](rbac-considerations.md)
+ [Best practice per policy basate su risorse di DynamoDB](rbac-best-practices.md)

# Creazione di una tabella con una policy basata su risorse
<a name="rbac-create-table"></a>

[Puoi aggiungere una policy basata sulle risorse mentre crei una tabella utilizzando la console DynamoDB, l'[CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API, AWS CLI l'SDK o un modello.AWS](rbac-attach-resource-based-policy.md#rbac-attach-policy-java-sdk) CloudFormation 

## AWS CLI
<a name="rbac-create-table-CLI"></a>

L'esempio seguente crea una tabella denominata utilizzando il comando. *MusicCollection* `create-table` AWS CLI Questo comando include anche il parametro `resource-policy` che aggiunge una policy basata su risorse alla tabella. Questo criterio consente *John* all'utente di eseguire le azioni [RestoreTableToPointInTime[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), e [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API sulla tabella.

Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

```
aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
    --resource-policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::123456789012:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:RestoreTableToPointInTime\",
                        \"dynamodb:GetItem\",
                        \"dynamodb:DescribeTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Console di gestione AWS
<a name="rbac-create-table-console"></a>

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. Nella dashboard, seleziona **Crea tabella**.

1. In **Dettagli tabella**, inserisci il nome della tabella, la chiave di partizione e i dettagli della chiave di ordinamento.

1. In **Impostazioni tabella**, seleziona **Personalizza impostazioni**.

1. (Facoltativo) Specifica le opzioni per **Classe tabella**, **Calcolatore di capacità**, **Impostazioni di capacità in scrittura/lettura**, **Indici secondari**, **Crittografia dei dati inattivi** e **Protezione da eliminazione**.

1. In **Policy basata sulle risorse**, aggiungi una policy per definire le autorizzazioni di accesso per la tabella e i relativi indici. In questa policy si specificano gli utenti che hanno accesso a queste risorse e le azioni che è consentito eseguire su ciascuna risorsa. Per aggiungere una policy, procedi in uno dei seguenti modi:
   + Digitare o incollare un documento di policy JSON. Per i dettagli sul linguaggio della policy IAM, consulta [Creating policies using the JSON editor](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) nella *Guida per l’utente di IAM*.
**Suggerimento**  
**Per vedere esempi di policy basate su risorse nella Guida per gli sviluppatori di Amazon DynamoDB, seleziona Esempi di policy**.
   + Seleziona **Aggiungi nuova istruzione** per aggiungere una nuova istruzione e inserisci le informazioni nei campi forniti. Ripeti questo passaggio per tutte le istruzioni che desideri aggiungere.
**Importante**  
Assicurati di risolvere gli avvisi di sicurezza, gli errori o i suggerimenti prima di salvare la policy.

   Il seguente esempio di policy IAM consente *John* all'utente di eseguire le azioni [RestoreTableToPointInTime[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html), e [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API sulla tabella. *MusicCollection*

   Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/username"
         },
         "Action": [
           "dynamodb:RestoreTableToPointInTime",
           "dynamodb:GetItem",
           "dynamodb:PutItem"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

1. (Facoltativo) Scegli **Preview external access** (Anteprima accesso esterno) nell'angolo in alto a destra per visualizzare in anteprima in che modo la nuova policy influisce sull'accesso pubblico e multi-account alla risorsa. Prima di salvare la policy, puoi verificare se introduce nuovi risultati di IAM Access Analyzer o risolve i risultati esistenti. Se non è presente uno strumento di analisi attivo, scegli **Go to Access Analyzer** (Passa a strumento analisi accessi) per [creare uno strumento di analisi degli account](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) in IAM Access Analyzer. Per ulteriori informazioni, consulta [Preview access](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Scegliere **Create table (Crea tabella)**.

## AWS CloudFormation modello
<a name="rbac-create-table-cfn"></a>

------
#### [ Using the AWS::DynamoDB::Table resource ]

Il CloudFormation modello seguente crea una tabella con un flusso utilizzando la risorsa [AWS: :DynamoDB: :Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html). Questo modello include anche policy basate su risorse e collegate sia alla tabella che al flusso.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "MusicCollectionTable": {
            "Type": "AWS::DynamoDB::Table",
            "Properties": {
                "AttributeDefinitions": [
                    {
                        "AttributeName": "Artist",
                        "AttributeType": "S"
                    }
                ],
                "KeySchema": [
                    {
                        "AttributeName": "Artist",
                        "KeyType": "HASH"
                    }
                ],
                "BillingMode": "PROVISIONED",
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 5,
                    "WriteCapacityUnits": 5
                },
                "StreamSpecification": {
                  "StreamViewType": "OLD_IMAGE",
                  "ResourcePolicy": {
                    "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [
                        {
                            "Principal": {
                                "AWS": "arn:aws:iam::111122223333:user/John"
                            },
                            "Effect": "Allow",
                            "Action": [
                                "dynamodb:GetRecords",
                                "dynamodb:GetShardIterator",
                                "dynamodb:DescribeStream"
                            ],
                            "Resource": "*"
                        }
                      ]
                    }
                  }
                },
                "TableName": "MusicCollection",
                "ResourcePolicy": {
                    "PolicyDocument": {
                        "Version": "2012-10-17",		 	 	 
                        "Statement": [
                            {
                                "Principal": {
                                    "AWS": [
                                        "arn:aws:iam::111122223333:user/John"
                                    ]
                                },
                                "Effect": "Allow",
                                "Action": "dynamodb:GetItem",
                                "Resource": "*"
                            }
                        ]
                    }
                }
            }
           
        }
    }
}
```

------
#### [ Using the AWS::DynamoDB::GlobalTable resource ]

Il CloudFormation modello seguente crea una tabella con la GlobalTable risorsa [AWS: :DynamoDB::](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) e allega una policy basata sulle risorse alla tabella e al relativo flusso.

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "GlobalMusicCollection": {
            "Type": "AWS::DynamoDB::GlobalTable",
            "Properties": {
                "TableName": "MusicCollection",
                "AttributeDefinitions": [{
                    "AttributeName": "Artist",
                    "AttributeType": "S"
                }],
                "KeySchema": [{
                    "AttributeName": "Artist",
                    "KeyType": "HASH"
                }],
                "BillingMode": "PAY_PER_REQUEST",
                "StreamSpecification": {
                    "StreamViewType": "NEW_AND_OLD_IMAGES"
                },
                "Replicas": [
                    {
                        "Region": "us-east-1",
                        "ResourcePolicy": {
                            "PolicyDocument": {
                                "Version": "2012-10-17",		 	 	 
                                "Statement": [{
                                    "Principal": {
                                        "AWS": [
                                            "arn:aws:iam::111122223333:user/John"
                                        ]
                                    },
                                    "Effect": "Allow",
                                    "Action": "dynamodb:GetItem",
                                    "Resource": "*"
                                }]
                            }
                        },
                        "ReplicaStreamSpecification": {
                            "ResourcePolicy": {
                                "PolicyDocument": {
                                    "Version": "2012-10-17",		 	 	 
                                    "Statement": [{
                                        "Principal": {
                                            "AWS": "arn:aws:iam::111122223333:user/John"
                                        },
                                        "Effect": "Allow",
                                        "Action": [
                                            "dynamodb:GetRecords",
                                            "dynamodb:GetShardIterator",
                                            "dynamodb:DescribeStream"
                                        ],
                                        "Resource": "*"
                                    }]
                                }
                            }
                        }
                    }
                ]
            }
        }
    }
}
```

------

# Collegamento di una policy a una tabella DynamoDB esistente
<a name="rbac-attach-resource-based-policy"></a>

[È possibile allegare una policy basata sulle risorse a una tabella esistente o modificare una policy esistente utilizzando la console DynamoDB, l'[PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)API, l' AWS CLI SDK o un modello. AWSCloudFormation](rbac-create-table.md#rbac-create-table-cfn)

## AWS CLI esempio per allegare una nuova policy
<a name="rbac-attach-policy-CLI"></a>

Il seguente esempio di policy IAM utilizza il `put-resource-policy` AWS CLI comando per allegare una policy basata sulle risorse a una tabella esistente. Questo esempio consente all'utente di *John* eseguire le azioni [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [PutItem[UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), e [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)API su una tabella esistente denominata. *MusicCollection*

Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:PutItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## AWS CLI esempio di aggiornamento condizionale di una politica esistente
<a name="rbac-update-policy-CLI"></a>

Per aggiornare in modo condizionale una policy basata su risorse esistente di una tabella, è possibile utilizzare il parametro opzionale `expected-revision-id`. L’esempio seguente aggiornerà la policy solo se esiste in DynamoDB e il suo ID di revisione corrente corrisponde al parametro `expected-revision-id` fornito.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --expected-revision-id 1709841168699 \ 
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetItem\",
                        \"dynamodb:UpdateItem\",
                        \"dynamodb:UpdateTable\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\"
                }
            ]
        }"
```

## Console di gestione AWS
<a name="rbac-attach-policy-console"></a>

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. Dalla dashboard seleziona una tabella esistente.

1. Vai alla scheda **Autorizzazioni** e seleziona **Crea una policy per le tabelle**.

1. Nell’editor della policy basata su risorse, aggiungi la policy che desideri collegare e seleziona **Crea policy**.

   Il seguente esempio di policy IAM consente *John* all'utente di eseguire le azioni [GetItem[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html), e [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)API su una tabella esistente denominata. *MusicCollection*

   Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/username"
         },
         "Action": [
           "dynamodb:GetItem",
           "dynamodb:PutItem",
           "dynamodb:UpdateItem",
           "dynamodb:UpdateTable"
         ],
         "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
       }
     ]
   }
   ```

------

## AWS SDK for Java 2.x
<a name="rbac-attach-policy-java-sdk"></a>

Il seguente esempio di policy IAM utilizza il metodo `putResourcePolicy` per collegare una policy basata su risorse a una tabella esistente. Questa politica consente a un utente di eseguire l'azione [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)API su una tabella esistente.

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * [Get started with the AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html)
 */
public class PutResourcePolicy {

    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <tableArn> <allowedAWSPrincipal>

                Where:
                    tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection.
                    allowed AWS Principal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John.
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String tableArn = args[0];
        String allowedAWSPrincipal = args[1];
        System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " +
                tableArn);
        Region region = Region.US_WEST_2;
        DynamoDbClient ddb = DynamoDbClient.builder()
                .region(region)
                .build();

        String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal);
        System.out.println("Revision ID for the attached policy is " + result);
        ddb.close();
    }

    public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) {
        String policy = generatePolicy(tableArn, allowedAWSPrincipal);
        PutResourcePolicyRequest request = PutResourcePolicyRequest.builder()
                .policy(policy)
                .resourceArn(tableArn)
                .build();

        try {
            return ddb.putResourcePolicy(request).revisionId();
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }

        return "";
    }

    private static String generatePolicy(String tableArn, String allowedAWSPrincipal) {
        return "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +,		 	 	 
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" +
                "            \"Action\": [\n" +
                "                \"dynamodb:GetItem\"\n" +
                "            ],\n" +
                "            \"Resource\": \"" + tableArn + "\"\n" +
                "        }\n" +
                "    ]\n" +
                "}";
    }
}
```

# Collegamento di una policy basata su risorse a un flusso DynamoDB
<a name="rbac-attach-resource-policy-streams"></a>

[È possibile allegare una policy basata su risorse allo stream di una tabella esistente o modificare una policy esistente utilizzando la console DynamoDB, l'[PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)API, l' AWS CLI SDK o un modello. AWSCloudFormation](rbac-create-table.md#rbac-create-table-cfn)

**Nota**  
Non è possibile allegare una policy a uno stream mentre lo si crea utilizzando o. [CreateTable[UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) APIs Tuttavia, è possibile modificare o eliminare una policy dopo l’eliminazione di una tabella. È possibile anche modificare o eliminare la policy di un flusso disabilitato.



## AWS CLI
<a name="rbac-attach-policy-stream-CLI"></a>

Il seguente esempio di policy IAM utilizza il `put-resource-policy` AWS CLI comando per allegare una policy basata sulle risorse al flusso di una tabella denominata. *MusicCollection* Questo esempio consente all'utente *John* di eseguire le azioni [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), e [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)API sullo stream.

Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

```
aws dynamodb put-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492 \
    --policy \
        "{
            \"Version\": \"2012-10-17\",		 	 	 
            \"Statement\": [
              {
                    \"Effect\": \"Allow\",
                    \"Principal\": {
                        \"AWS\": \"arn:aws:iam::111122223333:user/John\"
                    },
                    \"Action\": [
                        \"dynamodb:GetRecords\",
                        \"dynamodb:GetShardIterator\",
                        \"dynamodb:DescribeStream\"
                    ],
                    \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492\"
                }
            ]
        }"
```

## Console di gestione AWS
<a name="rbac-attach-policy-stream-console"></a>

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. Nella dashboard della console DynamoDB, seleziona **Tabelle** e quindi seleziona una tabella esistente.

   Assicurati che nella tabella selezionata i flussi siano attivati. Per informazioni su come attivare i flussi per una tabella, consulta [Abilitazione di un flusso](Streams.md#Streams.Enabling).

1. Scegli la scheda **Autorizzazioni**.

1. In **Policy basata sulle risorse per il flusso attivo** seleziona **Crea una policy di flusso**.

1. Nell’editor **Policy basata sulle risorse**, aggiungi una policy per definire le autorizzazioni di accesso per il flusso. In questa policy si specificano gli utenti che hanno accesso al flusso e le azioni che questi possono eseguirvi. Per aggiungere una policy, procedi in uno dei seguenti modi:
   + Digitare o incollare un documento di policy JSON. Per i dettagli sul linguaggio della policy IAM, consulta [Creating policies using the JSON editor](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) nella *Guida per l’utente di IAM*.
**Suggerimento**  
**Per vedere esempi di policy basate su risorse nella Guida per gli sviluppatori di Amazon DynamoDB, seleziona Esempi di policy**.
   + Seleziona **Aggiungi nuova istruzione** per aggiungere una nuova istruzione e inserisci le informazioni nei campi forniti. Ripeti questo passaggio per tutte le istruzioni che desideri aggiungere.
**Importante**  
Assicurati di risolvere gli avvisi di sicurezza, gli errori o i suggerimenti prima di salvare la policy.

1. (Facoltativo) Scegli **Preview external access** (Anteprima accesso esterno) nell'angolo in alto a destra per visualizzare in anteprima in che modo la nuova policy influisce sull'accesso pubblico e multi-account alla risorsa. Prima di salvare la policy, puoi verificare se introduce nuovi risultati di IAM Access Analyzer o risolve i risultati esistenti. Se non è presente uno strumento di analisi attivo, scegli **Go to Access Analyzer** (Passa a strumento analisi accessi) per [creare uno strumento di analisi degli account](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) in IAM Access Analyzer. Per ulteriori informazioni, consulta [Preview access](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

1. Scegli **Crea policy**.

Il seguente esempio di policy IAM collega una policy basata sulle risorse al flusso di una tabella denominata. *MusicCollection* Questo esempio consente all'utente *John* di eseguire le azioni [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), e [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)API sullo stream.

Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/username"
      },
      "Action": [
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator",
        "dynamodb:DescribeStream"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

# Rimozione di una policy basata su risorse da una tabella DynamoDB
<a name="rbac-delete-resource-based-policy"></a>

È possibile eliminare una policy basata sulle risorse da una tabella esistente utilizzando la console DynamoDB, l'[DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)API, l' AWS CLI SDK o un modello. AWS CloudFormation 

## AWS CLI
<a name="rbac-delete-policy-CLI"></a>

L'esempio seguente utilizza il `delete-resource-policy` AWS CLI comando per rimuovere una politica basata sulle risorse da una tabella denominata. *MusicCollection*

Ricordati di sostituire il *italicized* testo con le informazioni specifiche della risorsa.

```
aws dynamodb delete-resource-policy \
    --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection
```

## Console di gestione AWS
<a name="rbac-delete-policy-console"></a>

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. Nella dashboard della console DynamoDB, seleziona **Tabelle** e quindi seleziona una tabella esistente.

1. Seleziona **Autorizzazioni**.

1. Dal menu a discesa **Gestisci policy**, seleziona **Elimina policy**.

1. Nella finestra di dialogo **Elimina la policy basata sulle risorse per la tabella**, digita **confirm** per confermare l’azione di eliminazione.

1. Scegli **Elimina**.

# Accesso multi-account con policy basate su risorse in DynamoDB
<a name="rbac-cross-account-access"></a>

Utilizzando una policy basata su risorse, è possibile fornire l’accesso multi-account a risorse disponibili in diversi Account AWS. Tutti gli accessi tra account consentiti dalle politiche basate sulle risorse verranno segnalati tramite i risultati degli accessi esterni di IAM Access Analyzer se disponi di un analizzatore nella stessa risorsa. Regione AWS IAM Access Analyzer esegue controlli sulle policy per convalidare le policy rispetto alla [grammatica delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) IAM e alle [best practice](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Questi controlli generano risultati e forniscono raccomandazioni attuabili per aiutarti a creare policy funzionali e conformi alle best practice di sicurezza. È possibile visualizzare i risultati attivi dello strumento di analisi degli accessi IAM nella scheda **Autorizzazioni** della [console DynamoDB](https://console.aws.amazon.com/dynamodb/).

Per ulteriori informazioni sulla convalida delle policy tramite lo strumento di analisi degli accessi IAM, consulta [Convalida delle policy di Sistema di analisi degli accessi AWS IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) nella *Guida per l’utente di IAM*. Per visualizzare un elenco delle avvertenze, degli errori e dei suggerimenti restituiti da IAM Access Analyzer, consulta il [Riferimento al controllo delle policy di IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Per concedere l'[GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)autorizzazione a un utente A nell'account A per accedere a una tabella B nell'account B, procedi nel seguente modo:

1. Collega alla tabella B una policy basata su risorse che conceda l’autorizzazione all’utente A per eseguire l’azione `GetItem`.

1. Collega una policy basata sull’identità all’utente A che gli conceda l’autorizzazione per eseguire l’azione `GetItem` sulla tabella B.

Utilizzando l’opzione **Anteprima dell’accesso esterno** disponibile nella [console DynamoDB](https://console.aws.amazon.com/dynamodb/), è possibile visualizzare in anteprima in che modo la nuova policy influisce sull’accesso pubblico e multi-account alla risorsa. Prima di salvare la policy, puoi verificare se introduce nuovi risultati di IAM Access Analyzer o risolve i risultati esistenti. Se non è presente uno strumento di analisi attivo, scegli **Go to Access Analyzer** (Passa a strumento analisi accessi) per [creare uno strumento di analisi degli account](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) in IAM Access Analyzer. Per ulteriori informazioni, consulta [Preview access](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html).

Il parametro table name nel piano dati e nel piano di controllo di DynamoDB APIs accetta l'Amazon Resource Name (ARN) completo della tabella per supportare le operazioni tra account. Se si fornisce solo il parametro relativo al nome della tabella anziché un ARN completo, l’operazione API verrà eseguita sulla tabella dell’account a cui appartiene il richiedente. Per un esempio di una policy che utilizza l’accesso multi-account, consulta [Policy basata su risorse per accesso multi-account](rbac-examples.md#rbac-examples-cross-account).

L’account del proprietario della risorsa subirà un addebito anche quando un principale di un altro account sta leggendo o scrivendo sulla tabella DynamoDB nell’account del proprietario. Se la tabella prevede la velocità effettiva, la somma di tutte le richieste provenienti dagli account proprietari e dai richiedenti degli altri account determinerà se la richiesta verrà limitata (se la scalabilità automatica è disabilitata) o ridimensionata se la scalabilità automatica è abilitata. up/down 

Le richieste verranno registrate nei CloudTrail registri degli account proprietario e richiedente in modo che ciascuno dei due account possa tenere traccia dell'account a cui ha avuto accesso a quali dati.

## Condividi l'accesso con funzioni AWS Lambda tra account diversi
<a name="rbac-analyze-cross-account-lambda-access"></a>

**Funzioni Lambda nell'account A**

1. Vai alla [console IAM](https://console.aws.amazon.com/iam/) per creare un ruolo IAM che verrà utilizzato come ruolo di [esecuzione Lambda per la tua funzione Lambda nell'](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)account A. Aggiungi la policy `AWSLambdaDynamoDBExecutionRole` IAM gestita con le autorizzazioni di invocazione DynamoDB Streams e AWS Lambda richieste. Questa politica garantisce inoltre l'accesso a tutte le potenziali risorse DynamoDB Streams a cui potresti avere accesso nell'account A.

1. Nella [console Lambda](https://console.aws.amazon.com/lambda/), crea una funzione AWS Lambda per elaborare i record in un flusso DynamoDB e, durante la configurazione del ruolo di esecuzione, scegli il ruolo creato nel passaggio precedente.

1. Fornisci il ruolo di esecuzione della funzione Lambda al proprietario dell'account B di DynamoDB Streams per configurare la policy basata sulle risorse per l'accesso in lettura tra account.

1. Completa la configurazione della funzione Lambda.

**Flusso DynamoDB nell'account B**

1. Ottieni il ruolo di esecuzione Lambda tra account dall'account A che richiamerà la funzione Lambda.

1. Sulla console Amazon DynamoDB nell'account B, scegli la tabella per il trigger multiaccount Lambda. Nella scheda **Esportazioni e flussi**, individua l'ARN del tuo stream DynamoDB. Assicurati che lo stato del flusso di DynamoDB sia Attivo e annota l'ARN del flusso completo poiché ti servirà per la politica delle risorse.

1. Nella scheda **Autorizzazioni**, fai clic sul pulsante **Crea policy di streaming** per avviare l'editor visivo delle policy. Fai clic sul pulsante **Aggiungi nuova dichiarazione** o modifica la politica se ne esiste già una.

1. Crea una policy che specifichi il ruolo di esecuzione Lambda nell'account A come principale e concedi le azioni DynamoDB Stream richieste. Assicurati di includere le azioni`dynamodb:DescribeStream`,, `dynamodb:GetRecords` e. `dynamodb:GetShardIterator` `dynamodb:ListShards` [Per ulteriori informazioni su esempi di policy relative alle risorse per DynamoDB Streams, consulta Esempi di policy basate sulle risorse di DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-examples.html)

**Nota**  
L'accesso al [piano di controllo](HowItWorks.API.md#HowItWorks.API.ControlPlane) tra più account APIs ha un limite inferiore di transazioni al secondo (TPS) di 500 richieste.

# Blocco dell’accesso pubblico con policy basate su risorse in DynamoDB
<a name="rbac-bpa-rbp"></a>

Il [blocco dell’accesso pubblico (BPA)](#rbac-bpa-rbp) è una funzionalità che identifica e impedisce il collegamento di policy basate su risorse che garantiscono l’accesso pubblico alle tabelle, agli indici o ai flussi di DynamoDB tra gli account [Amazon Web Services (AWS)](https://aws.amazon.com/). Con il BPA è possibile impedire l’accesso pubblico alle proprie risorse DynamoDB. Il BPA esegue controlli durante la creazione o la modifica di una policy basata su risorse e aiuta a migliorare il livello di sicurezza con DynamoDB.

Il BPA utilizza il [ragionamento automatico](https://aws.amazon.com/what-is/automated-reasoning/) per analizzare l’accesso concesso dalla policy basata su risorse e avvisa l’utente se tali autorizzazioni vengono rilevate al momento della gestione di una policy basata su risorse. L’analisi verifica l’accesso a tutte le istruzioni della policy basata su risorse, alle azioni e al set di chiavi di condizione utilizzate nelle policy.

**Importante**  
Il BPA aiuta a proteggere le risorse impedendo che venga concesso l’accesso pubblico attraverso le policy basate su risorse direttamente collegate alle risorse DynamoDB, come tabelle, indici e flussi. Oltre ad attivare il BPA, controlla attentamente le seguenti policy per verificare che non concedano l’accesso pubblico:  
Politiche basate sull'identità collegate ai AWS principali associati (ad esempio, ruoli IAM)
Politiche basate sulle risorse collegate alle AWS risorse associate (ad esempio, chiavi (KMS)) AWS Key Management Service 

È necessario assicurarsi che il [principale](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) non includa una voce `*` o che una delle chiavi di condizione specificate limiti l’accesso dei principali alla risorsa. Se la policy basata sulle risorse concede l'accesso pubblico alla tabella, agli indici o allo stream, Account AWS DynamoDB ti impedirà di creare o modificare la policy finché la specifica all'interno della policy non sarà corretta e considerata non pubblica.

È possibile rendere una policy non pubblica specificando uno o più principi all’interno del blocco del `Principal`. Il seguente esempio di policy basata su risorse blocca l’accesso pubblico specificando due principali.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "123456789012",
      "111122223333"
    ]
  },
  "Action": "dynamodb:*",
  "Resource": "*"
}
```

Inoltre, le policy che limitano l’accesso specificando determinate chiavi di condizione non sono considerate pubbliche. Oltre alla valutazione del principale specificato nella policy basata su risorse, vengono utilizzate le seguenti [chiavi di condizione attendibili](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) per completare la valutazione di una policy basata su risorse per l’accesso non pubblico:
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:SourceAccount`
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserId`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:PrincipalIsAWSService`
+ `aws:Ec2InstanceSourceVpc`
+ `aws:SourceOrgID`
+ `aws:SourceOrgPaths`

Inoltre, affinché una policy basata su risorse non sia pubblica, i valori del nome della risorsa Amazon (ARN) e le chiavi di stringa non devono contenere caratteri jolly o variabili. Se la propria policy basata su risorse utilizza la chiave `aws:PrincipalIsAWSService`, è necessario assicurarsi di aver impostato il valore della chiave su true.

La policy seguente limita l’accesso all’utente `John` nell’account specificato. La condizione rende il `Principal` vincolato e non lo considera pubblico.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "dynamodb:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John"
    }
  }
}
```

L’esempio seguente di una policy basata su risorse non pubblica limita `sourceVPC` a utilizzare l’operatore `StringEquals`.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dynamodb:*",
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```

------

# Operazioni API DynamoDB supportate da policy basate su risorse
<a name="rbac-iam-actions"></a>

Questo argomento elenca le operazioni API supportate dalle policy basate su risorse. Tuttavia, per l'accesso a più account, è possibile utilizzare solo un determinato set di APIs DynamoDB tramite policy basate sulle risorse. Non è possibile collegare policy basate su risorse a tipi di risorse come backup e importazioni. Le azioni IAM, che corrispondono al APIs funzionamento su questi tipi di risorse, sono escluse dalle azioni IAM supportate nelle politiche basate sulle risorse. Poiché gli amministratori delle tabelle configurano le impostazioni interne delle tabelle all'interno dello stesso account, ad esempio [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)e APIs [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html), non supportano l'accesso tra account tramite politiche basate sulle risorse.

Il piano dati e il piano di controllo APIs di DynamoDB che supportano l'accesso tra account supportano anche l'overload dei nomi delle tabelle, che consente di specificare l'ARN della tabella anziché il nome della tabella. È possibile specificare l'ARN della tabella nel `TableName` parametro di questi. APIs Tuttavia, non tutti APIs supportano l'accesso tra account.

**Topics**
+ [Operazioni API del piano dati](#rbac-data-plane-actions)
+ [Operazioni API PartiQL](#rbac-partiql-actions)
+ [Operazioni API del piano di controllo (control-plane)](#rbac-control-plane-actions)
+ [Operazioni API delle tabelle globali versione 2019.11.21 (Corrente)](#rbac-current-global-table-actions)
+ [Operazioni API delle tabelle globali versione 2017.11.29 (Legacy)](#rbac-legacy-global-table-actions)
+ [Operazione API dei tag](#rbac-tags-actions)
+ [Operazioni API di backup e ripristino](#rbac-backup-restore-actions)
+ [Operazioni API continue Backup/Restore (PITR)](#rbac-continuous-backup-restore-actions)
+ [Operazioni API di Contributor Insights](#rbac-contributor-insights-actions)
+ [Operazioni API di esportazione](#rbac-export-actions)
+ [Operazioni API di importazione](#rbac-import-actions)
+ [Operazioni API del flusso di dati Amazon Kinesis](#rbac-kinesis-actions)
+ [Operazioni API di policy basate su risorse](#rbac-rbp-actions)
+ [Time-to-Live Operazioni API](#rbac-ttl-actions)
+ [Altre operazioni API](#rbac-other-actions)
+ [Operazioni API per i flussi DynamoDB](#rbac-ds-actions)

## Operazioni API del piano dati
<a name="rbac-data-plane-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API del [piano dati](HowItWorks.API.md#HowItWorks.API.DataPlane) per le policy basate su risorse e l’accesso multi-account.


| Piano dati - Tables/indexes APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DeleteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)   | Sì  | Sì | 
|   [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)   | Sì | Sì | 
|   [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)   | Sì | Sì | 
|   [Query](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html)   | Sì  | Sì | 
|   [Scan](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html)   | Sì  | Sì | 
|   [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)   | Sì | Sì | 
|   [TransactGetItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactGetItems.html)   | Sì | Sì | 
|   [TransactWriteItems](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TransactWriteItems.html)   | Sì | Sì | 
|   [BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)   | Sì | Sì | 
|   [BatchWriteItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)   | Sì | Sì | 

## Operazioni API PartiQL
<a name="rbac-partiql-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API [PartiQL](HowItWorks.API.md#HowItWorks.API.DataPlane.partiql) per le policy basate su risorse e l’accesso multi-account.


| PartiQL APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [BatchExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchExecuteStatement.html)   | Sì | No | 
|   [ExecuteStatement](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteStatement.html)   | Sì | No | 
|   [ExecuteTransaction](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExecuteTransaction.html)   | Sì | No | 

## Operazioni API del piano di controllo (control-plane)
<a name="rbac-control-plane-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API del [piano di controllo](HowItWorks.API.md#HowItWorks.API.ControlPlane) (control-plane) per le policy basate su risorse e l’accesso multi-account.


| Control Plane - Tabelle APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)   | No | No | 
|   [DeleteTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html)   | Sì | Sì | 
|   [DescribeTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html)   | Sì | Sì | 
|   [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html)   | Sì | Sì | 

## Operazioni API delle tabelle globali versione 2019.11.21 (Corrente)
<a name="rbac-current-global-table-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API delle [Tabelle globali versione 2019.11.21 (Corrente)](GlobalTables.md) per le policy basate su risorse e l’accesso multi-account.


| Tabelle globali versione 2019.11.21 (attuale) APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTableReplicaAutoScaling.html)   | Sì | No | 
|   [UpdateTableReplicaAutoScaling](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTableReplicaAutoScaling.html)   | Sì | No | 

## Operazioni API delle tabelle globali versione 2017.11.29 (Legacy)
<a name="rbac-legacy-global-table-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API delle [tabelle globali versione 2017.11.29 (Legacy)](globaltables.V1.md) per le policy basate su risorse e l’accesso multi-account.


| Tabelle globali versione 2017.11.29 (Legacy) APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [CreateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateGlobalTable.html)   | No | No | 
|   [DescribeGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTable.html)   | No | No | 
|   [DescribeGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeGlobalTableSettings.html)   | No | No | 
|   [ListGlobalTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListGlobalTables.html)   | No | No | 
|   [UpdateGlobalTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTable.html)   | No | No | 
|   [UpdateGlobalTableSettings](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateGlobalTableSettings.html)   | No | No | 

## Operazione API dei tag
<a name="rbac-tags-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API relative ai [tag](Tagging.Operations.md) per le policy basate su risorse e l’accesso multi-account.


| Tag APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [ListTagsOfResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTagsOfResource.html)   | Sì  | Sì | 
|   [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)   | Sì | Sì | 
|   [UntagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UntagResource.html)   | Sì | Sì | 

## Operazioni API di backup e ripristino
<a name="rbac-backup-restore-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API relative al [backup e al ripristino](Backup-and-Restore.md) per le policy basate su risorse e l’accesso multi-account.


| Backup e ripristino APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [CreateBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateBackup.html)   | Sì | No | 
|   [DescribeBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeBackup.html)   | No | No | 
|   [DeleteBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteBackup.html)   | No | No | 
|  [RestoreTableFromBackup](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableFromBackup.html)  | No | No | 

## Operazioni API continue Backup/Restore (PITR)
<a name="rbac-continuous-backup-restore-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API relative a [Continuous Backup/Restore (PITR)](Point-in-time-recovery.md) per le politiche basate sulle risorse e l'accesso tra account.


| Continuo (PITR) Backup/Restore APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContinuousBackups.html)   | Sì | No | 
|   [RestoreTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_RestoreTableToPointInTime.html)   | Sì | No | 
|   [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html)   | Sì | No | 

## Operazioni API di Contributor Insights
<a name="rbac-contributor-insights-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API relative a [Continuous Backup/Restore (PITR)](Point-in-time-recovery.md) per le politiche basate sulle risorse e l'accesso tra account.


| Approfondimenti per i contributori APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeContributorInsights.html)   | Sì | No | 
|   [ListContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListContributorInsights.html)   | No | No | 
|   [UpdateContributorInsights](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContributorInsights.html)   | Sì | No | 

## Operazioni API di esportazione
<a name="rbac-export-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API di esportazione per le policy basate su risorse e l’accesso multi-account.


| Esportazione APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeExport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeExport.html)   | No | No | 
|   [ExportTableToPointInTime](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ExportTableToPointInTime.html)   | Sì | No | 
|   [ListExports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListExports.html)   | No | No | 

## Operazioni API di importazione
<a name="rbac-import-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API di esportazione per le policy basate su risorse e l’accesso multi-account.


| Importazione APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeImport](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeImport.html)   | No | No | 
|   [ImportTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ImportTable.html)   | No | No | 
|   [ListImports](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListImports.html)   | No | No | 

## Operazioni API del flusso di dati Amazon Kinesis
<a name="rbac-kinesis-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API del flusso di dati Kinesis per le policy basate su risorse e l’accesso multi-account.


| Kinesis APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeKinesisStreamingDestination.html)   | Sì | No | 
|   [DisableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DisableKinesisStreamingDestination.html)   | Sì | No | 
|   [EnableKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_EnableKinesisStreamingDestination.html)   | Sì | No | 
|   [UpdateKinesisStreamingDestination](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateKinesisStreamingDestination.html)   | Sì | No | 

## Operazioni API di policy basate su risorse
<a name="rbac-rbp-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API di policy basate su risorse per le policy basate su risorse e l’accesso multi-account.


| Politica basata sulle risorse APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [GetResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetResourcePolicy.html)   | Sì | No | 
|   [PutResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutResourcePolicy.html)   | Sì | No | 
|   [DeleteResourcePolicy](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteResourcePolicy.html)   | Sì | No | 

## Time-to-Live Operazioni API
<a name="rbac-ttl-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito dalle operazioni API [Time to Live](TTL.md) (TTL) per le policy basate su risorse e l’accesso multi-account.


| TTL APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTimeToLive.html)   | Sì | No | 
|   [UpdateTimeToLive](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTimeToLive.html)   | Sì | No | 

## Altre operazioni API
<a name="rbac-other-actions"></a>

La tabella seguente elenca il supporto a livello di API fornito da altre operazioni API varie per le policy basate su risorse e l’accesso multi-account.


| Altro APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeLimits](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeLimits.html)   | No | No | 
|   [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html)   | No | No | 
|   [ListBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListBackups.html)   | No | No | 
|   [ListTables](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html)   | No | No | 

## Operazioni API per i flussi DynamoDB
<a name="rbac-ds-actions"></a>

La tabella seguente elenca il supporto a livello di API di APIs DynamoDB Streams per le policy basate sulle risorse e l'accesso tra account.


| Streams DynamoDB APIs | Supporto per policy basate su risorse | Supporto multi-account | 
| --- | --- | --- | 
|   [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)   | Sì  | Sì | 
|   [GetRecords](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html)   | Sì | Sì | 
|   [GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)   | Sì | Sì | 
|   [ListStreams](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_ListStreams.html)   | No | No | 

# Autorizzazione con policy basate sull’identità IAM e policy basate su risorse DynamoDB
<a name="rbac-auth-iam-id-based-policies-DDB"></a>

Le **policy basate sull’identità** sono collegate a un’identità, come utenti, gruppi di utenti e ruoli IAM. Si tratta di documenti di policy IAM che controllano le azioni autorizzate per l’identità, nonché le risorse e le condizioni di esecuzione. Le policy basate sull’identità possono essere policy [gestite](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) o [in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies).

Le **policy basate su risorse** sono documenti di policy IAM che vengono collegate a una risorsa, come una tabella DynamoDB. Queste policy concedono al principale specificato l’autorizzazione per eseguire operazioni specifiche sulla risorsa e definiscono le condizioni in cui ciò si applica. Ad esempio, la policy basate su risorse per una tabella DynamoDB include anche l’indice associato alla tabella. Le policy basate su risorse sono policy inline. Non esistono policy basate su risorse gestite.

Per ulteriori informazioni su queste policy, consulta [Identity-based policies and resource-based policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) nella *Guida per l’utente di IAM*.

Se il principale IAM proviene dallo stesso account del proprietario della risorsa, una policy basate su risorse è sufficiente per specificare le autorizzazioni di accesso alla risorsa. È comunque possibile scegliere di disporre di una policy basata sull’identità IAM insieme a una policy basata su risorse. Per l’accesso multi-account, è necessario consentire esplicitamente l’accesso sia nelle policy basate sull’identità che in quelle basate su risorse, come specificato in [Accesso multi-account con policy basate su risorse in DynamoDB](rbac-cross-account-access.md). Quando si utilizzano entrambi i tipi di policy, una policy viene valutata come descritto in [Determinazione se una richiesta è consentita o rifiutata in un account](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Importante**  
Se una policy basata sull'identità concede l'accesso incondizionato a una tabella DynamoDB (ad esempio`dynamodb:GetItem`, senza condizioni), una policy basata sulle risorse che consente l'accesso con condizioni attivate non limiterà tale accesso. `dynamodb:Attributes` L'autorizzazione incondizionata della policy basata sull'identità ha la precedenza e le condizioni della policy basata sulle risorse non vengono applicate come restrizioni. Per limitare l'accesso a attributi specifici, utilizzate un'`Deny`istruzione esplicita anziché affidarvi esclusivamente alle istruzioni condizionali contenute nella politica basata sulle risorse. `Allow`

# Esempi di policy basate su risorse per DynamoDB
<a name="rbac-examples"></a>

Quando si specifica un ARN nel campo `Resource` di una policy basata su risorse, la policy ha effetto solo se l’ARN specificato corrisponde all’ARN della risorsa DynamoDB a cui è collegato.

**Nota**  
Ricordati di sostituire il testo con le informazioni specifiche della risorsa. *italicized*

## Policy basata su risorse per una tabella
<a name="rbac-examples-get"></a>

La seguente policy basata sulle risorse allegata a una tabella DynamoDB denominata*MusicCollection*, fornisce agli utenti IAM *John* e il *Jane* permesso di eseguire azioni sulla risorsa. [GetItem[BatchGetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)*MusicCollection*

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::111122223333:user/username",
            "arn:aws:iam::111122223333:user/Jane"
          ]
        },
        "Action": [
          "dynamodb:GetItem",
          "dynamodb:BatchGetItem"
        ],
        "Resource": [
          "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
        ]
    }
  ]
}
```

------

## Policy basata su risorse per un flusso
<a name="rbac-examples-streams"></a>

La seguente policy basata sulle risorse allegata a un flusso DynamoDB denominato `2024-02-12T18:57:26.492` fornisce agli utenti IAM [GetRecords[GetShardIterator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetShardIterator.html)](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_GetRecords.html), il *Jane* permesso di eseguire *John* e le azioni API sulla risorsa. [DescribeStream](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_DescribeStream.html)`2024-02-12T18:57:26.492`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/username",
          "arn:aws:iam::111122223333:user/Jane"
        ]
      },
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492"
      ]
    }
  ]
}
```

------

## Politica basata su risorse per l’accesso all’esecuzione di tutte le azioni su risorse specifiche
<a name="rbac-examples-wildcard"></a>

Per consentire a un utente di eseguire tutte le azioni su una tabella e tutti gli indici associati a una tabella, è possibile utilizzare un carattere jolly (\$1) per rappresentare le azioni e le risorse associate alla tabella. L’utilizzo di un carattere jolly per le risorse consentirà all’utente di accedere alla tabella DynamoDB e a tutti gli indici associati, inclusi quelli che non sono ancora stati creati. Ad esempio, la seguente politica consentirà all'utente *John* di eseguire qualsiasi azione sulla *MusicCollection* tabella e su tutti i relativi indici, inclusi gli indici che verranno creati in futuro.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/role-name"
      },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name"
      ]
    }
  ]
}
```

------

## Policy basata su risorse per accesso multi-account
<a name="rbac-examples-cross-account"></a>

È possibile specificare le autorizzazioni per un’identità IAM multi-account per accedere alle risorse DynamoDB. Ad esempio, potrebbe essere necessario un utente di un account attendibile per accedere alla lettura del contenuto della tabella, a condizione che acceda solo a elementi e attributi specifici di tali elementi. La seguente politica consente all'utente di accedere *John* da un Account AWS ID affidabile *111111111111* ai dati di una tabella nell'account *123456789012* utilizzando l'API. [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html) La politica garantisce che l'utente possa accedere solo agli elementi con una chiave primaria *Jane* e che l'utente possa recuperare solo gli attributi `Artist` e `SongTitle` nessun altro attributo.

**Importante**  
Se non si specifica la condizione `SPECIFIC_ATTRIBUTES`, si vedranno tutti gli attributi degli elementi restituiti.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountTablePolicy",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:user/John"
            },
            "Action": "dynamodb:GetItem",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

Oltre alla precedente politica basata sulle risorse, *John* anche la politica basata sull'identità allegata all'utente deve consentire l'azione dell'`GetItem`API per il funzionamento dell'accesso tra account. Di seguito è riportato un esempio di policy basata sull'identità che è necessario allegare all'utente. *John*

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountIdentityBasedPolicy",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "Jane",
                    "dynamodb:Attributes": [
                        "Artist",
                        "SongTitle"
                    ]
                },
                "StringEquals": {
                    "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
                }
            }
        }
    ]
}
```

------

L'utente John può effettuare una `GetItem` richiesta specificando la tabella ARN nel parametro per `table-name` l'accesso alla *MusicCollection* tabella nell'account. *123456789012*

```
aws dynamodb get-item \
    --table-name arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \
    --key '{"Artist": {"S": "Jane"}' \
    --projection-expression 'Artist, SongTitle' \
    --return-consumed-capacity TOTAL
```

## Policy basata su risorse con condizioni di indirizzo IP
<a name="rbac-examples-conditions"></a>

È possibile applicare una condizione per limitare gli indirizzi IP di origine, i cloud privati virtuali (VPCs) e gli endpoint VPC (VPCE). È possibile specificare le autorizzazioni in base agli indirizzi di origine della richiesta di origine. Ad esempio, si potrebbe voler consentire a un utente di accedere alle risorse DynamoDB solo se vi accede da un’origine IP specifica, come un endpoint VPN aziendale. Specifica questi indirizzi IP nell’istruzione `Condition`.

L'esempio seguente consente all'utente di *John* accedere a qualsiasi risorsa DynamoDB quando le IPs sorgenti sono e. `54.240.143.0/24` `2001:DB8:1234:5678::/64`

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

****  

```
{
  "Id":"PolicyId2",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AllowIPmix",
      "Effect":"Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/username"
      },
      "Action":"dynamodb:*",
      "Resource":"*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "54.240.143.0/24",
            "2001:DB8:1234:5678::/64"
          ]
        }
      }
    }
  ]
}
```

------

Puoi anche negare tutti gli accessi alle risorse DynamoDB tranne quando l'origine è un endpoint VPC specifico, ad esempio. *vpce-1a2b3c4d*

**Importante**  
Quando si utilizza DAX con tabelle DynamoDB con policy di risorse basate su IP IPv6 in ambienti -only, è necessario configurare regole di accesso aggiuntive. Se la politica delle risorse limita l'accesso allo spazio degli IPv4 indirizzi `0.0.0.0/0` sulle tabelle, è necessario consentire l'accesso al ruolo IAM associato al cluster DAX. Aggiungi una `ArnNotEquals` condizione alla tua policy per garantire che DAX mantenga l'accesso alle tue tabelle DynamoDB. [Per ulteriori informazioni, vedere DAX e. IPv6](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.create-cluster.DAX_and_IPV6.html)

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

****  

```
{
  "Id":"PolicyId",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessToSpecificVPCEOnly",
      "Principal": "*",
      "Action": "dynamodb:*",
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals":{
          "aws:sourceVpce":"vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```

------

## Policy basata su risorse che utilizza un ruolo IAM
<a name="rbac-examples-iam"></a>

È inoltre possibile specificare un ruolo di servizio IAM nella policy basata su risorse. Le entità IAM che assumono questo ruolo sono limitate dalle azioni consentite specificate per il ruolo e allo specifico set di risorse all’interno della policy basata su risorse.

L'esempio seguente consente a un'entità IAM di eseguire tutte le azioni DynamoDB sulle risorse *MusicCollection* e *MusicCollection* DynamoDB.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "1111",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" },
      "Action": "dynamodb:*",
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
        "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*"
      ]
    }
  ]
}
```

------

# Considerazioni sulle policy basate su risorse per DynamoDB
<a name="rbac-considerations"></a>

Quando si definiscono policy basate su risorse per risorse DynamoDB, si applicano le seguenti considerazioni:

**Considerazioni generali**
+ La dimensione massima supportata per un documento di policy basata su risorse è di 20 KB. DynamoDB non calcola gli spazi vuoti nella determinazione delle dimensioni di una policy rispetto a tale limite. 
+ Gli aggiornamenti successivi a una policy per una determinata risorsa vengono bloccati per 15 secondi dopo un aggiornamento riuscito della policy per la stessa risorsa.
+ Attualmente è possibile collegare una policy basata su risorse solo ai flussi esistenti, non a un flusso durante la sua creazione.

**Considerazioni sulle tabelle globali**
+ Le policy basate su risorse non sono supportate per le repliche delle [Tabelle globali versione 2017.11.29](globaltables_HowItWorks.md) (Legacy).
+ All’interno di una policy basata su risorse, se l’azione per un ruolo collegato al servizio (SLR, Service-Linked Role) DynamoDB per replicare i dati per una tabella globale viene negata, l’aggiunta o l’eliminazione di una replica avrà esito negativo e genererà un errore.
+ La GlobalTable risorsa [AWS: :DynamoDB::](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-globaltable.html) non supporta la creazione di una replica e l'aggiunta di una policy basata sulle risorse a tale replica nello stesso aggiornamento dello stack in regioni diverse dalla regione in cui viene distribuito l'aggiornamento dello stack.

**Considerazioni relative a più account**
+ L'accesso tra account tramite politiche basate sulle risorse non supporta tabelle crittografate con chiavi gestite perché non è possibile concedere l'accesso tra account diversi alla politica KMS gestita AWS . AWS 

**CloudFormation considerazioni**
+ Le policy basate su risorse non supportano il [rilevamento delle deviazioni](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html#). Se aggiorni una policy basata sulle risorse al di fuori del modello di AWS CloudFormation stack, dovrai aggiornare lo stack con le CloudFormation modifiche.
+ Le policy basate su risorse non supportano modifiche fuori banda. Se aggiungi, aggiorni o elimini una politica all'esterno del CloudFormation modello, la modifica non verrà sovrascritta se non ci sono modifiche alla politica all'interno del modello.

  Ad esempio, si supponga che il modello contenga una policy basata su risorse che successivamente verrà aggiornata al di fuori del modello. Se non si apportano modifiche alla policy nel modello, la policy aggiornata in DynamoDB non verrà sincronizzata con la policy nel modello.

  Al contrario, si supponga che il modello non contenga una policy basata su risorse, ma che si aggiunga una policy esterna al modello. Questa policy non verrà rimossa da DynamoDB finché non la si aggiunge al modello. Durante l’aggiunta di una policy al modello e l’aggiornamento dello stack, la policy esistente in DynamoDB verrà aggiornata in modo che corrisponda a quella definita nel modello.

# Best practice per policy basate su risorse di DynamoDB
<a name="rbac-best-practices"></a>

Questo argomento descrive le best practice per definire le autorizzazioni di accesso per le risorse DynamoDB e le azioni consentite su tali risorse.

## Semplificazione del controllo degli accessi alle risorse DynamoDB
<a name="rbac-simplify-access-control"></a>

Se AWS Identity and Access Management i principali che devono accedere a una risorsa DynamoDB fanno parte Account AWS dello stesso proprietario della risorsa, non è richiesta una policy basata sull'identità IAM per ogni principale. Sarà sufficiente una policy basata su risorse collegata alle risorse fornite. Questo tipo di configurazione semplifica il controllo degli accessi.

## Protezione delle risorse DynamoDB con policy basate su risorse
<a name="rbac-protect"></a>

 Per tutte le tabelle e i flussi DynamoDB è possibile creare policy basate su risorse per imporre il controllo degli accessi a queste risorse. Le policy basate su risorse consentono di centralizzare le autorizzazioni a livello di risorsa, semplificare il controllo degli accessi a tabelle, indici e flussi di DynamoDB e ridurre il sovraccarico di gestione. Se non viene specificata alcuna policy basata su risorse per una tabella o un flusso, l’accesso alla tabella o al flusso verrà implicitamente negato, a meno che le policy basate sull’identità associate ai principali IAM non consentano l’accesso.

## Assegna le autorizzazioni con privilegi minimi
<a name="rbac-least-privilege"></a>

Durante l’impostazione delle autorizzazioni con policy basate su risorse per risorse DynamoDB, concedi solo le autorizzazioni necessarie per eseguire un’operazione. Puoi farlo definendo le azioni che possono essere intraprese su risorse specifiche in condizioni specifiche, note anche come autorizzazioni con privilegi minimi. Potresti iniziare con autorizzazioni generiche mentre esplori le autorizzazioni necessarie per il tuo carico di lavoro o il caso d'uso. Man mano che il tuo caso d'uso matura, puoi lavorare per ridurre le autorizzazioni concesse per lavorare con il privilegio minimo.

## Analisi dell’attività di accesso multi-account per generare policy con privilegi minimi
<a name="rbac-analyze-cross-account-access"></a>

Lo strumento di analisi degli accessi IAM segnala l’accesso multi-account a entità esterne specificate nelle policy basate su risorse e fornisce visibilità per aiutare a perfezionare le autorizzazioni e conformarsi al privilegio minimo. Per ulteriori informazioni sulla generazione delle policy, consulta [IAM Access Analyzer policy generation](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Utilizzo dello strumento di analisi degli accessi IAM per generare policy con privilegi minimi
<a name="rbac-iam-access-analyzer"></a>

Per concedere solo le autorizzazioni richieste per eseguire un'attività, puoi generare policy in funzione dell'attività di accesso che hai effettuato l'accesso in AWS CloudTrail. Lo strumento di analisi degli accessi IAM analizza i servizi e le azioni utilizzate dalle policy.

# Utilizzo del controllo degli accessi basato su attributi con DynamoDB
<a name="attribute-based-access-control"></a>

Il [controllo degli accessi basato sugli attributi (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) è una strategia di autorizzazione che definisce le autorizzazioni di accesso in base alle [condizioni dei tag](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) nelle politiche basate sull'identità o in altre politiche, come le politiche basate sulle risorse e le politiche IAM dell'organizzazione. AWS È possibile associare tag alle tabelle DynamoDB, che vengono poi valutate in base alle condizioni basate sui tag. Gli indici associati a una tabella ereditano i tag aggiunti alla tabella. È possibile aggiungere fino a 50 tag per ogni tabella DynamoDB. La dimensione massima supportata per tutti i tag in una tabella è 10 KB. Per ulteriori informazioni sull’assegnazione di tag alle risorse DynamoDB e sulle restrizioni relative ai tag, consulta [Assegnazione di tag alle risorse in DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.Operations.html) e [Limitazioni dell'assegnazione di tag in DynamoDB](Tagging.md#TaggingRestrictions).

Per ulteriori informazioni sull'utilizzo dei tag per controllare l'accesso alle AWS risorse, consulta i seguenti argomenti nella Guida per l'utente IAM:
+ [A cosa serve ABAC AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)
+ [Controllo dell'accesso alle AWS risorse tramite tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)

Utilizzando l’ABAC è possibile applicare diversi livelli di accesso per i propri team e le proprie applicazioni per eseguire azioni sulle tabelle DynamoDB utilizzando un minor numero di policy. Per controllare gli accessi alle tabelle o agli indici DynamoDB è invece possibile specificare un tag nell’[elemento Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) di una policy IAM. Queste condizioni determinano il livello di accesso di un principale, un utente o un ruolo IAM alle tabelle e agli indici DynamoDB. Quando un principale IAM effettua una richiesta di accesso a DynamoDB, i tag della risorsa e dell’identità vengono valutati in base alle condizioni dei tag nella policy IAM. Successivamente, la policy diventa effettiva solo se vengono soddisfatte le condizioni dei tag. Ciò consente di creare una policy IAM che risponda efficacemente a una delle seguenti condizioni:
+ *Consentire all’utente di gestire solo le risorse che hanno un tag con una chiave `X` e un valore `Y`*.
+ *Negare l’accesso a tutti gli utenti alle risorse contrassegnate con una chiave `X`*.

Ad esempio, è possibile creare una policy che consenta agli utenti di aggiornare una tabella solo se presenta la coppia chiave-valore del tag: `"environment": "staging"`. Puoi usare la chiave [aws: ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) condition per consentire o negare l'accesso a una tabella in base ai tag allegati a quella tabella.

Puoi includere condizioni basate sugli attributi durante la creazione della policy o in un secondo momento utilizzando Console di gestione AWS, AWS API, AWS Command Line Interface (AWS CLI), AWS SDK o. AWS CloudFormation

L'esempio seguente consente l'[UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)azione su una tabella denominata `MusicTable` se include una chiave di tag con il nome e il valore. `environment` `production`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:UpdateItem"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/MusicTable",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Qual è il vantaggio di utilizzare l’ABAC?](#why-use-abac)
+ [Chiavi di condizione per implementare l’ABAC con DynamoDB](#condition-keys-implement-abac)
+ [Considerazioni sull’utilizzo dell’ABAC con DynamoDB](#abac-considerations)
+ [Abilitazione dell’ABAC in DynamoDB](abac-enable-ddb.md)
+ [Utilizzo dell’ABAC con tabelle e indici DynamoDB](abac-implementation-ddb-tables.md)
+ [Esempi di utilizzo dell’ABAC con tabelle e indici DynamoDB](abac-example-use-cases.md)
+ [Risoluzione dei problemi più comuni dell’ABAC per le tabelle e gli indici DynamoDB](abac-troubleshooting.md)

## Qual è il vantaggio di utilizzare l’ABAC?
<a name="why-use-abac"></a>
+ **Gestione delle policy più semplice:** si utilizza un minor numero di policy perché non è necessario creare policy diverse per definire il livello di accesso per ogni principale IAM.
+ **Controllo scalabile degli accessi:** scalare il controllo degli accessi è più facile con l’ABAC perché non è necessario aggiornare le policy IAM quando vengono create nuove risorse. È possibile utilizzare i tag per autorizzare l’accesso ai principali IAM che contengono tag corrispondenti ai tag della risorsa. È possibile integrare nuovi principali IAM o risorse DynamoDB e applicare i tag appropriati per concedere automaticamente le autorizzazioni necessarie senza dover apportare modifiche alle policy.
+ **Gestione granulare delle autorizzazioni**: è una best practice [concedere il privilegio minimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) quando si creano le policy. Utilizzando l’ABAC è possibile creare tag per il principale IAM e utilizzarli per concedere l’accesso ad azioni e risorse specifiche che corrispondono ai tag sul principale IAM. 
+ **Allineamento con la directory aziendale:** è possibile mappare i tag con gli attributi dei dipendenti esistenti presenti nella directory aziendale per allineare le policy di controllo degli accessi alla struttura organizzativa.

## Chiavi di condizione per implementare l’ABAC con DynamoDB
<a name="condition-keys-implement-abac"></a>

È possibile utilizzare le seguenti chiavi di condizione nelle AWS policy per controllare il livello di accesso alle tabelle e agli indici DynamoDB:
+ [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): Controlla l'accesso in base al fatto che la coppia chiave-valore del tag su una tabella o un indice DynamoDB corrisponda o meno alla chiave e al valore del tag in una policy. Questa chiave condizionale è rilevante per tutto ciò APIs che opera su una tabella o un indice esistente.

  Le condizioni `dynamodb:ResourceTag` vengono valutate come se non fosse stato assegnato alcun tag a una risorsa.
+ [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): consente di confrontare la coppia chiave-valore del tag passata nella richiesta con la coppia di tag specificata nella politica. Questa chiave condizionale è pertinente a APIs quella che contiene tag come parte del payload della richiesta. Questi APIs includono [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)e. [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)
+ [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys): Confronta le chiavi dei tag in una richiesta con le chiavi specificate nella policy. Questa chiave condizionale è rilevante per APIs quella che contiene tag come parte del payload della richiesta. Questi APIs includono `CreateTable``TagResource`, e`UntagResource`.

## Considerazioni sull’utilizzo dell’ABAC con DynamoDB
<a name="abac-considerations"></a>

Quando si utilizza l’ABAC con tabelle o indici DynamoDB, valgono le seguenti considerazioni:
+ L’assegnazione di tag e l’ABAC non sono supportati per i flussi DynamoDB.
+ L’assegnazione di tag e l’ABAC non sono supportati per i backup DynamoDB. Per utilizzare l’ABAC con i backup, si consiglia di utilizzare [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html).
+ I tag non vengono conservati nelle tabelle ripristinate. È necessario aggiungere tag alle tabelle ripristinate prima di poter utilizzare le condizioni basate sui tag nelle policy.

# Abilitazione dell’ABAC in DynamoDB
<a name="abac-enable-ddb"></a>

Per la maggior parte dei casi Account AWS, ABAC è abilitato per impostazione predefinita. Utilizzando la console [DynamoDB](https://console.aws.amazon.com/dynamodb/) è possibile confermare se l’ABAC è abilitato per il proprio account. [Per fare ciò, assicurati di aprire la console DynamoDB con un ruolo con autorizzazione dynamodb:. GetAbacStatus](#required-permissions-abac) Quindi, apri la pagina **Impostazioni** della console DynamoDB.

Se non vedi la scheda **Controllo degli accessi basato sugli attributi** o se la scheda mostra lo stato **Attivo**, significa che l’ABAC è abilitato per l’account. Tuttavia, se vedi la scheda **Controllo degli accessi basato sugli attributi** con lo stato **Non attivo**, come mostrato nell’immagine seguente, l’ABAC non è abilitato per l’account.

## Controllo degli accessi basato su attributi – non abilitato
<a name="abac-disabled-image"></a>

![\[Pagina Impostazioni sulla console DynamoDB che mostra la scheda di Controllo degli accessi basato sugli attributi.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/ddb-console-settings-page.png)


ABAC non è abilitato Account AWS per cui le condizioni basate sui tag specificate nelle loro politiche basate sull'identità o altre politiche devono ancora essere verificate. Se l’ABAC non è abilitato per il proprio account, le condizioni basate sui tag nelle policy destinate ad agire sulle tabelle o sugli indici DynamoDB vengono valutate come se non fossero presenti tag per le proprie risorse o richieste API. Quando l’ABAC è abilitato per il proprio account, le condizioni basate sui tag nelle policy dell’account vengono valutate considerando i tag allegati alle proprie tabelle o richieste API.

Per abilitare l’ABAC per il proprio account, si consiglia innanzitutto di sottoporre ad audit le policy come descritto nella sezione [Audit delle policy](#policy-audit-for-abac). Quindi, si consiglia di includere le [autorizzazioni richieste per l’ABAC](#required-permissions-abac) nella policy IAM. Infine, si consiglia di eseguire le operazioni descritte in [Abilitazione dell’ABAC nella console](#abac-enable-console) per abilitare l’ABAC per l’account nella Regione corrente. Dopo aver abilitato l’ABAC, è possibile disattivarlo entro i successivi sette giorni di calendario dall’attivazione.

**Topics**
+ [Esecuzione di audit sulle policy prima dell’abilitazione dell’ABAC](#policy-audit-for-abac)
+ [Autorizzazioni IAM necessarie per abilitare l’ABAC](#required-permissions-abac)
+ [Abilitazione dell’ABAC nella console](#abac-enable-console)

## Esecuzione di audit sulle policy prima dell’abilitazione dell’ABAC
<a name="policy-audit-for-abac"></a>

Prima di abilitare l’ABAC per l’account, sottoponi ad audit le policy per verificare che le condizioni basate sui tag che potrebbero esistere nelle policy dell’account siano configurate come previsto. L’audit delle policy aiuterà a evitare imprevisti dovuti alle modifiche delle autorizzazioni con i flussi di lavoro DynamoDB dopo l’abilitazione dell’ABAC. Per visualizzare esempi di utilizzo di condizioni basate su attributi con i tag e il comportamento prima e dopo l’implementazione dell’ABAC, consulta [Esempi di utilizzo dell’ABAC con tabelle e indici DynamoDBCasi d'uso di esempio](abac-example-use-cases.md).

## Autorizzazioni IAM necessarie per abilitare l’ABAC
<a name="required-permissions-abac"></a>

È necessaria l’autorizzazione `dynamodb:UpdateAbacStatus` per abilitare l’ABAC per l’account nella Regione corrente. Per verificare se l’ABAC è abilitato per l’account, è necessario anche disporre dell’autorizzazione `dynamodb:GetAbacStatus`. Con questa autorizzazione è possibile visualizzare lo stato dell’ABAC di un account in qualsiasi Regione. Queste autorizzazioni si aggiungono a quelle necessarie per accedere alla console DynamoDB e visualizzare le tabelle.

La seguente policy IAM concede l’autorizzazione per abilitare l’ABAC e visualizzarne lo stato per un account nella Regione corrente.

```
{
"version": "2012-10-17", 		 	 	 &TCX5-2025-waiver;
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateAbacStatus",
                "dynamodb:GetAbacStatus"
             ],
            "Resource": "*"
        }
    ]
}
```

## Abilitazione dell’ABAC nella console
<a name="abac-enable-console"></a>

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. Dal riquadro di navigazione in alto, seleziona la Regione per la quale desideri abilitare l’ABAC.

1. Nel riquadro di navigazione a sinistra, scegli **Impostazioni**.

1. Nella pagina **Settings (Impostazioni)**, eseguire le operazioni descritte di seguito.

   1. Nella scheda **Controllo degli accessi basato sugli attributi**, seleziona **Abilita**.

   1. Nella casella **Conferma l’impostazione del controllo degli accesso basato su attributi**, seleziona **Abilita** per confermare la scelta.

      Questa operazione abilita l’ABAC per la Regione corrente e la scheda **Controllo degli accessi basato sugli attributi** mostra lo stato **Attivo**.

      Dopo aver abilitato l’ABAC, è possibile disattivarlo entro i successivi sette giorni di calendario dall’attivazione. Per disattivarlo, seleziona **Disabilita** nella scheda **Controllo degli accessi basato sugli attributi** nella pagina **Impostazioni**.
**Nota**  
L’aggiornamento dello stato dell’ABAC è un’operazione asincrona. Se i tag delle policy non vengono valutati immediatamente, potrebbe essere necessario attendere qualche istante perché l’applicazione delle modifiche presenti coerenza finale.

# Utilizzo dell’ABAC con tabelle e indici DynamoDB
<a name="abac-implementation-ddb-tables"></a>

La seguente procedura mostra come impostare le autorizzazioni attraverso l’ABAC. In questo scenario di esempio verranno aggiunti tag a una tabella DynamoDB e verrà creato un ruolo IAM con una policy che include condizioni basate su tag. Quindi, verranno testate le autorizzazioni consentite sulla tabella DynamoDB soddisfacendo le condizioni dei tag.

**Topics**
+ [Fase 1: aggiungere tag a una tabella DynamoDB](#abac-add-table-tags)
+ [Fase 2: creare un ruolo IAM con una policy che include condizioni basate su tag](#abac-create-iam-role)
+ [Fase 3: testare le autorizzazioni concesse](#abac-test-permissions)

## Fase 1: aggiungere tag a una tabella DynamoDB
<a name="abac-add-table-tags"></a>

Puoi aggiungere tag a tabelle DynamoDB nuove o esistenti utilizzando Console di gestione AWS AWS , API,AWS CLI() AWS Command Line Interface AWS , SDK o. AWS CloudFormation Ad esempio, il seguente comando della CLI [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) aggiunge un tag a una tabella denominata `MusicTable`.

```
aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable —tags Key=environment,Value=staging
```

## Fase 2: creare un ruolo IAM con una policy che include condizioni basate su tag
<a name="abac-create-iam-role"></a>

[Crea una policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) utilizzando la chiave di condizione [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) per confrontare la coppia chiave-valore del tag specificata nella policy IAM con la coppia chiave-valore allegata alla tabella. La seguente policy di esempio consente agli utenti di inserire o aggiornare elementi nelle tabelle se queste tabelle contengono la coppia chiave-valore del tag: `"environment": "staging"`. Se una tabella non ha la coppia chiave-valore del tag specificata, queste azioni vengono negate.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "staging"
                }
            }
        }
    ]
}
```

------

## Fase 3: testare le autorizzazioni concesse
<a name="abac-test-permissions"></a>

1. Collega la policy IAM a un utente o a un ruolo di prova nell’ Account AWS. Assicurati che il principale IAM che utilizzi non abbia già accesso alla tabella DynamoDB tramite una policy diversa.

1. Assicurati che la tabella DynamoDB contenga la chiave del tag `"environment"` con un valore di `"staging"`.

1. Esegui le azioni `dynamodb:PutItem` e `dynamodb:UpdateItem` sulla tabella con tag. Queste azioni dovrebbero andare a buon fine se è presente la coppia chiave-valore del tag `"environment": "staging"`.

   Se si eseguono queste azioni su una tabella che non ha la coppia chiave-valore del tag `"environment": "staging"`, la richiesta avrà esito negativo restituendo una `AccessDeniedException`.

È anche possibile esaminare gli altri [casi d’uso di esempio](abac-example-use-cases.md) descritti nella sezione seguente per implementare l’ABAC ed eseguire altri test.

# Esempi di utilizzo dell’ABAC con tabelle e indici DynamoDB
<a name="abac-example-use-cases"></a>

Gli esempi seguenti illustrano alcuni casi d’uso per implementare condizioni basate su attributi utilizzando i tag.

**Topics**
+ [Esempio 1: consenti un'azione utilizzando aws: ResourceTag](#abac-allow-example-resource-tag)
+ [Esempio 2: consenti un'azione utilizzando aws: RequestTag](#abac-allow-example-request-tag)
+ [Esempio 3: Negare un'azione utilizzando aws: TagKeys](#abac-deny-example-tag-key)

## Esempio 1: consenti un'azione utilizzando aws: ResourceTag
<a name="abac-allow-example-resource-tag"></a>

Utilizzando la chiave di condizione `aws:ResourceTag/tag-key` è possibile confrontare la coppia chiave-valore del tag specificata in una policy IAM con la coppia chiave-valore collegata in una tabella DynamoDB. Ad esempio, puoi consentire un'azione specifica, ad esempio se le condizioni del tag corrispondono in una politica IAM e in una tabella. [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) A tal fine, segui questa procedura:

------
#### [ Using the AWS CLI ]

1. Creare una tabella. L'esempio seguente utilizza il AWS CLI comando [create-table](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html) per creare una tabella denominata. `myMusicTable`

   ```
   aws dynamodb create-table \
     --table-name myMusicTable \
     --attribute-definitions AttributeName=id,AttributeType=S \
     --key-schema AttributeName=id,KeyType=HASH \
     --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
     --region us-east-1
   ```

1. Aggiungi un tag a questa tabella. Il seguente esempio di AWS CLI comando [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) aggiunge la coppia chiave-valore del tag a. `Title: ProductManager` `myMusicTable`

   ```
   aws dynamodb tag-resource --region us-east-1 --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable --tags Key=Title,Value=ProductManager
   ```

1. Create una [policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) e aggiungetela a un ruolo a cui è associata la policy [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gestita, come illustrato nell'esempio seguente.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Questa policy consente l’azione `PutItem` sulla tabella quando la chiave e il valore del tag associati alla tabella corrispondono ai tag specificati nella policy.

1. Assumi il ruolo con le policy descritte nella Fase 3.

1. Usa il AWS CLI comando [put-item](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html) per inserire un elemento in. `myMusicTable`

   ```
   aws dynamodb put-item \
       --table-name myMusicTable --region us-east-1 \
       --item '{
           "id": {"S": "2023"},
           "title": {"S": "Happy Day"},
           "info": {"M": {
               "rating": {"N": "9"},
               "Artists": {"L": [{"S": "Acme Band"}, {"S": "No One You Know"}]},
               "release_date": {"S": "2023-07-21"}
           }}
       }'
   ```

1. Scansiona la tabella per verificare se l’elemento è stato aggiunto alla tabella.

   ```
   aws dynamodb scan --table-name myMusicTable  --region us-east-1
   ```

------
#### [ Using the AWS SDK for Java 2.x ]

1. Creare una tabella. L'esempio seguente utilizza l'[CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API per creare una tabella denominata. `myMusicTable`

   ```
   DynamoDbClient dynamoDB = DynamoDbClient.builder().region(region).build();
   CreateTableRequest createTableRequest = CreateTableRequest.builder()
       .attributeDefinitions(
           Arrays.asList(
               AttributeDefinition.builder()
               .attributeName("id")
               .attributeType(ScalarAttributeType.S)
               .build()
           )
       )
       .keySchema(
           Arrays.asList(
               KeySchemaElement.builder()
               .attributeName("id")
               .keyType(KeyType.HASH)
               .build()
           )
       )
       .provisionedThroughput(ProvisionedThroughput.builder()
           .readCapacityUnits(5L)
           .writeCapacityUnits(5L)
           .build()
       )
       .tableName("myMusicTable")
       .build();
   
   CreateTableResponse createTableResponse = dynamoDB.createTable(createTableRequest);
   String tableArn = createTableResponse.tableDescription().tableArn();
   String tableName = createTableResponse.tableDescription().tableName();
   ```

1. Aggiungi un tag a questa tabella. L'[TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API nell'esempio seguente aggiunge la coppia chiave-valore del tag `Title: ProductManager` a. `myMusicTable`

   ```
   TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
       .resourceArn(tableArn)
       .tags(
           Arrays.asList(
               Tag.builder()
               .key("Title")
               .value("ProductManager")
               .build()
           )
       )
       .build();
   dynamoDB.tagResource(tagResourceRequest);
   ```

1. Create una [policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) e aggiungetela a un ruolo a cui è associata la policy [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gestita, come illustrato nell'esempio seguente.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Questa policy consente l’azione `PutItem` sulla tabella quando la chiave e il valore del tag associati alla tabella corrispondono ai tag specificati nella policy.

1. Assumi il ruolo con le policy descritte nella Fase 3.

1. Usa l'[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API per inserire un elemento in. `myMusicTable`

   ```
   HashMap<String, AttributeValue> info = new HashMap<>();
   info.put("rating", AttributeValue.builder().s("9").build());
   info.put("artists", AttributeValue.builder().ss(List.of("Acme Band","No One You Know").build());
   info.put("release_date", AttributeValue.builder().s("2023-07-21").build());
   
   HashMap<String, AttributeValue> itemValues = new HashMap<>();
   itemValues.put("id", AttributeValue.builder().s("2023").build());
   itemValues.put("title", AttributeValue.builder().s("Happy Day").build());
   itemValues.put("info", AttributeValue.builder().m(info).build());
   
   
   PutItemRequest putItemRequest = PutItemRequest.builder()
                   .tableName(tableName)
                   .item(itemValues)
                   .build();
   dynamoDB.putItem(putItemRequest);
   ```

1. Scansiona la tabella per verificare se l’elemento è stato aggiunto alla tabella.

   ```
   ScanRequest scanRequest = ScanRequest.builder()
                   .tableName(tableName)
                   .build();
                   
   ScanResponse scanResponse = dynamoDB.scan(scanRequest);
   ```

------
#### [ Using the AWS SDK per Python (Boto3) ]

1. Creare una tabella. L'esempio seguente utilizza l'[CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API per creare una tabella denominata`myMusicTable`.

   ```
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 5,
           'WriteCapacityUnits': 5
       },
   )
   
   table_arn = create_table_response['TableDescription']['TableArn']
   ```

1. Aggiungi un tag a questa tabella. L'[TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API nell'esempio seguente aggiunge la coppia chiave-valore del tag `Title: ProductManager` a. `myMusicTable`

   ```
   tag_resouce_response = ddb_client.tag_resource(
       ResourceArn=table_arn,
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ]
   )
   ```

1. Create una [policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) e aggiungetela a un ruolo a cui è associata la policy [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gestita, come illustrato nell'esempio seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Action": "dynamodb:PutItem",
           "Resource": "arn:aws:dynamodb:*:*:table/*",
           "Condition": {
               "StringEquals": {
               "aws:ResourceTag/Title": "ProductManager"
               }
           }
           }
       ]
       }
   ```

------

   Questa policy consente l’azione `PutItem` sulla tabella quando la chiave e il valore del tag associati alla tabella corrispondono ai tag specificati nella policy.

1. Assumi il ruolo con le policy descritte nella Fase 3.

1. Usa l'[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API per inserire un elemento in. `myMusicTable`

   ```
   put_item_response = client.put_item(
       TableName = 'myMusicTable'
       Item = {
           'id': '2023',
           'title': 'Happy Day',
           'info': {
               'rating': '9',
               'artists': ['Acme Band','No One You Know'],
               'release_date': '2023-07-21'
           }
       }
   )
   ```

1. Scansiona la tabella per verificare se l’elemento è stato aggiunto alla tabella.

   ```
   scan_response = client.scan(
       TableName='myMusicTable'
   )
   ```

------

**Senza ABAC**  
Se ABAC non è abilitato per te Account AWS, le condizioni dei tag nella policy IAM e nella tabella DynamoDB non corrispondono. Di conseguenza, l’azione `PutItem` restituirà una `AccessDeniedException` a causa dell’effetto della policy `AmazonDynamoDBReadOnlyAccess`.

```
An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::123456789012:assumed-role/DynamoDBReadOnlyAccess/Alice is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:PutItem action.
```

**Con ABAC**  
Se ABAC è abilitato per la tua Account AWS, l'`put-item`azione viene completata correttamente e aggiunge un nuovo elemento alla tua tabella. Questo perché la policy in linea sulla tabella consente l’azione `PutItem` se le condizioni del tag nella policy IAM e nella tabella corrispondono.

## Esempio 2: consenti un'azione utilizzando aws: RequestTag
<a name="abac-allow-example-request-tag"></a>

Utilizzando la chiave di condizione [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), puoi confrontare la coppia chiave-valore del tag passata nella tua richiesta con la coppia di tag specificata nella policy IAM. Ad esempio, è possibile consentire un’azione specifica, come `CreateTable`, usando `aws:RequestTag` se le condizioni del tag non corrispondono. A tal fine, segui questa procedura:

------
#### [ Using the AWS CLI ]

1. Crea una [policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) e aggiungila a un ruolo a cui è associata la policy [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) AWS gestita, come mostrato nell'esempio seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Crea una tabella che contenga la coppia chiave-valore del tag di `"Owner": "John"`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Owner,Value=John \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK per Python (Boto3) ]

1. Create una [policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) e aggiungetela a un ruolo a cui è associata la policy [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS gestita, come illustrato nell'esempio seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Crea una tabella che contenga la coppia chiave-valore del tag di `"Owner": "John"`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Owner',
               'Value': 'John'
           },
       ],
   )
   ```

------

**Senza ABAC**  
Se ABAC non è abilitato per te Account AWS, le condizioni dei tag nella politica in linea e nella tabella DynamoDB non corrispondono. Di conseguenza, la richiesta `CreateTable` non andrà a buon fine e la tabella non verrà creata.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/Admin/John is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:CreateTable action.
```

**Con ABAC**  
Se ABAC è abilitato per la tua Account AWS, la richiesta di creazione della tabella viene completata correttamente. Poiché la coppia chiave-valore del tag `"Owner": "John"` è presente nella richiesta `CreateTable`, la policy in linea consente all’utente `John` di eseguire l’azione `CreateTable`.

## Esempio 3: Negare un'azione utilizzando aws: TagKeys
<a name="abac-deny-example-tag-key"></a>

Utilizzando la chiave [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) condition, puoi confrontare le chiavi dei tag in una richiesta con le chiavi specificate nella policy IAM. Ad esempio, è possibile negare un’azione specifica, come `CreateTable`, utilizzando `aws:TagKeys` se una chiave di tag specifica *non* è presente nella richiesta. A tal fine, segui questa procedura:

------
#### [ Using the AWS CLI ]

1. Aggiungi una [policy gestita dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) a un ruolo a cui è associata la policy AWS gestita di [AmazonDynamoDBFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html), come illustrato nell'esempio seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Assumi il ruolo a cui è stata associata la policy e crea una tabella con la chiave del tag `Title`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Title,Value=ProductManager \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK per Python (Boto3) ]

1. Aggiungere una [politica gestita dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) a un ruolo a cui è associata la politica di AWS gestione degli [AmazonDynamoDBFullaccessi](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html), come illustrato nell'esempio seguente.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Assumi il ruolo a cui è stata associata la policy e crea una tabella con la chiave del tag `Title`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ],
   )
   ```

------

**Senza ABAC**  
Se ABAC non è abilitato per il tuo Account AWS, DynamoDB non invia le chiavi dei tag nel `create-table` comando a IAM. La condizione `Null` garantisce che la condizione restituisca `false` in assenza di chiavi di tag nella richiesta. Poiché la policy `Deny` non corrisponde, il comando `create-table` verrà completato correttamente.

**Con ABAC**  
Se ABAC è abilitato per il tuo Account AWS, le chiavi dei tag passate nel `create-table` comando vengono passate a IAM. La chiave del tag `Title` verrà valutata rispetto alla chiave del tag basata sulla condizione, `CostCenter`, presente nella policy `Deny`. La chiave del tag `Title` non corrisponde alla chiave del tag presente nella policy `Deny` a causa dell’operatore `StringNotEquals`. Pertanto, l’azione `CreateTable` non andrà a buon fine e la tabella non verrà creata. L’esecuzione del comando `create-table` restituisce una `AccessDeniedException`.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/DynamoFullAccessRole/ProductManager is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable with an explicit deny in an identity-based policy.
```

# Risoluzione dei problemi più comuni dell’ABAC per le tabelle e gli indici DynamoDB
<a name="abac-troubleshooting"></a>

Questo argomento fornisce consigli per la risoluzione dei problemi relativi a errori e problemi comuni che potrebbero verificarsi durante l’implementazione dell’ABAC nelle tabelle o negli indici DynamoDB.

## Le chiavi di condizione specifiche del servizio nelle policy generano un errore
<a name="abac-troubleshooting-service-specific-keys"></a>

Le chiavi di condizione specifiche del servizio non sono considerate chiavi di condizione valide. Se sono state utilizzate tali chiavi nelle policy, si verificherà un errore. Per risolvere questo problema, è necessario sostituire le chiavi di condizione specifiche del servizio con una [chiave di condizione appropriata per implementare l’ABAC](attribute-based-access-control.md#condition-keys-implement-abac) in DynamoDB.

Ad esempio, supponiamo di aver utilizzato la chiave `dynamodb:ResourceTag` condition in una [policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) che esegue la richiesta. [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) Si immagini che la richiesta abbia esito negativo con una `AccessDeniedException`. Nell’esempio seguente viene illustrata la policy in linea errata con la chiave di condizione `dynamodb:ResourceTag`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

Per risolvere questo problema, sostituisci la chiave di condizione `dynamodb:ResourceTag` con `aws:ResourceTag`, come illustrato nell’esempio seguente.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

## Impossibile disattivare l’ABAC
<a name="abac-troubleshooting-unable-opt-out"></a>

Se ABAC è stato abilitato per il tuo account tramite Supporto, non potrai disattivare ABAC tramite la console DynamoDB. Per disattivarlo, contatta il [Supporto](https://console.aws.amazon.com/support).

È possibile disattivare personalmente l’ABAC *solo* alle seguenti condizioni:
+ È stata utilizzata la modalità self-service di [adesione tramite la console DynamoDB](abac-enable-ddb.md#abac-enable-console).
+ La disattivazione avviene entro sette giorni di calendario dall’adesione.

# Protezione dei dati in DynamoDB
<a name="data-protection"></a>

Amazon DynamoDB offre un'infrastruttura di archiviazione estremamente durevole, concepita per l'archiviazione dei dati mission-critical e primari. I dati vengono archiviati in modo ridondante su più dispositivi, in più strutture di una regione Amazon DynamoDB.

DynamoDB protegge i dati degli utenti archiviati a riposo e anche i dati in transito tra i client locali e DynamoDB e tra DynamoDB e altre risorse all'interno della stessa regione. AWS AWS 

**Topics**
+ [Crittografia a riposo per DynamoDB](EncryptionAtRest.md)
+ [Protezione delle connessioni DynamoDB attraverso endpoint VPC e policy IAM](inter-network-traffic-privacy.md)

# Crittografia a riposo per DynamoDB
<a name="EncryptionAtRest"></a>

Tutti i dati utente memorizzati in Amazon DynamoDB sono completamente crittografati a riposo. La crittografia a riposo di DynamoDB offre sicurezza avanzata grazie alla crittografia dei dati mediante le chiavi di crittografia archiviate in [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Questa funzionalità consente di ridurre gli oneri operativi e la complessità associati alla protezione dei dati sensibili. La crittografia dei dati inattivi consente di creare applicazioni ad alto livello di sicurezza che rispettano rigorosi requisiti normativi e di conformità per la crittografia.

La crittografia dei dati a riposo di DynamoDB fornisce un livello aggiuntivo di protezione dei dati proteggendo sempre i dati nella tabella crittografata che include la chiave primaria, gli indici secondari locali e globali, flussi, tabelle globali, backup e cluster DynamoDB Accelerator (DAX), ogni volta che i dati vengono archiviati in supporti fisici. Le policy aziendali, le normative di settore e del governo e i requisiti di conformità spesso esigono l'uso della crittografia dei dati inattivi per aumentare la sicurezza dei dati delle applicazioni. Per ulteriori informazioni sulla crittografia per le applicazioni per database, consulta [AWS Database Encryption SDK](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/what-is-database-encryption-sdk.html).

Encryption at rest si integra con la gestione delle chiavi di crittografia utilizzate AWS KMS per crittografare le tabelle. Per ulteriori informazioni sui tipi e sugli stati delle chiavi, consulta i [AWS Key Management Service concepts](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) in the *Guida per gli sviluppatori di AWS Key Management Service *.

Quando si crea una nuova tabella, è possibile scegliere uno dei seguenti AWS KMS key tipi per crittografare la tabella. È possibile passare da un tipo di chiave all’altro in qualsiasi momento.
+ **Chiave di proprietà di AWS —** Tipo di crittografia predefinito. La chiave è di proprietà di DynamoDB (nessun costo aggiuntivo).
+ **Chiave gestita da AWS —** La chiave è memorizzata nel tuo account ed è gestita da AWS KMS (a AWS KMS pagamento).
+ **Chiave gestita dal cliente**: la chiave è archiviata nel tuo account ed è creata da te, di tua proprietà e gestita da te. Hai il pieno controllo della chiave KMS (a AWS KMS pagamento).

Per ulteriori informazioni sui tipi di chiave, consulta [Chiavi e AWS chiavi del cliente](/kms/latest/developerguide/concepts.html#key-mgmt).

**Nota**  
Quando si crea un nuovo cluster DAX con la crittografia a riposo abilitata, viene utilizzata una Chiave gestita da AWS per criptare i dati a riposo nel cluster.
Se la tabella dispone di chiavi di ordinamento, alcune di queste che contrassegnano i limiti dell'intervallo sono archiviate come testo non crittografato nei metadati della tabella.

Quando si accede a una tabella crittografata, DynamoDB decrittografa i dati della tabella in modo trasparente. Non è necessario modificare codice o applicazioni per utilizzare o gestire le tabelle crittografate. DynamoDB continua a offrire la stessa latenza di pochi millisecondi a cui si è abituati e tutte le query di DynamoDB funzionano senza problemi sui dati crittografati.

Puoi specificare una chiave di crittografia quando crei una nuova tabella o cambi le chiavi di crittografia su una tabella esistente utilizzando Console di gestione AWS, AWS Command Line Interface (AWS CLI) o l'API Amazon DynamoDB. Per scoprire come, consulta [Gestione di tabelle crittografate in DynamoDB](encryption.tutorial.md).

La crittografia a riposo utilizzando il Chiave di proprietà di AWS è offerta senza costi aggiuntivi. Tuttavia, vengono AWS KMS applicati dei costi per una chiave gestita dal cliente Chiave gestita da AWS e per una chiave gestita dal cliente. Per ulteriori informazioni sui prezzi, consulta [Prezzi di AWS KMS](https://aws.amazon.com/kms/pricing).

La crittografia a riposo di DynamoDB è disponibile in AWS tutte le regioni, incluse le regioni AWS Cina (Pechino) e AWS Cina (Ningxia) e AWS GovCloud le regioni (Stati Uniti). Per ulteriori informazioni, consultare [Crittografia dei dati a riposo di DynamoDB: come funziona](encryption.howitworks.md) e [Note per l'utilizzo della crittografia dei dati inattivi di DynamoDB](encryption.usagenotes.md).

# Crittografia dei dati a riposo di DynamoDB: come funziona
<a name="encryption.howitworks"></a>

La crittografia a riposo di Amazon DynamoDB crittografa i dati tramite lo standard di crittografia avanzata a 256 bit (AES-256) che aiuta a proteggere i dati dall'accesso non autorizzato all'archiviazione sottostante.

Encryption at rest si integra con AWS Key Management Service (AWS KMS) per la gestione delle chiavi di crittografia utilizzate per crittografare le tabelle.

**Nota**  
A maggio 2022, AWS KMS ha modificato il programma di rotazione Chiavi gestite da AWS da ogni tre anni (circa 1.095 giorni) a ogni anno (circa 365 giorni).  
 Chiavi gestite da AWS I nuovi vengono ruotati automaticamente un anno dopo la creazione e successivamente all'incirca ogni anno.  
 Chiavi gestite da AWS Le versioni esistenti vengono ruotate automaticamente un anno dopo la loro rotazione più recente e successivamente ogni anno.

## Chiavi di proprietà di AWS
<a name="ddb-owned"></a>

 Chiavi di proprietà di AWS non sono memorizzati nel tuo AWS account. Fanno parte di una raccolta di chiavi KMS che AWS possiede e gestisce per l'utilizzo in più AWS account. AWS i servizi possono essere utilizzati Chiavi di proprietà di AWS per proteggere i tuoi dati. Chiavi di proprietà di AWS utilizzati da DynamoDB vengono ruotati ogni anno (circa 365 giorni). 

Non è possibile visualizzarne, gestirli Chiavi di proprietà di AWS, utilizzarli o controllarne l'utilizzo. Tuttavia, non è necessario effettuare alcuna operazione o modificare programmi per proteggere le chiavi che eseguono la crittografia dei dati.

Non ti viene addebitato un canone mensile o un canone di utilizzo per l'utilizzo di Chiavi di proprietà di AWS e questi non vengono conteggiati nelle AWS KMS quote relative al tuo account.

## Chiavi gestite da AWS
<a name="managed-key-service-default-kms"></a>

Chiavi gestite da AWS sono chiavi KMS del tuo account che vengono create, gestite e utilizzate per tuo conto da un AWS servizio integrato con. AWS KMS Puoi visualizzare le Chiavi gestite da AWS nel tuo account, visualizzare le relative policy delle chiavi e verificare il loro utilizzo nei registri AWS CloudTrail . Tuttavia, non puoi gestire queste chiavi KMS o modificarne le autorizzazioni.

Encryption at rest si integra automaticamente con AWS KMS la gestione dei file Chiavi gestite da AWS for DynamoDB `aws/dynamodb` () utilizzati per crittografare le tabelle. Se Chiave gestita da AWS non esiste un quando crei la tabella DynamoDB crittografata AWS KMS , crea automaticamente una nuova chiave per te. Questa chiave viene utilizzata con le tabelle crittografate che verranno create in futuro. AWS KMS combina hardware e software sicuri e ad alta disponibilità per fornire un sistema di gestione delle chiavi scalabile per il cloud.

*Per ulteriori informazioni sulla gestione delle autorizzazioni di Chiave gestita da AWS, vedere [Authorizing use of the Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-authz)AWS Key Management Service nella Developer Guide.*

## Chiavi gestite dal cliente
<a name="managed-key-customer-managed"></a>

Le chiavi gestite dal cliente sono chiavi KMS del tuo AWS account che crei, possiedi e gestisci. Hai il controllo completo di queste chiavi KMS, tra cui la definizione e il mantenimento delle policy delle chiavi, delle policy IAM e delle concessioni, l'abilitazione e la disabilitazione di tali chiavi, la rotazione del materiale crittografico, l'aggiunta di tag, la creazione di alias che fanno riferimento a esse e la pianificazione per l'eliminazione. Per ulteriori informazioni relative alla gestione delle autorizzazioni di una chiave gestita dal cliente, consulta [Chiavi gestite dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

Quando specifichi una chiave gestita dal cliente come chiave di crittografia a livello di tabella, la tabella DynamoDB, gli indici secondari locale e globale e i flussi vengono crittografati con la stessa chiave gestita dal cliente. I backup on demand vengono crittografati con la chiave di crittografia a livello di tabella specificata al momento della creazione del backup. L'aggiornamento della chiave di crittografia a livello di tabella non modifica la chiave di crittografia associata con i backup on demand esistenti.

L'impostazione dello stato della chiave gestita dal cliente su disabilitata o la pianificazione per l'eliminazione impedisce a tutti gli utenti e al servizio DynamoDB di criptare o decriptare i dati e di eseguire operazioni di lettura e scrittura sulla tabella. DynamoDB deve poter accedere alla chiave di crittografia per assicurarsi di poter continuare ad accedere alla tabella e prevenire la perdita di dati.

Se disabiliti la chiave gestita dal cliente o ne pianifichi l'eliminazione, lo stato della tabella diventa **Inaccessible (Inaccessibile)**. Per essere certi che sia possibile continuare a lavorare con la tabella, è necessario fornire a DynamoDB l'accesso alla chiave di crittografia specificata entro sette giorni. Non appena il servizio rileva che la chiave di crittografia non è accessibile, DynamoDB invia una notifica e-mail come avviso.

**Nota**  
Se la chiave gestita dal cliente rimane inaccessibile al servizio DynamoDB per più di sette giorni, la tabella viene archiviata e non è più possibile accedervi. DynamoDB crea un backup on demand della tabella che viene addebitato. È possibile utilizzare il backup on demand per ripristinare i dati in una nuova tabella. Per avviare il ripristino, è necessario abilitare l'ultima chiave gestita dal cliente sulla tabella e DynamoDB deve potervi accedere.
Se non è possibile accedere alla chiave gestita dal cliente utilizzata per criptare una replica della tabella globale, DynamoDB rimuoverà questa replica dal gruppo di replica. La replica non verrà eliminata e sarà interrotta da e verso questa regione 20 ore dopo aver rilevato che la chiave gestita dal cliente non è accessibile.

Per ulteriori informazioni, copri come [attivare](/kms/latest/developerguide/enabling-keys.html) ed [eliminare](/kms/latest/developerguide/deleting-keys.html) le chiavi. 

## Note sull'utilizzo Chiavi gestite da AWS
<a name="managed-key-notes"></a>

Amazon DynamoDB non può leggere i dati delle tabelle a meno che non abbia accesso alla chiave KMS memorizzata nel tuo account. AWS KMS DynamoDB utilizza la crittografia envelope e la gerarchia delle chiavi per criptare i dati. La tua chiave di AWS KMS crittografia viene utilizzata per crittografare la chiave principale di questa gerarchia di chiavi. Per ulteriori informazioni, consulta [Crittografia envelope](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) nella *Guida per gli sviluppatori di AWS Key Management Service *.

 DynamoDB non AWS KMS richiede ogni operazione DynamoDB. La chiave viene aggiornata una volta ogni 5 minuti per chiamante con traffico attivo.

Assicurati di avere configurato l'SDK per riutilizzare le connessioni. In caso contrario, si verificheranno delle latenze dovute alla necessità di ristabilire nuove voci della AWS KMS cache per ogni operazione DynamoDB. Inoltre, potreste dover affrontare costi più elevati. AWS KMS CloudTrail Ad esempio, per fare ciò con l'SDK Node.js, puoi creare un nuovo agente HTTPS con `keepAlive` attivato. Per ulteriori informazioni, consulta [Configurazione di keepAlive in Node.js](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html) nella *Guida per lo sviluppatore di AWS SDK per JavaScript *.

# Note per l'utilizzo della crittografia dei dati inattivi di DynamoDB
<a name="encryption.usagenotes"></a>

Quando si utilizza la crittografia a riposo di Amazon DynamoDB, tenere in considerazione quanto riportato di seguito.

## Tutti i dati della tabella vengono crittografati
<a name="encryption.usagenotes.tabledata"></a>

La crittografia dei dati a riposo sul lato server è abilitata su tutti i dati della tabella DynamoDB e non può essere disabilitata. Non è possibile criptare solo un sottoinsieme di elementi in una tabella.

La crittografia dei dati inattivi crittografa i dati mentre è statica (dati inattivi) su media di storage persistente. Se la sicurezza dei dati è un problema per i dati in transito o i dati in utilizzo, è possibile adottare ulteriori misure:
+ Dati in transito: tutti i dati in DynamoDB sono crittografati in transito. Per impostazione predefinita, le comunicazioni da e verso DynamoDB utilizzano il protocollo HTTPS, che protegge il traffico di rete tramite la crittografia Secure Sockets Layer (SSL)/Transport Layer Security (TLS).
+ Dati in uso: proteggere i dati prima di inviarli a DynamoDB utilizzando la crittografia lato client. Per ulteriori informazioni, consulta [Client-side and server-side encryption](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/client-server-side.html) nella *Guida per sviluppatori del client di crittografia di Amazon DynamoDB*.

È possibile utilizzare i flussi con le tabelle crittografate. I flussi DynamoDB sono sempre crittografati con una chiave di crittografia a livello di tabella. Per ulteriori informazioni, consulta [Acquisizione dei dati di modifica per DynamoDB Streams](Streams.md).

I backup DynamoDB sono crittografati e anche la tabella che viene ripristinata da un backup ha la crittografia abilitata. È possibile utilizzare la chiave o Chiave di proprietà di AWS Chiave gestita da AWS la chiave gestita dal cliente per crittografare i dati di backup. Per ulteriori informazioni, consulta [Backup e ripristino per DynamoDB](Backup-and-Restore.md).

Gli indici secondari locali e gli indici secondari globali vengono crittografati utilizzando la stessa chiave della tabella di base.

## Tipi di crittografia
<a name="encryption.usagenotes.encryptiontypes"></a>

**Nota**  
Le chiavi gestite dal cliente non sono supportate nelle tabelle globali versione 2017. Se desideri utilizzare una chiave gestita dal cliente in una tabella globale di DynamoDB, è necessario aggiornare la tabella alla versione 2019 della tabella globale e quindi abilitarla.

In Console di gestione AWS, il tipo di crittografia si intende `KMS` quando si utilizza la chiave Chiave gestita da AWS o la chiave gestita dal cliente per crittografare i dati. Il tipo di crittografia è `DEFAULT` quando utilizzi la Chiave di proprietà di AWS. Nell'API Amazon DynamoDB, il tipo di crittografia `KMS` è quando usi la chiave o la chiave gestita Chiave gestita da AWS dal cliente. In assenza del tipo di crittografia, i dati vengono criptati con la chiave Chiave di proprietà di AWS. Puoi passare dalla chiave gestita dal Chiave di proprietà di AWS cliente a quella gestita dal cliente in qualsiasi momento. Chiave gestita da AWS Puoi utilizzare la console, la AWS Command Line Interface (AWS CLI) o l'API Amazon DynamoDB per cambiare le chiavi di crittografia.

Notare le seguenti limitazioni quando si utilizzano le chiavi gestite dal cliente:
+ Non puoi utilizzare una chiave gestita dal cliente con i cluster DynamoDB Accelerator (DAX). Per ulteriori informazioni, consulta [Crittografia DAX dei dati inattivi](DAXEncryptionAtRest.md).
+ Puoi utilizzare una chiave gestita dal cliente per criptare le tabelle che utilizzano le transazioni. Tuttavia, per garantire la durabilità per la propagazione delle transazioni, una copia della richiesta di transazione viene archiviata temporaneamente dal servizio e criptata utilizzando una Chiave di proprietà di AWS. I dati di commit nelle tabelle e negli indici secondari vengono sempre criptati a riposo utilizzando la chiave gestita dal cliente.
+ Puoi utilizzare una chiave gestita dal cliente per criptare le tabelle che utilizzano Contributor Insights. Tuttavia, i dati trasmessi a Amazon CloudWatch vengono crittografati con un. Chiave di proprietà di AWS
+ Quando passi a una nuova chiave gestita dal cliente, assicurati di mantenere attiva la chiave originale fino al completamento del processo. AWS avrà comunque bisogno della chiave originale per decrittografare i dati prima di crittografarli con la nuova chiave. Il processo sarà completo quando SSEDescription lo stato della tabella sarà ABILITATO e verrà visualizzata la KMSMaster KeyArn nuova chiave gestita dal cliente. A questo punto, la chiave originale può essere disabilitata o pianificata per l'eliminazione.
+ Una volta visualizzata la nuova chiave gestita dal cliente, la tabella e tutti i nuovi backup on demand vengono criptati con la nuova chiave.
+ Tutti i backup on demand esistenti rimangono criptati con la chiave gestita dal cliente utilizzata al momento della creazione di tali backup. La stessa chiave è necessaria per ripristinare i backup. È possibile identificare la chiave per il periodo in cui è stato creato ogni backup utilizzando l' DescribeBackup API per visualizzare i backup SSEDescription.
+ Se disabiliti la chiave gestita dal cliente o ne pianifichi l'eliminazione, tutti i dati in DynamoDB Streams avranno comunque una durata di 24 ore. Tutti i dati di attività non recuperati sono idonei per il taglio quando sono più vecchi di 24 ore.
+ Se disabiliti la chiave gestita dal cliente o ne pianifichi l'eliminazione, le eliminazioni della durata (TTL) continuano per 30 minuti. Queste eliminazioni TTL continuano a essere emesse su DynamoDB Streams e sono soggette all'intervallo standard. trimming/retention 

  Per ulteriori informazioni, copri come [attivare](/kms/latest/developerguide/enabling-keys.html) ed [eliminare](/kms/latest/developerguide/deleting-keys.html) le chiavi. 

## Utilizzo di chiavi KMS e chiavi dati
<a name="dynamodb-kms"></a>

La funzionalità di crittografia a riposo di DynamoDB utilizza AWS KMS key una e una gerarchia di chiavi dati per proteggere i dati della tabella. DynamoDB utilizza la stessa gerarchia di chiavi per proteggere i flussi DynamoDB, tabelle globali e backup quando sono scritti su supporti durevoli.

Consigliamo di pianificare la strategia di crittografia prima di implementare la tabella in DynamoDB. Se archivi dati sensibili o riservati in DynamoDB, prendi in considerazione l'inclusione della crittografia lato client nel piano. In questo modo puoi crittografare i dati il più vicino possibile alla loro origine e garantirne la protezione per tutto il loro ciclo di vita. Per ulteriori informazioni su ciascun tipo, consultare la documentazione relativa al [client di crittografia di DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html).

**AWS KMS key**  
La crittografia dei dati inattivi protegge le tabelle DynamoDB con una AWS KMS key. Per impostazione predefinita, DynamoDB utilizza una [Chiave di proprietà di AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk), una chiave di crittografia multi-tenant creata e gestita in un account del servizio DynamoDB. Ma è possibile crittografare le tabelle DynamoDB in una [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) per DynamoDB (`aws/dynamodb`) nell' Account AWS. È possibile selezionare una chiave KMS differente per ogni tabella. La chiave KMS selezionata per una tabella viene anche utilizzata per crittografare gli indici secondari locali e globali, i flussi e i backup.  
Quando si crea o si aggiorna la tabella, si seleziona la chiave KMS per una tabella. È possibile modificare la chiave KMS per una tabella in qualsiasi momento, nella console DynamoDB o utilizzando l'operazione. [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) Il processo di scambio di chiavi è sicuro, non richiede tempi di inattività e non comporta alcun calo delle prestazioni del servizio.  
DynamoDB supporta solo[Chiavi KMS simmetriche](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). Non è possibile utilizzare una [chiave KMS asimmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks) per crittografare le tabelle DynamoDB. 
Utilizza una chiave gestita dal cliente per ottenere le seguenti caratteristiche:  
+ È possibile creare e gestire la chiave KMS, inclusa l'impostazione della [Policy delle chiavi](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), la [Policy IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) e le [concessioni](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) per controllare l'accesso alla chiave KMS. È possibile [abilitare e disabilitare](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) la chiave KMS, abilitare e disabilitare [la rotazione automatica della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) ed [eliminare la chiave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) quando non è più in uso.
+ Puoi utilizzare una chiave gestita dal cliente con [materiale di chiave importato](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) o una chiave gestita dal cliente in un [archivio delle chiavi personalizzate](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html) di cui sei proprietario e gestore. 
+ [È possibile controllare la crittografia e la decrittografia della tabella DynamoDB esaminando le chiamate dell'API DynamoDB ai log. AWS KMSAWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)
Utilizza Chiave gestita da AWS se hai bisogno di una delle seguenti funzionalità:  
+ Puoi [visualizzare la chiave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html) e [visualizzare la policy chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-viewing.html). (non è possibile modificare la policy della chiave).
+ [È possibile controllare la crittografia e la decrittografia della tabella DynamoDB esaminando le chiamate dell'API DynamoDB ai log. AWS KMSAWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-cmk-trail)
[Tuttavia, Chiave di proprietà di AWS è gratuito e il suo utilizzo non influisce sulle quote di risorse o richieste.AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) Le chiavi gestite dal cliente Chiavi gestite da AWS [comportano un costo](https://aws.amazon.com/kms/pricing/) per ogni chiamata API e le AWS KMS quote si applicano a queste chiavi KMS.

**Chiavi delle tabelle**  
DynamoDB usa la chiave KMS per la tabella per [generare](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) e crittografare una [chiave di dati](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) univoca per la tabella, nota come la *chiave della tabella*. La chiave della tabella esiste per tutta la durata della tabella crittografata.   
La chiave di tabella viene utilizzata come chiave di crittografia. DynamoDB utilizza questa chiave di tabella per proteggere le chiavi di crittografia dei dati utilizzate per crittografare i dati delle tabelle. DynamoDB genera una chiave di crittografia dei dati univoca per ogni struttura sottostante in una tabella, ma più di un elemento della tabella potrebbe essere protetto dalla stessa chiave di crittografia dei dati.  

![\[Crittografia di una tabella DynamoDB con la crittografia dei dati inattivi\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/service-ddb-encrypt.png)

Quando si accede per la prima volta a una tabella crittografata, DynamoDB invia una richiesta AWS KMS per utilizzare la chiave KMS per decrittografare la chiave della tabella. Quindi, utilizza la chiave della tabella in testo normale per decrittografare le chiavi di crittografia dei dati e le chiavi di crittografia dei dati in testo normale per decrittografare i dati della tabella.  
DynamoDB archivia e utilizza la chiave della tabella e le chiavi di crittografia dei dati all'esterno di. AWS KMS Protegge tutte le chiavi con la crittografia [Advanced Encryption Standard](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) (AES) e le chiavi di crittografia a 256 bit. Quindi, archivia le chiavi crittografate con i dati crittografati, in modo che siano disponibili per decrittografare i dati della tabella on demand.  
Quando viene modificata la chiave KMS per la tabella, DynamoDB genera una nuova chiave di tabella. Quindi, utilizza la nuova chiave per crittografare nuovamente le chiavi di crittografia dei dati.

**Caching della chiave della tabella**  
Per evitare di chiamare AWS KMS per ogni operazione DynamoDB, DynamoDB memorizza nella cache le chiavi della tabella in testo semplice per ogni chiamante in memoria. Se DynamoDB riceve una richiesta per la chiave della tabella memorizzata nella cache dopo cinque minuti di inattività, invia una nuova richiesta AWS KMS per decrittografare la chiave della tabella. Questa chiamata acquisirà tutte le modifiche apportate alle politiche di accesso della chiave KMS in AWS KMS or AWS Identity and Access Management (IAM) dall'ultima richiesta di decrittografia della chiave della tabella.

## Autorizzazione all'uso della propria chiave KMS
<a name="dynamodb-kms-authz"></a>

Se utilizzi una [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o la [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) nel tuo account per proteggere la tabella DynamoDB, è necessario che le policy su tale chiave KMS forniscano a DynamoDB l'autorizzazione per usarla per tuo conto. Il contesto di autorizzazione di Chiave gestita da AWS for DynamoDB include la sua politica chiave e le autorizzazioni a delegare le autorizzazioni per utilizzarlo. 

Hai il pieno controllo sulle policy e sulle concessioni di una chiave gestita dal cliente Poiché la Chiave gestita da AWS è presente nell'account, puoi visualizzare le relative policy e concessioni. Tuttavia, poiché è gestito da, non è possibile modificare AWS le politiche.

DynamoDB non necessita di autorizzazioni aggiuntive per utilizzare l'[Chiave di proprietà di AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)impostazione predefinita per proteggere le tabelle DynamoDB presenti nel tuo. Account AWS

**Topics**
+ [Politica chiave per un Chiave gestita da AWS](#dynamodb-policies)
+ [Policy delle chiavi per una chiave gestita dal cliente](#dynamodb-customer-cmk-policy)
+ [Utilizzo di concessioni per autorizzare DynamoDB](#dynamodb-grants)

### Politica chiave per un Chiave gestita da AWS
<a name="dynamodb-policies"></a>

Quando DynamoDB utilizza la [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) per DynamoDB (`aws/dynamodb`) in operazioni di crittografia, lo fa per conto dell'utente che accede alla [risorsa DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html). La politica chiave di Chiave gestita da AWS consente a tutti gli utenti dell'account di utilizzare Chiave gestita da AWS le operazioni specificate. Tuttavia, l'autorizzazione è concessa solo quando DynamoDB effettua la richiesta per conto dell'utente. La [ViaService condizione](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) nella policy chiave non consente a nessun utente di utilizzare la, a Chiave gestita da AWS meno che la richiesta non provenga dal servizio DynamoDB.

Questa politica chiave, come le politiche comuni a tutti Chiavi gestite da AWS, è stabilita da. AWS Non è possibile modificarla, ma è possibile visualizzarla in qualsiasi momento. Per informazioni dettagliate, consulta [Visualizzazione di una policy di chiave](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-viewing.html).

Le istruzioni di policy nella policy delle chiavi hanno l'effetto seguente:
+ Consenti agli utenti dell'account di utilizzare Chiave gestita da AWS for DynamoDB nelle operazioni crittografiche quando la richiesta proviene da DynamoDB per loro conto. La policy, inoltre, consente agli utenti di [creare concessioni](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) per la chiave KMS.
+ Consente alle identità IAM autorizzate nell'account di visualizzare le proprietà del Chiave gestita da AWS per DynamoDB e di [revocare la concessione](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) che consente a DynamoDB di utilizzare la chiave KMS. DynamoDB utilizza [concessioni](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-grants) per le operazioni di manutenzione in corso.
+ Consente a DynamoDB di eseguire operazioni di sola lettura per trovare il file per DynamoDB nel tuo account Chiave gestita da AWS .

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "auto-dynamodb-1",
  "Statement" : [ {
    "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "*"
    },
    "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ],
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "kms:CallerAccount" : "111122223333",
        "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com"
      }
    }
  }, {
    "Sid" : "Allow direct access to key metadata to the account",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ],
    "Resource" : "*"
  }, {
    "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly",
    "Effect" : "Allow",
    "Principal" : {
      "Service" : "dynamodb.amazonaws.com"
    },
    "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ],
    "Resource" : "*"
  } ]
}
```

------

### Policy delle chiavi per una chiave gestita dal cliente
<a name="dynamodb-customer-cmk-policy"></a>

Quando selezioni una [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) per proteggere una tabella DynamoDB, DynamoDB ottiene l'autorizzazione per utilizzare la chiave KMS per conto del principale che effettua la selezione. Tale principale, un utente o un ruolo, deve disporre delle autorizzazioni per la chiave KMS richiesta da DynamoDB. È possibile fornire queste autorizzazioni in una [policy chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), in una [policy IAM](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) o mediante una [concessione](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html).

Le autorizzazioni minime richieste da DynamoDB per una chiave gestita dal cliente sono:
+ [kms:Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html): \$1 (per e) ReEncrypt kms: ReEncryptFrom kms: ReEncryptTo
+ [kms: GenerateDataKey \$1 (per [kms: GenerateDataKey e kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)) GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
+ [km: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [km: CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

Ad esempio, la policy della chiave di esempio riportata di seguito fornisce solo le autorizzazioni necessarie. La policy ha i seguenti effetti:
+ Consente a DynamoDB di utilizzare la chiave KMS nelle operazioni di crittografia e di creare concessioni, ma solo quando agisce per conto dei principali dell'account dotati dell'autorizzazione per l'utilizzo di DynamoDB. Se le entità specificate nell'istruzione della policy non dispongono dell'autorizzazione per l'utilizzo di DynamoDB, la chiamata non riesce, anche quando proviene dal servizio DynamoDB. 
+ La chiave [kms: ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) condition consente le autorizzazioni solo quando la richiesta proviene da DynamoDB per conto dei principali elencati nell'informativa. Tali entità principali non possono chiamare direttamente queste operazioni. Nota: il valore `kms:ViaService`,`dynamodb.*.amazonaws.com`, ha un asterisco (\$1) nella posizione Regione. [DynamoDB richiede l'autorizzazione per essere indipendente da qualsiasi Regione AWS particolare in modo da poter effettuare chiamate interregionali per supportare le tabelle globali DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html)
+ Fornisce agli amministratori delle chiavi KMS (utenti che possono assumere il ruolo `db-team`) l'accesso in sola lettura alla chiave KMS e l'autorizzazione per revocare le concessioni, incluse le [concessioni richieste da DynamoDB](#dynamodb-grants) per proteggere la tabella.

Prima di utilizzare una policy chiave di esempio, sostituisci i principali di esempio con i principali effettivi del tuo. Account AWS

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

****  

```
{
  "Id": "key-policy-dynamodb",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"},
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",      
      "Condition": { 
         "StringLike": {
           "kms:ViaService" : "dynamodb.*.amazonaws.com"
         }
      }
    },
    {
      "Sid":  "Allow administrators to view the KMS key and revoke grants",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/db-team"
       },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Utilizzo di concessioni per autorizzare DynamoDB
<a name="dynamodb-grants"></a>

Oltre alle policy delle chiavi, DynamoDB usa le concessioni per impostare le autorizzazioni per una chiave gestita dal cliente o per la Chiave gestita da AWS per DynamoDB (`aws/dynamodb`). Per visualizzare le sovvenzioni relative a una chiave KMS nel tuo account, usa l'operazione. [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) DynamoDB non ha bisogno di concessioni, o di autorizzazioni aggiuntive, per utilizzare la [Chiave di proprietà di AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) per proteggere la tabella.

DynamoDB usa le autorizzazioni per la concessione quando esegue la manutenzione dei sistemi in background e le attività di protezione dei dati continuative nel tempo. Utilizza inoltre concessioni per generare le [chiavi delle tabelle](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html#dynamodb-encrypt).

Ogni concessione è specifica di una tabella. Se l'account include più tabelle crittografate con la stessa chiave KMS, è prevista una concessione di ciascun tipo per ogni tabella. La concessione è vincolata dal [contesto di crittografia DynamoDB](#dynamodb-encryption-context), che include il nome della tabella e l' Account AWS ID, e include l'autorizzazione a [ritirare la concessione](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) se non è più necessaria. 

Per creare le concessioni, DynamoDB deve disporre dell'autorizzazione per chiamare `CreateGrant` per conto dell'utente che ha creato la tabella crittografata. Infatti Chiavi gestite da AWS, DynamoDB `kms:CreateGrant` ottiene [l'autorizzazione dalla policy chiave](#dynamodb-policies), che consente agli utenti dell'account di [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)richiamare la chiave KMS solo quando DynamoDB effettua la richiesta per conto di un utente autorizzato. 

La policy delle chiavi può anche consentire all'account di [revocare la concessione](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) sulla chiave KMS. Tuttavia, se revochi la concessione sulla tabella crittografata attiva, DynamoDB non sarà in grado di proteggere e mantenere la tabella.

## Contesto di crittografia DynamoDB
<a name="dynamodb-encryption-context"></a>

Un [contesto di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) è un set di coppie chiave-valore che contiene dati arbitrari non segreti. Quando includi un contesto di crittografia in una richiesta di crittografia dei dati, associa AWS KMS crittograficamente il contesto di crittografia ai dati crittografati. lo stesso contesto di crittografia sia necessario per decrittografare i dati. 

DynamoDB utilizza lo stesso contesto di crittografia in AWS KMS tutte le operazioni crittografiche. Se utilizzi una [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o una [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) per proteggere la tabella DynamoDB, puoi utilizzare il contesto di crittografia per identificare l'utilizzo della chiave KMS nei record e nei log di audit. [Viene inoltre visualizzato in testo non crittografato nei log, ad esempio [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)Amazon Logs. CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 

Il contesto di crittografia può anche essere usato come una condizione per le autorizzazioni in policy e concessioni. DynamoDB utilizza il contesto di crittografia per limitare le concessioni che consentono [l'](#dynamodb-grants)accesso alla chiave gestita dal cliente Chiave gestita da AWS o nell'account e nella regione dell'utente.

Nelle sue richieste a AWS KMS, DynamoDB utilizza un contesto di crittografia con due coppie chiave-valore.

```
"encryptionContextSubset": {
    "aws:dynamodb:tableName": "Books"
    "aws:dynamodb:subscriberId": "111122223333"
}
```
+ **Tabella** — La prima coppia chiave-valore identificherà la tabella che DynamoDB sta crittografando. La chiave è `aws:dynamodb:tableName`. Il valore è il nome della tabella.

  ```
  "aws:dynamodb:tableName": "<table-name>"
  ```

  Esempio:

  ```
  "aws:dynamodb:tableName": "Books"
  ```
+ **Account** — La seconda coppia chiave-valore identificherà l' Account AWS. La chiave è `aws:dynamodb:subscriberId`. Il valore è l'ID dell'account.

  ```
  "aws:dynamodb:subscriberId": "<account-id>"
  ```

  Esempio:

  ```
  "aws:dynamodb:subscriberId": "111122223333"
  ```

## Monitoraggio dell'interazione di DynamoDB con AWS KMS
<a name="dynamodb-cmk-trail"></a>

Se utilizzi una [chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o una [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)per proteggere le tue tabelle DynamoDB, puoi AWS CloudTrail utilizzare i log per tenere traccia delle richieste a cui DynamoDB invia per tuo conto. AWS KMS 

Le richieste `GenerateDataKey`, `Decrypt` e `CreateGrant` vengono illustrate in questa sezione. Inoltre, DynamoDB utilizza [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)un'operazione per determinare se la chiave KMS selezionata esiste nell'account e nella regione. Utilizza anche un'[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operazione per rimuovere una concessione quando si elimina una tabella. 

**GenerateDataKey**  
Quando si abilita la crittografia dei dati inattivi su una tabella, DynamoDB crea una chiave della tabella univoca. Invia una *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)*richiesta a AWS KMS che specifica la chiave KMS per la tabella.   
L’evento che registra l’operazione `GenerateDataKey` è simile a quello del seguente evento di esempio. L'utente è l'account di servizio DynamoDB. I parametri includono l'Amazon Resource Name (ARN) della chiave KMS, un identificatore della chiave che richiede una chiave a 256 bit e il [contesto di crittografia](#dynamodb-encryption-context) che identifica la tabella e il Account AWS.  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSService", 
        "invokedBy": "dynamodb.amazonaws.com" 
    },
    "eventTime": "2018-02-14T00:15:17Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:dynamodb:tableName": "Services",
            "aws:dynamodb:subscriberId": "111122223333"
        }, 
        "keySpec": "AES_256", 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    "responseElements": null,
    "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190",
    "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333",
            "type": "AWS::KMS::Key" 
        } 
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333",
    "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad"
}
```

**Decrypt**  
Quando si accede a una tabella DynamoDB crittografata, Dynamo DB deve decrittare la chiave della tabella per poter decrittare le chiavi sottostanti nella gerarchia. Quindi decrittografa i dati nella tabella. Per decrittare la chiave della tabella. DynamoDB invia [una](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) richiesta Decrypt AWS KMS a che specifica la chiave KMS per la tabella.  
L’evento che registra l’operazione `Decrypt` è simile a quello del seguente evento di esempio. L'utente è il vostro Account AWS principale che accede alla tabella. I parametri includono la chiave crittografata della tabella (come blob di testo cifrato) e il [contesto di crittografia](#dynamodb-encryption-context) che identifica la tabella e il. Account AWS AWS KMS ricava l'ID della chiave KMS dal testo cifrato.   

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:user01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T16:42:15Z"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDT3HGFQZX4RY6RU",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin" 
            }
        },
        "invokedBy": "dynamodb.amazonaws.com"
    },
    "eventTime": "2018-02-14T16:42:39Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "dynamodb.amazonaws.com",
    "userAgent": "dynamodb.amazonaws.com",
    "requestParameters": 
    {
        "encryptionContext":
        {
            "aws:dynamodb:tableName": "Books",
            "aws:dynamodb:subscriberId": "111122223333" 
        }
    }, 
    "responseElements": null, 
    "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5",
    "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", 
    "readOnly": true, 
    "resources": [ 
        {
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        }
    ],
    "eventType": "AwsApiCall", 
    "recipientAccountId": "111122223333"
}
```

**CreateGrant**  
Quando si utilizza una[ chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) o una [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) per proteggere la tabella DynamoDB, DynamoDB usa le [concessioni](#dynamodb-grants) per consentire al servizio di eseguire la protezione continua dei dati e le attività di manutenzione e durabilità. Queste concessioni non sono necessarie per le [Chiave di proprietà di AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk).  
Le concessioni che DynamoDB crea sono specifiche per una tabella. Il principale nella [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)richiesta è l'utente che ha creato la tabella.   
L’evento che registra l’operazione `CreateGrant` è simile a quello del seguente evento di esempio. I parametri includono l'Amazon Resource Name (ARN) della chiave KMS per la tabella, il principale dell'assegnatario e il principale pianificato per il ritiro (il servizio DynamoDB), nonché le operazioni coperte dalla concessione. Include anche un vincolo che richiede che tutte le operazioni di crittografia utilizzino il [contesto di crittografia](#dynamodb-encryption-context) specificato.  

```
{ 
    "eventVersion": "1.05", 
    "userIdentity": 
    { 
        "type": "AssumedRole", 
        "principalId": "AROAIGDTESTANDEXAMPLE:user01", 
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", 
        "accountId": "111122223333", 
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE", 
        "sessionContext": { 
            "attributes": { 
                "mfaAuthenticated": "false", 
                "creationDate": "2018-02-14T00:12:02Z" 
            }, 
            "sessionIssuer": { 
                "type": "Role", 
                "principalId": "AROAIGDTESTANDEXAMPLE", 
                "arn": "arn:aws:iam::111122223333:role/Admin", 
                "accountId": "111122223333", 
                "userName": "Admin" 
            }
        }, 
        "invokedBy": "dynamodb.amazonaws.com" 
    }, 
    "eventTime": "2018-02-14T00:15:15Z", 
    "eventSource": "kms.amazonaws.com", 
    "eventName": "CreateGrant", 
    "awsRegion": "us-west-2", 
    "sourceIPAddress": "dynamodb.amazonaws.com", 
    "userAgent": "dynamodb.amazonaws.com", 
    "requestParameters": { 
        "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", 
        "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "constraints": { 
            "encryptionContextSubset": {
                "aws:dynamodb:tableName": "Books",
                "aws:dynamodb:subscriberId": "111122223333" 
            } 
        }, 
        "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", 
        "operations": [ 
            "DescribeKey", 
            "GenerateDataKey", 
            "Decrypt", 
            "Encrypt", 
            "ReEncryptFrom", 
            "ReEncryptTo", 
            "RetireGrant" 
        ] 
    }, 
    "responseElements": { 
        "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" 
    }, 
    "requestID": "2192b82a-111c-11e8-a528-f398979205d8", 
    "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", 
    "readOnly": false, 
    "resources": [ 
        { 
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "accountId": "111122223333", 
            "type": "AWS::KMS::Key" 
        } 
    ], 
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# Gestione di tabelle crittografate in DynamoDB
<a name="encryption.tutorial"></a>

Puoi usare Console di gestione AWS o the AWS Command Line Interface (AWS CLI) per specificare la chiave di crittografia su nuove tabelle e aggiornare le chiavi di crittografia sulle tabelle esistenti in Amazon DynamoDB.

**Topics**
+ [Definizione della chiave di crittografia per una nuova tabella](#encryption.tutorial-creating)
+ [Aggiornamento di una chiave di crittografia](#encryption.tutorial-update)

## Definizione della chiave di crittografia per una nuova tabella
<a name="encryption.tutorial-creating"></a>

Completare la procedura riportata di seguito per specificare la chiave di crittografia su una nuova tabella utilizzando la console Amazon DynamoDB o la AWS CLI.

### Creazione di una tabella crittografata (console)
<a name="encryption.tutorial-console"></a>

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 riquadro di navigazione sul lato sinistro della console scegli **Tables (Tabelle)**.

1. Scegliere **Create Table (Crea tabella)**. Nel campo **Table name (Nome tabella)** immetti **Music**. Per la chiave primaria, immetti **Artist** e per la chiave di ordinamento, immetti **SongTitle**, entrambe come stringhe.

1. In **Impostazioni**, verifica che **Personalizza impostazioni** sia selezionato.
**Nota**  
Se è selezionata l'opzione **Usa impostazioni predefinite**, le tabelle vengono crittografate quando sono inattive senza Chiave di proprietà di AWS costi aggiuntivi.

1. In **Encryption at rest**, scegli un tipo di crittografia o una chiave gestita dal cliente. Chiave di proprietà di AWS Chiave gestita da AWS
   +  **Di proprietà di Amazon DynamoDB.** AWS chiave proprietaria, specificamente posseduta e gestita da DynamoDB. Non ti viene addebitato alcun costo aggiuntivo per l'utilizzo di questa chiave.
   + **AWS chiave gestita**. Alias della chiave: `aws/dynamodb`. La chiave è memorizzata nel tuo account ed è gestita da AWS Key Management Service (AWS KMS). AWS KMS si applicano costi.
   +  **Archiviato nell'account e di proprietà e gestito dal cliente.** Chiave gestita dal cliente. La chiave è memorizzata nel tuo account ed è gestita da AWS Key Management Service (AWS KMS). AWS KMS si applicano costi.
**Nota**  
Se scegli di possedere e gestire la tua chiave, assicurati che la policy delle chiavi KMS sia impostata in modo appropriato. Per ulteriori informazioni ed esempi, consulta [Policy delle chiavi per una chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

1. Scegli **Crea** per creare la tabella crittografata. Per confermare il tipo di crittografia, seleziona i dettagli della tabella nella scheda **Panoramica** e rivedi la sezione **Ulteriori dettagli**.

### Creazione di una tabella crittografata (AWS CLI)
<a name="encryption.tutorial-cli"></a>

Utilizza AWS CLI per creare una tabella con la chiave predefinita Chiave di proprietà di AWS Chiave gestita da AWS, la o una chiave gestita dal cliente per Amazon DynamoDB.

**Per creare una tabella crittografata con l'impostazione predefinita Chiave di proprietà di AWS**
+ Crea la tabella `Music` crittografata come segue.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
  ```
**Nota**  
Questa tabella è ora crittografata utilizzando l'impostazione predefinita Chiave di proprietà di AWS nell'account del servizio DynamoDB.

**Per creare una tabella crittografata con Chiave gestita da AWS for DynamoDB**
+ Crea la tabella `Music` crittografata come segue.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS
  ```

   Lo stato `SSEDescription` della descrizione della tabella è impostato su `ENABLED` e `SSEType` è impostato su `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Per creare una tabella criptata con una chiave gestita dal cliente per DynamoDB**
+ Crea la tabella `Music` crittografata come segue.

  ```
  aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**Nota**  
Per`KMSMasterKeyId`, è possibile utilizzare un ID chiave, un ARN di chiave o un alias di chiave. Se si utilizza un alias chiave (ad esempio,`alias/my-key`), DynamoDB risolve l'alias e associa la chiave sottostante alla tabella. AWS KMS Nella descrizione della tabella, `KMSMasterKeyArn` mostrerà sempre l'ARN della chiave risolta, non l'alias. *Per ulteriori informazioni sugli identificatori di chiave, consulta [Key identifiers (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id) nella Guida per gli sviluppatori.AWS Key Management Service *

   Lo stato `SSEDescription` della descrizione della tabella è impostato su `ENABLED` e `SSEType` è impostato su `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

## Aggiornamento di una chiave di crittografia
<a name="encryption.tutorial-update"></a>

Puoi anche utilizzare la console DynamoDB o aggiornare AWS CLI le chiavi di crittografia di una tabella esistente tra una chiave e Chiave di proprietà di AWS una Chiave gestita da AWS chiave gestita dal cliente in qualsiasi momento.

### Aggiornamento di una chiave di crittografia (console)
<a name="encryption.tutorial-update-console"></a>

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 riquadro di navigazione sul lato sinistro della console scegli **Tables (Tabelle)**.

1. Scegli la policy da aggiornare.

1. Seleziona il menu a discesa **Operazioni**, quindi seleziona l'opzione **Aggiornamento delle impostazioni**.

1. Vai alla scheda **Impostazioni aggiuntive**.

1. In **Crittografia**, scegli **Gestisci crittografia**.

1. Scegli un tipo di crittografia:
   +  **Di proprietà di Amazon DynamoDB.** La AWS KMS chiave è di proprietà e gestita da DynamoDB. Non ti viene addebitato alcun costo aggiuntivo per l'utilizzo di questa chiave.
   + AWS alias **chiave gestita**:. `aws/dynamodb` La chiave è memorizzata nel tuo account ed è gestita da AWS Key Management Service. (AWS KMS). AWS KMS si applicano costi.
   +  **Archiviato nell'account e di proprietà e gestito dal cliente.** La chiave è memorizzata nel tuo account ed è gestita da AWS Key Management Service. (AWS KMS). AWS KMS si applicano costi.
**Nota**  
Se scegli di possedere e gestire la tua chiave, assicurati che la policy delle chiavi KMS sia impostata in modo appropriato. Per ulteriori informazioni, consulta [Policy delle chiavi per una chiave gestita dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).

   Quindi, scegli **Save (Salva)** per aggiornare la tabella crittografata. Per confermare il tipo di crittografia, controlla i dettagli della tabella nella scheda **Overview (Panoramica)**.

### Aggiornamento di una chiave di crittografia (AWS CLI)
<a name="encryption.tutorial-update-cli"></a>

Gli esempi seguenti mostrano come aggiornare una tabella crittografata utilizzando AWS CLI.

**Per aggiornare una tabella crittografata con quella predefinita Chiave di proprietà di AWS**
+ Aggiorna la tabella `Music` crittografata, come nell'esempio seguente.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=false
  ```
**Nota**  
Questa tabella è ora crittografata utilizzando l'impostazione predefinita Chiave di proprietà di AWS nell'account del servizio DynamoDB.

**Per aggiornare una tabella crittografata con Chiave gestita da AWS for DynamoDB**
+ Aggiorna la tabella `Music` crittografata, come nell'esempio seguente.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true
  ```

   Lo stato `SSEDescription` della descrizione della tabella è impostato su `ENABLED` e `SSEType` è impostato su `KMS`.

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

**Per aggiornare una tabella criptata con una chiave gestita dal cliente per DynamoDB**
+ Aggiorna la tabella `Music` crittografata, come nell'esempio seguente.

  ```
  aws dynamodb update-table \
    --table-name Music \
    --sse-specification Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
  ```
**Nota**  
Per`KMSMasterKeyId`, è possibile utilizzare un ID chiave, un ARN di chiave o un alias di chiave. Se si utilizza un alias chiave (ad esempio,`alias/my-key`), DynamoDB risolve l'alias e associa la chiave sottostante alla tabella. AWS KMS Nella descrizione della tabella, `KMSMasterKeyArn` mostrerà sempre l'ARN della chiave risolta, non l'alias.

   Lo stato `SSEDescription` della descrizione della tabella è impostato su `ENABLED` e `SSEType` è impostato su `KMS`. 

  ```
  "SSEDescription": {
    "SSEType": "KMS",
    "Status": "ENABLED",
    "KMSMasterKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  }
  ```

# Protezione delle connessioni DynamoDB attraverso endpoint VPC e policy IAM
<a name="inter-network-traffic-privacy"></a>

Le connessioni sono protette sia tra Amazon DynamoDB e le applicazioni locali sia tra DynamoDB e altre risorse all'interno della stessa regione. AWS AWS 

## Policy richieste per gli endpoint
<a name="inter-network-traffic-DescribeEndpoints"></a>

Amazon DynamoDB fornisce un'API [DescribeEndpoints](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeEndpoints.html) che consente di enumerare le informazioni sugli endpoint regionali. Per le richieste agli endpoint DynamoDB pubblici, l’API risponde indipendentemente dalla policy IAM di DynamoDB configurata, anche se esiste una negazione esplicita o implicita nella policy IAM o negli endpoint VPC. Questo perché DynamoDB ignora intenzionalmente l’autorizzazione per l’API `DescribeEndpoints`.

Per le richieste da un endpoint VPC, sia le policy IAM che del cloud privato virtuale (VPC) degli endpoint devono autorizzare la chiamata API `DescribeEndpoints` per i principali di Identity and Access Management (IAM) richiedenti utilizzando l'operazione IAM `dynamodb:DescribeEndpoints`. In caso contrario, l'accesso all'API `DescribeEndpoints` verrà negato.

Di seguito è riportato un esempio di una policy di endpoint.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "dynamodb:DescribeEndpoints",
            "Resource": "*"
        }
    ]
}
```

------

## Traffico tra servizio e applicazioni e client locali
<a name="inter-network-traffic-privacy-on-prem"></a>

Sono disponibili due opzioni di connettività tra la rete privata e: AWS
+ Una AWS Site-to-Site VPN connessione. Per ulteriori informazioni, consulta [Che cos’è AWS Site-to-Site VPN?](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) nella *Guida per l’utente di AWS Site-to-Site VPN *.
+ Una Direct Connect connessione. Per ulteriori informazioni, consulta [Che cos’è Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) nella *Guida per l’utente di Direct Connect *.

L'accesso a DynamoDB tramite la rete avviene tramite published. AWS APIs I client devono supportare Transport Layer Security (TLS) 1.2. È consigliabile TLS 1.3. I client devono inoltre supportare le suite di cifratura con PFS (Perfect Forward Secrecy), ad esempio Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). La maggior parte dei sistemi moderni come Java 7 e versioni successive, supporta tali modalità. Inoltre, è necessario firmare le richieste utilizzando un ID chiave di accesso e la chiave di accesso segreta associate a un principale IAM, oppure è possibile utilizzare [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) per generare le credenziali di sicurezza temporanee per firmare le richieste.

## Traffico tra AWS risorse nella stessa regione
<a name="inter-network-traffic-privacy-within-region"></a>

Un endpoint Amazon Virtual Private Cloud (Amazon VPC) per DynamoDB è un'entità logica all'interno di un VPC che consente la connettività solo a DynamoDB. Amazon VPC instrada le richieste ad DynamoDB e reindirizza le risposte al VPC. Per ulteriori informazioni, consultare [Endpoint VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) nella *Guida per l'utente di Amazon VPC*. Per le policy di esempio che possono essere utilizzate per controllare l'accesso da endpoint VPC, consulta [Utilizzo delle policy IAM per controllare l'accesso a DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html). 

**Nota**  
Gli endpoint Amazon VPC non sono accessibili tramite o. AWS Site-to-Site VPN Direct Connect

# 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)

# Convalida della conformità per settore per DynamoDB
<a name="Compliance"></a>

Per sapere se un Servizio AWS programma rientra nell'ambito di specifici programmi di conformità, consulta Servizi AWS la sezione [Ambito per programma di conformitàServizi AWS](https://aws.amazon.com/compliance/services-in-scope/) di conformità e scegli il programma di conformità che ti interessa. Per informazioni generali, consulta Programmi di [AWS conformità Programmi](https://aws.amazon.com/compliance/programs/) di di .

È possibile scaricare report di audit di terze parti utilizzando AWS Artifact. Per ulteriori informazioni, consulta [Scaricamento dei report in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

La vostra responsabilità di conformità durante l'utilizzo Servizi AWS è determinata dalla sensibilità dei dati, dagli obiettivi di conformità dell'azienda e dalle leggi e dai regolamenti applicabili. Per ulteriori informazioni sulla responsabilità di conformità durante l'utilizzo Servizi AWS, consulta [AWS la documentazione sulla sicurezza](https://docs.aws.amazon.com/security/).

# Resilienza e ripristino di emergenza in Amazon DynamoDB
<a name="disaster-recovery-resiliency"></a>

L'infrastruttura AWS globale è costruita attorno AWS a regioni e zone di disponibilità. AWS Le regioni forniscono più zone di disponibilità fisicamente separate e isolate, collegate con reti a bassa latenza, ad alto throughput e altamente ridondanti. Con le zone di disponibilità, è possibile progettare e gestire applicazioni e database che eseguono il failover automatico tra zone di disponibilità senza interruzioni. Le zone di disponibilità sono più disponibili, tolleranti ai guasti e scalabili rispetto alle infrastrutture tradizionali a data center singolo o multiplo. 

Se occorre replicare i dati o le applicazioni su distanze geografiche più ampie, utilizza le regioni locali AWS . Una regione AWS locale è un singolo data center progettato per integrare una regione esistente. AWS Come tutte le AWS regioni, le regioni AWS locali sono completamente isolate dalle altre AWS regioni.

Per ulteriori informazioni su AWS regioni e zone di disponibilità, consulta [infrastruttura AWS globale](https://aws.amazon.com/about-aws/global-infrastructure/).

Amazon DynamoDB replica automaticamente i dati su tre zone di disponibilità in una regione, fornendo un'elevata durabilità integrata e uno SLA di disponibilità del 99,99%. Inoltre, DynamoDB offre diverse funzionalità per supportare le esigenze di resilienza e backup dei dati.

**Backup e ripristino on demand**  
DynamoDB fornisce funzionalità di backup on demand. Consente di creare backup completi delle tabelle per la conservazione e l'archiviazione a lungo termine. Per ulteriori informazioni, consulta [Backup e ripristino on demand per DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup-and-Restore.html).

**Point-in-time recupero**  
Point-in-time il ripristino aiuta a proteggere le tabelle DynamoDB da operazioni di scrittura o eliminazione accidentali. Grazie al ripristino point-in-time, non dovrai preoccuparti di creare, gestire o programmare i backup on-demand. Per ulteriori informazioni, consulta [Point-in-time recovery for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Point-in-time-recovery.html).

**Tabelle globali sincronizzate tra regioni  AWS **  
DynamoDB distribuisce automaticamente i dati e il traffico per la tabella su un numero di server sufficiente per gestire i requisiti di velocità effettiva e archiviazione, garantendo al contempo prestazioni rapide e costanti. Tutti i dati sono archiviati su dischi a stato solido (SSDs) e vengono replicati automaticamente su più zone di disponibilità in una AWS regione, garantendo elevata disponibilità e durabilità dei dati integrate. È possibile utilizzare le tabelle globali per mantenere le tabelle DynamoDB sincronizzate tra le regioni. AWS 

# Sicurezza dell'infrastruttura in Amazon DynamoDB
<a name="network-isolation"></a>

In quanto servizio gestito, Amazon DynamoDB è protetto dalle procedure di sicurezza di rete globali descritte [nella sezione Protezione AWS dell'infrastruttura situata nel](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) Well-Architected Framework. AWS 

Si utilizzano chiamate API AWS pubblicate per accedere a DynamoDB attraverso la rete. I client possono utilizzare la versione 1.2 o 1.3 di TLS (Transport Layer Security). I client devono inoltre supportare le suite di cifratura con PFS (Perfect Forward Secrecy), ad esempio Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). La maggior parte dei sistemi moderni, come Java 7 e versioni successive, supporta tali modalità. Inoltre, le richieste devono essere firmate tramite un ID chiave di accesso e una chiave di accesso segreta associata a un principal IAM. In alternativa, è possibile utilizzare [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) per generare le credenziali di sicurezza temporanee per firmare le richieste.

 È inoltre possibile utilizzare un endpoint di Virtual Private Cloud (VPC) per DynamoDB per consentire alle istanze Amazon EC2 nel VPC di utilizzare i loro indirizzi IP privati per accedere a DynamoDB senza alcuna esposizione a Internet. Per ulteriori informazioni, consulta [Utilizzo di endpoint Amazon VPC per accedere a DynamoDB](#vpc-endpoints-dynamodb). 

## Utilizzo di endpoint Amazon VPC per accedere a DynamoDB
<a name="vpc-endpoints-dynamodb"></a>

Per motivi di sicurezza, molti AWS clienti eseguono le proprie applicazioni all'interno di un ambiente Amazon Virtual Private Cloud (Amazon VPC). Con Amazon VPC, è possibile avviare le istanze Amazon EC2 in un Virtual Private Cloud (VPC), che è isolato logicamente da altre reti, inclusa la rete Internet pubblica. Con un Amazon VPC, puoi controllarne l'intervallo di indirizzi IP, le sottoreti, le tabelle di routing e i gateway di rete, nonché le impostazioni di sicurezza.

**Nota**  
Se hai creato il tuo Account AWS dopo il 4 dicembre 2013, hai già un VPC predefinito in ciascuno di essi. Regione AWS Un VPC predefinito è pronto per l'uso: può essere utilizzato immediatamente senza dover eseguire ulteriori operazioni di configurazione.  
Per ulteriori informazioni, consulta [VPC predefinito e sottoreti predefinite](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) nella *Guida per l'utente di Amazon VPC*.

Per accedere a Internet, il VPC deve disporre di un gateway Internet, ovvero di un router virtuale che connette il VPC a Internet. Ciò consente alle applicazioni in esecuzione su Amazon EC2 nel VPC di accedere alle risorse Internet, come Amazon DynamoDB.

Per impostazione predefinita, le comunicazioni da e verso DynamoDB utilizzano il protocollo HTTPS, che protegge il traffico di rete utilizzando la crittografia. SSL/TLS Il diagramma seguente mostra un’istanza Amazon EC2 in un VPC che accede a DynamoDB, in cui DynamoDB usa un gateway Internet anziché gli endpoint VPC.

![\[Diagramma del flusso di lavoro che mostra un’istanza Amazon EC2 che accede a DynamoDB tramite un router, un gateway Internet e Internet.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/ddb-no-vpc-endpoint.png)


Molti clienti esprimono legittime preoccupazioni in materia di sicurezza e di privacy quando si tratta di inviare e ricevere dati tramite la rete Internet pubblica. I clienti possono risolvere questi problemi usando una rete privata virtuale (VPN) per instradare tutto il traffico di rete di DynamoDB tramite la propria infrastruttura di rete aziendale. Questo approccio tuttavia può introdurre problematiche relative alla larghezza di banda e alla disponibilità.

Gli endpoint VPC per DynamoDB possono mitigare queste difficoltà. Un *endpoint VPC* per DynamoDB consente alle istanze Amazon EC2 nel VPC di utilizzare i loro indirizzi IP privati per accedere a DynamoDB senza alcuna esposizione a Internet. Le istanze EC2 non richiedono indirizzi IP pubblici e non c'è bisogno di un gateway Internet, di un dispositivo NAT o di un gateway virtuale privato all'interno del VPC. Le policy degli endpoint vengono utilizzate per controllare l'accesso a DynamoDB. Il traffico tra il tuo VPC e il AWS servizio non esce dalla rete Amazon.

**Nota**  
 Anche quando si utilizzano indirizzi IP pubblici, tutte le comunicazioni VPC tra istanze e servizi ospitati vengono mantenute private all'interno della rete. AWS AWS I pacchetti che provengono dalla AWS rete con una destinazione sulla AWS rete rimangono sulla rete AWS globale, ad eccezione del traffico da o verso le regioni della AWS Cina. 

Quando si crea un endpoint VPC per DynamoDB, qualsiasi richiesta a un endpoint DynamoDB all'interno della regione (ad esempio *dynamodb.us-west-2.amazonaws.com*) viene instradata verso un endpoint DynamoDB privato all'interno della rete Amazon. Non è necessario modificare le applicazioni in esecuzione sulle istanze EC2 nel VPC. Il nome dell'endpoint rimane invariato, ma l'instradamento verso DynamoDB rimane interamente all'interno della rete Amazon e non accede alla rete Internet pubblica. 

Il diagramma seguente mostra in che modo un'istanza EC2 in un VPC può usare un endpoint VPC per accedere a DynamoDB.

![\[Diagramma del flusso di lavoro che mostra un'istanza EC2 che accede a DynamoDB solo tramite un router e un endpoint VPC.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/ddb-yes-vpc-endpoint.png)


Per ulteriori informazioni, consulta [Tutorial: Utilizzo di un endpoint VPC per DynamoDB](#vpc-endpoints-dynamodb-tutorial).

### Condivisione di endpoint Amazon VPC e DynamoDB
<a name="vpc-endpoints-dynamodb-sharing"></a>

Per abilitare l'accesso al servizio DynamoDB tramite l'endpoint gateway di una sottorete VPC, devi disporre delle autorizzazioni dell'account proprietario per tale sottorete VPC.

 Dopo che all'endpoint gateway della sottorete VPC è stato concesso l'accesso a DynamoDB, qualsiasi account  AWS  con accesso a tale sottorete può utilizzare DynamoDB. Ciò significa che tutti gli utenti dell'account all'interno della sottorete VPC possono utilizzare qualsiasi tabella DynamoDB a cui hanno accesso. Ciò include le tabelle DynamoDB associate a un account diverso rispetto alla sottorete VPC. Il proprietario della sottorete VPC può comunque impedire a qualsiasi utente specifico all'interno della sottorete di utilizzare il servizio DynamoDB tramite l'endpoint del gateway, a sua discrezione. 

### Tutorial: Utilizzo di un endpoint VPC per DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial"></a>

Questa sezione guida attraverso la configurazione e l'utilizzo di un endpoint VPC per DynamoDB.

**Topics**
+ [Fase 1: avvio di un'istanza Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance)
+ [Fase 2: configurazione dell'istanza Amazon EC2](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)
+ [Fase 3: creazione di un endpoint VPC per DynamoDB](#vpc-endpoints-dynamodb-tutorial.create-endpoint)
+ [Fase 4: pulizia (opzionale)](#vpc-endpoints-dynamodb-tutorial.clean-up)

#### Fase 1: avvio di un'istanza Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.launch-ec2-instance"></a>

In questa fase, viene avviata un'istanza Amazon EC2 nell'Amazon VPC predefinito. È quindi possibile creare e utilizzare un endpoint VPC per DynamoDB.

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Seleziona **Avvia istanza** e completa le seguenti operazioni:

   Fase 1: scelta di un'Amazon Machine Image (AMI)
   + Nella parte superiore dell'elenco AMIs, vai **su Amazon Linux AMI** e scegli **Seleziona**.

   Fase 2: scelta di un tipo di istanza
   + All'inizio dell'elenco dei tipi di istanza, scegli **t2.micro**.
   + Scegliere **Next: Configure Instance Details (Successivo: Configura i dettagli dell'istanza)**.

   Fase 3: configurare i dettagli dell'istanza
   + Vai a **Network (Rete)** e scegli il VPC predefinito.

     Scegli **Passaggio successivo: aggiunta dello storage**.

   Fase 4: aggiungere storage
   + Salta questa fase scegliendo **Next: Tag Instance** (Successivo: Assegna un tag all'istanza).

   Fase 5: assegnazione di un tag all'istanza
   + Ignora questa fase scegliendo **Next: Configure Security Group (Successivo: Configura il gruppo di sicurezza)**.

   Fase 6: configura il gruppo di sicurezza
   + Scegli **Seleziona un gruppo di sicurezza esistente**.
   + Nell'elenco dei gruppi di sicurezza, scegli **default** (predefinito). Questo è il gruppo di sicurezza di default per il tuo ambiente VPC.
   + Scegli **Next: Review and Launch** (Successivo: Verifica e avvia).

   Fase 7: verifica il lancio dell'istanza
   + Scegli **Avvia**.

1. Nella finestra **Select an existing key pair or create a new key pair** (Seleziona una coppia di chiavi esistente oppure crea una nuova coppia di chiavi), effettua una delle seguenti operazioni:
   + Se non disponi di una coppia di chiavi Amazon EC2, scegli **Crea una nuova coppia di chiavi** e segui le istruzioni. Verrà chiesto di scaricare un file di chiave privata (file *.pem*) che servirà in seguito per l'accesso all'istanza Amazon EC2.
   + Se disponi già di una coppia di chiavi Amazon EC2 esistente, passa a **Seleziona una coppia di chiavi** e sceglie la coppia nell'elenco. Tenere presente che si dispone già del file di chiave privata (file *.pem*) per accedere all'istanza Amazon EC2.

1. Quando hai configurato la tua coppia di chiavi, scegli **Launch Instances** (Avvia istanze).

1. Torna alla home page della console Amazon EC2 e scegli l'istanza che è stata avviata. Nel riquadro inferiore, nella scheda **Descrizione**, individuare il **DNS pubblico** per l'istanza. Ad esempio: `ec2-00-00-00-00.us-east-1.compute.amazonaws.com`.

   Prendere nota di questo nome DNS pubblico, perché sarà necessario nella fase successiva di questa esercitazione ([Fase 2: configurazione dell'istanza Amazon EC2](#vpc-endpoints-dynamodb-tutorial.configure-ec2-instance)).

**Nota**  
L'istanza Amazon EC2 diventerà disponibile nell'arco di alcuni minuti. Prima di continuare, verificare che **Stato istanza** sia `running` e che tutti i controlli di **verifica stato** siano stati superati.

#### Fase 2: configurazione dell'istanza Amazon EC2
<a name="vpc-endpoints-dynamodb-tutorial.configure-ec2-instance"></a>

Una volta disponibile l'istanza Amazon EC2, sarà possibile accedervi e prepararla per il primo utilizzo.

**Nota**  
Nelle fasi successive si presuppone che si stia effettuando la connessione all'istanza Amazon EC2 da un computer che esegue Linux. Per altre modalità di connessione, consulta [Connessione a un’istanza Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) nella Guida per l’utente di Amazon EC2.

1. Sarà necessario autorizzare il traffico SSH in entrata verso l'istanza Amazon EC2. A tale scopo, verrà creato un nuovo gruppo di sicurezza EC2 che poi sarà assegnato all'istanza EC2.

   1. Fai clic su **Gruppi di sicurezza** nel pannello di navigazione.

   1. Scegli **Crea gruppo di sicurezza**. Nella finestra **Crea gruppo di sicurezza** effettua le operazioni seguenti:
      + **Nome gruppo di sicurezza**: immettere un nome per il gruppo di sicurezza. Ad esempio: `my-ssh-access`
      + **Descrizione**: specificare una descrizione breve per il gruppo di sicurezza.
      + **VPC**: scegli il VPC predefinito.
      + Nella sezione **Regole del gruppo di sicurezza**, seleziona **Aggiungi regole** e completare le operazioni descritte di seguito.
        + **Tipo**: seleziona SSH.
        + **Origine**: scegli Il mio IP.

      Dopo aver selezionato tutte le impostazioni desiderate, scegli **Crea**.

   1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

   1. Scegli l'istanza Amazon EC2 avviata in [Fase 1: avvio di un'istanza Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance).

   1. Seleziona **Operazioni** --> **Reti** --> **Modifica i gruppi di sicurezza**.

   1. In **Modifica gruppi di sicurezza**, seleziona il gruppo di sicurezza creato in precedenza in questa procedura (ad esempio, `my-ssh-access`). Dovrebbe essere selezionato anche il gruppo di sicurezza `default` esistente. Dopo aver selezionato le impostazioni desiderate, seleziona **Assegna i gruppi di sicurezza**.

1. Utilizza il comando `ssh` per accedere all'istanza Amazon EC2, come nell'esempio seguente.

   ```
   ssh -i my-keypair.pem ec2-user@public-dns-name
   ```

   È necessario specificare il file di chiave privata (file *.pem*) e il nome DNS pubblico dell'istanza. Consulta [Fase 1: avvio di un'istanza Amazon EC2](#vpc-endpoints-dynamodb-tutorial.launch-ec2-instance). 

   L'ID accesso è `ec2-user`. Non è richiesta una password.

1. Configura AWS le tue credenziali come mostrato nell'esempio seguente. Quando richiesto, immettere l'ID chiave di accesso AWS , la chiave segreta e nome della regione predefinita.

   ```
   aws configure
   ```

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-1
   Default output format [None]:
   ```

È ora possibile creare un endpoint VPC per DynamoDB.

#### Fase 3: creazione di un endpoint VPC per DynamoDB
<a name="vpc-endpoints-dynamodb-tutorial.create-endpoint"></a>

In questa fase, verrà creato un endpoint VPC per DynamoDB e ne sarà eseguito il test per verificare che funzioni.

1. Prima di iniziare, verifica di poter comunicare con DynamoDB utilizzando l'endpoint pubblico.

   ```
   aws dynamodb list-tables
   ```

   L'output mostrerà un elenco di tabelle DynamoDB di proprietà. (Se non si disponi di alcuna tabella, l'elenco sarà vuoto).

1. Verifica che DynamoDB sia un servizio disponibile per la creazione di endpoint VPC nella regione corrente. AWS Il comando è mostrato in grassetto, seguito dall'output di esempio.

   ```
   aws ec2 describe-vpc-endpoint-services
   ```

   ```
   {
       "ServiceNames": [
           "com.amazonaws.us-east-1.s3",
           "com.amazonaws.us-east-1.dynamodb"
       ]
   }
   ```

   Nell'output di esempio, DynamoDB è uno dei servizi disponibili, quindi è possibile procedere con la creazione di un endpoint VPC.

1. Determinare l'identificatore VPC.

   ```
   aws ec2 describe-vpcs
   ```

   ```
   {
       "Vpcs": [
           {
               "VpcId": "vpc-0bbc736e", 
               "InstanceTenancy": "default", 
               "State": "available", 
               "DhcpOptionsId": "dopt-8454b7e1", 
               "CidrBlock": "172.31.0.0/16", 
               "IsDefault": true
           }
       ]
   }
   ```

   Nell'output di esempio, l'ID VPC è `vpc-0bbc736e`.

1. Crea l'endpoint VPC. Per il parametro `--vpc-id`, specificare l'ID VPC della fase precedente. Utilizza il parametro `--route-table-ids` per associare l'endpoint alle tabelle di routing.

   ```
   aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [
               "rtb-11aa22bb"
           ],
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

1. Verificare di poter accedere a DynamoDB tramite l'endpoint VPC.

   ```
   aws dynamodb list-tables
   ```

   Se vuoi, puoi provare altri AWS CLI comandi per DynamoDB. Per ulteriori informazioni, consulta la sezione relativa alle [informazioni di riferimento ai comandi di AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/).

#### Fase 4: pulizia (opzionale)
<a name="vpc-endpoints-dynamodb-tutorial.clean-up"></a>

Se desideri eliminare le risorse create in questo tutorial, seguire queste procedure:

**Come rimuovere l'endpoint VPC per DynamoDB**

1. Accedi all'istanza Amazon EC2.

1. Determinare l'ID endpoint VPC.

   ```
   aws ec2 describe-vpc-endpoints
   ```

   ```
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-0bbc736e", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.dynamodb", 
           "RouteTableIds": [], 
           "VpcEndpointId": "vpce-9b15e2f2", 
           "CreationTimestamp": "2017-07-26T22:00:14Z"
       }
   }
   ```

   Nell'output di esempio, l'ID endpoint VPC è `vpce-9b15e2f2`.

1. Eliminare l'endpoint VPC.

   ```
   aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
   ```

   ```
   {
       "Unsuccessful": []
   }
   ```

   L'array vuoto `[]` indica la riuscita dell'operazione (non ci sono state richieste non riuscite).

**Come terminare l'istanza Amazon EC2**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, scegliere **Instances (Istanze)**.

1. Scegli l'istanza Amazon EC2.

1. Seleziona **Actions (Operazioni)**, **Instance State (Stato istanza)**, **Terminate (Termina)**.

1. Nella finestra di conferma scegli **Sì, termina**.

# AWS PrivateLink per DynamoDB
<a name="privatelink-interface-endpoints"></a>

Con AWS PrivateLink for DynamoDB, puoi effettuare il provisioning degli endpoint *Amazon VPC* di interfaccia (endpoint di interfaccia) nel tuo cloud privato virtuale (Amazon VPC). Questi endpoint sono accessibili direttamente dalle applicazioni locali tramite VPN e/o in un altro modo Regione AWS tramite il peering [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). Direct Connect Utilizzando AWS PrivateLink e gli endpoint di interfaccia è possibile semplificare la connettività di rete privata dalle applicazioni a DynamoDB.

Le applicazioni presenti nel VPC non richiedono indirizzi IP pubblici per comunicare con DynamoDB utilizzando gli endpoint di interfaccia VPC per le operazioni DynamoDB. Gli endpoint dell'interfaccia sono rappresentati da una o più interfacce di rete elastiche (ENIs) a cui vengono assegnati indirizzi IP privati dalle sottoreti del tuo Amazon VPC. Le richieste a DynamoDB tramite gli endpoint di interfaccia rimangono nella rete Amazon. Puoi anche accedere agli endpoint di interfaccia nel tuo Amazon VPC da applicazioni locali AWS Direct Connect tramite AWS Virtual Private Network o ().Site-to-Site VPN Per ulteriori informazioni su come connettere l’Amazon VPC alla rete on-premises, consulta la [Guida per l’utente di Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) e la [Guida per l’utente di AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html).

*Per informazioni generali sugli endpoint di interfaccia, consulta [Interface Amazon VPC endpoints AWS PrivateLink(](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)) nella Guida.AWS PrivateLink * AWS PrivateLink è supportato anche per gli endpoint Amazon DynamoDB Streams. Per ulteriori informazioni, consulta [AWS PrivateLink per DynamoDB Streams](privatelink-streams.md).

**Topics**
+ [Tipi di endpoint Amazon VPC per Amazon DynamoDB](#types-of-vpc-endpoints-for-ddb)
+ [Considerazioni sull'utilizzo AWS PrivateLink per Amazon DynamoDB](#privatelink-considerations)
+ [Creazione di un endpoint Amazon VPC](#ddb-creating-vpc)
+ [Accesso agli endpoint di interfaccia Amazon DynamoDB](#accessing-ddb-interface-endpoints)
+ [Accesso alle tabelle DynamoDB e alle operazioni API di controllo dagli endpoint di interfaccia DynamoDB](#accessing-tables-apis-from-interface-endpoints)
+ [Aggiornamento di una configurazione DNS locale](#updating-on-premises-dns-config)
+ [Creazione di una policy sugli endpoint Amazon VPC per DynamoDB](#creating-vpc-endpoint-policy)
+ [Utilizzo degli endpoint DynamoDB con accesso privato Console di gestione AWS](#ddb-endpoints-private-access)
+ [AWS PrivateLink per DynamoDB Streams](privatelink-streams.md)
+ [Utilizzo AWS PrivateLink per DynamoDB Accelerator (DAX)](dax-private-link.md)

## Tipi di endpoint Amazon VPC per Amazon DynamoDB
<a name="types-of-vpc-endpoints-for-ddb"></a>

*Puoi utilizzare due tipi di endpoint Amazon VPC per accedere ad Amazon DynamoDB: endpoint *gateway ed endpoint* di interfaccia (utilizzando).* AWS PrivateLink Un *endpoint gateway* è un gateway specificato nella tabella di routing per accedere a DynamoDB dal tuo Amazon VPC attraverso la rete. AWS Gli *endpoint di interfaccia* estendono la funzionalità degli endpoint gateway utilizzando indirizzi IP privati per instradare le richieste a DynamoDB dall'interno del tuo Amazon VPC, in locale o da un Amazon VPC in un altro tramite il peering Amazon VPC o. Regione AWS AWS Transit Gateway Per ulteriori informazioni, consulta [What is Amazon VPC peering?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) e [Transit Gateway vs Amazon VPC peering](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html).

Gli endpoint di interfaccia sono compatibili con gli endpoint gateway. Se si dispone di un endpoint gateway nell’Amazon VPC, è possibile utilizzare entrambi i tipi di endpoint nello stesso Amazon VPC.


|  Endpoint gateway per DynamoDB  |  Endpoint di interfaccia per DynamoDB  | 
| --- | --- | 
|  In entrambi i casi, il traffico di rete rimane sulla rete. AWS   | 
|  Utilizzo di indirizzi IP pubblici per Amazon DynamoDB  |  Utilizzo di indirizzi IP privati del proprio Amazon VPC per accedere ad Amazon DynamoDB  | 
|  Non consente l'accesso da on-premise  |  Consente l'accesso da On-Premise  | 
|  Non consentire l'accesso da parte di un altro Regione AWS  |  Consenti l'accesso da un endpoint Amazon VPC a un altro Regione AWS utilizzando il peering Amazon VPC o AWS Transit Gateway  | 
|  Non fatturata  |  Fatturata  | 

Per ulteriori informazioni sugli endpoint gateway, consulta [Gateway Amazon VPC endpoints](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html) nella *Guida ad AWS PrivateLink *.

## Considerazioni sull'utilizzo AWS PrivateLink per Amazon DynamoDB
<a name="privatelink-considerations"></a>

Le considerazioni relative ad Amazon VPC si applicano ad Amazon AWS PrivateLink DynamoDB. Per ulteriori informazioni, consulta [Considerazioni di un endpoint di interfaccia](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) e [Quote di AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) nella *Guida di AWS PrivateLink *. Inoltre, si applicano le limitazioni seguenti:

AWS PrivateLink per Amazon DynamoDB non supporta quanto segue:
+ Transport Layer Security (TLS) 1.1
+ Servizi del sistema dei nomi di dominio (DNS) privati e ibridi

**Importante**  
Non creare zone ospitate private per sovrascrivere i nomi DNS degli endpoint DynamoDB (`dynamodb.region.amazonaws.com`come `*.region.amazonaws.com` o) per indirizzare il traffico verso gli endpoint dell'interfaccia. Le configurazioni DNS di DynamoDB possono cambiare nel tempo.   
 Le sostituzioni DNS personalizzate non sono compatibili con queste modifiche e possono causare il routing imprevisto delle richieste su indirizzi IP pubblici anziché sugli endpoint dell'interfaccia.   
 Per accedere a DynamoDB AWS PrivateLink tramite, configura i tuoi client per utilizzare direttamente l'URL dell'endpoint Amazon VPC (ad esempio,). `https://vpce-1a2b3c4d-5e6f.dynamodb.region.vpce.amazonaws.com`

Puoi inviare fino a 50.000 richieste al secondo per ogni AWS PrivateLink endpoint abilitato.

**Nota**  
I timeout di connettività di rete verso gli AWS PrivateLink endpoint non rientrano nell'ambito delle risposte di errore di DynamoDB e devono essere gestiti in modo appropriato dalle applicazioni che si connettono agli endpoint. PrivateLink 

## Creazione di un endpoint Amazon VPC
<a name="ddb-creating-vpc"></a>

Per creare un endpoint Amazon VPC di interfaccia, consulta [ Create an Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) nella *Guida ad AWS PrivateLink *.

## Accesso agli endpoint di interfaccia Amazon DynamoDB
<a name="accessing-ddb-interface-endpoints"></a>

Quando si crea un endpoint di interfaccia, DynamoDB genera due tipi di nomi DNS DynamoDB specifici dell’endpoint: *Regionale* e *zonale*. 
+ Un nome DNS *regionale* include un ID endpoint Amazon VPC univoco, un identificatore di servizio, Regione AWS`vpce.amazonaws.com` la e nel nome. Ad esempio, per l’ID dell’endpoint Amazon VPC `vpce-1a2b3c4d`, il nome DNS generato potrebbe essere simile a `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com`.
+ I nomi DNS *zonali* includono la zona di disponibilità, ad esempio `vpce-1a2b3c4d-5e6f-us-east-1a.dynamodb.us-east-1.vpce.amazonaws.com`. Puoi utilizzare questa opzione se l'architettura isola le zone di disponibilità. Ad esempio, puoi utilizzarla per il contenimento degli errori o per ridurre i costi di trasferimento dei dati a livello regionale.

**Nota**  
Per ottenere un’affidabilità ottimale, si consiglia di implementare il servizio su un minimo di tre zone di disponibilità.

## Accesso alle tabelle DynamoDB e alle operazioni API di controllo dagli endpoint di interfaccia DynamoDB
<a name="accessing-tables-apis-from-interface-endpoints"></a>

È possibile utilizzare AWS CLI o AWS SDKs per accedere alle tabelle DynamoDB e controllare le operazioni delle API tramite gli endpoint dell'interfaccia DynamoDB.

### AWS CLI esempi
<a name="privatelink-ddb-aws-cli-examples"></a>

Per accedere alle tabelle DynamoDB o alle operazioni dell'API di controllo DynamoDB tramite gli endpoint dell'interfaccia DynamoDB nei comandi, utilizza i parametri and. AWS CLI `--region` `--endpoint-url`

**Esempio: creazione di un endpoint VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Esempio: modifica di un endpoint VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Esempio: creazione di un elenco di tabelle utilizzando un URL dell’endpoint**

Nell’esempio seguente, sostituisci la Regione `us-east-1` e il nome DNS dell’ID dell’endpoint VPC `vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
aws dynamodb --region us-east-1 --endpoint https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com list-tables
```

### AWS Esempi SDK
<a name="privatelink-ddb-aws-sdk-examples"></a>

Per accedere alle tabelle DynamoDB o alle operazioni dell'API di controllo DynamoDB tramite gli endpoint dell'interfaccia DynamoDB quando si utilizza DynamoDB, è necessario aggiornare la versione alla versione più recente. AWS SDKs SDKs Quindi configura i client per utilizzare un URL dell’endpoint per accedere a una tabella o a un’operazione API di controllo DynamoDB tramite gli endpoint di interfaccia DynamoDB.

------
#### [ SDK for Python (Boto3) ]

**Esempio: utilizzo di un URL dell’endpoint per accedere a una tabella DynamoDB**  
Nell'esempio seguente, sostituisci la Regione `us-east-1` e l'ID endpoint VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
ddb_client = session.client(
service_name='dynamodb',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Esempio: utilizzo di un URL dell’endpoint per accedere a una tabella DynamoDB**  
Nell'esempio seguente, sostituisci la Regione `us-east-1` e l'ID endpoint VPC `https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
//client build with endpoint config  
final AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Esempio: utilizzo di un URL dell’endpoint per accedere a una tabella DynamoDB**  
Nell'esempio seguente, sostituisci la regione us-east-1 e l'ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com endpoint VPC con le tue informazioni.

```
Region region = Region.US_EAST_1;
dynamoDbClient = DynamoDbClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Aggiornamento di una configurazione DNS locale
<a name="updating-on-premises-dns-config"></a>

 Quando si utilizzano nomi DNS specifici degli endpoint per accedere agli endpoint di interfaccia per DynamoDB, non è necessario aggiornare il resolver DNS on-premises. È possibile risolvere il nome DNS specifico dell’endpoint con l’indirizzo IP privato dell’endpoint di interfaccia dal dominio DNS pubblico di DynamoDB. 

### Utilizzo degli endpoint di interfaccia per accedere a DynamoDB senza un endpoint gateway o un gateway Internet nell’Amazon VPC
<a name="using-interface-endpoints"></a>

Gli endpoint di interfaccia nell’Amazon VPC possono instradare sia le applicazioni nell’Amazon VPC che le applicazioni on-premises a DynamoDB sulla rete Amazon, come illustrato nel diagramma seguente.

![\[Diagramma di flusso dei dati che mostra l’accesso dalle app on-premises e nell’Amazon VPC a DynamoDB utilizzando un endpoint di interfaccia e AWS PrivateLink.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/PrivateLink-interfaceEndpoints.png)


Il diagramma illustra quanto segue: 
+ La tua rete locale utilizza Direct Connect o Site-to-Site VPN per connettersi ad Amazon VPC A.
+ Le applicazioni on-premises e nell’Amazon VPC A utilizzano nomi DNS specifici degli endpoint per accedere a DynamoDB tramite l’endpoint di interfaccia DynamoDB.
+ Le applicazioni locali inviano dati all'endpoint di interfaccia in Amazon VPC tramite Direct Connect (o). Site-to-Site VPN AWS PrivateLink sposta i dati dall'endpoint dell'interfaccia a DynamoDB attraverso la rete. AWS 
+ Le applicazioni VPC di Amazon inviano inoltre traffico all'endpoint dell'interfaccia. AWS PrivateLink sposta i dati dall'endpoint dell'interfaccia a DynamoDB attraverso la rete. AWS 

### Utilizzo di endpoint gateway e di endpoint di interfaccia insieme nello stesso Amazon VPC per accedere a DynamoDB
<a name="using-gateway-and-interface-endpoints"></a>

È possibile creare endpoint di interfaccia e mantenere l’endpoint gateway esistente nello stesso Amazon VPC, come illustrato nel diagramma seguente. Con questo approccio si consente alle applicazioni nell’Amazon VPC di continuare ad accedere a DynamoDB tramite l’endpoint gateway senza incorrere nella fatturazione. Pertanto, solo le applicazioni on-premises utilizzerebbero gli endpoint di interfaccia per accedere a DynamoDB. Per accedere a DynamoDB in questo modo, è necessario aggiornare le applicazioni on-premises per utilizzare nomi DNS specifici degli endpoint per DynamoDB.

![\[Diagramma di un flusso di dati che mostra l’accesso a DynamoDB utilizzando gli endpoint gateway e gli endpoint di interfaccia insieme.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/PL-Image2-InterfaceAndGatewayEP.png)


Il diagramma illustra quanto segue: 
+ Le applicazioni locali utilizzano nomi DNS specifici dell'endpoint per inviare dati all'endpoint di interfaccia all'interno di Amazon VPC tramite (o). Direct Connect Site-to-Site VPN AWS PrivateLink sposta i dati dall'endpoint dell'interfaccia a DynamoDB attraverso la rete. AWS 
+ Utilizzando nomi DynamoDB regionali predefiniti, le applicazioni VPC interne ad Amazon inviano dati all'endpoint gateway che si connette a DynamoDB tramite la rete. AWS 

Per ulteriori informazioni sugli endpoint gateway, consulta [Gateway Amazon VPC endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html) nella *Guida per l’utente di Amazon VPC*. 

## Creazione di una policy sugli endpoint Amazon VPC per DynamoDB
<a name="creating-vpc-endpoint-policy"></a>

È possibile collegare una policy sugli endpoint al proprio endpoint Amazon VPC che controlla l’accesso a DynamoDB. Questa policy specifica le informazioni riportate di seguito: 
+ Il principale AWS Identity and Access Management (IAM) che può eseguire azioni 
+ Le azioni che possono essere eseguite 
+ Le risorse sui cui si possono eseguire le azioni 

**Topics**
+ [Esempio: limitazione dell’accesso a una tabella specifica da un endpoint Amazon VPC](#privatelink-example-restrict-access-to-bucket)

### Esempio: limitazione dell’accesso a una tabella specifica da un endpoint Amazon VPC
<a name="privatelink-example-restrict-access-to-bucket"></a>

È possibile creare una policy sugli endpoint che limita l’accesso solo a una tabella DynamoDB specifica. Questo tipo di policy è utile se Servizi AWS nel tuo Amazon VPC ne hai altre che utilizzano tabelle. La seguente policy sulle tabella limita l’accesso solo a `DOC-EXAMPLE-TABLE`. Per utilizzare questa policy sugli endpoint, sostituisci `DOC-EXAMPLE-TABLE` con il nome della tabella.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-table-only",
      "Principal": "*",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE",
                   "arn:aws:dynamodb:us-east-1:111122223333:table/DOC-EXAMPLE-TABLE/*"]
    }
  ]
}
```

------

## Utilizzo degli endpoint DynamoDB con accesso privato Console di gestione AWS
<a name="ddb-endpoints-private-access"></a>

È necessario configurare la configurazione DNS per DynamoDB e i flussi DynamoDB quando si utilizzano endpoint VPC con la [console DynamoDB](https://console.aws.amazon.com/dynamodb) nell’[Accesso privato alla Console di gestione AWS](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html).

Per configurare DynamoDB in modo che sia accessibile Console di gestione AWS in Private Access, è necessario creare i due endpoint VPC seguenti:
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Durante la creazione degli endpoint VPC, accedi alla console Route53 e crea una zona ospitata privata per DynamoDB utilizzando l’endpoint Regionale `dynamodb.us-east-1.amazonaws.com`.

Crea i seguenti due record di alias nella zona ospitata privata:
+ `dynamodb.<region>.amazonaws.com` che instrada il traffico verso l’endpoint VPC `com.amazonaws.<region>.dynamodb`.
+ `streams.dynamodb.<region>.amazonaws.com` che instrada il traffico verso l’endpoint VPC `com.amazonaws.<region>.dynamodb-streams`.

# AWS PrivateLink per DynamoDB Streams
<a name="privatelink-streams"></a>

Con AWS PrivateLink Amazon DynamoDB Streams, puoi fornire endpoint Amazon VPC di interfaccia (endpoint di interfaccia) nel tuo cloud privato virtuale (Amazon VPC). Questi endpoint sono accessibili direttamente dalle applicazioni locali tramite VPN e/o in un altro modo Regione AWS tramite il peering Amazon VPC. Direct Connect Utilizzando AWS PrivateLink e interfacciando gli endpoint, puoi semplificare la connettività di rete privata dalle tue applicazioni a DynamoDB Streams.

Le applicazioni presenti in Amazon VPC non richiedono indirizzi IP pubblici per comunicare con i flussi DynamoDB tramite gli endpoint Amazon VPC di interfaccia per le operazioni con i flussi DynamoDB. Gli endpoint dell'interfaccia sono rappresentati da una o più interfacce di rete elastiche (ENIs) a cui vengono assegnati indirizzi IP privati dalle sottoreti del tuo Amazon VPC. Le richieste ai flussi DynamoDB tramite gli endpoint di interfaccia rimangono nella rete Amazon. Puoi anche accedere agli endpoint di interfaccia nel tuo Amazon VPC da applicazioni locali Direct Connect tramite AWS Virtual Private Network o AWS (VPN). [https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) 

Per informazioni sulla creazione di endpoint di interfaccia, consulta [Endpoint di interfaccia di Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) (AWS PrivateLink).

**Nota**  
Per i flussi DynamoDB sono supportati solo gli endpoint di interfaccia. Gli endpoint gateway non sono supportati.

**Topics**
+ [Considerazioni sull'utilizzo AWS PrivateLink per Amazon DynamoDB Streams](#privatelink-streams-considerations)
+ [Creazione di un endpoint Amazon VPC](#privatelink-streams-vpc-endpoint)
+ [Accesso agli endpoint di interfaccia dei flussi Amazon DynamoDB](#privatelink-streams-accessing-ddb-interface-endpoints)
+ [Accesso alle operazioni API dei flussi DynamoDB dagli endpoint di interfaccia dei flussi DynamoDB](#privatelink-streams-accessing-api-operations-from-interface-endpoints)
+ [AWS Esempi SDK](#privatelink-streams-aws-sdk-examples)
+ [Creazione di una policy sugli endpoint Amazon VPC per i flussi DynamoDB](#privatelink-streams-creating-vpc-endpoint-policy)
+ [Utilizzo degli endpoint DynamoDB con accesso privato Console di gestione AWS](#ddb-streams-endpoints-private-access)

## Considerazioni sull'utilizzo AWS PrivateLink per Amazon DynamoDB Streams
<a name="privatelink-streams-considerations"></a>

Le considerazioni relative ad Amazon VPC si applicano ad Amazon AWS PrivateLink DynamoDB Streams. Per ulteriori informazioni, consulta [interface endpoint considerations](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) e [AWS PrivateLink quotas](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html). Le restrizioni si applicano come segue.

AWS PrivateLink per Amazon DynamoDB Streams non supporta quanto segue: 
+ Transport Layer Security (TLS) 1.1
+ Servizi del sistema dei nomi di dominio (DNS) privati e ibridi

**Importante**  
Non creare zone private ospitate per sovrascrivere i nomi DNS degli endpoint DynamoDB Streams per indirizzare il traffico verso gli endpoint dell'interfaccia. Le configurazioni DNS di DynamoDB possono cambiare nel tempo e le sostituzioni DNS personalizzate possono causare il routing imprevisto delle richieste su indirizzi IP pubblici anziché sugli endpoint dell'interfaccia.   
 Per accedere a DynamoDB Streams AWS PrivateLink tramite, configura i tuoi client per utilizzare direttamente l'URL dell'endpoint Amazon VPC (ad esempio,). `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.region.vpce.amazonaws.com`

**Nota**  
I timeout di connettività di rete verso gli AWS PrivateLink endpoint non rientrano nell'ambito delle risposte di errore di DynamoDB Streams e devono essere gestiti in modo appropriato dalle applicazioni che si connettono agli endpoint. AWS PrivateLink 

## Creazione di un endpoint Amazon VPC
<a name="privatelink-streams-vpc-endpoint"></a>

Per creare un endpoint Amazon VPC di interfaccia, consulta [ Create an Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) nella *Guida ad AWS PrivateLink *.

## Accesso agli endpoint di interfaccia dei flussi Amazon DynamoDB
<a name="privatelink-streams-accessing-ddb-interface-endpoints"></a>

Quando si crea un endpoint di interfaccia, DynamoDB genera due tipi di nomi DNS dei flussi DynamoDB specifici dell’endpoint: *Regionale* e *zonale*. 
+ Un nome DNS *regionale* include un ID endpoint Amazon VPC univoco, un identificatore di servizio, Regione AWS`vpce.amazonaws.com` la e nel nome. Ad esempio, per l’ID dell’endpoint Amazon VPC `vpce-1a2b3c4d`, il nome DNS generato potrebbe essere simile a `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com`.
+ I nomi DNS *zonali* includono la zona di disponibilità, ad esempio `vpce-1a2b3c4d-5e6f-us-east-1a.streams.dynamodb.us-east-1.vpce.amazonaws.com`. Puoi utilizzare questa opzione se l'architettura isola le zone di disponibilità. Ad esempio, puoi utilizzarla per il contenimento degli errori o per ridurre i costi di trasferimento dei dati a livello regionale.

## Accesso alle operazioni API dei flussi DynamoDB dagli endpoint di interfaccia dei flussi DynamoDB
<a name="privatelink-streams-accessing-api-operations-from-interface-endpoints"></a>

È possibile utilizzare AWS CLI o AWS SDKs per accedere alle operazioni dell'API DynamoDB Streams tramite gli endpoint dell'interfaccia DynamoDB Streams.

### AWS CLI esempi
<a name="privatelink-streams-aws-cli-examples"></a>

Per accedere a DynamoDB Streams o alle operazioni API tramite gli endpoint dell'interfaccia DynamoDB Streams nei comandi, utilizza i parametri and. AWS CLI `--region` `--endpoint-url`

**Esempio: creazione di un endpoint VPC**

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name com.amazonaws.us-east-1.dynamodb-streams \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id
```

**Esempio: modifica di un endpoint VPC**

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-endpoint-id \
--policy-document policy-document \ #example optional parameter
--add-security-group-ids security-group-ids \ #example optional parameter 
# any additional parameters needed, see Privatelink documentation for more details
```

**Esempio: creazione di un elenco di flussi utilizzando un URL dell’endpoint**

Nell’esempio seguente, sostituisci la Regione `us-east-1` e il nome DNS dell’ID dell’endpoint VPC `vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
aws dynamodbstreams --region us-east-1 —endpoint https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com list-streams
```

## AWS Esempi SDK
<a name="privatelink-streams-aws-sdk-examples"></a>

Per accedere alle operazioni dell'API Amazon DynamoDB Streams tramite gli endpoint dell'interfaccia DynamoDB Streams quando si utilizza la, è necessario aggiornare la versione alla versione più recente. AWS SDKs SDKs Quindi configura i client per utilizzare un URL dell’endpoint per un’operazione API dei flussi DynamoDB tramite gli endpoint di interfaccia dei flussi DynamoDB.

------
#### [ SDK for Python (Boto3) ]

**Esempio: utilizzo di un URL dell’endpoint per accedere a un flusso DynamoDB**  
Nell'esempio seguente, sostituisci la Regione `us-east-1` e l'ID endpoint VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
ddb_streams_client = session.client(
service_name='dynamodbstreams',
region_name='us-east-1',
endpoint_url='https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Esempio: utilizzo di un URL dell’endpoint per accedere a un flusso DynamoDB**  
Nell'esempio seguente, sostituisci la Regione `us-east-1` e l'ID endpoint VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
//client build with endpoint config  
final AmazonDynamoDBStreams dynamodbstreams = AmazonDynamoDBStreamsClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
```

------
#### [ SDK for Java 2.x ]

**Esempio: utilizzo di un URL dell’endpoint per accedere a un flusso DynamoDB**  
Nell'esempio seguente, sostituisci la Regione `us-east-1` e l'ID endpoint VPC `https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com` con le informazioni appropriate.

```
Region region = Region.US_EAST_1;
dynamoDbStreamsClient = DynamoDbStreamsClient.builder().region(region)
.endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.streams.dynamodb.us-east-1.vpce.amazonaws.com"))
.build()
```

------

## Creazione di una policy sugli endpoint Amazon VPC per i flussi DynamoDB
<a name="privatelink-streams-creating-vpc-endpoint-policy"></a>

È possibile collegare una policy sugli endpoint all’endpoint Amazon VPC che controlla l’accesso ai flussi DynamoDB. Questa policy specifica le informazioni riportate di seguito: 
+ Il principio AWS Identity and Access Management (IAM) che può eseguire azioni 
+ Le azioni che possono essere eseguite 
+ Le risorse sui cui si possono eseguire le azioni 

**Topics**
+ [Esempio: limitazione dell’accesso a un flusso specifico da un endpoint Amazon VPC](#privatelink-streams-example-restrict-access-to-bucket)

### Esempio: limitazione dell’accesso a un flusso specifico da un endpoint Amazon VPC
<a name="privatelink-streams-example-restrict-access-to-bucket"></a>

È possibile creare una policy sugli endpoint che limita l’accesso solo a flussi DynamoDB specifici. Questo tipo di policy è utile se Servizi AWS nel tuo Amazon VPC ne hai altre che utilizzano DynamoDB Streams. La seguente policy sui flussi limita l’accesso solo al flusso `2025-02-20T11:22:33.444` collegato a `DOC-EXAMPLE-TABLE`. Per utilizzare questa policy sugli endpoint, sostituisci `DOC-EXAMPLE-TABLE` con il nome della tabella e `2025-02-20T11:22:33.444` con l’etichetta del flusso.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Id": "Policy1216114807515",
  "Statement": [
    { "Sid": "Access-to-specific-stream-only",
      "Principal": "*",
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:dynamodb:us-east-1:111122223333:table/table-name/stream/2025-02-20T11:22:33.444"]
    }
  ]
}
```

------

**Nota**  
Gli endpoint gateway non sono supportati nei flussi DynamoDB.

## Utilizzo degli endpoint DynamoDB con accesso privato Console di gestione AWS
<a name="ddb-streams-endpoints-private-access"></a>

È necessario configurare la configurazione DNS per DynamoDB e i flussi DynamoDB quando si utilizzano endpoint VPC con la [console DynamoDB](https://console.aws.amazon.com/dynamodb) nell’[Accesso privato alla Console di gestione AWS](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html).

Per configurare DynamoDB in modo che sia accessibile Console di gestione AWS in Private Access, è necessario creare i due endpoint VPC seguenti:
+ `com.amazonaws.<region>.dynamodb`
+ `com.amazonaws.<region>.dynamodb-streams`

Durante la creazione degli endpoint VPC, accedi alla console Route53 e crea una zona ospitata privata per DynamoDB utilizzando l’endpoint Regionale `dynamodb.us-east-1.amazonaws.com`.

Crea i seguenti due record di alias nella zona ospitata privata:
+ `dynamodb.<region>.amazonaws.com` che instrada il traffico verso l’endpoint VPC `com.amazonaws.<region>.dynamodb`.
+ `streams.dynamodb.<region>.amazonaws.com` che instrada il traffico verso l’endpoint VPC `com.amazonaws.<region>.dynamodb-streams`.

# Utilizzo AWS PrivateLink per DynamoDB Accelerator (DAX)
<a name="dax-private-link"></a>

AWS PrivateLink for DynamoDB Accelerator (DAX) consente di accedere in modo sicuro alla APIs gestione DAX, ad esempio `CreateCluster` `DeleteCluster` e tramite indirizzi IP privati`DescribeClusters`, all'interno del cloud privato virtuale (VPC). Questa funzionalità consente di accedere ai servizi DAX in modo privato dalle applicazioni senza esporre il traffico alla rete Internet pubblica.

DAX PrivateLink supporta gli endpoint dual-stack (), abilitando entrambi e la connettività. `dax.{region}.api.aws` IPv4 IPv6 Con AWS PrivateLink for DAX, i clienti possono accedere al servizio utilizzando nomi DNS privati. Il supporto dual-stack per endpoint garantisce una connettività trasparente mantenendo al contempo la privacy della rete. Ciò consente di accedere a DAX tramite Internet pubblico e endpoint VPC senza apportare modifiche alla configurazione dell'SDK.

## Considerazioni sull'utilizzo AWS PrivateLink per DynamoDB Accelerator (DAX)
<a name="dax-privatelink-considerations"></a>

Durante l'implementazione AWS PrivateLink di DynamoDB Accelerator (DAX), è necessario tenere conto di diverse considerazioni importanti.

Prima di configurare un endpoint di interfaccia per DAX, considerate quanto segue:
+ Gli endpoint dell'interfaccia DAX supportano solo l'accesso alla gestione DAX all'interno dello stesso. APIs Regione AWS Non è possibile utilizzare un endpoint di interfaccia per accedere alla gestione DAX in altre regioni. APIs 
+ Per accedere alla gestione Console di gestione AWS privata di DAX, potrebbe essere necessario creare endpoint VPC aggiuntivi per servizi simili e servizi correlati. `com.amazonaws.region.console`
+ La creazione e l'utilizzo di un endpoint di interfaccia verso DAX sono a pagamento. Per informazioni sui prezzi, consulta [Prezzi di AWS PrivateLink](https://aws.amazon.com/vpc/pricing/).

## Come AWS PrivateLink funziona con DAX
<a name="dax-privatelink-how-it-works"></a>

Quando si crea un endpoint di interfaccia per DAX:

1. AWS crea un'interfaccia di rete endpoint in ogni sottorete abilitata per l'endpoint dell'interfaccia.

1. Si tratta di interfacce di rete gestite dai richiedenti che fungono da punti di ingresso per il traffico destinato a DAX.

1. Puoi quindi accedere a DAX tramite indirizzi IP privati all'interno del tuo VPC.

1. Questa architettura consente di utilizzare i gruppi di sicurezza VPC per gestire l'accesso agli endpoint.

1. Le applicazioni possono accedere sia a DynamoDB che a DAX tramite i rispettivi endpoint di interfaccia all'interno di un VPC, permettendo anche alle applicazioni locali di connettersi tramite Direct Connect o VPN.

1. Ciò fornisce un modello di connettività coerente per entrambi i servizi, semplifica l'architettura e migliora la sicurezza mantenendo il traffico all'interno della rete. AWS 

## Creazione di endpoint di interfaccia per DAX
<a name="dax-privatelink-creating-endpoints"></a>

È possibile creare un endpoint di interfaccia per connettersi a DAX utilizzando l' Console di gestione AWS AWS SDK o l'API. CloudFormation AWS 

**Per creare un endpoint di interfaccia per DAX utilizzando la console**

1. Accedi alla console Amazon VPC all'indirizzo. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Nel pannello di navigazione, seleziona **Endpoints (Endpoint)**.

1. Scegliere **Create Endpoint** (Crea endpoint).

1. Per la **categoria del servizio**, scegli **Servizi AWS**e per **Nome del servizio**, cerca e seleziona`com.amazonaws.region.dax`.

1. Per **VPC, seleziona il VPC** da cui desideri accedere a DAX e per le **sottoreti, seleziona le sottoreti in cui verranno create** le interfacce di rete degli endpoint. AWS 

1. Per i **gruppi di sicurezza, seleziona o crea gruppi** di sicurezza da associare alle interfacce di rete degli endpoint.

1. Per **Policy**, mantieni l'**accesso completo** predefinito o personalizzalo secondo necessità.

1. Seleziona **Abilita nome DNS** per abilitare il DNS privato per l'endpoint. Mantieni abilitato il nome DNS privato per impedire modifiche alla configurazione dell'SDK. Se abilitato, le applicazioni possono continuare a utilizzare il nome DNS del servizio standard (esempio:). `dax.region.amazonaws.com` AWS crea una zona ospitata privata nel tuo VPC che risolve questo nome nell'indirizzo IP privato dell'endpoint.
**Nota**  
Se necessario, utilizzate i nomi DNS regionali. L'uso di nomi DNS zonali non è consigliato. Inoltre, seleziona 3 o più sottoreti AZs per garantire la massima disponibilità. PrivateLink

1. Seleziona **Crea endpoint**.

**Per creare un endpoint di interfaccia per DAX utilizzando AWS CLI**  
Utilizzare il `create-vpc-endpoint` comando con il `vpc-endpoint-type` parametro impostato su `Interface` e il `service-name` parametro impostato su. `com.amazonaws.region.dax`

```
aws ec2 create-vpc-endpoint \
    --vpc-id vpc-ec43eb89 \
    --vpc-endpoint-type Interface \
    --service-name com.amazonaws.us-east-1.dax \
    --subnet-ids subnet-abcd1234 subnet-1a2b3c4d \
    --security-group-ids sg-1a2b3c4d \
    --private-dns-enabled
```

## Risorse aggiuntive
<a name="dax-privatelink-resources"></a>

Per ulteriori informazioni sugli AWS PrivateLink endpoint VPC, consulta le seguenti risorse:
+ [AWS PrivateLink per DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html)
+ [AWS PrivateLink per DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/privatelink-streams.html)
+ [Connect il tuo VPC ai servizi utilizzando AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)
+ [Semplifica la connettività privata a DynamoDB con AWS PrivateLink](https://aws.amazon.com/blogs//database/simplify-private-connectivity-to-amazon-dynamodb-with-aws-privatelink)
+ [AWS PrivateLink Whitepaper](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-privatelink.html)

# Analisi della configurazione e delle vulnerabilità in Amazon DynamoDB
<a name="configuration-vulnerability"></a>

AWS gestisce le attività di sicurezza di base come l'applicazione di patch al sistema operativo (OS) guest e al database, la configurazione del firewall e il disaster recovery. Queste procedure sono state riviste e certificate dalle terze parti appropriate. Per ulteriori dettagli, consulta le seguenti risorse :
+ [Convalida della conformità per Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Compliance.html)
+ [Modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services: panoramica dei processi di sicurezza](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) (whitepaper)

Le best practice di sicurezza seguenti gestiscono anche l'analisi di configurazione e vulnerabilità in Amazon DynamoDB:
+ [Monitora la conformità di DynamoDB con Regole di AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#rules)
+ [Monitora la configurazione di DynamoDB con AWS Config](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices-security-detective.html#config)

# Best practice di sicurezza per Amazon DynamoDB
<a name="best-practices-security"></a>

Amazon DynamoDB fornisce una serie di caratteristiche di sicurezza che occorre valutare durante lo sviluppo e l'implementazione delle policy di sicurezza. Le seguenti best practice sono linee guida generali e non rappresentano una soluzione di sicurezza completa. Poiché queste best practice potrebbero non essere appropriate o sufficienti per l’ambiente, sono da considerare come considerazioni utili anziché prescrizioni.

**Topics**
+ [Best practice relative alla sicurezza di prevenzione di DynamoDB](best-practices-security-preventative.md)
+ [Best practice relative alla sicurezza di rilevamento di DynamoDB](best-practices-security-detective.md)

# Best practice relative alla sicurezza di prevenzione di DynamoDB
<a name="best-practices-security-preventative"></a>

Le seguenti best practice consentono di anticipare ed evitare incidenti di sicurezza in Amazon DynamoDB.

**Crittografia dei dati a riposo**  
DynamoDB esegue la crittografia dei dati a riposo per tutti i dati utente archiviati in tabelle, indici, flussi e backup utilizzando chiavi di crittografia archiviate in [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/). Questo fornisce un livello aggiuntivo di protezione dei dati dagli accessi non autorizzati allo storage sottostante.  
È possibile specificare se DynamoDB deve utilizzare Chiave di proprietà di AWS una chiave (tipo di crittografia predefinito), una o Chiave gestita da AWS una chiave gestita dal cliente per crittografare i dati degli utenti. Per ulteriori informazioni, consulta la sezione relativa alla [crittografia dei dati inattivi di Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html).

**Utilizzo di ruoli IAM per autenticare l'accesso a DynamoDB**  
Affinché utenti, applicazioni e altri AWS servizi possano accedere a DynamoDB, devono includere credenziali AWS valide nelle loro richieste API. AWS Non è necessario archiviare AWS le credenziali direttamente nell'applicazione o nell'istanza EC2. Si tratta di credenziali a lungo termine che non vengono automaticamente ruotate e, pertanto, potrebbero avere un impatto aziendale significativo se compromesse. Un ruolo IAM consente di ottenere chiavi di accesso temporanee che possono essere utilizzate per accedere a AWS servizi e risorse.  
Per ulteriori informazioni, consulta [Identity and Access Management per Amazon DynamoDB](security-iam.md).

**Utilizzo di policy IAM per autorizzazione di base di DynamoDB**  
Quando concedi le autorizzazioni, sei tu a decidere chi le ottiene, per quale DynamoDB APIs ottengono le autorizzazioni e le azioni specifiche che desideri consentire su tali risorse. L’implementazione del privilegio minimo è fondamentale per ridurre i rischi di sicurezza e l’impatto che può risultare da errori o intenzioni dannose.  
Collegare policy di autorizzazione a identità IAM (ovvero, utenti, gruppi e ruoli) e concedere in tal modo le autorizzazioni per eseguire operazioni su risorse DynamoDB.  
Puoi farlo usando quanto segue:  
+ [AWS Politiche gestite (predefinite)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-aws-managed)
+ [Policy gestite dal cliente](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-for-sdk-cli)

**Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi**  
Quando si concedono le autorizzazioni in DynamoDB, è possibile specificare le condizioni che determinano il modo in cui una policy di autorizzazioni viene applicata. L’implementazione del privilegio minimo è fondamentale per ridurre i rischi di sicurezza e l’impatto che può risultare da errori o intenzioni dannose.  
Puoi specificare le condizioni durante la concessione delle autorizzazioni utilizzando una policy IAM. Ad esempio, puoi eseguire le operazioni seguenti:  
+ 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.
 Per ulteriori informazioni, consulta [Utilizzo di condizioni di policy IAM per il controllo degli accessi fine-grained](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html).

**Utilizzo di un endpoint VPC e delle policy per accedere a DynamoDB**  
Se si richiede l'accesso a DynamoDB solo da un virtual private cloud (VPC), è necessario utilizzare un endpoint VPC per limitare l'accesso solo dal VPC richiesto. Questo impedisce che il traffico attraversi l'Internet aperto e che sia soggetto a tale ambiente.  
L'utilizzo di un endpoint VPC per DynamoDB consente di controllare e imitare l'accesso utilizzando quanto segue:  
+ Policy di endpoint VPC: queste policy vengono applicate all'endpoint VPC di DynamoDB. Consentono inoltre di controllare e limitare l'accesso API alla tabella DynamoDB.
+ Policy IAM: utilizzando la condizione `aws:sourceVpce` sulle policy collegate a utenti, gruppi o ruoli, è possibile imporre che tutti gli accessi alla tabella DynamoDB avvengano tramite l'endpoint VPC specificato.
 Per ulteriori informazioni, consulta [Endpoint per Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-ddb.html).

**Valutazione della crittografia lato client**  
Consigliamo di pianificare la strategia di crittografia prima di implementare la tabella in DynamoDB. Se archivi dati sensibili o riservati in DynamoDB, prendi in considerazione l'inclusione della crittografia lato client nel piano. In questo modo puoi crittografare i dati il più vicino possibile alla loro origine e garantirne la protezione per tutto il loro ciclo di vita. Grazie alla crittografia dei dati sensibili in transito e inattivi, puoi accertarti che i dati di testo non crittografato non siano disponibili per terze parti.   
 [AWS Database Encryption SDK for DynamoDB](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/what-is-ddb-encrypt.html) (SDK di crittografia del database AWS  per DynamoDB) è una libreria software che consente di proteggere i dati della tabella prima di inviarli a DynamoDB. Crittografa, firma, verifica e decrittografa gli elementi della tabella DynamoDB. L'utente controlla quali attributi sono crittografati e firmati.

**Considerazioni sulla chiave primaria**  
Non utilizzare nomi sensibili o dati sensibili in testo normale nella [chiave primaria](HowItWorks.Partitions.md) per la tabella e gli indici secondari globali. I nomi delle chiavi verranno visualizzati nella definizione della tabella. Ad esempio, i nomi delle chiavi primarie sono accessibili a chiunque disponga delle autorizzazioni per effettuare chiamate. [DescribeTable](WorkingWithTables.Basics.md#WorkingWithTables.Basics.DescribeTable) I valori delle chiavi possono essere visualizzati nei tuoi registri [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)e in altri. Inoltre, DynamoDB utilizza i valori chiave per distribuire i dati e instradare le richieste AWS e gli amministratori possono osservare i valori per mantenere l'integrità del servizio.  
Se è necessario utilizzare dati sensibili nella tabella o nei valori della chiave GSI, si consiglia di utilizzare la crittografia client. end-to-end Ciò consente di eseguire riferimenti chiave-valore ai dati garantendo al contempo che non appaiano mai non crittografati nei log relativi a DynamoDB. Un modo per farlo è utilizzare l’[AWS Database Encryption SDK for DynamoDB](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/client-server-side.html), sebbene non sia obbligatorio. In caso di utilizzo di una soluzione personalizzata, sarebbe sempre opportuno utilizzare un algoritmo di crittografia sufficientemente sicuro. Non è opportuno utilizzare un’opzione non crittografica come un hash, poiché nella maggior parte delle situazioni non sono considerate sufficientemente sicure.  
Se i nomi delle chiavi primarie sono sensibili, si consiglia di utilizzare invece ``pk`` e ``sk``. Questa è una best practice generale che lascia flessibile la progettazione della chiave di partizione.   
Consulta sempre i tuoi esperti di sicurezza o il team addetto all' AWS account se sei preoccupato sulla scelta giusta. 

# Best practice relative alla sicurezza di rilevamento di DynamoDB
<a name="best-practices-security-detective"></a>

Le best practice seguenti per Amazon DynamoDB consentono di rilevare potenziali debolezze e incidenti di sicurezza.

**Utilizzalo AWS CloudTrail per monitorare l'utilizzo delle chiavi KMS AWS gestite**  
Se si utilizza un file [Chiave gestita da AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)per la crittografia a riposo, viene registrato l'utilizzo di questa chiave. AWS CloudTrail CloudTrail fornisce visibilità sull'attività degli utenti registrando le azioni intraprese sul tuo account. CloudTrail registra informazioni importanti su ogni azione, tra cui chi ha effettuato la richiesta, i servizi utilizzati, le azioni eseguite, i parametri delle azioni e gli elementi di risposta restituiti dal AWS servizio. Queste informazioni aiutano a tenere traccia delle modifiche apportate alle AWS risorse e a risolvere i problemi operativi. CloudTrail semplifica la garanzia della conformità alle politiche interne e agli standard normativi.  
È possibile utilizzare CloudTrail per controllare l'utilizzo delle chiavi. CloudTrail crea file di registro che contengono una cronologia delle chiamate AWS API e degli eventi correlati per il tuo account. Questi file di registro includono tutte le richieste AWS KMS API effettuate utilizzando gli strumenti da riga di comando e quelle effettuate tramite AWS servizi integrati. Console di gestione AWS AWS SDKs Puoi utilizzare questi file di log per ottenere informazioni su quando la chiave KMS è stata usata, l'operazione richiesta, l'identità del richiedente, l'indirizzo IP da cui proviene la richiesta e così via. Per ulteriori informazioni, consulta [Registrazione di chiamate API di AWS KMS con AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) nella [Guida per l'utente di AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

**Monitora le operazioni di DynamoDB utilizzando CloudTrail**  
CloudTrail può monitorare sia gli eventi del piano di controllo che gli eventi del piano dati. Le operazioni del piano di controllo consentono di creare e gestire le tabelle DynamoDB. Ti permettono anche di utilizzare indici, flussi e altri oggetti che dipendono dalle tabelle. Le operazioni del piano dati consentono di eseguire operazioni di creazione, lettura, aggiornamento ed eliminazione (chiamate anche *CRUD*) sui dati in una tabella. Alcune operazioni del piano dati consentono inoltre di leggere i dati da un indice secondario. Per abilitare la registrazione degli eventi del piano dati CloudTrail, è necessario abilitare la registrazione dell'attività dell'API del piano dati in. CloudTrail Per ulteriori informazioni, consulta [Logging data events for trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html).  
Quando si verifica un'attività in DynamoDB, tale attività viene registrata in CloudTrail un evento insieme ad AWS altri eventi di servizio nella cronologia degli eventi. Per ulteriori informazioni, consulta [Registrazione delle operazioni di DynamoDB con AWS CloudTrail](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/logging-using-cloudtrail.html). Puoi visualizzare, cercare e scaricare gli eventi recenti nel tuo AWS account. Per ulteriori informazioni, consulta [Visualizzazione degli eventi con cronologia degli CloudTrail eventi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) nella *Guida AWS CloudTrail per l'utente*.  
[Per una registrazione continua degli eventi nel tuo AWS account, inclusi gli eventi per DynamoDB, crea un percorso.](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) Un trail consente di CloudTrail inviare file di log a un bucket Amazon Simple Storage Service (Amazon S3). Per impostazione predefinita, quando crei un percorso sulla console, il percorso si applica a tutte le AWS regioni. Il percorso registra gli eventi di tutte le regioni nella partizione AWS e distribuisce i file di log nel bucket S3 specificato. Inoltre, è possibile configurare altri AWS servizi per analizzare ulteriormente e agire in base ai dati sugli eventi raccolti nei CloudTrail log.

**Utilizzo di DynamoDB Streams per monitorare le operazioni del piano dati**  
DynamoDB è integrato AWS Lambda in modo da poter creare trigger, parti di codice che rispondono automaticamente agli eventi in DynamoDB Streams. Con i trigger è possibile creare applicazioni che rispondono alle modifiche di dati nelle tabelle DynamoDB.  
Se si abilita DynamoDB Streams su una tabella, è possibile associare l'Amazon Resource Name (ARN) del flusso a una funzione Lambda da te scritta. Immediatamente dopo la modifica di un elemento della tabella, viene visualizzato un nuovo record nello stream della tabella. AWS Lambda interroga lo stream e richiama la funzione Lambda in modo sincrono quando rileva nuovi record di stream. La funzione Lambda può eseguire qualsiasi operazione specificata, come l'invio di una notifica o l'inizializzazione di un flusso di lavoro.  
Per un esempio, consulta [Tutorial: utilizzo di AWS Lambda con Amazon DynamoDB Streams](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb-example.html). Questo esempio riceve l'input di un evento DynamoDB, elabora i messaggi in esso contenuti e scrive alcuni dei dati degli eventi in entrata su Amazon Logs. CloudWatch 

**Monitora la configurazione di DynamoDB con AWS Config**  
Grazie a [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html), puoi monitorare continuamente e registrare le modifiche alla configurazione delle risorse AWS . Puoi anche usarla AWS Config per inventariare le tue AWS risorse. Quando viene rilevata una modifica rispetto a uno stato precedente, è possibile distribuire una notifica di Amazon Simple Notification Service (Amazon SNS) in modo che possa essere rivista e si possa intervenire. Segui le indicazioni in [Configurazione AWS Config con la console](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html), assicurandoti che i tipi di risorse DynamoDB siano inclusi.  
Puoi configurare lo streaming delle modifiche AWS Config alla configurazione e delle notifiche su un argomento di Amazon SNS. Ad esempio, quando una risorsa viene aggiornata, puoi ricevere una notifica al tuo indirizzo email, in modo che tu possa visualizzare tali modifiche. Puoi anche ricevere notifiche quando AWS Config valuti le tue regole personalizzate o gestite rispetto alle tue risorse.  
Per un esempio, consulta l'[argomento Notifiche AWS Config inviate a un Amazon SNS](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html) nella *AWS Config Developer* Guide.

**Monitora la conformità di DynamoDB alle regole AWS Config **  
AWS Config monitora continuamente le modifiche alla configurazione che si verificano tra le tue risorse. controllando se queste modifiche violano eventuali condizioni nelle regole. Se una risorsa viola una regola, AWS Config contrassegna la risorsa e la regola come non conformi.  
Utilizzando AWS Config per valutare le configurazioni delle risorse, è possibile valutare la conformità delle configurazioni delle risorse alle pratiche interne, alle linee guida del settore e alle normative. AWS Config fornisce [regole AWS gestite](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html), che sono regole predefinite e personalizzabili che vengono AWS Config utilizzate per valutare se le AWS risorse sono conformi alle migliori pratiche comuni.

**Assegnazione di tag alle risorse DynamoDB per identificazione e automazione**  
Puoi assegnare metadati alle tue AWS risorse sotto forma di tag. Ogni tag è una semplice etichetta composta da una chiave definita dal cliente e un valore facoltativo che può semplificare la gestione, la ricerca e il filtro delle risorse.   
Il tagging consente l’implementazione di gruppi controllati. Anche se non ci sono tipi di tag inerenti, è possibile suddividere le risorse in base a scopo, proprietario, ambiente o altri criteri. Di seguito vengono mostrati alcuni esempi:  
+ Sicurezza - Utilizzato per determinare requisiti quali la crittografia.
+ Riservatezza - Un identificatore per il livello di riservatezza dei dati specifico supportato da una risorsa.
+ Ambiente: utilizzato per differenziare tra infrastruttura di sviluppo, test e produzione.
Per ulteriori informazioni, consulta [Strategie di assegnazione di tag di AWS](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) e [Assegnazione di tag per DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html).

**Monitora l'utilizzo di Amazon DynamoDB in relazione alle best practice di sicurezza utilizzando. AWS Security Hub CSPM**  
Security Hub CSPM utilizza i controlli di sicurezza per valutare le configurazioni delle risorse e gli standard di sicurezza per aiutarti a rispettare vari framework di conformità.  
[https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html](https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html)