Pourquoi le message d'erreur « Vous n'êtes pas autorisé à effectuer cette opération » s'affiche-t-il lorsque je tente de lancer une instance EC2 ?

Date de la dernière mise à jour : 30/03/2020

Lorsque je tente de lancer une instance Amazon Elastic Compute Cloud (Amazon EC2), je reçois le message d'erreur « Une erreur s'est produite (UnauthorizedOperation) lors de l'appel de l'opération RunInstances : vous n'êtes pas autorisé à effectuer cette opération. Message d'échec codé relatif à l'échec de l'autorisation ». Comment puis-je résoudre ce problème ? 

Brève description

Le message d'erreur « UnauthorizedOperation » indique que les autorisations associées au rôle AWS Identity and Access Management (IAM), ou à l'utilisateur qui tente d'effectuer l'opération, ne permettent pas de lancer des instances EC2. Puisqu'un message codé est également signalé, utilisez l'interface de ligne de commande AWS (AWS CLI) pour le décoder. Cette opération permet d'obtenir des détails supplémentaires sur l'échec de l'autorisation.

Prérequis

L'utilisateur ou le rôle IAM qui tente de décoder le message doit être autorisé à effectuer l'action DecodeAuthorizationMesssage (sts : DecodeAuthorizationMessage) via une stratégie IAM. Si l'utilisateur ou le rôle ne dispose pas de l'autorisation ad hoc, le décodage échoue et le message d'erreur suivant s'affiche :

« Erreur : une erreur client (AccessDenied) s'est produite lors de l'appel de l'opération DecodeAuthorizationMessage : l'utilisateur xxx n'est pas autorisé à effectuer l'action (sts : DecodeAuthorizationMessage). ».

Pour plus d'informations sur l'action DecodeAuthorizationMessage, consultez la section DecodeAuthorizationMessage.

Solution

1.    Vérifiez que l'interface de ligne de commande AWS est installée et configurée en exécutant la commande suivante.

$ aws --version

2.    Exécutez la commande decode-authorization-message. Remplacez encoded-message par le message encodé contenu dans le message d'erreur.

$ aws sts decode-authorization-message --encoded-message encoded-message

3.    Le message décodé répertorie les autorisations requises dont le rôle ou l'utilisateur IAM ne dispose pas.

Le message ci-dessous est codé :

Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

Le message ci-dessous est décodé :

$ aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn

{
    "DecodedMessage": 
"{\"allowed\":false,\"explicitDeny\":false,\"matchedStatements\":{\"items\":[]},\"failures\":{\"items\":[]},\"context\":{\"principal\":{\"id\":\"ABCDEFGHIJKLMNO\",\"name\":\"AWS-User\",
\"arn\":\"arn:aws:iam::accountID:user/test-user\"},\"action\":\"iam:PassRole\",
\"resource\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\",\"conditions\":{\"items\":[{\"key\":\"aws:Region\",\"values\":{\"items\":[{\"value\":\"us-east-2\"}]}},
{\"key\":\"aws:Service\",\"values\":{\"items\":[{\"value\":\"ec2\"}]}},{\"key\":\"aws:Resource\",\"values\":{\"items\":[{\"value\":\"role/EC2_instance_Profile_role\"}]}},
{\"key\":\"iam:RoleName\",\"values\":{\"items\":[{\"value\":\"EC2_instance_Profile_role\"}]}},{\"key\":\"aws:Account\",\"values\":{\"items\":[{\"value\":\"accountID\"}]}},
{\"key\":\"aws:Type\",\"values\":{\"items\":[{\"value\":\"role\"}]}},{\"key\":\"aws:ARN\",\"values\":{\"items\":[{\"value\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\"}]}}]}}}"
}

Le message d'erreur précédent indique que la requête n'a pas permis d'appeler la commande RunInstances car l'utilisateur AWS-User n'était pas autorisé à effectuer l'action iam:PassRole avec le rôle arn:aws:iam::accountID:role/EC2_instance_Profile_role.

4.    Modifiez la stratégie IAM associée au rôle ou à l'utilisateur IAM pour ajouter les autorisations manquantes.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?