¿Cómo puedo decodificar un mensaje de error de autorización después de recibir un error de «UnauthorizedOperation» durante el inicio de una instancia de EC2?

3 minutos de lectura
0

Estoy intentando iniciar una instancia de Amazon Elastic Compute Cloud (Amazon EC2), pero aparece el error «Se ha producido un error (operación no autorizada) al llamar a la operación RunInstances: No está autorizado a realizar esta operación. Mensaje de error de autorización codificado encoded-message». ¿Cómo puedo resolver este problema?

Breve descripción

El error «operación no autorizada» indica que los permisos asociados al rol de AWS Identity and Access Management (IAM) o al usuario que intenta realizar la operación no tienen los permisos necesarios para iniciar instancias de EC2. Dado que el error implica un mensaje codificado, utilice la Interfaz de la línea de comandos de AWS (AWS CLI) para decodificar el mensaje. Esta decodificación proporciona más detalles sobre el error de autorización.

Requisito previo

El usuario o rol de IAM que intenta decodificar el mensaje codificado debe tener permiso para la acción de la API DecodeAuthorizationMesssage con una política de IAM. Si el usuario o el rol no tienen este permiso, se produce un error en la acción de decodificación y aparece el siguiente mensaje de error:

«Error: Se ha producido un error de cliente (AccessDenied) al llamar a la operación DecodeAuthorizationMessage: Usuario: xxx no está autorizado a realizar la acción: (sts:DecodeAuthorizationMessage)».

Resolución

1.    Compruebe que la AWS CLI esté instalada y configurada en su equipo con el siguiente comando:

$ aws --version

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

2.    Ejecute el comando Decode-authorization-message. Sustituya encoded-message por el mensaje codificado exacto que figura en el mensaje de error.

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

3.    El mensaje decodificado enumera los permisos necesarios que faltan en el rol de IAM o en la política de usuario.

Ejemplo de mensaje codificado:

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

Ejemplo de mensaje decodificado:

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

El mensaje de error anterior indica que la solicitud no pudo llamar a RunInstances porque AWS-User no tenía permiso para realizar la acción iam:PassRole en arn:aws:iam::accountID:role/EC2_instance_Profile_role.

4.    Edite la política de IAM asociada al rol o usuario de IAM para añadir los permisos necesarios que faltan y que se enumeran en el paso anterior.


Información relacionada

¿Por qué no puedo ejecutar los comandos de la AWS CLI en mi instancia de EC2?

¿Por qué no puedo iniciar ni lanzar mi instancia de EC2?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años