Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je résoudre les erreurs d’accès refusé ou d’opération non autorisée à l’aide d’une stratégie IAM ?
J’essaie d’effectuer une action sur une ressource AWS et j’ai reçu un message d’erreur « access denied » ou « unauthorized operation ».
Brève description
Voici comment résoudre les problèmes liés aux politiques de gestion des identités et des accès AWS (IAM) :
- Identifiez l’appelant d’API
- Vérifiez les autorisations de politique IAM
- Évaluez les politiques de contrôle des services (SCP)
- Consultez les politiques basées sur l’identité et les politiques basées sur les ressources
- Vérifiez les limites d’autorisation
- Évaluez les politiques de session
- Assurez-vous que les clés d’état de la politique sont prises en charge par les API
- Consultez les exemples d’erreurs et de résolutions concernant la politique IAM
Résolution
Identifier l’appelant d’API et comprendre les messages d’erreur
Important :
- avant de commencer, vérifiez que vous avez installé et configuré l’interface de la ligne de commande AWS (AWS CLI).
- Si vous recevez des erreurs lors de l’exécution des commandes de l’interface de la ligne de commande AWS, assurez-vous que vous utilisez la version la plus récente de l’interface de la ligne de commande AWS.
Avant de consulter les politiques IAM, vérifiez que les appels d’API sont effectués au nom de l’entité IAM adéquate. Si le message d’erreur ne contient pas d’informations sur l’appelant, suivez les étapes suivantes pour identifier l’appelant d’API :
- Ouvrez la Console de gestion AWS.
- Dans le coin supérieur droit de la page, cliquez sur la flèche qui se situe à côté des informations du compte.
- Si vous êtes connecté en tant que rôle IAM, indiquez « Actuellement actif en tant que » comme rôle supposé et « ID de compte » pour l’identifiant de compte.
- Si vous êtes connecté en tant qu’utilisateur fédéré, indiquez « Utilisateur fédéré » comme rôle de fédération et nom de la session de rôle.
-ou-
Utilisez la commande de l’interface de la ligne de commande AWS get-caller-identity pour identifier l’appelant d’API. Vous pouvez également utiliser la commande AWS CLI avec l’indicateur --debug pour identifier la source des informations d’identification des résultats, comme ceci :
2018-03-13 16:23:57,570 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials
Vérifiez les autorisations de politique IAM
Vérifiez si les autorisations nécessaires sont accordées à l’appelant d’API en consultant les politiques IAM jointes. Pour en savoir plus, consultez la section Identification d’une demande autorisée ou refusée dans un compte.
Évaluation des SCP d’AWS Organizations
Si le compte AWS fait partie d’une AWS Organization, les SCP peuvent être appliquées au niveau hiérarchique pour autoriser ou refuser des actions. Les autorisations SCP sont héritées par toutes les entités IAM du compte AWS. Vérifiez que l’appelant d’API n’est pas explicitement refusé dans la SCP.
Vérifiez que l’API appelée n’est pas explicitement refusée dans une SCP organisationnelle qui a un impact sur l’appelant
Consultez les politiques basées sur l’identité et les politiques basées sur les ressources
Vérifiez que la stratégie basée sur l’identité des entités IAM contient une instruction d’autorisation explicite pour l’appelant d’API. Vérifiez ensuite que l’API prend en charge les autorisations au niveau des ressources. Si l’appelant de l’API ne prend pas en charge les autorisations au niveau des ressources, vérifiez que le caractère générique « * » est spécifié dans l’élément ressource de la déclaration de politique IAM.
Vous pouvez associer des politiques basées sur les ressources à une ressource du service AWS pour fournir un accès. Pour en savoir plus, consultez la section Politiques basées sur l’identité et Politiques basées sur une ressource.
Voici comment consulter le résumé de la politique IAM :
- Ouvrez la console IAM.
- Dans le volet de navigation, sélectionnez Politiques.
- Pour développer la vue détaillée de la politique, sélectionnez la flèche qui se situe à côté du nom de la politique.
Dans l’exemple suivant, la politique ne fonctionne pas, car les actions d’API Amazon Elastic Compute Cloud (Amazon EC2) ne prennent pas toutes en charge les autorisations au niveau des ressources :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SorryThisIsNotGoingToWorkAsExpected", "Effect": "Allow", "Action": ["ec2:*"], "Resource": "arn:aws:ec2:us-east-1:accountid:instance/*" } ] }
Les utilisateurs IAM qui tentent de lancer une instance Amazon EC2 dans la région us-east-1 à l’aide de la commande run-instances de la CLI AWS reçoivent un message d’erreur similaire au suivant :
"An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message:…"
Pour résoudre ce problème, remplacez la ressource par un caractère générique "*". Ce problème vient du fait qu’Amazon EC2 prend seulement en charge des autorisations partielles au niveau des ressources.
Pour décoder le message d’échec d’autorisation et obtenir plus de renseignements sur la raison de cet échec, utilisez l’action d’API DecodeAuthorizationMessage similaire à la suivante :
$ aws sts decode-authorization-message --encoded-message <encoded-message-from-the-error>
Vérification des limites d’autorisation
Si une limite d’autorisation est liée à l’entité IAM, celle-ci définit les autorisations maximales dont dispose l’entité.
Évaluation des politiques de session
Si l’appelant d’API est un rôle IAM ou un utilisateur fédéré, les politiques de session sont transmises pendant la durée de la session. Les autorisations d’une session correspondent à l’intersection entre les politiques basées sur l’identité de l’entité IAM utilisée pour créer la session, et les politiques de session. Vérifiez que l’appel d’API existe dans la politique et l’entité IAM.
Vérifiez que les clés d’état de la politique sont prises en charge par les API
Les clés d’état AWS peuvent servir à comparer les éléments d’une demande d’API adressée à AWS avec les valeurs clés spécifiées dans une politique IAM. Les clés de condition peuvent être soit une clé de condition globale, soit des clés définies par le service AWS. Les clés d’état spécifiques au service AWS peuvent uniquement être utilisées dans le cadre de ce service (par exemple, les conditions EC2 sur les actions d’API EC2). Pour en savoir plus, consultez Actions, ressources et clés de condition pour les AWS services.
Un élément de condition peut contenir plusieurs conditions, et chaque bloc de conditions peut contenir plusieurs paires clé-valeur. Pour en savoir plus, consultez la section Conditions avec plusieurs clés ou valeurs de contexte.
Dans cet exemple de politique, l’élément de condition est respecté si une demande d’API IAM est appelée par l’administrateur utilisateur IAM et que l’adresse IP source provient de 1.1.1.0/24 ou 2.2.2.0/24.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": { "StringEquals": { "aws:username": "admin" }, "IpAddress": { "aws:SourceIp": [ "1.1.1.0/24", "2.2.2.0/24" ] } } } ] }
Exemples d’erreurs et de résolutions concernant la politique IAM
Consultez les exemples suivants pour identifier le message d’erreur, l’appelant d’API, l’API et les ressources appelées :
Exemple de message d’erreur | Appelant d’API | API | Ressources | Quand |
A : « Une erreur (UnauthorizedOperation) s’est produite lors de l’appel de l’opération DescribeInstances : Vous n’êtes pas autorisé à effectuer cette opération ». | inconnu | DescribeInstances | inconnu | heure à laquelle l’erreur s’est produite |
B : « Une erreur (AccessDenied) s’est produite lors de l’appel de l’opération AssumeRole : Utilisateur : arn:aws:iam::123456789012:user/test n’est pas autorisé à effectuer : sts:AssumeRole sur la ressource : arn:aws:iam::123456789012:role/EC2-FullAccess » | arn:aws:iam::123456789012:user/test | AssumeRole | arn:aws:iam::123456789012:role/EC2-FullAccess | heure à laquelle l’erreur s’est produite |
C : « Une erreur (AccessDenied) s’est produite lors de l’appel de l’opération GetSessionToken : Impossible d’appeler GetSessionToken avec les informations d’identification de session » | inconnu | GetSessionToken | inconnu | heure à laquelle l’erreur s’est produite |
D : « Une erreur (UnauthorizedOperation) s’est produite lors de l’appel de l’opération AssociateIamInstanceProfile : Vous n’êtes pas autorisé à effectuer cette opération. Message d’échec d’autorisation codé : .... » | inconnu | AssociateIamInstanceProfile | inconnu | heure à laquelle l’erreur s’est produite |
Cette méthode d’évaluation vous permet d’identifier la cause des messages d’erreur que vous pouvez recevoir en cas de problèmes d’autorisation pour différents services AWS. Pour plus de renseignements, consultez les messages d’erreur et les étapes de résolution suivants :
Exemple de message d’erreur A :
Ce message d’erreur indique que vous n’êtes pas autorisé à appeler l’API DescribeInstances.
Voici comment résoudre cette erreur :
- Identifiez l’appelant d’API.
- Vérifiez que l’action d’API ec2:DescribeInstances ne figure dans aucune instruction de refus.
- Vérifiez que l’action d’API ec2:DescribeInstances figure dans les instructions d’autorisation.
- Vérifiez qu’aucune ressource n’est spécifiée pour cette action d’API. Remarque : cette action d’API ne prend pas en charge les autorisations au niveau des ressources.
- Confirmez que toutes les conditions IAM spécifiées dans l’instruction d’autorisation sont prises en charge par l’action DescribeInstances et que les conditions sont respectées.
Pour en savoir plus, consultez DescribeInstanceStatus.
Exemple de message d’erreur B :
Ce message d’erreur inclut le nom de l’API, l’appelant d’API et la ressource cible. Vérifiez que l’identité IAM qui a appelé l’API dispose de l’accès adéquat aux ressources. Consultez les politiques IAM en suivant la méthode d’évaluation précédente.
Pour résoudre cette erreur, effectuez les étapes suivantes pour confirmer la politique de confiance du rôle IAM : EC2-FullAccess :
- Vérifiez que arn:aws:iam::123456789012:user/test ou arn:aws:iam::123456789012:root ne figure dans aucune instruction de refus de la politique de confiance.
- Vérifiez que arn:aws:iam::123456789012:user/test ou arn:aws:iam::123456789012:root figure dans l’instruction d’autorisation de la politique de confiance.
- Confirmez que toutes les conditions IAM spécifiées dans cette instruction d’autorisation sont prises en charge par l’action d’API sts:AssumeRole et qu’elles sont respectées.
Suivez ces étapes pour confirmer les politiques IAM associées à l’appelant d’API (arn:aws:iam::123456789012:user/test) :
- Confirmez que arn:aws:iam::123456789012:role/EC2-FullAccess ne figure dans aucune instruction de refus avec l’action d’API sts:AssumeRole.
- Si arn:aws:iam::123456789012:root figure dans l’instruction d’autorisation de la politique de confiance, confirmez que arn:aws:iam::123456789012:role/EC2-FullAccess figure dans l’instruction d’autorisation des politiques IAM avec l’action d’API sts:AssumeRole.
- Confirmez que toutes les conditions IAM spécifiées dans cette instruction d’autorisation sont prises en charge par l’action d’API sts:AssumeRole et qu’elles sont respectées.
Exemple de message d’erreur C :
Ce message d’erreur indique que get-session-token n’est pas pris en charge par les informations d’identification temporaires. Pour en savoir plus, consultez la section Comparaison des opérations d’API AWS STS.
Exemple de message d’erreur D :
Ce message d’erreur renvoie un message encodé contenant des détails sur l’échec de l’autorisation. Pour décoder le message d’erreur et obtenir les renseignements sur l’échec de l’autorisation, consultez DecodeAuthorizationMessage. Après avoir décodé le message d’erreur, identifiez l’appelant d’API et examinez les autorisations et conditions au niveau des ressources.
Pour résoudre cette erreur, suivez ces étapes pour vérifier les autorisations de la politique IAM :
- Si le message d’erreur indique que l’API est explicitement refusée, supprimez les actions d’API ec2:AssociateIamInstanceProfile ou iam:PassRole de l’instruction correspondante.
- Confirmez que ec2:AssociateIamInstanceProfile et iam:PassRole figurent dans l’instruction d’autorisation avec des cibles de ressources adéquates et prises en charge. Par exemple, confirmez que les cibles de ressources de l’action API ec2:AssociateIamInstanceProfile sont des instances EC2 et que les cibles de ressources de iam:PassRole sont des rôles IAM.
- Si les actions ec2:AssociateIamInstanceProfile et iam:PassRole API figurent dans la même instruction d’autorisation, confirmez que toutes les conditions sont prises en charge par les actions ec2:AssociateIamInstanceProfile et iam:PassRole API et qu’elles sont respectées.
- Si les actions ec2:AssociateIamInstanceProfile et iam:PassRole API figurent dans des instructions d’autorisation séparées, confirmez que toutes les conditions de chaque instruction d’autorisation sont prises en charge par une action et qu’elles sont respectées.
Pour en savoir plus, consultez les sections Logique d’évaluation de politiques et Identification d’une demande autorisée ou refusée dans un compte.
Informations complémentaires
Vidéos associées



Contenus pertinents
- demandé il y a 2 moislg...
- demandé il y a 9 moislg...
- demandé il y a 4 moislg...
- demandé il y a 4 moislg...
- demandé il y a 10 moislg...
- AWS OFFICIELA mis à jour il y a 4 mois
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 5 mois