¿Por qué mi instancia de Amazon EC2 usa credenciales de usuario de IAM en lugar de credenciales de rol?

3 minutos de lectura
0

He adjuntado un rol de AWS Identity and Access Management (IAM) a una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Sin embargo, la instancia de Amazon EC2 realiza llamadas a la API con un usuario de IAM en lugar de hacerlo con un rol de IAM.

Descripción corta

La interfaz de la línea de comandos de AWS (AWS CLI) utiliza un conjunto de proveedores de credenciales para buscar las credenciales de AWS en una secuencia. Las credenciales utilizadas dependen del orden y la prioridad de los proveedores de credenciales. Para obtener más información, consulte Configuración de la AWS CLI.

Resolución

Siga las instrucciones para encontrar el identificador de usuario de IAM y la ubicación donde se almacenan las credenciales de usuario de IAM. A continuación, utilice la AWS CLI para administrar las credenciales de IAM y descartar la configuración de prioridad más alta.

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.

Buscar el ID de usuario de IAM y obtener la ubicación de las credenciales de usuario de IAM

1.    Ejecute el siguiente comando get-caller-identity para comprobar qué credenciales de IAM se utilizan para realizar llamadas a la API:

aws sts get-caller-identity

Recibirá un resultado similar al siguiente:

{

    "Account": "123456789012",

    "UserId": "AIDACKCEVSQ6C2EXAMPLE",

    "Arn": "arn:aws:iam::123456789012:user/ExampleIAMuser"

}

En el resultado de este ejemplo, las credenciales de IAM utilizadas son de ExampleIAMuser.

2.    Utilice la opción --debug para comprobar la ubicación de las credenciales de usuario de forma similar a la siguiente:

aws s3 ls --debug
2020-03-28 02:04:29,478 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

En el resultado de este ejemplo, las credenciales de usuario de IAM se almacenan en el archivo .aws/credentials. Como estas credenciales tienen una prioridad superior a las credenciales de rol, las credenciales de usuario de IAM se utilizan para realizar llamadas a la API.

Usar la AWS CLI para administrar las credenciales de IAM y descartar la configuración de prioridad más alta

Siga las siguientes prácticas recomendadas:

  • Asegúrese de no utilizar la opción --profile con la AWS CLI.
  • Desactive o elimine todas las variables de entorno.
  • En el comando configure, elimine el archivo de credenciales de la carpeta .aws/credentials. A continuación, elimine la carpeta .aws para configurar las credenciales predeterminadas del perfil de instancia.
  • En los perfiles configurados en el archivo .aws/config, elimine el perfil. A continuación, elimine la carpeta .aws.

Tras eliminar la configuración que da prioridad a las credenciales de IAM, ejecute el comando get-caller-identity para comprobar las credenciales del rol de IAM, de forma similar a la siguiente:

aws sts get-caller-identity

{
    "UserId": "AROACKCEVSQ6C2EXAMPLE:i-01773d4a8ed647342",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/ExampleInstanceRole/i-01773d4a8ed647342"
}

En el resultado de este ejemplo, las credenciales de IAM utilizadas son del rol de IAM ExampleInstanceRole.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años