Come posso decodificare e analizzare gli errori di autorizzazione "UnauthorizedOperation" per gli avvii non riusciti di istanze EC2?
Ho provato ad avviare un'istanza Amazon Elastic Compute Cloud (Amazon EC2) e ho ricevuto l'errore: "An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message encoded-message".
Breve descrizione
L'errore UnauthorizedOperation può verificarsi quando la policy di AWS Identity and Access Management (IAM) è troppo restrittiva. Questo errore può verificarsi anche quando l'utente IAM non dispone delle autorizzazioni per avviare istanze EC2. Per ottenere maggiori dettagli sull'errore, utilizza l'interfaccia della linea di comando AWS (AWS CLI) per decodificare il messaggio codificato contenuto nel messaggio di errore.
Nota: per decodificare il messaggio codificato, l'utente o il ruolo IAM deve disporre dell'autorizzazione per eseguire l'operazione API DecodeAuthorizationMesssage. Se l'utente o il ruolo non dispone di questa autorizzazione, l'operazione di decodifica non riesce e viene visualizzato il messaggio di errore seguente:
"Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: xxx is not authorized to perform: (sts:DecodeAuthorizationMessage) action".
Risoluzione
Nota: se ricevi messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta Troubleshooting errors for the AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per decodificare l'errore di mancata autorizzazione, completa i passaggi seguenti:
-
Esegui il comando decode-authorization-message:
aws sts decode-authorization-message --encoded-message encoded-message-error
Nota: sostituisci encoded-message-error con il messaggio codificato contenuto nel messaggio di errore.
Il messaggio decodificato elenca le autorizzazioni richieste che mancano nella policy dell'utente o del ruolo IAM.
Esempio di messaggio codificato:
Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn
Esempio di messaggio decodificato:
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\"}]}}]}}}" }
-
Controlla i campi principal, action, resource, condition e key per ottenere maggiori informazioni sulla causa dell'errore. Il messaggio include l'azione e la risorsa richieste, il principale che ha effettuato la richiesta e i valori della chiave di condizione della richiesta dell'utente.
Nell'esempio precedente, la richiesta ha esito negativo perché AWS-User non dispone dell'autorizzazione per eseguire l'azione iam:PassRole sull'ARN arn:aws:iam::accountID:role/EC2_instance_Profile_role.
-
Modifica la policy IAM associata all'utente o al ruolo IAM per aggiungere le autorizzazioni richieste.
Puoi anche utilizzare il simulatore di policy IAM per risolvere i problemi relativi alle policy basate sull'identità e ai limiti delle autorizzazioni IAM.
Informazioni correlate
Perché non posso eseguire i comandi di AWS CLI sulla mia istanza EC2?
Perché non riesco ad avviare o a lanciare la mia istanza EC2?
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 9 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 mesi fa