View a markdown version of this page

Beispiele für ressourcenbasierte DynamoDB-Richtlinien - 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.

Beispiele für ressourcenbasierte DynamoDB-Richtlinien

Wenn Sie im Feld Resource einer ressourcenbasierten Richtlinie einen ARN angeben, wird die Richtlinie nur wirksam, wenn der angegebene ARN mit dem ARN der DynamoDB-Ressource übereinstimmt, an die er angehängt ist.

Anmerkung

Denken Sie daran, den italicized Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.

Resource-based Richtlinie für eine Tabelle

Die folgende ressourcenbasierte Richtlinie, die einer DynamoDB-Tabelle mit dem Namen zugeordnet istMusicCollection, erteilt den IAM-Benutzern John die Jane Berechtigung, Aktionen für die Ressource auszuführen GetItem. BatchGetItem MusicCollection

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/username", "arn:aws:iam::111122223333:user/Jane" ] }, "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection" ] } ] }

Resource-based Richtlinie für einen Stream

Die folgende ressourcenbasierte Richtlinie, die an einen DynamoDB-Stream mit dem Namen angehängt ist, 2024-02-12T18:57:26.492 erteilt den IAM-Benutzern John die Jane Erlaubnis GetRecords GetShardIterator, API-Aktionen für die Ressource auszuführen. DescribeStream 2024-02-12T18:57:26.492

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/username", "arn:aws:iam::111122223333:user/Jane" ] }, "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:GetShardIterator" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/stream/2024-02-12T18:57:26.492" ] } ] }

Resource-based Richtlinie für den Zugriff, um alle Aktionen an bestimmten Ressourcen durchzuführen

Damit ein Benutzer alle Aktionen für eine Tabelle und alle zugehörigen Indizes mit einer Tabelle ausführen kann, können Sie einen Platzhalter (*) verwenden, um die mit der Tabelle verknüpften Aktionen und Ressourcen darzustellen. Die Verwendung eines Platzhalterzeichens für die Ressourcen ermöglicht dem Benutzer den Zugriff auf die DynamoDB-Tabelle und alle zugehörigen Indizes, einschließlich der Indizes, die noch nicht erstellt wurden. Beispielsweise erteilt die folgende Richtlinie dem Benutzer die John Berechtigung, alle Aktionen für die MusicCollection Tabelle und alle zugehörigen Indizes auszuführen, einschließlich aller Indizes, die in Zukunft erstellt werden.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/username" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection", "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/index/index-name" ] } ] }

Resource-based Richtlinie für den kontoübergreifenden Zugriff

Sie können Berechtigungen für eine kontoübergreifende IAM-Identität für den Zugriff auf DynamoDB-Ressourcen angeben. Beispielsweise benötigen Sie möglicherweise einen Benutzer mit einem vertrauenswürdigen Konto, um Lesezugriff auf den Inhalt Ihrer Tabelle zu erhalten, unter der Bedingung, dass er nur auf bestimmte Elemente und bestimmte Attribute in diesen Elementen zugreift. Die folgende Richtlinie ermöglicht Benutzern John von einer vertrauenswürdigen AWS-Konto ID aus 123456789012 mithilfe der GetItem API den 111111111111 Zugriff auf Daten aus einer Tabelle im Konto. Die Richtlinie stellt sicher, dass der Benutzer nur auf Elemente mit einem Primärschlüssel zugreifen kann Jane und dass der Benutzer nur die Attribute Artist und SongTitle keine anderen Attribute abrufen kann.

Wichtig

Wenn Sie die SPECIFIC_ATTRIBUTES-Bedingung nicht angeben, werden Ihnen alle Attribute für die zurückgegebenen Elemente angezeigt.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountTablePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/John" }, "Action": "dynamodb:GetItem", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }

Zusätzlich zur vorherigen ressourcenbasierten Richtlinie muss John auch die identitätsbasierte Richtlinie, die dem Benutzer zugeordnet ist, zulassen, dass die GetItem API-Aktion für den kontoübergreifenden Zugriff funktioniert. Im Folgenden finden Sie ein Beispiel für eine identitätsbasierte Richtlinie, die Sie dem Benutzer zuordnen müssen. John

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountIdentityBasedPolicy", "Effect": "Allow", "Action": [ "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": "Jane", "dynamodb:Attributes": [ "Artist", "SongTitle" ] }, "StringEquals": { "dynamodb:Select": "SPECIFIC_ATTRIBUTES" } } } ] }

Der Benutzer John kann eine GetItem Anfrage stellen, indem er den Tabellen-ARN im table-name Parameter für den Zugriff auf die Tabelle MusicCollection im Konto angibt. 123456789012

aws dynamodb get-item \ --table-name arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --key '{"Artist": {"S": "Jane"}' \ --projection-expression 'Artist, SongTitle' \ --return-consumed-capacity TOTAL

Resource-based Richtlinie mit Bedingungen für IP-Adressen

Sie können eine Bedingung anwenden, um Quell-IP-Adressen, Virtual Private Clouds (VPCs) und VPC-Endpunkte (VPCE) einzuschränken. Sie können Berechtigungen auf der Grundlage der Quelladressen der ursprünglichen Anforderung angeben. Angenommen, Sie möchten einem Benutzer nur dann Zugriff auf DynamoDB-Ressourcen gewähren, wenn von einer bestimmten IP-Quelle aus darauf zugegriffen wird, z. B. von einem Unternehmens-VPN-Endpunkt. Geben Sie diese IP-Adressen in der Condition-Anweisung an.

Das folgende Beispiel ermöglicht dem Benutzer den John Zugriff auf jede DynamoDB-Ressource, wenn die Quell-IPs und lauten54.240.143.0/24. 2001:DB8:1234:5678::/64

JSON
{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:user/username" }, "Action":"dynamodb:*", "Resource":"*", "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } } } ] }

Sie können auch den gesamten Zugriff auf DynamoDB-Ressourcen verweigern, außer wenn es sich bei der Quelle beispielsweise um einen bestimmten VPC-Endpunkt handelt. vpce-1a2b3c4d

Wichtig

Eine ressourcenbasierte Richtlinie, die nur eine Deny Anweisung enthält, "Principal": "*" verweigert jedem Principal den Zugriff, einschließlich Ihrer eigenen Fähigkeit, die Richtlinie später zu aktualisieren oder zu löschen. Wenn Sie eine Richtlinie anhängen, die Sie auf diese Weise aussperren würde, lehnt DynamoDB sie mit dem folgenden Fehler ab: Die neue Ressourcenrichtlinie ermöglicht es Ihnen nicht, die Ressourcenrichtlinie in Zukunft zu aktualisieren. Das Hinzufügen einer separaten Allow Anweisung löst dieses Problem nicht, da eine explizite Anweisung Deny immer eine Allow überschreibt. Um allen außer einem bestimmten VPC-Endpunkt den Zugriff zu verweigern und gleichzeitig die Möglichkeit zur Verwaltung der Richtlinie zu behalten, nehmen Sie den verwaltenden Prinzipal von der Deny Anweisung aus, indem Sie eine ArnNotEquals Bedingung hinzufügenaws:PrincipalArn, wie im folgenden Beispiel gezeigt.

Wichtig

Wenn Sie DAX mit DynamoDB-Tabellen verwenden, für die IP-based Ressourcenrichtlinien in IPv6-only Umgebungen gelten, müssen Sie zusätzliche Zugriffsregeln konfigurieren. Wenn Ihre Ressourcenrichtlinie den Zugriff auf den IPv4-Adressraum von Tabellen 0.0.0.0/0 einschränkt, müssen Sie den Zugriff für die IAM-Rolle zulassen, die Ihrem DAX-Cluster zugeordnet ist. Fügen Sie Ihrer Richtlinie eine ArnNotEquals Bedingung hinzu, um sicherzustellen, dass DAX den Zugriff auf Ihre DynamoDB-Tabellen beibehält. Weitere Informationen finden Sie unter DAX und IPv6.

JSON
{ "Id":"PolicyId", "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToSpecificVPCEOnly", "Principal": "*", "Action": "dynamodb:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals":{ "aws:sourceVpce":"vpce-1a2b3c4d" }, "ArnNotEquals":{ "aws:PrincipalArn":"arn:aws:iam::123456789012:role/AdminRole" } } } ] }

Resource-based Richtlinie, die eine IAM-Rolle verwendet

Sie können auch eine IAM-Servicerolle in der ressourcenbasierten Richtlinie angeben. IAM-Entitäten, die diese Rolle übernehmen, sind an die für die Rolle angegebenen zulässigen Aktionen und an die spezifische Gruppe von Ressourcen innerhalb der ressourcenbasierten Richtlinie gebunden.

Das folgende Beispiel ermöglicht es einer IAM-Entität, alle DynamoDB-Aktionen für die MusicCollection und DynamoDB-Ressourcen auszuführen. MusicCollection

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" }, "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection", "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection/*" ] } ] }