Comment résoudre le message d'erreur AccessDeniedException lorsque j'accède à une table Amazon DynamoDB ?
Je souhaite accéder à une table Amazon DynamoDB, mais le message d’erreur AccessDeniedException s’affiche.
Brève description
Ce message d’erreur peut s'afficher pour les raisons suivantes :
- Le rôle Gestion des identités et des accès AWS (AWS IAM) que vous avez utilisé pour accéder à la table DynamoDB ne dispose pas des autorisations requises.
- L'accès à la table DynamoDB est limité au niveau de l'organisation.
- La politique associée au point de terminaison Amazon Virtual Private Cloud (Amazon VPC) pour DynamoDB restreint l'opération.
- Vous avez activé l'authentification multifactorielle (MFA) et vous ne l'avez pas utilisée pour vous connecter et accéder à la table.
- Vous utilisez une clé gérée par le client ou une clé gérée par AWS pour protéger vos tables DynamoDB.
- Vous ne pouvez pas accéder à Amazon CloudWatch Contributor Insights pour DynamoDB.
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de ligne de commande AWS (AWS CLI), consultez la rubrique Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface AWS CLI.
Résolution
Le rôle IAM ne dispose pas des autorisations requises
Lorsque vous créez une table DynamoDB, accordez les autorisations requises au rôle IAM que vous utilisez pour accéder à la table. Vous pouvez associer les politiques aux utilisateurs, groupes ou rôles IAM pour accorder les autorisations requises. Pour plus d'informations, consultez la rubrique Utilisation de politiques basées sur l'identité avec Amazon DynamoDB.
Pour résoudre les problèmes liés aux échecs d’appel d'API d'autorisation IAM, utilisez un script AWS CLI :
( echo "Time,Identity ARN,Event ID,Service,Action,Error,Message";> aws cloudtrail lookup-events --start-time "2022-08-04T13:23:00Z" --end-time "2022-08-04T13:27:00Z" --query "Events[*].CloudTrailEvent" --output text \ > | jq -r ". | select(.userIdentity.arn == \"your-ARN\" and .eventType == \"AwsApiCall\" and .errorCode != null > and (.errorCode | ascii_downcase | (contains(\"accessdenied\") or contains(\"unauthorized\")))) > | [.eventTime, .userIdentity.arn, .eventID, .eventSource, .eventName, .errorCode, .errorMessage] | @csv" > ) | column -t -s'",'
Remplacez votre-ARN par l’ARN IAM de vos ressources.
Remarque : le script AWS CLI requiert le processeur JSON de ligne de commande jq. Pour le didacticiel et les instructions de téléchargement, consultez la rubrique Format de sortie JSON.
Pour les distributions qui utilisent le package yum, exécutez la commande suivante :
$ sudo yum install jq
Le résultat de cette commande est similaire à ce qui suit :
Time Identity ARN Event ID Service Action Error Message 2022-08-04T13:24:14Z arn:aws:iam::111122223333:user/article 42f420fe-ef06-43be-98a6-d5a0a90d7b4c dynamodb.amazonaws.com ListTables AccessDenied User: arn:aws:iam::111122223333:user/article is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:111122223333:table/* with an explicit deny in an identity-based policy 2022-08-04T13:51:22Z arn:aws:iam::111122223333:user/article b174e4e1-94a7-403e-a15f-1234aec796a6 dynamodb.amazonaws.com ListTables AccessDenied User: arn:aws:iam::111122223333:user/article is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:111122223333:table/* because no identity-based policy allows the dynamodb:ListTables action
Dans la sortie précédente, vous ne pouvez pas effectuer l'action ListTables car vous avez associé une autorisation à l'utilisateur 111122223333 qui refuse l'opération. Le deuxième message signifie qu'aucune politique basée sur l'identité n'autorise l'action dynamodb:ListTables.
Les bonnes pratiques permettant de vous assurer que votre rôle IAM dispose des autorisations requises pour accéder à la table DynamoDB sont les suivantes :
- N'incluez le rôle IAM dans aucune instruction REFUSER de la politique de confiance.
- Incluez le rôle IAM dans l’instruction AUTORISER de la politique de confiance.
- Assurez-vous que toutes les conditions IAM spécifiées dans l’instruction AUTORISER sont prises en charge par l’action d’API sts:AssumeRole.
- Si vous utilisez I’interface de ligne de commande AWS (AWS CLI) pour accéder à la table DynamoDB, utilisez l'ID de clé d'accès et la clé d'accès secrète appropriés.
Pour plus d'informations, consultez la rubrique Comment puis-je obtenir des données pour aider à résoudre les erreurs d'accès refusé ou non autorisé aux autorisations IAM ?
L'accès à la table DynamoDB est limité au niveau de l'organisation
Si le message d'erreur suivant s'affiche lorsque vous tentez d'accéder à la table DynamoDB, cela signifie qu'une politique de contrôle des services (SCP) vous a refusé l'accès :
"L’utilisateur : arn:aws:iam::11111222333:user/Administrateur n’est pas autorisé à effectuer : dynamodb:ListTables sur la ressource : arn:aws:dynamodb:us-east-1:11111222333:table avec un refus explicite dans une politique de contrôle des services"
Pour résoudre ce problème, mettez à jour la politique qui est définie au niveau de l'organisation.
Remarque : si vous refusez les opérations DynamoDB au niveau de l'organisation, tous les rôles IAM présents dans cette organisation ou ce compte AWS sont refusés. Même si le rôle ou le compte dispose des autorisations requises, le rôle ou le compte est refusé.
La politique de point de terminaison Amazon VPC restreint l’opération
Pour améliorer la confidentialité et la sécurité du transfert de données entre la table DynamoDB et votre application, vous pouvez utiliser un Amazon VPC. Si le point de terminaison d’un VPC dispose d'une politique de ressources IAM qui limite l'accès des utilisateurs IAM à la table, le message d'erreur suivant s'affiche :
"Une erreur s’est produite (AccessDeniedException) lors de l’appel de l’opération ListTables : L’utilisateur : arn:aws:iam::111222333444:user/Administrateur n’est pas autorisé à effectuer : dynamodb:ListTables sur la ressource : arn:aws:dynamodb:us-east-1:11111222333:table/* avec un refus explicite dans une politique de point de terminaison d’un VPC"
Si ce message d’erreur s’affiche, cela signifie que la politique de point de terminaison d’un VPC inclut une instruction REFUSER explicite qui refuse l'opération ListTables pour l'utilisateur Administrateur.
Pour consulter la politique de point de terminaison d’un VPC, exécutez la commande de l'interface de ligne de commande AWS (AWS CLI) describe-vpc-endpoints. Vous pouvez également suivre les étapes ci-dessous pour consulter la politique dans la console :
- Ouvrez la console Amazon VPC.
- Dans le volet de navigation, choisissez Points de terminaison.
- Sélectionnez le point de terminaison d’un VPC.
- Choisissez l’onglet Politique pour consulter la politique de point de terminaison.
Pour résoudre ce problème, mettez à jour la politique de point de terminaison d’un VPC.
Vous n'avez pas utilisé la MFA pour vous connecter et accéder à la table
Supposons que vous ayez configuré la MFA dans votre compte avec la politique basée sur l'identité suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }
Dans ce cas, toutes les actions, à l'exception de celles qui sont requises pour utiliser la MFA à des fins d'authentification, sont refusées. Si l'utilisateur IAM n'est pas connecté avec la MFA, toutes les actions qui ne sont pas répertoriées dans la politique ci-dessus sont refusées, y compris les actions DynamoDB.
Pour résoudre ce problème, connectez-vous avec la MFA.
Votre table DynamoDB utilise la clé gérée par le client ou la clé gérée par AWS
Les tables DynamoDB qui utilisent une clé gérée par le client ou une clé AWS Key Management Service (AWS KMS) doivent disposer des autorisations appropriées. Les politiques relatives aux clés KMS doivent autoriser DynamoDB à utiliser la clé en votre nom. L'utilisateur IAM qui accède à la table doit disposer des autorisations minimales suivantes sur la clé AWS KMS :
- DynamoDB utilise la clé AWS KMS pour générer et chiffrer une clé de données unique pour la table appelée clé de table. Pour générer et chiffrer cette clé, vous devez disposer de l'autorisation kms:GenerateDataKey.
- Pour accéder aux clés chiffrées, la clé AWS KMS doit disposer des autorisations kms:Encrypt et kms:Decrypt.
- La clé de table permet de sécuriser les clés de chiffrement des données qui sont utilisées pour chiffrer les données de la table. Si la clé gérée par le client est modifiée pour une table, DynamoDB produit une nouvelle clé de table. DynamoDB utilise ensuite la nouvelle clé de table pour chiffrer à nouveau les clés de chiffrement des données. Pour effectuer cette opération, vous devez disposer de l'autorisation kms:ReEncrypt.
- DynamoDB utilise l'opération kms:DescribeKey pour déterminer si la clé gérée par le client que vous avez sélectionnée existe dans le compte et la région. Si la clé est supprimée de manière aléatoire, l'appel DescribeKey renvoie une erreur.
- DynamoDB utilise des octrois pour définir des autorisations sur une clé gérée par le client. Ces autorisations d'octroi sont utilisées lorsque DynamoDB effectue des tâches de maintenance du système et de protection continue des données en arrière-plan. Les autorisations d'octroi sont également utilisées pour générer des clés de table. Par conséquent, assurez-vous de disposer de l'autorisation kms:CreateGrant.
Pour plus d'informations, consultez la rubrique Comment Amazon DynamoDB utilise AWS KMS.
Vous ne pouvez pas accéder à CloudWatch Contributor Insights pour DynamoDB
Si le message d'erreur s'affiche lorsque vous tentez d'accéder à CloudWatch Contributor Insights pour DynamoDB, il est possible que vous ne disposiez pas des autorisations IAM appropriées. Pour accéder à CloudWatch Contributor Insights, vous devez disposer des autorisations suivantes :
Pour plus d'informations, consultez la rubriqueCloudWatch Contributor Insights pour DynamoDB : principe de fonctionnement
Remarque : DynamoDB ne prend pas en charge le contrôle d'accès basé sur les attributs (ABAC). En outre, les conditions basées sur des balises ne peuvent pas être utilisées pour contrôler l'accès aux tables. Utilisez plutôt les conditions de la politique IAM pour un contrôle d'accès affiné (FGAC).
Informations connexes
IAM : autorise et refuse l'accès à plusieurs services par programmation et dans la console
Utilisation de politiques basées sur les ressources pour DynamoDB
- Sujets
- Database
- Balises
- Amazon DynamoDB
- Langue
- Français

Contenus pertinents
- demandé il y a 3 ans
- demandé il y a 4 mois
AWS OFFICIELA mis à jour il y a 7 mois