Configurazione dell'accesso multi-account in Amazon DynamoDB - Prontuario AWS

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

Creato da Shashi Dalmia (AWS), Esteban Serna Parra () e Imhoertha Ojior () AWS AWS

Ambiente: produzione

Tecnologie: database; sicurezza, identità, conformità

AWSservizi: Amazon DynamoDBAWS; Identity and Access Management; Lambda AWS

Riepilogo

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 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à (). AWS Identity and Access Management IAM Ciò comporta l'impostazione delle IAM autorizzazioni 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 tra account. Questo modello fornisce passaggi e codice di esempio per dimostrare come configurare AWS Lambda le funzioni in un'unica soluzione Account AWS per scrivere dati in una tabella di database DynamoDB in un account diverso.

Prerequisiti e limitazioni

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 e configurato per accedere all'Account A, per creare la tabella DynamoDB. Gli altri passaggi di questo modello forniscono istruzioni per l'uso delle console IAM DynamoDB e Lambda. Se AWS CLI invece intendi utilizzarla, configurala per accedere a entrambi gli account.

Limitazioni

Architettura

Il diagramma seguente mostra un'architettura a account singolo. AWS Lambda, Amazon Elastic Compute Cloud (AmazonEC2) 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à IAM in, oppure puoi creare una policy basata sulle risorse in DynamoDB.

Utilizzo IAM delle autorizzazioni per accedere a una tabella DynamoDB nello stesso account.

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.

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'Account B.

Strumenti

Servizi AWS

  • Amazon DynamoDB è un servizio di database SQL No completamente gestito che offre prestazioni veloci, prevedibili e scalabili.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • AWS Lambda è 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 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

Epiche

AttivitàDescrizioneCompetenze richieste

Crea una politica nell'Account B.

Questo IAM criterio consente l'PutItemazione per una tabella DynamoDB nell'Account A.

  1. Accedere all'Account A nel. AWS Management Console

  2. Apri la IAMconsole.

  3. Nel riquadro di navigazione, seleziona Policy e quindi Crea policy.

  4. Nella pagina Specificare le autorizzazioni, per l'editor delle politiche, selezionare JSON.

  5. Immetti la seguente policy.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A" } ] }
  6. Sostituisci <Region> e <Account-A-ID> con i tuoi valori, quindi scegli Avanti.

  7. Per Nome della politica, inserisci un nome univoco per la tua politica, ad esempioDynamoDB-PutItem-Policy.

  8. (Facoltativo) Aggiungi una descrizione della politica.

  9. Scegli Create Policy (Crea policy).

Generale AWS

Crea un ruolo nell'account B.

La funzione Lambda nell'account B utilizza questo IAM ruolo per accedere alla tabella DynamoDB nell'account A.

  1. Apri la console. IAM

  2. Nel riquadro di navigazione, scegli Ruoli e quindi Crea ruolo.

  3. In Select trusted entity (Seleziona entità attendibile), scegli Servizio AWS.

  4. Nella sezione Caso d'uso, scegli Lambda.

  5. Scegli Successivo: autorizzazioni.

  6. Nella casella Politiche di filtro, inserisci DynamoDB.

  7. Nell'elenco delle politiche di DynamoDB, scegli. DynamoDB-PutItem-Policy

  8. Deseleziona la casella Politiche di filtro, quindi inserisci Lambda.

  9. Nell'elenco delle politiche Lambda, scegli. AWSLambdaExecute

  10. Scegli Avanti: assegna un nome, rivedi e crea.

  11. Per Nome ruolo, inserisci un nome univoco per il ruolo, ad esempio DynamoDB-PutItemAccess.

  12. (Facoltativo) Aggiungi una descrizione del ruolo.

  13. (Facoltativo) Aggiungi metadati al ruolo collegando i tag come coppie chiave-valore.

  14. Scegliere Crea ruolo.

Per ulteriori informazioni sulla creazione di ruoli, consulta la IAMdocumentazione.

Generale AWS

Nota il ruoloARN.

  1. Apri la IAMconsole.

  2. Nel riquadro di navigazione, seleziona Ruoli.

  3. Nella casella di ricerca, immetteteDynamoDB-PutItemAccess, quindi scegliete il ruolo.

  4. Nella pagina di riepilogo del ruolo, copia Amazon Resource Name (ARN). Si utilizza il ARN quando si configura la funzione Lambda.

Generale AWS
AttivitàDescrizioneCompetenze richieste

Creazione di una tabella DynamoDB

Utilizzate il seguente AWS CLI comando per creare una tabella DynamoDB.

aws dynamodb create-table \ --table-name Table-Account-A \ --attribute-definitions \ AttributeName=category,AttributeType=S \ AttributeName=item,AttributeType=S \ --key-schema \ AttributeName=category,KeyType=HASH \ AttributeName=item,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=5,WriteCapacityUnits=5 \ --resource-policy \ '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<Account-B-ID>:role/<Role-Name>" }, "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<Region>:<Account-A-ID>:table/Table-Account-A" } ] }'

Sostituisci quanto segue in questo esempio di codice:

  • <Account-B-ID>è l'ID dell'account B.

  • <Role-Name>è il nome del IAM ruolo che hai creato, ad esempioDynamoDB-PutItemAccess.

  • <Region>è il Regione AWS punto in cui si crea la tabella DynamoDB.

  • <Account-A-ID>è l'ID dell'account A.

Nota: si specifica la configurazione della politica basata sulle risorse nell'create-tableistruzione utilizzando il flag. --resource-policy Questa politica si riferisce alla tabella ARN DynamoDB nell'Account A.

Per ulteriori informazioni sulla creazione di tabelle, consulta la documentazione di DynamoDB.

Generale AWS
AttivitàDescrizioneCompetenze richieste

Crea una funzione Lambda per scrivere dati su DynamoDB.

  1. Accedi all'account B in. AWS Management Console

  2. Aprire la console Lambda.

  3. Nel riquadro di navigazione, scegli Funzioni, quindi scegli Crea funzione.

  4. Per Nome, immetti lambda_write_function.

  5. Per Runtime, scegli Python 3.8 o versione successiva.

  6. In Modifica il ruolo di esecuzione predefinito, scegli Usa un ruolo esistente.

  7. Per Ruolo esistente, scegli il IAM ruolo che hai creato, ad esempioDynamoDB-PutItemAccess.

  8. Scegli Crea funzione.

  9. Nella scheda Codice, incolla il codice di esempio fornito nella sezione Informazioni aggiuntive di questo modello. Sostituisci quanto segue in questo esempio di codice:

    • <Account-A-ID>è l'ID dell'account A.

    • <Region>è il Regione AWS luogo in cui è stata creata la tabella DynamoDB.

  10. Scegliere Deploy (Implementa).

  11. Scegli Test (Esegui test). Questo richiede di configurare un evento di test. Crea un nuovo evento con il tuo nome preferito, ad esempioMyTestEventForWrite, e quindi salva la configurazione.

  12. Scegliere Test di nuovo. Viene eseguita la funzione Lambda con il nome dell'evento fornito.

  13. Controllate l'output della funzione. Dovrebbe indicare che la funzione ha avuto accesso alla tabella DynamoDB nell'Account A ed è stata in grado di scrivervi dati.

Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta la documentazione Lambda.

Informazioni generali AWS
AttivitàDescrizioneCompetenze richieste

Eliminare risorse.

Per evitare di incorrere in costi associati alle risorse create in questo schema, procedi come segue per eliminare tali risorse:

  1. Nell'Account B, elimina la funzione Lambda che hai creato per connetterti a DynamoDB. Per istruzioni, consulta la documentazione di Lambda.

  2. Nell'Account A, elimina la tabella DynamoDB che hai creato. Per istruzioni, consulta la documentazione di DynamoDB.

  3. Per le migliori pratiche di sicurezza, elimina la IAM policy (DynamoDB-PutItem-Policy) quando non è più necessaria. Per ulteriori informazioni, consulta la IAMdocumentazione.

  4. Per le migliori pratiche di sicurezza, elimina il IAM ruolo (DynamoDB-PutItemAccess) quando non è più necessario. Per ulteriori informazioni, consulta la IAMdocumentazione.

Generale AWS

Risoluzione dei problemi

ProblemaSoluzione

Quando si crea la funzione Lambda, viene visualizzato un ResourceNotFoundException errore.

Conferma di aver inserito correttamente l'ID Regione AWS e l'ID dell'account A. Questi fanno parte della tabella ARN per DynamoDB.

Risorse correlate

Informazioni aggiuntive

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 fornita la tabella DynamoDB anziché il nome ARN della tabella. Ciò è necessario affinché la funzione Lambda si connetta alla tabella DynamoDB corretta durante l'esecuzione.