Sicherheit von globalen DynamoDB-Tabellen - Amazon-DynamoDB

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 und ermöglicht DynamoDB, die regionsübergreifende Replikation für globale Tabellen in Ihrem Namen zu verwalten.

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_AUTHORIZED verbleibt, 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 AccessDeniedException zurück. Wenn ein Replikat in einer globalen MRSC-Tabelle länger als sieben Tage im Status REPLICATION_NOT_AUTHORIZED verbleibt, 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:

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" ] } ] }

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.