IAMRichtlinie zur Trennung von DynamoDB-Umgebungen im selben Konto AWS - 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.

IAMRichtlinie zur Trennung von DynamoDB-Umgebungen im selben Konto AWS

Angenommen, Sie verfügen über separate Umgebungen, wobei jede Umgebung ihre eigene Version einer Tabelle namens ProductCatalog unterhält. Wenn Sie zwei ProductCatalog Tabellen in demselben AWS Konto erstellen, kann sich die Arbeit in einer Umgebung aufgrund der Art und Weise, wie Berechtigungen eingerichtet sind, auf die andere Umgebung auswirken. Beispielsweise werden Kontingente für die Anzahl gleichzeitiger Vorgänge auf der Kontrollebene (z. B.CreateTable) auf AWS Kontoebene festgelegt.

Daher reduziert jede Aktion in einer Umgebung die Anzahl der Operationen, die in der anderen Umgebung verfügbar sind. Es besteht auch das Risiko, dass der Code in der Umgebung möglicherweise versehentlich auf Tabellen in der anderen Umgebung zugreift.

Anmerkung

Wenn Sie Produktions- und Test-Workloads trennen möchten, um den potenziellen „Explosionsradius“ eines Ereignisses zu steuern, empfiehlt es sich, separate AWS -Konten für Test- und Produktions-Workloads zu erstellen. Weitere Informationen finden Sie unter AWS Kontenverwaltung und Trennung.

Weiter gehen wir davon aus, dass Sie über zwei Entwickler verfügen, Amit und Alice, die die ProductCatalog-Tabelle testen. Anstatt dass jeder Entwickler ein separates AWS Konto benötigt, können sich Ihre Entwickler dasselbe AWS Testkonto teilen. In diesem Testkonto können Sie eine Kopie derselben Tabelle für jeden Entwickler zur Bearbeitung erstellen, beispielsweise Alice_ProductCatalog und Amit_ProductCatalog. In diesem Fall können Sie die Benutzer Alice und Amit in dem AWS Konto erstellen, das Sie für die Testumgebung erstellt haben. Sie können dann diesen Benutzern Berechtigungen erteilen, damit sie in den Tabellen, die sie besitzen, DynamoDB-Aktionen durchführen können.

Um diesen IAM Benutzerberechtigungen zu gewähren, können Sie einen der folgenden Schritte ausführen:

  • Erstellen Sie eine separate Richtlinie für jeden Benutzer und weisen jede Richtlinie getrennt ihrem Benutzer zu. Sie können beispielsweise die folgende Richtlinie der Benutzerin Alice zuweisen, um ihr Zugriff auf alle DynamoDB-Aktionen in der Tabelle Alice_ProductCatalog zu gewähren:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllAPIActionsOnAliceTable", "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:DescribeContributorInsights", "dynamodb:RestoreTableToPointInTime", "dynamodb:ListTagsOfResource", "dynamodb:CreateTableReplica", "dynamodb:UpdateContributorInsights", "dynamodb:CreateBackup", "dynamodb:DeleteTable", "dynamodb:UpdateTableReplicaAutoScaling", "dynamodb:UpdateContinuousBackups", "dynamodb:TagResource", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:DescribeContinuousBackups", "dynamodb:BatchGetItem", "dynamodb:UpdateTimeToLive", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem", "dynamodb:UntagResource", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:UpdateItem", "dynamodb:DeleteTableReplica", "dynamodb:DescribeTimeToLive", "dynamodb:RestoreTableFromBackup", "dynamodb:UpdateTable", "dynamodb:DescribeTableReplicaAutoScaling", "dynamodb:GetShardIterator", "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:DescribeLimits", "dynamodb:ListStreams" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*" } ] }

    Anschließend können Sie eine ähnliche Richtlinie mit einer anderen Ressource (Amit_ProductCatalog-Tabelle) für den Benutzer Amit erstellen.

  • Anstatt Richtlinien an einzelne Benutzer anzuhängen, können Sie IAM Richtlinienvariablen verwenden, um eine einzelne Richtlinie zu schreiben und sie einer Gruppe zuzuordnen. Sie müssen eine Gruppe erstellen und für dieses Beispiel die Benutzer Alice und Amit der Gruppe hinzufügen. Das folgende Beispiel gewährt Berechtigungen, um alle DynamoDB-Aktionen in der Tabelle ${aws:username}_ProductCatalog durchzuführen. Die Richtlinienvariable ${aws:username} wird durch den Benutzernamen des Anforderers bei der Evaluierung der Richtlinie ersetzt. Wenn Alice beispielsweise eine Anforderung für das Hinzufügen eines Elements sendet, wird die Aktion nur zugelassen, wenn Alice der Alice_ProductCatalog-Tabelle Elemente hinzufügt.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ActionsOnUserSpecificTable", "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog" }, { "Sid": "AdditionalPrivileges", "Effect": "Allow", "Action": [ "dynamodb:ListTables", "dynamodb:DescribeTable", "dynamodb:DescribeContributorInsights" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*" } ] }
Anmerkung

Wenn Sie IAM Richtlinienvariablen verwenden, müssen Sie die 2012-10-17 Version der IAM Richtliniensprache in der Richtlinie explizit angeben. Die Standardversion der IAM Richtliniensprache (2008-10-17) unterstützt keine Richtlinienvariablen.

Anstelle der Identifizierung einer bestimmten Tabelle als Ressource können Sie ein Platzhalterzeichen (*) verwenden, um Berechtigungen für alle Tabellen zu gewähren, in denen der Name dem Namen des Benutzers vorangesetzt wird, der die Anforderung stellt. Siehe folgendes Beispiel.

"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"