Asumir un rol - AWS SDK y herramientas

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.

Asumir un rol

Para asumir un rol, se utiliza un conjunto de credenciales de seguridad temporales para acceder a los recursos de AWS a los que de otro modo usted no tendría acceso. Las credenciales temporales incluyen un ID de clave de acceso, una clave de acceso secreta y un token de seguridad. Para obtener más información sobre las solicitudes de la API de AWS Security Token Service (AWS STS), consulte Acciones en la Referencia de la API de AWS Security Token Service.

Para configurar el SDK o la herramienta para que asuma un rol, primero debe crear o identificar el rol específico que desee asumir. Los roles de IAM se identifican de forma exclusiva mediante un nombre de recurso de Amazon (ARN) del rol. Los roles establecen relaciones de confianza con otra entidad. La entidad de confianza que usa el rol puede ser un Servicio de AWS, otro Cuenta de AWS, un proveedor de identidad web o una federación OIDC o SAML. Para más información acerca de los roles de IAM, consulte Roles de IAM en la Guía del usuario de IAM.

Una vez identificado el rol de IAM, si esa función confía en usted, puede configurar el SDK o la herramienta para que utilice los permisos que otorga la función. Para ello, puede elegir entre Asumir un rol de IAM. o Federar con identidad web u OpenID Connect.

Asumir un rol de IAM.

Al asumir un rol, AWS STS devuelve un conjunto de credenciales de seguridad temporales. Estas credenciales provienen de otro perfil o de la instancia o contenedor en el que se ejecuta el código. Otros ejemplos de cómo asumir un rol incluyen la administración de múltiples Cuentas de AWS desde Amazon EC2, el uso de AWS CodeCommit en las Cuentas de AWS o el acceso a otra cuenta desde AWS CodeBuild.

Paso 1: Configurar un rol de IAM

Para configurar el SDK o la herramienta para que asuma un rol, primero debe crear o identificar el rol específico que desee asumir. Los roles de IAM se identifican de forma exclusiva mediante un ARN de rol. Los roles establecen relaciones de confianza con otra entidad, normalmente dentro de su cuenta o para el acceso entre cuentas. Para obtener más información, consulte Creación de roles de IAM en la Guía del usuario de IAM.

Paso 2: Configurar el SDK o la herramienta

Configure el SDK o la herramienta para obtener las credenciales de credential_source o source_profile.

Se utiliza credential_source para obtener credenciales de un contenedor de Amazon ECS, de una instancia de Amazon EC2 o de variables de entorno.

Se utiliza source_profile para obtener credenciales de otro perfil. source_profiletambién admite el encadenamiento de roles, que consiste en jerarquías de perfiles en las que se utiliza un rol asumido para asumir otro rol.

Al especificar esto en un perfil, la herramienta o SDK realiza automáticamente la llamada a la API de AWS STS AssumeRole correspondiente. Para recuperar y usar credenciales temporales asumiendo un rol, especifique los siguientes valores de configuración en el archivo compartido config de AWS. Para obtener más información sobre esta configuración, consulte la sección Asumir la configuración del proveedor de credenciales de rol.

  • role_arn - Del rol de IAM que creó en el paso 1

  • Configure una de las siguientes opciones: source_profile o credential_source

  • (Opcional) duration_seconds

  • (Opcional) external_id

  • (Opcional) mfa_serial

  • (Opcional) role_session_name

Los siguientes ejemplos muestran la configuración de ambas opciones de asumir roles en un archivo config compartido:

role_arn = arn:aws:iam::123456789012:role/my-role-name source_profile = profile-name-with-user-that-can-assume-role
role_arn = arn:aws:iam::123456789012:role/my-role-name credential_source = Ec2InstanceMetadata

Para obtener más información sobre la configuración del proveedor de credenciales de rol, consulte Asumir el rol de proveedor de credenciales en esta guía.

Federar con identidad web u OpenID Connect

Al crear aplicaciones móviles o aplicaciones web basadas en clientes que requieren acceso a AWS, AWS STS devuelve un conjunto de credenciales de seguridad temporales para los usuarios federados que se autentican a través de un proveedor de identidades (IdP) público. Entre los ejemplos de proveedores de identidad públicos se incluyen Login with Amazon, Facebook, Google o cualquier proveedor de identidad compatible con OpenID Connect (OIDC). Con este método, los usuarios no necesitan su propia identidad AWS ni la de IAM.

Si utiliza Amazon Elastic Kubernetes Service, esta característica permite especificar diferentes roles de IAM para cada uno de sus contenedores. Kubernetes ofrece la posibilidad de distribuir los tokens de OIDC a sus contenedores, que este proveedor de credenciales utiliza para obtener credenciales temporales. Para obtener más información sobre esta configuración de Amazon EKS, consulte Roles de IAM para cuentas de servicio en la Guía del usuario de Amazon EKS. Sin embargo, para simplificar el proceso, le recomendamos que utilice Amazon EKS Pod Identities si su SDK es compatible.

Paso 1: Configurar un proveedor de identidades y un rol de IAM

Si desea configurar la federación con un IdP externo, utilice un proveedor de identidades de IAM para informar a AWS sobre el IdP externo y su configuración. Esto establece una relación de confianza entre su Cuenta de AWS y el IdP (proveedor de identidades) externo. Antes de configurar el SDK para usar el token de identidad web para la autenticación, primero debe configurar el proveedor de identidad (IdP) y el rol de IAM que se usa para acceder a él. Para configurarlos, consulte Creación de un rol para identidades web u OpenID Connect Federation (consola) en la Guía del usuario de IAM.

Paso 2: Configurar el SDK o la herramienta

Configure el SDK o la herramienta para usar un token de identidad web de AWS STS para la autenticación.

Al especificar esto en un perfil, la herramienta o SDK realiza automáticamente la llamada a la API de AWS STS AssumeRoleWithWebIdentity correspondiente. Para recuperar y utilizar credenciales temporales utilizando federación de identidades web, puede especificar los siguientes valores de configuración en el archivo config compartido de AWS. Para obtener más información sobre esta configuración, consulte la sección Asumir la configuración del proveedor de credenciales de rol.

  • role_arn - Del rol de IAM que creó en el paso 1

  • web_identity_token_file - Desde el IdP externo

  • (Opcional) duration_seconds

  • (Opcional) role_session_name

El siguiente es un ejemplo de una configuración de archivos compartidos de config para asumir un rol con identidad web:

[profile web-identity] role_arn=arn:aws:iam::123456789012:role/my-role-name web_identity_token_file=/path/to/a/token
nota

Para aplicaciones móviles, le recomendamos que utilice Amazon Cognito. Amazon Cognito actúa como agente de identidades y realiza gran parte del trabajo de federación por usted. Sin embargo, el proveedor de identidades de Amazon Cognito no está incluido en las bibliotecas principales de SDK y herramientas como otros proveedores de identidades. Para acceder a la API de Amazon Cognito, incluya el cliente del servicio Amazon Cognito en la compilación o las bibliotecas de su SDK o herramienta. Para su uso con los SDK AWS, consulte los ejemplos de código en la Guía para desarrolladores de Amazon Cognito.

Para obtener más información sobre la configuración del proveedor de credenciales de rol, consulte Asumir el rol de proveedor de credenciales en esta guía.