Como posso decodificar uma mensagem de falha de autorização depois de receber um erro de “UnauthorizedOperation” durante a execução de uma instância do EC2?

3 minuto de leitura
0

Estou tentando executar uma instância do Amazon Elastic Compute Cloud (Amazon EC2), mas recebo o erro “Ocorreu um erro (UnauthorizedOperation) ao chamar a operação RunInstances: Você não tem autorização para realizar essa operação. Mensagem de falha de autorização codificada “encoded-message”. Como faço para resolver isso?

Breve descrição

O erro “UnauthorizedOperation” indica que as permissões anexadas ao perfil ou usuário do AWS Identity and Access Management (IAM) que está tentando realizar a operação não tem as permissões necessárias para executar instâncias do EC2. Como o erro envolve uma mensagem codificada, use a AWS Command Line Interface (AWS CLI) para decodificar a mensagem. Essa decodificação fornece mais detalhes sobre a falha de autorização.

Pré-requisito

O usuário ou perfil do IAM que está tentando decodificar a mensagem codificada deve ter permissão para a ação da API DecodeAuthorizationMesssage com uma política do IAM. Se o usuário ou o perfil não tiver essa permissão, a ação de decodificação falhará e a seguinte mensagem de erro será exibida:

“Erro: Ocorreu um erro do cliente (AccessDenied) ao chamar a operação DecodeAuthorizationMessage: O usuário: xxx não está autorizado a realizar a ação: (sts:DecodeAuthorizationMessage)”.

Resolução

1.    Verifique se a AWS CLI está instalada e configurada em sua máquina com o seguinte comando:

$ aws --version

Observação: Se você receber erros ao executar comandos da AWS CLI, verifique se está usando a versão mais recente da AWS CLI.

2.    Execute o comando decode-authorization-message. Substitua encoded-message pela mensagem codificada exata contida na mensagem de erro.

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

3.    A mensagem decodificada lista as permissões necessárias que estão faltando no perfil do IAM ou na política do usuário.

Exemplo de mensagem codificada:

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

Exemplo de mensagem decodificada:

$ 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\"}]}}]}}}"
}

A mensagem de erro anterior indica que a solicitação falhou ao chamar RunInstances porque o AWS-User não tinha permissão para executar a ação iam:PassRole no arn:aws:iam::accountID:role/EC2_instance_Profile_role.

4.    Edite a política do IAM associada ao perfil ou ao usuário do IAM para adicionar as permissões necessárias ausentes listadas na etapa anterior.


Informações relacionadas

Por que não consigo executar comandos da AWS CLI na minha instância do EC2?

Por que não consigo iniciar ou executar minha instância do EC2?

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos