Exemples de politiques DynamoDB basées sur les ressources - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de politiques DynamoDB basées sur les ressources

Lorsque vous spécifiez un ARN dans le Resource champ d'une stratégie basée sur les ressources, la stratégie ne prend effet que si la valeur spécifiée ARN correspond à celle ARN de la ressource DynamoDB à laquelle elle est attachée.

Note

N'oubliez pas de remplacer le italicized texte contenant les informations spécifiques à votre ressource.

Politique basée sur les ressources pour une table

La politique basée sur les ressources suivante attachée à une table DynamoDB nommée MusicCollection, donne aux IAM utilisateurs John and Jane autorisation d'exécution GetItemet BatchGetItemactions sur le MusicCollection ressource.

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

Politique basée sur les ressources pour un flux

La politique basée sur les ressources suivante attachée à un flux DynamoDB nommé donne aux utilisateurs 2024-02-12T18:57:26.492 IAM John and Jane autorisation d'exécution GetRecordsGetShardIterator, et DescribeStreamAPIactions sur la 2024-02-12T18:57:26.492 ressource.

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

Politique d'accès basée sur les ressources pour effectuer toutes les actions sur les ressources spécifiées

Pour permettre à un utilisateur d'effectuer toutes les actions sur une table et tous les index associés à une table, vous pouvez utiliser un caractère générique (*) pour représenter les actions et les ressources associées à la table. L'utilisation d'un caractère générique pour les ressources permettra à l'utilisateur d'accéder à la table DynamoDB et à tous ses index associés, y compris ceux qui n'ont pas encore été créés. Par exemple, la politique suivante donnera à l'utilisateur John autorisation d'effectuer des actions sur MusicCollection table et tous ses index, y compris les index qui seront créés dans le futur.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1111", "Effect": "Allow", "Principal":"arn:aws:iam::111122223333:user/John", "Action": "dynamodb:*", "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection", "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection/index/*" ] } ] }

Politique basée sur les ressources pour l'accès entre comptes

Vous pouvez définir des autorisations pour une IAM identité multi-comptes afin d'accéder aux ressources DynamoDB. Par exemple, vous pouvez avoir besoin d'un utilisateur d'un compte approuvé pour accéder au contenu de votre tableau, à condition qu'il n'accède qu'à des éléments spécifiques et à des attributs spécifiques de ces éléments. La politique suivante autorise l'accès à l'utilisateur John à partir d'un Compte AWS identifiant fiable 111111111111 pour accéder aux données d'une table dans le compte 123456789012 en utilisant le GetItemAPI. La politique garantit que l'utilisateur ne peut accéder qu'aux éléments dotés d'une clé primaire Jane et que l'utilisateur ne peut récupérer que Artist les attributsSongTitle, mais aucun autre attribut.

Important

Si vous ne spécifiez pas la SPECIFIC_ATTRIBUTES condition, vous verrez tous les attributs des articles renvoyés.

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

Outre la stratégie basée sur les ressources précédente, la politique basée sur l'identité attachée à l'utilisateur John doit également autoriser l'GetItemAPIaction en faveur de l'accès multicompte au travail. Voici un exemple de politique basée sur l'identité que vous devez associer à l'utilisateur John.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountIdentityBasedPolicy", "Effect": "Allow", "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" } } } ] }

L'utilisateur John peut faire une GetItem demande en spécifiant la table ARN dans le table-name paramètre d'accès à la table MusicCollection dans le compte 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

Politique basée sur les ressources avec conditions d'adresse IP

Vous pouvez appliquer une condition pour restreindre les adresses IP sources, les clouds privés virtuels (VPCs) et les points de VPC terminaison (VPCE). Vous pouvez spécifier des autorisations en fonction des adresses sources de la demande d'origine. Par exemple, vous pouvez autoriser un utilisateur à accéder aux ressources DynamoDB uniquement si elles sont accessibles depuis une source IP spécifique, telle qu'un point de terminaison d'entreprise. VPN Spécifiez ces adresses IP dans la Condition déclaration.

L'exemple suivant permet à l'utilisateur John accès à n'importe quelle ressource DynamoDB lorsque les sources sont et. IPs 54.240.143.0/24 2001:DB8:1234:5678::/64

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

Vous pouvez également refuser tout accès aux ressources DynamoDB, sauf lorsque la source est un point de terminaison VPC spécifique, par exemple vpce-1a2b3c4d.

{ "Id":"PolicyId", "Version":"2012-10-17", "Statement": [ { "Sid": "AccessToSpecificVPCEOnly", "Principal": "*", "Action": "dynamodb:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals":{ "aws:sourceVpce":"vpce-1a2b3c4d" } } } ] }

Stratégie basée sur les ressources utilisant un rôle IAM

Vous pouvez également spécifier un rôle IAM de service dans la politique basée sur les ressources. IAMles entités qui assument ce rôle sont limitées par les actions autorisées spécifiées pour le rôle et par l'ensemble de ressources spécifique dans le cadre de la politique basée sur les ressources.

L'exemple suivant permet à une IAM entité d'effectuer toutes les actions DynamoDB sur MusicCollection and MusicCollection Ressources DynamoDB.

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