Passer au contenu

Comment puis-je décoder et analyser les erreurs d'autorisation « UnauthorizedOperation » en cas d'échec du lancement d'une instance EC2 ?

Lecture de 3 minute(s)
0

Lorsque j'essaie de lancer une instance Amazon Elastic Compute Cloud (Amazon EC2), le message d'erreur suivant s'affiche : « An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message encoded-message ». (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 codé d’échec de l’autorisation message-codé)

Brève description

L'erreur UnauthorizedOperation peut se produire lorsque la stratégie AWS Identity and Access Management (IAM) est trop restrictive. Cette erreur peut également se produire lorsque l'utilisateur IAM n'est pas autorisé à lancer des instances EC2. Pour obtenir plus de détails sur l’échec, utilisez l’interface de la ligne de commande AWS (AWS CLI) ou AWS CloudShell pour décoder le message codé dans le message d’erreur. Le message codé est similaire à l'exemple suivant :

« Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn » (Échec de lancement - Vous n’êtes pas autorisé à effectuer cette opération. Message codé d’échec de l’autorisation : 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn)

Remarque : Pour décoder le message codé, l'utilisateur ou le rôle IAM doit être autorisé à effectuer l'opération d'API DecodeAuthorizationMesssage. Si l’utilisateur ou le rôle ne dispose pas de l’autorisation, l’action de décodage échoue avec le message d’erreur suivant :

« Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: xxx is not authorized to perform: (sts:DecodeAuthorizationMessage) action. » (Erreur : Une erreur de client (Accès refusé) est survenue lors de l’appel de l’opération DecodeAuthorizationMessage : L’utilisateur : xxx n’est pas autorisé à effectuer l’action : (sts:DecodeAuthorizationMessage)).

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Pour décoder l'erreur d'échec d'autorisation, procédez comme suit :

  1. Exécutez la commande decode-authorization-message :
    aws sts decode-authorization-message --encoded-message encoded-message-error
    Remarque : Remplacez encoded-message-error par le message codé qui se trouve dans le message d'erreur.
    Exemple de message décodé :
    aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn{
        "DecodedMessage":
    {
    "allowed
    ...
    "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écodé répertorie les autorisations requises qui ne figurent pas dans le rôle IAM ou la stratégie utilisateur.
  2. Vérifiez les champs principal, action, ressource, condition et clé dans le message décodé pour obtenir plus d'informations sur la cause de l’échec. Le message inclut l'action et la ressource demandées, le principal qui a présenté la requête et les valeurs de la clé de condition de la requête de l'utilisateur.
    Dans l’exemple précédent, la requête a échoué car l’Utilisateur AWS n’est pas autorisé à effectuer l’action iam:PassRole sur l’ARN arn:aws:iam::accountID:role/EC2_instance_Profile_role.
  3. Modifiez la politique IAM associée à l'utilisateur ou au rôle IAM pour ajouter les autorisations requises.

Vous pouvez également utiliser le simulateur de politique IAM pour résoudre les problèmes liés aux politiques basées sur l'identité et aux limites d'autorisation IAM.

Informations connexes

Pourquoi ne puis-je pas exécuter les commandes de l’AWS CLI sur mon instance EC2 ?

Pourquoi ne puis-je pas démarrer ou lancer mon instance EC2 ?

Résoudre les messages d’erreur d’accès refusé

AWS OFFICIELA mis à jour il y a 7 mois