Sicherheit von globalen DynamoDB-Tabellen - Amazon DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sicherheit von globalen DynamoDB-Tabellen

Globale Tabellenreplikate sind DynamoDB-Tabellen. Daher verwenden Sie für die Steuerung des Zugriffs auf Replikate dieselben Methoden wie für Tabellen mit einer einzelnen Region, einschließlich AWS Identity and Access Management (IAM-) Identitätsrichtlinien und ressourcenbasierter Richtlinien.

In diesem Thema wird beschrieben, wie Sie globale DynamoDB-Tabellen mithilfe von IAM-Berechtigungen und AWS Key Management Service ()AWS KMS-Verschlüsselung sichern. Sie erfahren mehr über die serviceverknüpften Rollen (SLR), die regionsübergreifende Replikation und auto-scaling ermöglichen, über die IAM-Berechtigungen, die zum Erstellen, Aktualisieren und Löschen globaler Tabellen erforderlich sind, und über die Unterschiede zwischen Multi-Region Eventual Consistency (MREC) und Multi-Region Strong Consistency (MRSC) -Tabellen. Außerdem erfahren Sie mehr über Verschlüsselungsschlüssel, mit denen Sie die regionsübergreifende Replikation sicher verwalten können. AWS KMS

Mit Diensten verknüpfte Rollen für globale Tabellen

Globale DynamoDB-Tabellen basieren auf serviceverknüpften Rollen (SLRs), um regionsübergreifende Replikations- und Autoskalierungsfunktionen zu verwalten.

Sie müssen diese Rollen nur einmal pro Konto einrichten. AWS Nach der Erstellung dienen dieselben Rollen für alle globalen Tabellen in Ihrem Konto. Weitere Informationen zu serviceverknüpften Rollen finden Sie unter Verwenden serviceverknüpfter Rollen im IAM-Benutzerhandbuch.

Mit dem Replikationsservice verknüpfte Rolle

Amazon DynamoDB erstellt automatisch die AWSServiceRoleForDynamoDBReplication serviceverknüpfte Rolle (SLR), wenn Sie Ihre erste globale Tabelle erstellen. Diese Rolle verwaltet die regionsübergreifende Replikation für Sie.

Wenn Sie ressourcenbasierte Richtlinien auf Replikate anwenden, stellen Sie sicher, dass Sie dem SLR-Prinzipal keine der im SLR-Prinzipal definierten Berechtigungen verweigern, da dadurch die Replikation unterbrochen wird. AWSServiceRoleForDynamoDBReplicationPolicy 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.

  • Bei globalen Multi-Region Eventual Consistency (MREC) -Tabellen gilt: Wenn ein Replikat länger als 20 Stunden im REPLICATION_NOT_AUTHORIZED Status verbleibt, wird das Replikat unwiderruflich in eine DynamoDB-Tabelle mit nur einer Region konvertiert.

  • Bei globalen Tabellen mit starker Konsistenz in mehreren Regionen (Multiregion Strong Consistency, MRSC) führt das Verweigern der erforderlichen Berechtigungen zu Schreib- und stark konsistenten Lesevorgängen. AccessDeniedException Bleibt ein Replikat länger als sieben Tage im REPLICATION_NOT_AUTHORIZED Status, kann nicht mehr auf das Replikat zugegriffen werden, und Schreib- und Strongly Consistent-Lesevorgänge schlagen weiterhin mit einem Fehler fehl. Einige Managementoperationen wie das Löschen von Replikaten werden erfolgreich abgeschlossen.

Mit dem Auto Scaling Service verknüpfte Rolle

Bei der Konfiguration einer globalen Tabelle für den Modus mit bereitgestellter Kapazität muss Auto Scaling für die globale Tabelle konfiguriert werden. DynamoDB Auto Scaling verwendet den AWS Application Auto Scaling Scaling-Dienst, um die bereitgestellte Durchsatzkapazität auf Ihren globalen Tabellenreplikaten dynamisch anzupassen. Der Application Auto Scaling Scaling-Dienst erstellt eine serviceverknüpfte Rolle (SLR) mit dem Namen. AWSServiceRoleForApplicationAutoScaling_DynamoDBTable Diese serviceverknüpfte Rolle wird automatisch in Ihrem AWS Konto erstellt, wenn Sie Auto Scaling für eine DynamoDB-Tabelle zum ersten Mal konfigurieren. Es ermöglicht Application Auto Scaling, die bereitgestellte Tabellenkapazität zu verwalten und CloudWatch Alarme zu erstellen.

Achten Sie bei der Anwendung ressourcenbasierter Richtlinien auf Replikate darauf, dass Sie keine im SLR-Prinzipal für Application Auto Scaling definierten Berechtigungen verweigern, da dadurch die Auto Scaling-Funktionalität unterbrochen wird. AWSApplicationAutoscalingDynamoDBTablePolicy

Beispiel für IAM-Richtlinien für serviceverknüpfte Rollen

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 Replikation oder Auto Scaling unbeabsichtigt unterbrochen werden.

Das folgende Beispiel zeigt, wie servicebezogene Rollenprinzipale von Deny-Statements ausgeschlossen werden können:

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

Wie globale Tabellen IAM verwenden AWS

In den folgenden Abschnitten werden die erforderlichen Berechtigungen für verschiedene globale Tabellenoperationen beschrieben und Richtlinienbeispiele bereitgestellt, die Ihnen bei der Konfiguration des entsprechenden Zugriffs für Ihre Benutzer und Anwendungen helfen sollen.

Anmerkung

Alle beschriebenen Berechtigungen müssen auf die spezifische Tabellenressource ARN in den betroffenen Regionen angewendet werden. Die Tabellenressource ARN folgt dem Formatarn:aws:dynamodb:region:account-id:table/table-name, in dem Sie Ihre tatsächlichen Werte für Region, Konto-ID und Tabellennamen angeben müssen.

Globale Tabellen erstellen und Replikate hinzufügen

Globale DynamoDB-Tabellen unterstützen zwei Konsistenzmodi: Multi-Region Eventual Consistency (MREC) und Multi-Region Strong Consistency (MRSC). Globale MREC-Tabellen können mehrere Replikate in einer beliebigen Anzahl von Regionen enthalten und sorgen so für Konsistenz. Globale MRSC-Tabellen erfordern genau drei Regionen (drei Replikate oder zwei Replikate und ein Zeuge) und bieten eine hohe Konsistenz mit einem Nullpunktziel (RPO).

Die zum Erstellen globaler Tabellen erforderlichen Berechtigungen hängen davon ab, ob Sie eine globale Tabelle mit oder ohne Zeugen erstellen.

Berechtigungen für die Erstellung globaler Tabellen

Die folgenden Berechtigungen sind sowohl für die anfängliche Erstellung globaler Tabellen als auch für das spätere Hinzufügen von Replikaten erforderlich. Diese Berechtigungen gelten sowohl für globale Tabellen mit Multi-Region Eventual Consistency (MREC) als auch für Multi-Region Strong Consistency (MRSC).

  • Globale Tabellen erfordern eine regionsübergreifende Replikation, die DynamoDB über die AWSServiceRoleForDynamoDBReplicationserviceverknüpfte Rolle (SLR) verwaltet. Die folgende Berechtigung ermöglicht DynamoDB, diese Rolle automatisch zu erstellen, wenn Sie zum ersten Mal eine globale Tabelle erstellen:

    • iam:CreateServiceLinkedRole

  • Um mithilfe der UpdateTableAPI eine globale Tabelle zu erstellen oder ein Replikat hinzuzufügen, benötigen Sie die folgenden Berechtigungen für die Quelltabellenressource:

    • dynamodb:UpdateTable

  • Sie benötigen die folgenden Berechtigungen für die Tabellenressource in den Regionen, damit die Replikate hinzugefügt werden können:

    • dynamodb:CreateTable

    • dynamodb:CreateTableReplica

    • dynamodb:Query

    • dynamodb:Scan

    • dynamodb:UpdateItem

    • dynamodb:PutItem

    • dynamodb:GetItem

    • dynamodb:DeleteItem

    • dynamodb:BatchWriteItem

Zusätzliche Berechtigungen für globale MRSC-Tabellen, die einen Zeugen verwenden

Wenn Sie eine globale MRSC-Tabelle (Multi-Region Strong Consistency) mit einer Zeugenregion erstellen, benötigen Sie die folgenden Berechtigungen für die Tabellenressource in allen beteiligten Regionen (einschließlich der Replikatregionen und der Zeugenregion):

  • dynamodb:CreateGlobalTableWitness

Beispiel für IAM-Richtlinien zum Erstellen globaler Tabellen

Die folgende identitätsbasierte Richtlinie ermöglicht es Ihnen, eine globale MREC- oder MRSC-Tabelle mit dem Namen „users“ in drei Regionen zu erstellen, einschließlich der Erstellung der erforderlichen mit dem DynamoDB-Replikationsdienst verknüpften Rolle.

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

Die folgende identitätsbasierte Richtlinie ermöglicht es Ihnen, mithilfe des RequestedRegion Bedingungsschlüssels aws: globale DynamoDB-Tabellen in bestimmten Regionen zu erstellen, einschließlich der Erstellung der erforderlichen mit dem DynamoDB-Replikationsdienst verknüpften Rolle.

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

Die folgende identitätsbasierte Richtlinie ermöglicht es Ihnen, eine globale DynamoDB-MRSC-Tabelle mit dem Namen „users“ mit Replikaten in us-east-1 und us-east-2 und einem Zeugen in us-west-2 zu erstellen, einschließlich der Erstellung der erforderlichen mit dem DynamoDB-Replikationsdienst verknüpften Rolle.

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

Diese identitätsbasierte Richtlinie ermöglicht es Ihnen, eine globale MRSC-Tabelle mit Replikaten zu erstellen, die auf bestimmte Regionen beschränkt sind, indem Sie den RequestedRegion Bedingungsschlüssel aws: verwenden und uneingeschränkte Zeugenerstellung für alle Regionen verwenden, einschließlich der Erstellung der erforderlichen, mit dem DynamoDB-Replikationsdienst verknüpften Rolle.

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

Aktualisieren von globalen Tabellen

Um die Replikateinstellungen für eine bestehende globale Tabelle mithilfe der UpdateTableAPI zu ändern, benötigen Sie die folgende Berechtigung für die Tabellenressource in der Region, in der Sie den API-Aufruf tätigen:

  • dynamodb:UpdateTable

Sie können auch andere globale Tabellenkonfigurationen aktualisieren, z. B. Richtlinien für auto Skalierung und Time-to-Live-Einstellungen. Für diese zusätzlichen Aktualisierungsvorgänge sind die folgenden Berechtigungen erforderlich:

  • Um eine Replica-Auto-Scaling-Richtlinie mit der UpdateTableReplicaAutoScalingAPI zu aktualisieren, benötigen Sie die folgenden Berechtigungen für die Tabellenressource in allen Regionen, die Replikate enthalten:

    • 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

  • Um die Time-to-Live-Einstellungen mit der UpdateTimeToLiveAPI zu aktualisieren, benötigen Sie die folgenden Berechtigungen für die Tabellenressource in allen Regionen, die Replikate enthalten:

    • dynamodb:UpdateTimeToLive

    Beachten Sie, dass Time to Live (TTL) nur für globale Tabellen unterstützt wird, die mit Multi-Region Eventual Consistency (MREC) konfiguriert sind. Weitere Informationen zur Funktionsweise globaler Tabellen mit TTL finden Sie unter So funktionieren globale DynamoDB-Tabellen.

Löschen globaler Tabellen und Entfernen von Replikaten

Um eine globale Tabelle zu löschen, müssen Sie alle Replikate entfernen. Die für diesen Vorgang erforderlichen Berechtigungen hängen davon ab, ob Sie eine globale Tabelle mit oder ohne Zeugenregion löschen.

Berechtigungen zum Löschen globaler Tabellen und zum Entfernen von Replikaten

Die folgenden Berechtigungen sind sowohl für das Entfernen einzelner Replikate als auch für das vollständige Löschen globaler Tabellen erforderlich. Durch das Löschen einer globalen Tabellenkonfiguration wird nur die Replikationsbeziehung zwischen Tabellen in verschiedenen Regionen entfernt. Die zugrunde liegende DynamoDB-Tabelle in der letzten verbleibenden Region wird nicht gelöscht. Die Tabelle in der letzten Region existiert weiterhin als standardmäßige DynamoDB-Tabelle mit denselben Daten und Einstellungen. Diese Berechtigungen gelten sowohl für globale Tabellen mit Multi-Region Eventual Consistency (MREC) als auch für Multi-Region Strong Consistency (MRSC).

  • Um mithilfe der UpdateTableAPI Replikate aus einer globalen Tabelle zu entfernen, benötigen Sie die folgende Berechtigung für die Tabellenressource in der Region, von der aus Sie den API-Aufruf tätigen:

    • dynamodb:UpdateTable

  • Sie benötigen die folgenden Berechtigungen für die Tabellenressource in jeder Region, in der Sie ein Replikat entfernen:

    • dynamodb:DeleteTable

    • dynamodb:DeleteTableReplica

Zusätzliche Berechtigungen für globale MRSC-Tabellen, die einen Zeugen verwenden

Um eine globale MRSC-Tabelle (Multiregion Strong Consistency) mit einem Zeugen zu löschen, benötigen Sie in allen beteiligten Regionen (einschließlich der Replikatregionen und der Zeugenregion) die folgenden Berechtigungen für die Tabellenressource:

  • dynamodb:DeleteGlobalTableWitness

Beispiele für IAM-Richtlinien zum Löschen globaler Tabellenreplikate

Diese identitätsbasierte Richtlinie ermöglicht es Ihnen, eine globale DynamoDB-Tabelle mit dem Namen „users“ und ihre Replikate in drei Regionen zu löschen:

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

Mit dieser identitätsbasierten Richtlinie können Sie das Replikat und den Zeugen einer globalen MRSC-Tabelle mit dem Namen „users“ löschen:

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

Wie verwenden globale Tabellen AWS KMS

Wie alle DynamoDB-Tabellen verschlüsseln Replikate Daten im Ruhezustand immer mit Verschlüsselungsschlüsseln, die im AWS Key Management Service () gespeichert sind.AWS KMS

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.