Sicurezza per tabelle globali DynamoDB - Amazon DynamoDB

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 per tabelle globali DynamoDB

Le repliche delle tabelle globali sono tabelle DynamoDB, quindi si utilizzano gli stessi metodi per controllare l'accesso alle repliche utilizzati per le tabelle a regione singola, AWS Identity and Access Management incluse le politiche di identità (IAM) e le politiche basate sulle risorse. Questo argomento spiega come proteggere le tabelle globali multi-account DynamoDB utilizzando le autorizzazioni AWS Key Management Service IAM e la crittografia ().AWS KMS Scopri le politiche basate sulle risorse e i ruoli collegati ai servizi (SLR) che consentono la replica e l'auto-scaling tra account tra più regioni, le autorizzazioni IAM necessarie per creare, aggiornare ed eliminare tabelle globali, per le tabelle MREC (Multi-Region Eventual Consistency). Scopri anche le chiavi di crittografia per gestire la replica tra regioni in modo sicuro. AWS KMS

Fornisce informazioni dettagliate sulle politiche e le autorizzazioni basate sulle risorse necessarie per stabilire la replica delle tabelle tra account e regioni. La comprensione di questo modello di sicurezza è fondamentale per i clienti che devono implementare soluzioni di replica dei dati sicure e tra più account.

Autorizzazione principale del servizio per la replica

Le tabelle globali multi-account di DynamoDB utilizzano un approccio di autorizzazione distinto perché la replica viene eseguita oltre i confini degli account. Questa operazione viene eseguita utilizzando il principio del servizio di replica di DynamoDB:. replication.dynamodb.amazonaws.com Ogni account partecipante deve consentire esplicitamente tale principale nella politica delle risorse della tabella di replica, assegnandole autorizzazioni che possono essere limitate a repliche specifiche in base alle condizioni del contesto di origine su chiavi come aws:SourceAccountaws:SourceArn, ecc. — vedi le chiavi di condizione globali per maggiori dettagli.AWS Le autorizzazioni sono bidirezionali, il che significa che tutte le repliche devono concedersi esplicitamente le autorizzazioni reciproche prima di poter stabilire la replica su una particolare coppia di repliche.

Le seguenti autorizzazioni principali del servizio sono essenziali per la replica tra account:

  • dynamodb:ReadDataForReplicationgarantisce la capacità di leggere i dati per scopi di replica. Questa autorizzazione consente di leggere e propagare le modifiche in una replica ad altre repliche.

  • dynamodb:WriteDataForReplicationconsente la scrittura di dati replicati nelle tabelle di destinazione. Questa autorizzazione consente di sincronizzare le modifiche su tutte le repliche nella tabella globale.

  • dynamodb:ReplicateSettingsconsente la sincronizzazione delle impostazioni delle tabelle tra le repliche, fornendo una configurazione coerente su tutte le tabelle partecipanti.

Ogni replica deve concedere le autorizzazioni di cui sopra a tutte le altre repliche e a se stessa, ovvero le condizioni del contesto di origine devono includere l'intero set di repliche che comprende la tabella globale. Queste autorizzazioni vengono verificate per ogni nuova replica quando viene aggiunta a una tabella globale con più account. Ciò verifica che le operazioni di replica vengano eseguite solo dal servizio DynamoDB autorizzato e solo tra le tabelle previste.

Ruoli collegati ai servizi per tabelle globali con più account

Le tabelle globali multi-account di DynamoDB replicano le impostazioni su tutte le repliche in modo che ogni replica sia configurata in modo identico con un throughput costante e offra un'esperienza di failover senza interruzioni. La replica delle impostazioni è controllata tramite l'ReplicateSettingsautorizzazione del responsabile del servizio, ma ci affidiamo anche ai ruoli collegati al servizio (SLRs) per gestire determinate funzionalità di replica e di auto-scaling tra account. Questi ruoli vengono configurati solo una volta per account. AWS Una volta creati, gli stessi ruoli servono a tutte le tabelle globali del tuo account. Per ulteriori informazioni sui ruoli collegati ai servizi, consulta Using service-linked roles nella IAM User Guide.

Ruolo collegato al servizio di gestione delle impostazioni

Amazon DynamoDB crea automaticamente il ruolo collegato AWSService RoleForDynamo DBGlobal TableSettingsManagement al servizio (SLR) quando crei la prima replica di tabella globale multi-account nell'account. Questo ruolo gestisce automaticamente la replica delle impostazioni tra account e regioni diverse.

Quando applicate politiche basate sulle risorse alle repliche, verificate di non negare nessuna delle autorizzazioni definite nel principio SLR, poiché ciò potrebbe interferire con la AWSServiceRoleForDynamoDBGlobalTableSettingsManagement gestione delle impostazioni e compromettere la replica se il throughput non corrisponde tra le repliche o. GSIs Se negate le autorizzazioni SLR richieste, la replica da e verso le repliche interessate potrebbe interrompersi e lo stato della tabella di replica cambierà in. REPLICATION_NOT_AUTHORIZED Per le tabelle globali con più account, se una replica rimane nello REPLICATION_NOT_AUTHORIZED stato per più di 20 ore, viene convertita in modo irreversibile in una tabella DynamoDB a regione singola. La SLR dispone delle seguenti autorizzazioni:

  • application-autoscaling:DeleteScalingPolicy

  • application-autoscaling:DescribeScalableTargets

  • application-autoscaling:DescribeScalingPolicies

  • application-autoscaling:DeregisterScalableTarget

  • application-autoscaling:PutScalingPolicy

  • application-autoscaling:RegisterScalableTarget

Dimensionamento automatico del ruolo collegato al servizio

Quando si configura una tabella globale per la modalità di capacità fornita, è necessario configurare la scalabilità automatica per la tabella globale. La scalabilità automatica di DynamoDB utilizza il servizio Application AWS Auto Scaling per regolare dinamicamente la capacità di throughput assegnata sulle repliche di tabelle globali. Il servizio Application Auto Scaling crea un ruolo collegato al servizio (SLR) denominato. AWSServiceRoleForApplicationAutoScaling_DynamoDBTable Questo ruolo collegato al servizio viene creato automaticamente nel tuo AWS account quando configuri per la prima volta la scalabilità automatica per una tabella DynamoDB. Consente ad Application Auto Scaling di gestire la capacità delle tabelle assegnata e creare allarmi. CloudWatch

Quando si applicano politiche basate sulle risorse alle repliche, verificate di non negare alcuna autorizzazione definita nella Policy al principale AWSApplicationAutoscalingDynamoDBTableApplication Auto Scaling SLR, poiché ciò interromperà la funzionalità di auto-scaling.

In che modo le tabelle globali utilizzano IAM AWS

Le sezioni seguenti descrivono le autorizzazioni richieste per le diverse operazioni sulle tabelle globali e forniscono esempi di policy per aiutarti a configurare l'accesso appropriato per utenti e applicazioni.

Nota

Tutte le autorizzazioni descritte devono essere applicate alla risorsa della tabella ARN specifica nelle regioni interessate. La risorsa della tabella ARN segue il formatoarn:aws:dynamodb:region:account-id:table/table-name, in cui è necessario specificare i valori effettivi della regione, dell'ID dell'account e del nome della tabella.

Di seguito sono riportati gli step-by-step argomenti trattati nelle sezioni seguenti:

  • Creazione di tabelle globali multi-account e aggiunta di repliche

  • Aggiornamento di una tabella globale con più account

  • Eliminazione di tabelle globali e rimozione di repliche

Creazione di tabelle globali e aggiunta di repliche

Autorizzazioni per la creazione di tabelle globali

Quando una nuova replica viene aggiunta a una tabella regionale per formare una tabella globale multi-account o a una tabella globale multi-account esistente, il principale IAM che esegue l'azione deve essere autorizzato da tutti i membri esistenti. Affinché l'aggiunta della replica abbia esito positivo, tutti i membri esistenti devono fornire la seguente autorizzazione nella politica della tabella:

  • dynamodb:AssociateTableReplica- Questa autorizzazione consente di unire le tabelle in una configurazione di tabella globale. Questa è l'autorizzazione fondamentale che consente la creazione iniziale della relazione di replica.

Questo controllo preciso consente solo agli account autorizzati di partecipare alla configurazione globale della tabella.

Esempi di politiche IAM per la creazione di tabelle globali

La configurazione delle tabelle globali multi-account segue un flusso di autorizzazione specifico che fornisce una replica sicura. Esaminiamo come funziona in pratica descrivendo uno scenario pratico in cui un cliente desidera creare una tabella globale con due repliche. La prima replica (replicaA) risiede nell'account A nella regione ap-east-1, mentre la seconda replica (replicaB) si trova nell'account B nella regione eu-south-1.

  • Nell'account di origine (Account A), il processo inizia con la creazione della tabella di replica primaria. L'amministratore dell'account deve allegare a questa tabella una politica basata sulle risorse che conceda esplicitamente le autorizzazioni necessarie all'account di destinazione (account B) per eseguire l'associazione. Questa policy autorizza inoltre il servizio di replica DynamoDB a eseguire azioni di replica essenziali.

  • L'account di destinazione (Account B) segue un processo simile allegando una politica corrispondente basata sulle risorse durante la creazione della replica e facendo riferimento all'ARN della tabella di origine da utilizzare per creare la replica. Questa politica rispecchia le autorizzazioni concesse dall'Account A, creando una relazione bidirezionale affidabile. Prima di stabilire la replica, DynamoDB convalida queste autorizzazioni tra account per verificare che l'autorizzazione sia corretta.

Per stabilire questa configurazione:

  • L'amministratore dell'Account A deve prima allegare la policy basata sulle risorse a ReplicaA. Questa policy concede esplicitamente le autorizzazioni necessarie all'Account B e al servizio di replica DynamoDB.

  • Analogamente, l'amministratore dell'Account B deve allegare una policy corrispondente a ReplicaB, invertendo i riferimenti agli account per concedere le autorizzazioni corrispondenti all'Account A, nella chiamata di creazione della tabella per creare la replica B facendo riferimento alla replica A come tabella di origine.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "A", "B" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "Principal": {"AWS": ["B"]} } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "A", "B" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB" ] } } } ] }

In questa configurazione, abbiamo 3 repliche ReplicA, ReplicaB e ReplicaC nell'Account A, Account B e Account C, rispettivamente. La replica A è la prima replica, che inizia come tabella regionale, quindi vengono aggiunti ReplicaB e ReplicaC.

  • L'amministratore dell'Account A deve innanzitutto collegare la policy basata sulle risorse a ReplicaA, consentendone la replica con tutti i membri e permettendo ai principali IAM dell'Account B e dell'Account C di aggiungere repliche.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "A", "B", "C" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB", "arn:aws:dynamodb:us-east-1:C:table/ReplicaC" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "Principal": { "AWS": [ "B", "C" ] } } ] }
  • L'amministratore dell'Account B deve aggiungere una replica (Replica B) che punti a ReplicaA come origine. La replica B ha la seguente politica che consente la replica tra tutti i membri e consente all'account C di aggiungere una replica:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "A", "B", "C" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB", "arn:aws:dynamodb:us-east-1:C:table/ReplicaC" ] } } }, { "Sid": "AllowTrustedAccountsToJoinThisGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:AssociateTableReplica" ], "Resource": "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB", "Principal": { "AWS": [ "C" ] } } ] }
  • Infine, l'amministratore dell'Account C crea una replica con la seguente politica che consente le autorizzazioni di replica tra tutti i membri. La politica non consente l'aggiunta di ulteriori repliche.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBActionsNeededForSteadyStateReplication", "Effect": "Allow", "Action": [ "dynamodb:ReadDataForReplication", "dynamodb:WriteDataForReplication", "dynamodb:ReplicateSettings" ], "Resource": "arn:aws:dynamodb:us-east-1:C:table/ReplicaC", "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]}, "Condition": { "StringEquals": { "aws:SourceAccount": [ "A", "B" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB" ] } } } ] }

Aggiornamento di una tabella globale con più account

Per modificare le impostazioni di replica per una tabella globale esistente utilizzando l' UpdateTable API, è necessaria la seguente autorizzazione sulla risorsa della tabella nella regione in cui si sta effettuando la chiamata API: dynamodb:UpdateTable

È inoltre possibile aggiornare altre configurazioni di tabelle globali, come i criteri di ridimensionamento automatico e le impostazioni Time to Live. Per queste operazioni di aggiornamento aggiuntive sono necessarie le seguenti autorizzazioni:

Per aggiornare le impostazioni Time to Live con l'UpdateTimeToLiveAPI, è necessario disporre della seguente autorizzazione sulla risorsa della tabella in tutte le regioni contenenti repliche: dynamodb:UpdateTimeToLive

Per aggiornare una politica di ridimensionamento automatico delle repliche con l'UpdateTableReplicaAutoScalingAPI, è necessario disporre delle seguenti autorizzazioni sulla risorsa della tabella in tutte le regioni contenenti repliche:

  • application-autoscaling:DeleteScalingPolicy

  • application-autoscaling:DeleteScheduledAction

  • application-autoscaling:DeregisterScalableTarget

  • application-autoscaling:DescribeScalableTargets

  • application-autoscaling:DescribeScalingActivities

  • application-autoscaling:DescribeScalingPolicies

  • application-autoscaling:DescribeScheduledActions

  • application-autoscaling:PutScalingPolicy

  • application-autoscaling:PutScheduledAction

  • application-autoscaling:RegisterScalableTarget

Nota

È necessario fornire le dynamodb:ReplicateSettings autorizzazioni per tutte le aree e gli account di replica affinché la tabella di aggiornamento abbia esito positivo. Se una replica non fornisce le autorizzazioni per replicare le impostazioni su nessuna replica nella tabella globale con più account, tutte le operazioni di aggiornamento su tutte le repliche avranno esito negativo fino a quando le autorizzazioni non verranno corrette. AccessDeniedException

Eliminazione delle tabelle globali e rimozione delle repliche

Per eliminare una tabella globale, è necessario rimuovere tutte le repliche. A differenza di Global Table con lo stesso account, non è possibile UpdateTable eliminare una tabella di replica in una regione remota e ogni replica deve essere eliminata tramite l'DeleteTableAPI dall'account che la controlla.

Autorizzazioni per l'eliminazione di tabelle globali e la rimozione di repliche

Le seguenti autorizzazioni sono necessarie sia per rimuovere singole repliche sia per eliminare completamente le tabelle globali. L'eliminazione di una configurazione di tabella globale rimuove solo la relazione di replica tra tabelle in regioni diverse. Non elimina la tabella DynamoDB sottostante nell'ultima regione rimanente. La tabella nell'ultima regione continua a esistere come tabella DynamoDB standard con gli stessi dati e le stesse impostazioni.

Sono necessarie le seguenti autorizzazioni sulla risorsa della tabella in ogni regione in cui stai rimuovendo una replica:

  • dynamodb:DeleteTable

  • dynamodb:DeleteTableReplica

Come vengono utilizzate le tabelle globali AWS KMS

Come tutte le tabelle DynamoDB, le repliche globali delle tabelle crittografano sempre i dati inattivi utilizzando le chiavi di crittografia archiviate AWS in Key Management Service ().AWS KMS

Nota

A differenza della tabella globale con lo stesso account, diverse repliche in una tabella globale con più account possono essere configurate con il diverso tipo di AWS KMS chiave (chiave AWS proprietaria o chiave gestita dal cliente). Le tabelle globali con più account non supportano le chiavi gestite. AWS

Le tabelle globali multi-account che utilizzano CMKs richiedono la policy delle chiavi di ogni replica per concedere le autorizzazioni al servizio di replica DynamoDB principal (replication.dynamodb.amazonaws.com) per accedere alla chiave per la replica e la gestione delle impostazioni. Sono richieste le seguenti autorizzazioni:

  • kms:Decrypt

  • kms:ReEncrypt*

  • kms:GenerateDataKey*

  • kms:DescribeKey

Importante

DynamoDB richiede l’accesso alla chiave di crittografia della replica per eliminare una replica. Se desideri disabilitare o eliminare una chiave gestita dal cliente utilizzata per crittografare una replica perché stai eliminando la replica, devi prima eliminare la replica, attendere che la tabella venga rimossa dal gruppo di replica chiamando describe in una delle altre repliche, quindi disabilitare o eliminare la chiave.

Se disabiliti o revochi l'accesso di DynamoDB a una chiave gestita dal cliente utilizzata per crittografare una replica, la replica da e verso la replica verrà interrotta e lo stato della replica cambierà inINACCESSIBLE_ENCRYPTION_CREDENTIALS. Se una replica rimane nello INACCESSIBLE_ENCRYPTION_CREDENTIALS stato per più di 20 ore, viene convertita in modo irreversibile in una tabella DynamoDB a regione singola.

Politica di esempio AWS KMS

La AWS KMS policy consente a DynamoDB di accedere a AWS KMS entrambe le chiavi per la replica tra le repliche A e B. AWS KMS Le chiavi allegate alla replica DynamoDB in ogni account devono essere aggiornate con la seguente policy:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "replication.dynamodb.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Condition": { "StringEquals": { "aws:SourceAccount": [ "A", "B" ], "aws:SourceArn": [ "arn:aws:dynamodb:ap-east-1:A:table/ReplicaA", "arn:aws:dynamodb:eu-south-1:B:table/ReplicaB" ] } } } ] }