Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Utilice un IAM rol en el AWS CLI
Un rol AWS Identity and Access Management (IAM) es una herramienta de autorización que permite a un usuario obtener permisos adicionales (o diferentes) u obtener permisos para realizar acciones en una AWS cuenta diferente.
Temas
- Requisitos previos
- Descripción general del uso de IAM los roles
- Configuración y uso de un rol
- Uso de la autenticación multifactor
- Roles entre cuentas e ID externo
- Especificación de un nombre de sesión de rol para simplificar las auditorías
- Adopción de un rol con una identidad web
- Borrado de las credenciales almacenadas en memoria caché
Requisitos previos
Para utilizar los comandos de iam
, debe instalar y configurar AWS CLI. Para obtener más información, consulte Instalación o actualización a la versión más reciente de la AWS CLI.
Descripción general del uso de IAM los roles
Puede configurar el AWS Command Line Interface (AWS CLI) para que utilice un IAM rol definiendo un perfil para el rol en el ~/.aws/config
archivo.
En el siguiente ejemplo se muestra un perfil de rol llamado marketingadmin
. Si ejecuta comandos con --profile marketingadmin
(o los especifica con la variable de PROFILE entorno AWS _), AWS CLI utiliza las credenciales definidas en un perfil independiente user1
para asumir el rol con el nombre de recurso de Amazon (ARN)arn:aws:iam::
. Puede ejecutar cualquier operación permitida por los permisos asignados a ese rol.123456789012
:role/marketingadminrole
[profile
marketingadmin
] role_arn = arn:aws:iam::123456789012
:role/marketingadminrole
source_profile = user1
Debe especificar un source_profile
que apunte a un perfil con nombre independiente que contenga credenciales de usuario con permiso para utilizar el rol. En el ejemplo anterior, el perfil marketingadmin
utiliza las credenciales en el perfil user1
. Al especificar que un AWS CLI comando debe utilizar el perfilmarketingadmin
, busca AWS CLI automáticamente las credenciales del user1
perfil vinculado y las utiliza para solicitar credenciales temporales para el IAM rol especificado. Para ello, CLI utiliza la AssumeRole operación sts: en segundo plano. Estas credenciales temporales se utilizan para ejecutar el comando de la AWS CLI solicitado. El rol especificado debe tener políticas de IAM permisos adjuntas que permitan ejecutar el AWS CLI comando solicitado.
Para ejecutar un AWS CLI comando desde una instancia de Amazon Elastic Compute Cloud (AmazonEC2) o un contenedor de Amazon Elastic Container Service (AmazonECS), puedes usar un IAM rol adjunto al perfil de la instancia o al contenedor. Si no especifica ningún perfil o no establece ninguna variable de entorno, ese rol se utiliza directamente. De este modo, puede evitar el almacenamiento de las claves de acceso de larga duración en las instancias. También puede utilizar esos roles de instancia o contenedor solo para obtener credenciales para otro rol. Para ello, utilice credential_source
(en lugar de source_profile
) para especificar cómo encontrar las credenciales. El atributo credential_source
es compatible con los siguientes valores:
-
Environment
: recupera las credenciales fuente de las variables de entorno. -
Ec2InstanceMetadata
— Utiliza el IAM rol adjunto al perfil de EC2 instancia de Amazon. -
EcsContainer
— Utiliza la IAM función asociada al ECS contenedor de Amazon.
El siguiente ejemplo muestra la misma marketingadminrole
función que se utiliza al hacer referencia a un perfil de EC2 instancia de Amazon.
[profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole credential_source = Ec2InstanceMetadata
Cuando invoca un rol, tiene otras opciones que puede exigir; por ejemplo, el uso de la autenticación multifactor y de un ID externo (que compañías de terceros utilizan para acceder a los recursos de sus clientes). También puede especificar nombres de sesión de rol únicos que se puedan auditar más fácilmente en AWS CloudTrail los registros.
Configuración y uso de un rol
Cuando ejecutas comandos con un perfil que especifica un IAM rol, AWS CLI utiliza las credenciales del perfil de origen para llamar a AWS Security Token Service (AWS STS) y solicitar credenciales temporales para el rol especificado. El usuario del perfil fuente debe tener permiso para llamar a sts:assume-role
en el rol del perfil especificado. El rol debe tener una relación de confianza que permita al usuario del perfil de origen utilizarlo. El proceso de recuperación y posterior uso de credenciales temporales en un rol a menudo se denomina asumir el rol.
Puede crear un rol IAM con los permisos que desee que asuman los usuarios siguiendo el procedimiento descrito en la sección Creación de un rol para delegar permisos a un IAM usuario en la Guía del AWS Identity and Access Management usuario. Si el rol y el usuario de del perfil de origen se encuentran en la misma cuenta, puede introducir su propio ID de cuenta al configurar la relación de confianza del rol.
Después de crear el rol, modifique la relación de confianza para permitir que el usuario de lo asuma.
En el siguiente ejemplo se muestra una política de confianza que puede asociarse a un rol. Esta política permite asumir el rol a cualquier usuario de la cuenta 123456789012, si el administrador de dicha cuenta le concede de forma explícita el permiso sts:AssumeRole
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Action": "sts:AssumeRole" } ] }
La política de confianza no concede permisos. El administrador de la cuenta debe delegar el permiso para asumir el rol a usuarios individuales asociando una política a los permisos adecuados. En el siguiente ejemplo, se muestra una política que puede asociarse a un usuario y que le permite asumir únicamente el rol marketingadminrole
. Para obtener más información sobre cómo conceder a un usuario acceso para que asuma un rol, consulte Concesión de un permiso de usuario para cambiar de rol en la Guía del IAM usuario.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
123456789012
:role/marketingadminrole
" } ] }
El usuario no necesita tener permisos adicionales para ejecutar los AWS CLI comandos mediante el perfil de rol. En cambio, los permisos para ejecutar el comando proceden de los asociados al rol. Adjunta políticas de permisos al rol para especificar qué acciones se pueden realizar con qué AWS recursos. Para obtener más información sobre cómo asociar permisos a un rol (que funciona de forma idéntica a un usuario), consulte Cambiar los permisos de un IAM usuario en la Guía del IAMusuario.
Ahora que ya tiene el perfil del rol, los permisos del rol, la relación de confianza del rol y los permisos de usuario configurados correctamente, puede utilizar el rol en la línea de comandos invocando la opción --profile
. Por ejemplo, el siguiente comando llama al comando Amazon S3 de ls
utilizando los permisos adjuntos al rol marketingadmin
que se definieron en el ejemplo que se incluye al principio de este tema.
$
aws s3 ls --profile
marketingadmin
Si desea utilizar el rol para varias llamadas, puede configurar la variable de entorno AWS_PROFILE
para la sesión actual desde la línea de comandos. Siempre que esa variable de entorno se haya definido, no será necesario especificar la opción --profile
en cada comando.
Linux o macOS
$
export AWS_PROFILE=marketingadmin
Windows
C:\>
setx AWS_PROFILE marketingadmin
Para obtener más información sobre la configuración de usuarios y roles, consulte IAMIdentidades (usuarios, grupos de usuarios y roles) y IAMroles en la Guía del IAMusuario.
Uso de la autenticación multifactor
Para mayor seguridad, puede exigir que los usuarios proporcionen una clave de un solo uso generada desde un dispositivo de autenticación multifactor (MFA), un dispositivo U2F o una aplicación móvil cuando intenten realizar una llamada mediante el perfil de rol.
En primer lugar, puede optar por modificar la relación de confianza en el IAM rol que desee. MFA Esto impide que cualquier persona utilice el rol sin autenticarse primero mediante el usoMFA. A modo de ejemplo, vea la línea Condition
en el siguiente ejemplo. Esta política permite que el usuario nombrado asuma el rol anika
al que está asociada la política, pero solo si se autentica mediante el uso. MFA
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:multifactorAuthPresent": true } } } ] }
A continuación, añada una línea al perfil del rol que especifique el ARN MFA dispositivo del usuario. El siguiente archivo config
de ejemplo muestra dos perfiles de rol que utilizan las claves de acceso del usuario anika
para solicitar credenciales temporales para el rol cli-role
. El usuario anika
tiene permisos para asumir el rol, concedidos por la política de confianza del rol.
[profile role-without-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile=cli-user [profile role-with-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile = cli-user mfa_serial = arn:aws:iam::128716708097:mfa/cli-user [profile cli-user] region = us-west-2 output = json
La mfa_serial
configuración puede tomar un número de serieARN, como se muestra, de un MFA token de hardware.
El primer perfilrole-without-mfa
,, no requiereMFA. Sin embargo, como lo exige el ejemplo anterior de política de confianza adjunta a la funciónMFA, cualquier intento de ejecutar un comando con este perfil fallará.
$
aws iam list-users --profile role-without-mfa
An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
La segunda entrada del perfil,role-with-mfa
, identifica el MFA dispositivo que se va a utilizar. Cuando el usuario intenta ejecutar un AWS CLI comando con este perfil, AWS CLI le pide que introduzca la contraseña de un solo uso (OTP) que proporciona el MFA dispositivo. Si la MFA autenticación se realiza correctamente, el comando realiza la operación solicitada. No OTP se muestra en la pantalla.
$
aws iam list-users --profile role-with-mfa
Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user: { "Users": [ { ...
Roles entre cuentas e ID externo
Puede permitir que los usuarios de utilicen roles que pertenezcan a diferentes cuentas si configura el rol como un rol entre cuentas. Durante la creación del rol, defina el tipo de rol en Otra AWS cuenta, tal y como se describe en Crear un rol para delegar permisos a un IAM usuario. Si lo desea, seleccione Requerir MFA. Require MFA configura la condición adecuada en la relación de confianza, tal y como se describe enUso de la autenticación multifactor.
Si utiliza un ID externo para ofrecer mayor control sobre quién puede utilizar un rol entre cuentas, también debe añadir el parámetro external_id
al perfil del rol. Esto se utiliza normalmente solo cuando la otra cuenta la controla alguien ajeno a su empresa u organización.
[profile crossaccountrole] role_arn = arn:aws:iam::
234567890123
:role/SomeRole
source_profile = default mfa_serial = arn:aws:iam::123456789012
:mfa/saanvi
external_id =
123456
Especificación de un nombre de sesión de rol para simplificar las auditorías
Cuando muchas personas comparten un rol, la auditoría se convierte en un desafío más. Deseará asociar cada operación invocada con la persona que invocó la acción. Sin embargo, cuando la persona utiliza un rol, la asunción del rol por parte de la persona es una acción independiente de la invocación de una operación y debe relacionar manualmente las dos.
Puede simplificar este proceso especificando nombres de sesión de rol únicos cuando los usuarios asumen un rol. Para ello, añada un parámetro role_session_name
a cada perfil con nombre en el archivo config
que especifica un rol. El role_session_name
valor se transfiere a la AssumeRole
operación y pasa a formar parte de ARN la sesión del rol. También se incluye en los AWS CloudTrail registros de todas las operaciones registradas.
Por ejemplo, podría crear un perfil basado en roles de la siguiente manera.
[profile namedsessionrole] role_arn = arn:aws:iam::
234567890123
:role/SomeRole
source_profile = default role_session_name =Session_Maria_Garcia
Esto hace que la sesión de rol tenga lo siguienteARN.
arn:aws:iam::
234567890123
:assumed-role/SomeRole
/Session_Maria_Garcia
Además, todos los AWS CloudTrail registros incluyen el nombre de la sesión del rol en la información capturada para cada operación.
Adopción de un rol con una identidad web
Puede configurar un perfil para indicar que AWS CLI debe asumir un rol mediante la federación de identidades web y Open ID Connect (OIDC). Cuando lo especificas en un perfil, AWS CLI
automáticamente realiza la AWS STS AssumeRoleWithWebIdentity
llamada correspondiente por ti.
nota
Al especificar un perfil que utiliza un IAM rol, AWS CLI realiza las llamadas adecuadas para recuperar las credenciales temporales. Estas credenciales se guardan en ~/.aws/cli/cache
. AWS CLI Los comandos posteriores que especifican el mismo perfil utilizan las credenciales temporales almacenadas en caché hasta que caduquen. En ese momento, actualiza AWS CLI automáticamente las credenciales.
Para recuperar y utilizar credenciales temporales utilizando identidades federadas web, puede especificar los siguientes valores de configuración en un perfil compartido:
- role_arn
-
Especifica el ARN rol que se va a asumir.
- web_identity_token_file
-
Especifica la ruta a un archivo que contiene un token de acceso OAuth 2.0 o un token de ID de OpenID Connect proporcionado por el proveedor de identidad. La AWS CLI carga este archivo y pasa su contenido como el argumento
WebIdentityToken
de la operaciónAssumeRoleWithWebIdentity
. - role_session_name
-
Especifica un nombre opcional que se aplica a esta sesión de asunción de rol.
A continuación, se muestra un ejemplo de la configuración mínima necesaria para configurar un rol de adopción con un perfil de identidad web:
# In ~/.aws/config [profile web-identity] role_arn=arn:aws:iam:
123456789012
:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token
También puede establecer esta configuración utilizando variables de entorno:
- AWS_ROLE_ARN
-
El ARN rol que se va a asumir.
- AWS_WEB_IDENTITY_TOKEN_FILE
-
La ruta al archivo de token de identidad web.
- AWS_ROLE_SESSION_NAME
-
El nombre aplicado a esta sesión de asunción de rol.
nota
Actualmente, estas variables de entorno solo se aplican al rol que se va a adoptar con un proveedor de identidades web. No se aplican a la configuración general del proveedor de roles de adopción.
Borrado de las credenciales almacenadas en memoria caché
Cuando se utiliza un rol, se almacenan en AWS CLI caché las credenciales temporales de forma local hasta que caduquen. La próxima vez que intente utilizarlas, AWS CLI intentará renovarlas en su nombre.
Si las credenciales temporales del rol se revocan, no se renuevan automáticamente y se producirá un error al intentar utilizarlas. Sin embargo, puede eliminar la memoria caché para forzar la AWS CLI recuperación de las nuevas credenciales.
Linux o macOS
$
rm -r ~/.aws/cli/cache
Windows
C:\>
del /s /q %UserProfile%\.aws\cli\cache