Sicherheit von globalen DynamoDB-Tabellen
Replikate von globalen Tabellen sind DynamoDB-Tabellen. Es werden also dieselben Methoden für die Zugriffssteuerung für Replikate und für Tabellen mit einer einzelnen Region verwendet, einschließlich der Identitätsrichtlinien und ressourcenbasierten Richtlinien für AWS Identity and Access Management (IAM).
So verwenden globale Tabellen AWS IAM
Mit dem Replikationsservice verknüpfte Rolle
Beim ersten Erstellen einer globalen Tabelle generiert Amazon DynamoDB automatisch eine mit dem AWS Identity and Access Management (IAM)-Service verknüpfte Rolle für Sie. Diese Rolle trägt den Namen AWSServiceRoleForDynamoDBReplication
Achten Sie bei der Anwendung ressourcenbasierter Richtlinien auf Replikate darauf, dass Sie dem SLR-Prinzipal keine der in der AWSServiceRoleForDynamoDBReplication-Richtlinie definierten Berechtigungen verweigern, weil dadurch die Replikation unterbrochen wird. Wenn Sie die erforderlichen SLR-Berechtigungen verweigern, wird die Replikation zu und von den betroffenen Replikaten beendet, und der Status der Replikattabelle ändert sich in REPLICATION_NOT_AUTHORIZED.
-
Wenn ein Replikat in einer globalen MREC-Tabelle (Multi-Region Eventual Consistency) länger als 20 Stunden im Status
REPLICATION_NOT_AUTHORIZEDverbleibt, wird das Replikat unwiderruflich in eine DynamoDB-Tabelle mit einer einzelnen Region konvertiert. -
Replikate von globalen MRSC-Tabellen (Multi-Region Strong Consistency) geben für Schreibvorgänge und Lesevorgänge mit starker Konsistenz den Fehler
AccessDeniedExceptionzurück. Wenn ein Replikat in einer globalen MRSC-Tabelle länger als sieben Tage im StatusREPLICATION_NOT_AUTHORIZEDverbleibt, kann nicht mehr auf das Replikat zugegriffen werden, und bei den Schreibvorgängen und Lesevorgängen mit starker Konsistenz tritt weiterhin ein Fehler. Einige Managementoperationen wie das Löschen von Replikaten werden erfolgreich abgeschlossen.
Mit dem Auto Scaling Service verknüpfte Rolle
Wenn Sie eine globale Tabelle für den Modus „Bereitgestellte Kapazität“ konfigurieren, müssen Sie für die Tabelle auch Auto Scaling konfigurieren. DynamoDB-Auto-Scaling verwendet den Auto-Scaling-Service der AWS-Anwendung, um die bereitgestellte Durchsatzkapazität in den globalen Tabellenreplikaten dynamisch anzupassen. Der Auto-Scaling-Service der Anwendung erstellt eine serviceverknüpfte Rolle (SLR) mit dem Namen AWSServiceRoleForApplicationAutoScaling_DynamoDBTable, um die bereitgestellte Tabellenkapazität zu verwalten und CloudWatch-Alarme zu erstellen. Achten Sie bei der Anwendung ressourcenbasierter Richtlinien auf Replikate darauf, dass Sie dem SLR-Prinzipal des Auto-Scaling-Service der Anwendung keine der in der AWSServiceRoleForApplicationAutoScaling_DynamoDBTable-Richtlinie definierten Berechtigungen verweigern, weil dadurch die Auto-Scaling-Funktion unterbrochen wird.
Weitere Informationen zu serviceverknüpften Rollen finden Sie unter Verwenden serviceverknüpfter Rollen im IAM-Benutzerhandbuch.
Erforderliche Berechtigungen für globale Tabellen
Für die Erstellung eines Replikats benötigen Sie die folgenden Berechtigungen für die Tabelle oder das Replikat, zu dem Sie neue Replikate hinzufügen:
-
dynamodb:UpdateTable
Für die Erstellung eines Replikats benötigen Sie die folgenden Berechtigungen in jeder Region, in der ein neues Replikat erstellt wird:
-
dynamodb:CreateTable -
dynamodb:CreateTableReplica
Für die Erstellung eines Witness benötigen Sie die folgende Berechtigung in jeder Region, in der ein neuer Witness erstellt wird:
-
dynamodb:CreateGlobalTableWitness
Zum Löschen von Replikattabellen benötigen Sie die folgenden Berechtigungen für das Replikat:
-
dynamodb:DeleteTable -
dynamodb:DeleteTableReplica
Zum Löschen eines Witness benötigen Sie die folgenden Berechtigungen für den Witness:
-
dynamodb:DeleteGlobalTableWitness
Für die Aktualisierung der Richtlinie für die automatische Skalierung von Replikaten mit der UpdateTableReplicaAutoScaling-API benötigen Sie die folgenden Berechtigungen in allen Regionen, in denen Replikate existieren:
-
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
Für die Aktualisierung der Time-to-Live-Einstellungen in der UpdateTimeToLive-API benötigen Sie für alle Replikate die folgenden Berechtigungen:
-
dynamodb:UpdateTimeToLive
IAM-Beispielrichtlinien
Beispiel: Verwalten einer globalen Tabelle
Die folgende IAM-Richtlinie gewährt Berechtigungen zum Erstellen und Löschen von Replikaten globaler Tabellen und Witnesses für die Tabelle „Benutzer“ in drei Regionen:
Beispiel: Ausschließen der erforderlichen SLR-Berechtigungen aus den Richtlinien zum Ablehnen von Platzhaltern
Eine IAM-Richtlinie mit der folgenden Bedingung hat keine Auswirkungen auf die erforderlichen Berechtigungen für die DynamoDB-Replikations-SLR und AWS-Auto-Scaling-SLR. Diese Bedingung kann zu ansonsten weitgehend restriktiven Richtlinien hinzugefügt werden, um zu verhindern, dass die Replikation oder das Auto Scaling unbeabsichtigt unterbrochen werden:
"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws:iam::YOUR_ACCOUNT_ID:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }
So verwenden globale Tabellen AWS KMS
Wie alle DynamoDB-Tabellen verschlüsseln Replikate von globalen Tabellen Daten im Ruhezustand immer mit Verschlüsselungsschlüsseln, die im AWS Key Management Service (AWS KMS) gespeichert sind.
Alle Replikate in einer globalen Tabelle müssen mit demselben Typ von KMS-Schlüssel (AWS-eigener Schlüssel, von AWS verwalteter Schlüssel oder kundenseitig verwalteter Schlüssel) konfiguriert werden.
Wichtig
DynamoDB benötigt Zugriff auf den Verschlüsselungsschlüssel des Replikats, um ein Replikat zu löschen. Wenn Sie einen kundenseitig verwalteten Schlüssel, der zur Verschlüsselung eines Replikats verwendet wird, deaktivieren oder löschen möchten, weil Sie das Replikat löschen, sollten Sie zuerst das Replikat löschen, warten, bis sich der Tabellenstatus in einem der verbleibenden Replikate in ACTIVE ändert, und dann den Schlüssel deaktivieren oder löschen.
Wenn Sie bei einer globalen MREC-Tabelle den Zugriff von DynamoDB auf einen kundenseitig verwalteten Schlüssel, der zur Verschlüsselung eines Replikats verwendet wird, deaktivieren oder entziehen, wird die Replikation zum und vom Replikat beendet und der Replikatstatus ändert sich in INACCESSIBLE_ENCRYPTION_CREDENTIALS. Wenn ein Replikat in einer globalen MREC-Tabelle länger als 20 Stunden im Status INACCESSIBLE_ENCRYPTION_CREDENTIALS verbleibt, wird das Replikat unwiderruflich in eine DynamoDB-Tabelle mit einer einzelnen Region konvertiert.
Wenn Sie bei einer globalen MRSC-Tabelle den Zugriff von DynamoDB auf einen kundenseitig verwalteten Schlüssel, der zur Verschlüsselung eines Replikats verwendet wird, deaktivieren oder entziehen, wird die Replikation zum und vom Replikat beendet, bei dem Versuch, strikt konsistente Lesevorgänge in das Replikat zu schreiben, tritt ein Fehler auf, und der Replikatstatus ändert sich in INACCESSIBLE_ENCRYPTION_CREDENTIALS. Wenn ein Replikat in einer globalen MRSC-Tabelle länger als sieben Tage im INACCESSIBLE_ENCRYPTION_CREDENTIALS Status verbleibt, wird das Replikat je nach den widerrufenen Berechtigungen archiviert oder es kann dauerhaft nicht mehr darauf zugegriffen werden.