View a markdown version of this page

Exemples de politiques basées sur les ressources DynamoDB - 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 basées sur les ressources DynamoDB

Lorsque vous spécifiez un ARN dans le champ Resource d’une politique basée sur les ressources, la politique ne prend effet que si l’ARN spécifié correspond à celui de la ressource DynamoDB à laquelle il est attaché.

Note

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

Resource-based politique relative à une table

La politique basée sur les ressources suivante, associée à une table DynamoDB nomméeMusicCollection, donne aux utilisateurs IAM l'Janeautorisation d'effectuer John GetItem des actions sur la ressource. 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 politique pour un flux

La politique basée sur les ressources suivante, associée à un flux DynamoDB nommé, 2024-02-12T18:57:26.492 donne aux utilisateurs IAM l'Janeautorisation John d'effectuer des GetRecords actions d'DescribeStreamAPI sur la ressource. GetShardIterator 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 politique d'accès pour effectuer toutes les actions sur des 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 John autorisera l'utilisateur à effectuer toutes les actions sur la MusicCollection table et tous ses index, y compris les index qui seront créés ultérieurement.

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 politique d'accès entre comptes

Vous pouvez spécifier des autorisations pour une identité IAM intercompte afin d’accéder aux ressources DynamoDB. Par exemple, vous pouvez avoir besoin qu’un utilisateur d’un compte approuvé bénéficie d’un accès au contenu de votre table, à condition qu’il n’accède qu’à des éléments 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 sécurisé 111111111111 pour accéder aux données d'une table du compte à 123456789012 l'aide de l'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 les attributs Artist et SongTitle aucun autre attribut.

Important

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

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

Outre la politique basée sur les ressources précédente, la politique basée sur l'identité attachée à l'utilisateur doit John également autoriser l'action de l'GetItemAPI pour que l'accès entre comptes fonctionne. Voici un exemple de politique basée sur l'identité que vous devez associer à l'utilisateur. 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" } } } ] }

L'utilisateur John peut faire une GetItem demande en spécifiant l'ARN de la table dans le table-name paramètre d'accès à la table MusicCollection du compte123456789012.

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 politique avec conditions d'adresse IP

Vous pouvez appliquer une condition pour restreindre les adresses IP sources, les clouds privés virtuels (VPC) et les points de terminaison d’un VPC (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 à partir d’une source IP spécifique, telle qu’un point de terminaison VPN d’entreprise. Spécifiez ces adresses IP dans la déclaration Condition.

L'exemple suivant permet à l'utilisateur d'Johnaccéder à n'importe quelle ressource DynamoDB lorsque les adresses IP sources sont 54.240.143.0/24 et. 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" ] } } } ] }

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

Important

Une politique basée sur les ressources qui contient uniquement une Deny instruction qui "Principal": "*" refuse l'accès à tous les principaux, y compris votre propre capacité à mettre à jour ou à supprimer la politique ultérieurement. Si vous joignez une politique susceptible de vous bloquer de cette manière, DynamoDB la rejette avec l'erreur suivante : La nouvelle stratégie de ressources ne vous permettra pas de mettre à jour la stratégie de ressources à l'avenir. L'ajout d'une Allow instruction distincte ne résout pas ce problème, car une instruction explicite remplace Deny toujours une Allow instruction. Pour refuser l'accès à tout le monde sauf à un point de terminaison VPC spécifique tout en conservant la capacité de gérer la politique, exemptez le principal administrateur de l'Denyinstruction en ajoutant une ArnNotEquals condition activéeaws:PrincipalArn, comme illustré dans l'exemple suivant.

Important

Lorsque vous utilisez DAX avec des tables DynamoDB dont les IPv6-only environnements comportent IP-based des politiques de ressources, vous devez configurer des règles d'accès supplémentaires. Si votre politique de ressources restreint l'accès à l'espace d'adressage IPv4 0.0.0.0/0 des tables, vous devez autoriser l'accès au rôle IAM associé à votre cluster DAX. Ajoutez une ArnNotEquals condition à votre politique pour garantir que DAX conserve l'accès à vos tables DynamoDB. Pour plus d'informations, consultez DAX et 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 politique utilisant un rôle IAM

Vous pouvez également spécifier un rôle de service IAM dans la politique basée sur les ressources. Les entités IAM 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 entité IAM d'effectuer toutes les actions DynamoDB sur les ressources MusicCollection et MusicCollection DynamoDB.

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