

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

# Configurazione dell'accesso multi-account in Amazon DynamoDB
<a name="configure-cross-account-access-to-amazon-dynamodb"></a>

*Shashi Dalmia, Imhortha Ojior e Esteban Serna Parra, Amazon Web Services*

## Riepilogo
<a name="configure-cross-account-access-to-amazon-dynamodb-summary"></a>

Questo modello spiega i passaggi per configurare l'accesso tra account diversi ad Amazon DynamoDB utilizzando policy basate sulle risorse. Per i carichi di lavoro che utilizzano DynamoDB, sta diventando sempre più comune [utilizzare strategie di isolamento del carico di lavoro](https://aws.amazon.com/solutions/guidance/workload-isolation-on-aws/?did=sl_card&trk=sl_card) per ridurre al minimo le minacce alla sicurezza e soddisfare i requisiti di conformità. L'implementazione di strategie di isolamento del carico di lavoro spesso richiede l'accesso tra account e regioni diverse alle risorse DynamoDB utilizzando policy basate sull'identità (IAM). AWS Identity and Access Management Ciò comporta l'impostazione delle autorizzazioni IAM e la creazione di una relazione di fiducia tra. Account AWS

Le policy [basate sulle risorse per DynamoDB semplificano notevolmente il livello di sicurezza per i carichi di lavoro](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html) tra account. Questo modello fornisce passaggi e codice di esempio per dimostrare come configurare AWS Lambda le funzioni in una sola Account AWS per scrivere dati su una tabella di database DynamoDB in un account diverso.

## Prerequisiti e limitazioni
<a name="configure-cross-account-access-to-amazon-dynamodb-prereqs"></a>

**Prerequisiti**
+ Due attivi. Account AWS Questo modello si riferisce a questi conti come *Account A* e *Account B.*
+ AWS Command Line Interface (AWS CLI) [installato](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurato](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) per accedere all'Account A, per creare la tabella DynamoDB. Gli altri passaggi di questo modello forniscono istruzioni per l'utilizzo delle console IAM, DynamoDB e Lambda. Se AWS CLI invece intendi utilizzarla, configurala per accedere a entrambi gli account.

**Limitazioni**
+ Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità per regione, vedi [Servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta la pagina [Endpoint e quote del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

## Architecture
<a name="configure-cross-account-access-to-amazon-dynamodb-architecture"></a>

Il diagramma seguente mostra un'architettura a account singolo. AWS Lambda, Amazon Elastic Compute Cloud (Amazon EC2) e DynamoDB si trovano tutti nello stesso account. In questo scenario, le funzioni Lambda e le EC2 istanze Amazon possono accedere a DynamoDB. Per concedere l'accesso alla tabella DynamoDB, puoi creare una policy basata sull'identità in IAM oppure puoi creare una policy basata sulle risorse in DynamoDB.

![\[Utilizzo delle autorizzazioni IAM per accedere a una tabella DynamoDB nello stesso account.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/bfc32fe8-5db0-4cac-a30f-b870a1a82875/images/cbb009eb-422d-4833-a1bc-0c571d83c21f.png)


Il diagramma seguente mostra un'architettura multi-account. Se le risorse di una tabella Account AWS richiedono l'accesso a una tabella DynamoDB in un account diverso, è necessario impostare una policy basata sulle risorse in DynamoDB per concedere l'accesso richiesto. Ad esempio, nel diagramma seguente, l'accesso alla tabella DynamoDB nell'Account A viene concesso a una funzione Lambda nell'Account B utilizzando una politica basata sulle risorse.

![\[Utilizzo di una policy basata sulle risorse per accedere a una tabella DynamoDB in un account diverso.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/bfc32fe8-5db0-4cac-a30f-b870a1a82875/images/9f9165a8-b767-4427-a2ae-31b5b8c83326.png)


Questo modello descrive l'accesso tra più account tra Lambda e DynamoDB. È possibile utilizzare passaggi simili per altri Servizi AWS se le autorizzazioni appropriate sono configurate su entrambi gli account. [Ad esempio, se desideri fornire a una funzione Lambda l'accesso a un bucket Amazon Simple Storage Service (Amazon S3) nell'Account A, puoi creare una [policy basata sulle risorse in Amazon S3 e aggiungere le autorizzazioni al ruolo di esecuzione Lambda nell'](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)Account B.](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)

## Tools (Strumenti)
<a name="configure-cross-account-access-to-amazon-dynamodb-tools"></a>

**Servizi AWS**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.

**Codice**

Questo modello include un codice di esempio nella sezione [Informazioni aggiuntive](#configure-cross-account-access-to-amazon-dynamodb-additional) per mostrare come configurare una funzione Lambda nell'Account B per scrivere nella tabella DynamoDB nell'Account A. Il codice viene fornito solo a scopo illustrativo e di test. Se stai implementando questo pattern in un ambiente di produzione, usa il codice come riferimento e personalizzalo per il tuo ambiente.

## Best practice
<a name="configure-cross-account-access-to-amazon-dynamodb-best-practices"></a>
+ Segui le [best practice per le policy basate sulle risorse](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-best-practices.html) nella documentazione di DynamoDB.
+ Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le [best practice relative alla [concessione dei privilegi minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e alla sicurezza nella documentazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM.

## Epiche
<a name="configure-cross-account-access-to-amazon-dynamodb-epics"></a>

### Creare una policy e un ruolo IAM per la funzione Lambda nell'Account B
<a name="create-an-iam-policy-and-role-for-the-lam-function-in-account-b"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una politica nell'Account B. | Questa policy IAM consente l'[PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)azione per una tabella DynamoDB nell'Account A.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) | Informazioni generali su AWS | 
| Crea un ruolo nell'account B. | La funzione Lambda nell'Account B utilizza questo ruolo IAM per accedere alla tabella DynamoDB nell'Account A.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html)Per ulteriori informazioni sulla creazione di ruoli, consulta la [documentazione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). | Informazioni generali su AWS | 
| Nota l'ARN del ruolo . | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) | Informazioni generali su AWS | 

### Creare una tabella DynamoDB nell'account A
<a name="create-a-ddb-table-in-account-a"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una tabella DynamoDB. | Utilizzate il seguente AWS CLI comando per creare una tabella DynamoDB.<pre> aws dynamodb create-table \<br />    --table-name Table-Account-A \<br />    --attribute-definitions \<br />      AttributeName=category,AttributeType=S \<br />      AttributeName=item,AttributeType=S \<br />    --key-schema \<br />      AttributeName=category,KeyType=HASH \<br />      AttributeName=item,KeyType=RANGE \<br />    --provisioned-throughput \<br />      ReadCapacityUnits=5,WriteCapacityUnits=5 \<br />    --resource-policy \<br />      '{         <br />          "Version": "2012-10-17",		 	 	 <br />          "Statement": [<br />            {                    <br />               "Sid": "Statement1",<br />               "Effect": "Allow",<br />               "Principal": {<br />                  "AWS": "arn:aws:iam::<Account-B-ID>:role/<Role-Name>"<br />               },<br />               "Action": "dynamodb:PutItem",<br />               "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A"<br />            }            <br />         ]<br />      }'</pre>Sostituisci quanto segue in questo esempio di codice:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html)Si specifica la configurazione della politica basata sulle risorse nell'`create-table`istruzione utilizzando il flag. `--resource-policy` Questa politica si riferisce all'ARN per la tabella DynamoDB nell'account A.Per ulteriori informazioni sulla creazione di tabelle, consulta la documentazione di [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html). | Informazioni generali su AWS | 

### Creare una funzione Lambda nell'account B
<a name="create-a-lam-function-in-account-b"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea una funzione Lambda per scrivere dati su DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html)[Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta la documentazione Lambda.](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html) | Informazioni generali su AWS | 

### Eliminazione
<a name="clean-up"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eliminare le risorse . | Per evitare di incorrere nei costi associati alle risorse create secondo questo schema, procedi come segue per eliminare tali risorse:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-cross-account-access-to-amazon-dynamodb.html) | Informazioni generali su AWS | 

## risoluzione dei problemi
<a name="configure-cross-account-access-to-amazon-dynamodb-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Quando si crea la funzione Lambda, viene visualizzato un `ResourceNotFoundException` errore. | Conferma di aver inserito correttamente l'ID Regione AWS e dell'account A. Questi fanno parte dell'ARN per la tabella DynamoDB. | 

## Risorse correlate
<a name="configure-cross-account-access-to-amazon-dynamodb-resources"></a>
+ [Guida introduttiva a DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html) (documentazione su DynamoDB)
+ [Guida introduttiva a Lambda (documentazione](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) Lambda)
+ [Utilizzo di policy basate sulle risorse per DynamoDB (documentazione DynamoDB)](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-resource-based.html)
+ [Creazione di politiche IAM (documentazione IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)
+ [Logica di valutazione delle politiche tra account](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) (documentazione IAM)
+ [Riferimento agli elementi della policy IAM JSON (documentazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) IAM)

## Informazioni aggiuntive
<a name="configure-cross-account-access-to-amazon-dynamodb-additional"></a>

*Codice di esempio*

```
import boto3
from datetime import datetime

dynamodb_client = boto3.client('dynamodb')

def lambda_handler(event, context):
     now = datetime.now().isoformat()
     data = dynamodb_client.put_item(TableName='arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A', Item={"category": {"S": "Fruit"},"item": {"S": "Apple"},"time": {"S": now}})
     return data
```

**Nota**  
Quando viene creata un'istanza del client DynamoDB, viene fornito l'ARN della tabella DynamoDB anziché il nome della tabella. Ciò è necessario affinché la funzione Lambda si connetta alla tabella DynamoDB corretta durante l'esecuzione.