View a markdown version of this page

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 utilizzi gli stessi metodi per controllare l'accesso alle repliche utilizzati per le tabelle a regione singola, incluse le politiche di identità AWS Identity and Access Management (IAM) e le politiche basate sulle risorse.

Questo argomento spiega come proteggere le tabelle globali di DynamoDB utilizzando le autorizzazioni IAM e la crittografia (). AWS Key Management Service AWS KMS Scopri i ruoli collegati ai servizi (SLR) che consentono la replica e il ridimensionamento automatico in più regioni, le autorizzazioni IAM necessarie per creare, aggiornare ed eliminare le tabelle globali e le differenze tra le tabelle Multi-region Eventual Consistency (MREC) e Multi-region Strong Consistency (MRSC). Scopri AWS KMS anche le chiavi di crittografia per gestire in modo sicuro la replica tra regioni.

Service-linked ruoli per le tabelle globali

Le tabelle globali di DynamoDB si basano sui ruoli collegati ai servizi (SLR) per gestire la replica interregionale e le funzionalità di scalabilità automatica.

È necessario configurare questi ruoli 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 al servizio, consulta Utilizzo dei ruoli collegati al servizio nella Guida per l'utente IAM.

Ruolo collegato al servizio

Amazon DynamoDB crea automaticamente il ruolo AWSServiceRoleForDynamoDBReplication collegato ai servizi (SLR) quando crei la tua prima tabella globale. Questo ruolo gestisce la replica in più regioni per te.

Quando applichi policy basate sulle risorse alle repliche, assicurati di non negare nessuna delle autorizzazioni definite nell'entità SLR, poiché ciò AWSServiceRoleForDynamoDBReplicationPolicy interromperebbe la replica. Se si negano le autorizzazioni SLR richieste, la replica da e verso le repliche interessate verrà interrotta e lo stato della tabella di replica cambierà in REPLICATION_NOT_AUTHORIZED.

  • Per le tabelle globali Multi-region Eventual Consistency (MREC), se una replica rimane REPLICATION_NOT_AUTHORIZED nello stato per più di 20 ore, la replica viene convertita irreversibilmente in una tabella DynamoDB a regione singola.

  • Per le tabelle globali MRSC (Multi-region Strong Consistency), la negazione delle autorizzazioni richieste comporta operazioni di scrittura e lettura fortemente coerenti. AccessDeniedException Se una replica rimane nello REPLICATION_NOT_AUTHORIZED stato per più di sette giorni, diventa permanentemente inaccessibile e le operazioni di scrittura e lettura fortemente coerenti continueranno a fallire con un errore. Alcune operazioni di gestione, come l’eliminazione delle repliche, avranno esito positivo.

Dimensionamento automatico del ruolo collegato al servizio

Quando si configura una tabella globale per la modalità di capacità assegnata, è necessario configurare il ridimensionamento automatico per la tabella globale. Il ridimensionamento automatico di DynamoDB utilizza il servizio AWS Application Auto Scaling per regolare dinamicamente la capacità di throughput assegnata sulle repliche globali delle tabelle. 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 il ridimensionamento automatico per una tabella DynamoDB. Consente ad Application Auto Scaling di gestire la capacità della tabella assegnata e di creare allarmi. CloudWatch

Quando applichi policy basate sulle risorse alle repliche, assicurati di non negare alcuna autorizzazione definita nel principio di Application Auto Scaling SLR, poiché ciò interromperebbe la funzionalità di ridimensionamento automatico. AWSApplicationAutoscalingDynamoDBTablePolicy

Esempi di politiche IAM per ruoli collegati ai servizi

Una policy IAM con la seguente condizione non influisce sulle autorizzazioni richieste per DynamoDB Replication SLR e Auto Scaling SLR. AWS Questa condizione può essere aggiunta a politiche altrimenti ampiamente restrittive per evitare l'interruzione involontaria della replica o del ridimensionamento automatico.

L'esempio seguente mostra come escludere i ruoli principali collegati ai servizi dalle dichiarazioni di rifiuto:

"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws::iam::111122223333:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws::iam::111122223333:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }

Come utilizzano le tabelle globali AWS IAM

Le sezioni seguenti descrivono le autorizzazioni richieste per le diverse operazioni globali sulle tabelle 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 specifica risorsa della tabella ARN nelle Regioni interessate. La risorsa ARN della tabella 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.

Creazione di tabelle globali e aggiunta di repliche

Le tabelle globali DynamoDB supportano due modalità di coerenza: Multi-region Eventual Consistency (MREC) e Multi-region Strong Consistency (MRSC). Le tabelle globali MREC possono avere più repliche in qualsiasi numero di regioni e fornire un'eventuale coerenza. Le tabelle globali MRSC richiedono esattamente tre regioni (tre repliche o due repliche e un testimone) e forniscono una forte coerenza con un obiettivo RPO (Zero Recovery Point Objective).

Le autorizzazioni necessarie per creare tabelle globali dipendono dal fatto che tu stia creando una tabella globale con o senza un testimone.

Autorizzazioni per la creazione di tabelle globali

Le seguenti autorizzazioni sono necessarie sia per la creazione iniziale della tabella globale che per l'aggiunta di repliche in un secondo momento. Queste autorizzazioni si applicano alle tabelle globali Multi-Region Eventual Consistency (MREC) e Multi-Region Strong Consistency (MRSC).

  • Le tabelle globali richiedono una replica interregionale, che DynamoDB gestisce tramite il ruolo collegato ai servizi (SLR). AWSServiceRoleForDynamoDBReplication La seguente autorizzazione consente a DynamoDB di creare questo ruolo automaticamente quando si crea una tabella globale per la prima volta:

    • iam:CreateServiceLinkedRole

  • Per creare una tabella globale o aggiungere una replica utilizzando l'UpdateTableAPI, è necessario disporre della seguente autorizzazione sulla risorsa della tabella di origine:

    • dynamodb:UpdateTable

  • È necessario disporre delle seguenti autorizzazioni sulla risorsa della tabella nelle regioni per aggiungere le repliche:

    • dynamodb:CreateTable

    • dynamodb:CreateTableReplica

    • dynamodb:Query

    • dynamodb:Scan

    • dynamodb:UpdateItem

    • dynamodb:PutItem

    • dynamodb:GetItem

    • dynamodb:DeleteItem

    • dynamodb:BatchWriteItem

Autorizzazioni aggiuntive per le tabelle globali MRSC che utilizzano un testimone

Quando si crea una tabella globale Multi-Region Strong Consistency (MRSC) con una regione di riferimento, è necessario disporre della seguente autorizzazione sulla risorsa della tabella in tutte le regioni partecipanti (incluse sia le regioni di replica che la regione di riferimento):

  • dynamodb:CreateGlobalTableWitness

Esempi di politiche IAM per la creazione di tabelle globali

La seguente politica basata sull'identità consente di creare una tabella globale MREC o MRSC denominata «utenti» in tre regioni, inclusa la creazione del ruolo collegato al servizio di replica DynamoDB richiesto.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

La seguente politica basata sull'identità consente di creare repliche di tabelle globali DynamoDB in regioni specifiche utilizzando la chiave di RequestedRegion condizione aws:, inclusa la creazione del ruolo collegato al servizio di replica DynamoDB richiesto.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowAddingReplicasToSourceTable", "Effect": "Allow", "Action": [ "dynamodb:UpdateTable" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1" ] } } }, { "Sid": "AllowCreatingReplicas", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-2", "us-west-2" ] } } }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

La seguente policy basata sull'identità consente di creare una tabella globale MRSC di DynamoDB denominata «users» con repliche in us-east-1 e us-east-2 e un witness in us-west-2, inclusa la creazione del ruolo collegato al servizio di replica DynamoDB richiesto.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTableWithWitness", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Questa policy basata sull'identità consente di creare una tabella globale MRSC con repliche limitate a regioni specifiche utilizzando la chiave di RequestedRegion condizione aws: e la creazione illimitata dei testimoni in tutte le regioni, inclusa la creazione del ruolo collegato al servizio di replica DynamoDB richiesto.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingReplicas", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } } }, { "Sid": "AllowCreatingWitness", "Effect": "Allow", "Action": [ "dynamodb:CreateGlobalTableWitness" ], "Resource": "*" }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Aggiornamento delle tabelle globali

Per modificare le impostazioni di replica per una tabella globale esistente utilizzando l'UpdateTableAPI, hai bisogno della seguente autorizzazione sulla risorsa della tabella nella regione in cui stai effettuando la chiamata API:

  • dynamodb:UpdateTable

Puoi inoltre aggiornare altre configurazioni globali delle tabelle, come le politiche di ridimensionamento automatico e le impostazioni Time to Live. Le seguenti autorizzazioni sono necessarie per queste operazioni di aggiornamento aggiuntive:

  • 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 le 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

  • 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

    Tieni presente che Time to Live (TTL) è supportato solo per le tabelle globali configurate con Multi-Region Eventual Consistency (MREC). Per ulteriori informazioni su come funzionano le tabelle globali con il TTL, vedi Come funzionano le tabelle globali di DynamoDB.

Eliminazione delle tabelle globali e rimozione delle repliche

Per eliminare una tabella globale, è necessario rimuovere tutte le repliche. Le autorizzazioni richieste per questa operazione variano a seconda che si stia eliminando una tabella globale con o senza una regione di riferimento.

Autorizzazioni per l'eliminazione delle tabelle globali e la rimozione delle 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 impostazioni. Queste autorizzazioni si applicano alle tabelle globali Multi-Region Eventual Consistency (MREC) e Multi-Region Strong Consistency (MRSC).

  • Per rimuovere le repliche da una tabella globale utilizzando l'UpdateTableAPI, è necessaria la seguente autorizzazione sulla risorsa della tabella nella regione da cui si sta effettuando la chiamata API:

    • dynamodb:UpdateTable

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

    • dynamodb:DeleteTable

    • dynamodb:DeleteTableReplica

Autorizzazioni aggiuntive per le tabelle globali MRSC utilizzando un testimone

Per eliminare una tabella globale MRSC (Multi-region Strong Consistency) con un testimone, è necessario disporre della seguente autorizzazione sulla risorsa della tabella in tutte le regioni partecipanti (incluse sia le regioni di replica che la regione di riferimento):

  • dynamodb:DeleteGlobalTableWitness

Esempi di politiche IAM per eliminare le repliche di una tabella globale

Questa policy basata sull'identità consente di eliminare una tabella globale DynamoDB denominata «users» e le relative repliche in tre regioni:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateTable", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] } ] }

Questa politica basata sull'identità consente di eliminare la replica e il testimone di una tabella globale MRSC denominata «users»:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateTable", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users" ] } ] }

Come utilizzano le tabelle globali AWS KMS

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

Tutte le repliche in una tabella globale devono essere configurate con lo stesso tipo di chiave KMS (chiave di proprietà di AWS , chiave gestita da AWS o chiave gestita dal cliente).

Importante

DynamoDB richiede l’accesso alla chiave di crittografia della replica per eliminare una replica. Se si desidera disabilitare o eliminare una chiave gestita dal cliente utilizzata per crittografare una replica perché si sta eliminando la replica, è necessario prima eliminare la replica, attendere che lo stato della tabella su una delle repliche rimanenti cambi in ACTIVE, quindi disabilitare o eliminare la chiave.

Per una tabella globale configurata per coerenza finale multi-Regione (MREC), se si disabilita o si revoca 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à in INACCESSIBLE_ENCRYPTION_CREDENTIALS. Se una replica in una tabella globale MREC rimane nello stato INACCESSIBLE_ENCRYPTION_CREDENTIALS per più di 20 ore, viene convertita in modo irreversibile in una tabella DynamoDB a Regione singola.

Per una tabella globale configurata per elevata consistenza multi-Regione (MRSC), se si disabilita o si revoca l’accesso di DynamoDB a una chiave gestita dal cliente utilizzata per crittografare una replica, la replica da e verso la replica si interromperà, i tentativi di eseguire scritture oppure operazioni a elevata consistenza di lettura sulla replica restituiranno un errore e lo stato della replica cambierà in INACCESSIBLE_ENCRYPTION_CREDENTIALS. Se una replica in una tabella globale MRSC rimane nello stato INACCESSIBLE_ENCRYPTION_CREDENTIALS per più di sette giorni, a seconda delle autorizzazioni specifiche revocate, la replica verrà archiviata o diventerà definitivamente inaccessibile.