View a markdown version of this page

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

Replikate globaler Tabellen sind DynamoDB-Tabellen. Sie verwenden daher dieselben Methoden zur Steuerung des Zugriffs auf Replikate wie für Tabellen mit einzelnen Regionen, einschließlich AWS Identity and Access Management (IAM-) Identitätsrichtlinien und ressourcenbasierter Richtlinien.

In diesem Thema wird beschrieben, wie globale DynamoDB-Tabellen mithilfe von IAM-Berechtigungen und () -Verschlüsselung gesichert werden. AWS Key Management Service AWS KMS Sie erfahren mehr über die Service Linked Roles (SLR), die regionsübergreifende Replikation und automatische Skalierung ermöglichen, über die IAM-Berechtigungen, die zum Erstellen, Aktualisieren und Löschen globaler Tabellen erforderlich sind, und über die Unterschiede zwischen MREC-Tabellen (Multi-region Eventual Consistency) und MRSC-Tabellen (Multiregion Strong Consistency). Außerdem lernen Sie die Verschlüsselungsschlüssel kennen, mit denen Sie die regionsübergreifende Replikation sicher verwalten können. AWS KMS

Service-linked 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 Einmal erstellt, werden dieselben Rollen für alle globalen Tabellen in Ihrem Konto verwendet. 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 in der definierten Berechtigungen verweigern, da dies die Replikation unterbricht. 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 MREC-Tabellen (Multiregion Eventual Consistency) wird das Replikat irreversibel in eine DynamoDB-Tabelle mit einer einzelnen Region konvertiert, wenn es länger als 20 Stunden in diesem REPLICATION_NOT_AUTHORIZED Zustand verbleibt.

  • Bei globalen MRSC-Tabellen (Multiregion Strong Consistency) führt das Verweigern der erforderlichen Berechtigungen zu Schreibvorgängen und zu stark konsistenten Lesevorgängen. AccessDeniedException Wenn ein Replikat länger als sieben Tage in diesem REPLICATION_NOT_AUTHORIZED Zustand verbleibt, kann auf das Replikat dauerhaft nicht zugegriffen werden, und Schreibvorgänge und stark konsistente 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 Service, um die bereitgestellte Durchsatzkapazität auf Ihren globalen Tabellenreplikaten dynamisch anzupassen. Der Application Auto Scaling-Dienst erstellt eine Service-Linked Role (SLR) mit dem Namen. AWSServiceRoleForApplicationAutoScaling_DynamoDBTable Diese serviceverknüpfte Rolle wird automatisch in Ihrem AWS Konto erstellt, wenn Sie Auto Scaling zum ersten Mal für eine DynamoDB-Tabelle konfigurieren. Sie ermöglicht Application Auto Scaling, die bereitgestellte Tabellenkapazität zu verwalten und Alarme zu erzeugen. CloudWatch

Wenn Sie ressourcenbasierte Richtlinien auf Replikate anwenden, stellen Sie sicher, dass Sie dem Application Auto Scaling SLR-Principal keine im Application Auto Scaling SLR-Principal 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 keinen Einfluss auf die erforderlichen Berechtigungen für die DynamoDB-Replikations-SLR und Auto Scaling SLR. AWS Diese Bedingung kann zu ansonsten allgemein restriktiven Richtlinien hinzugefügt werden, um zu verhindern, dass die Replikation oder Auto Scaling unbeabsichtigt unterbrochen werden.

Das folgende Beispiel zeigt, wie dienstgebundene Rollenprinzipale von Ablehnungsanweisungen ausgeschlossen werden:

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

So verwenden globale Tabellen AWS IAM

In den folgenden Abschnitten werden die erforderlichen Berechtigungen für verschiedene Operationen mit globalen Tabellen beschrieben und es werden Richtlinienbeispiele bereitgestellt, anhand derer Sie den entsprechenden Zugriff für Ihre Benutzer und Anwendungen konfigurieren können.

Anmerkung

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

Globale Tabellen erstellen und Replikate hinzufügen

Globale DynamoDB-Tabellen unterstützen zwei Konsistenzmodi: Multiregion Eventual Consistency (MREC) und Multiregion Strong Consistency (MRSC). Globale MREC-Tabellen können mehrere Replikate in einer beliebigen Anzahl von Regionen enthalten und sorgen so letztlich 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 Recovery Point Objective (RPO) von Null.

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 Multi-Region Eventual Consistency (MREC) als auch für Multi-Region Strong Consistency (MRSC) -Tabellen.

  • Globale Tabellen erfordern eine regionsübergreifende Replikation, die DynamoDB über die Service-Linked Role (SLR) verwaltet. AWSServiceRoleForDynamoDBReplication Mit der folgenden Berechtigung kann DynamoDB diese Rolle automatisch erstellen, wenn Sie zum ersten Mal eine globale Tabelle erstellen:

    • iam:CreateServiceLinkedRole

  • Um mithilfe der UpdateTable API eine globale Tabelle zu erstellen oder ein Replikat hinzuzufügen, benötigen Sie die folgende Berechtigung für die Quelltabellenressource:

    • dynamodb:UpdateTable

  • Sie müssen über die folgenden Berechtigungen für die Tabellenressource in den Regionen verfügen, 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 Zeugen-Region erstellen, benötigen Sie die folgende Berechtigung für die Tabellenressource in allen teilnehmenden Regionen (einschließlich der Replikat-Regionen und der Zeugen-Region):

  • dynamodb:CreateGlobalTableWitness

Beispiel für IAM-Richtlinien zum Erstellen globaler Tabellen

Mit der folgenden identitätsbasierten Richtlinie können Sie eine globale MREC- oder MRSC-Tabelle mit dem Namen „Benutzer“ in drei Regionen erstellen. Dazu gehört auch die 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" ] } ] }

Mit der folgenden identitätsbasierten Richtlinie können Sie mithilfe des RequestedRegion Bedingungsschlüssels aws: Replikate globaler DynamoDB-Tabellen in bestimmten Regionen erstellen. Dazu gehört auch die 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-Replication Service 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" ] } ] }

Mit dieser identitätsbasierten Richtlinie können Sie mithilfe des RequestedRegion Bedingungsschlüssels aws: eine globale MRSC-Tabelle mit Replikaten erstellen, die auf bestimmte Regionen beschränkt sind. Dazu gehört auch die 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 UpdateTable API 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. Auto-Scaling-Richtlinien und Time-to-Live-Einstellungen. Für diese zusätzlichen Aktualisierungsvorgänge sind die folgenden Berechtigungen erforderlich:

  • Um eine Autoscaling-Richtlinie für Replikate mit der UpdateTableReplicaAutoScaling API zu aktualisieren, müssen Sie über die folgenden Berechtigungen für die Tabellenressource in allen Regionen verfügen, 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 UpdateTimeToLive API zu aktualisieren, benötigen Sie die folgende Berechtigung 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 Funktionsweise globaler 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 unterscheiden sich je nachdem, ob Sie eine globale Tabelle mit oder ohne Zeugen-Region löschen.

Berechtigungen für das Löschen globaler Tabellen und das 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 Standard-DynamoDB-Tabelle mit denselben Daten und Einstellungen. Diese Berechtigungen gelten sowohl für die globalen Tabellen Multi-Region Eventual Consistency (MREC) als auch für Multi-Region Strong Consistency (MRSC).

  • Um Replikate mithilfe der UpdateTable API 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 die folgende Berechtigung für die Tabellenressource in allen teilnehmenden Regionen (einschließlich der Replikatregionen und der Zeugen-Region):

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

Diese identitätsbasierte Richtlinie ermöglicht es Ihnen, das Replikat und den Zeugen einer globalen MRSC-Tabelle mit dem Namen „users“ zu 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" ] } ] }

So verwenden globale Tabellen AWS KMS

Wie alle DynamoDB-Tabellen verschlüsseln Replikate für globale Tabellen Daten im Ruhezustand immer mithilfe von 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.