Asumir un rol con identidad web u OpenID Connect para autenticar los SDK y las herramientas de AWS - SDK y herramientas de AWS

Asumir un rol con identidad web u OpenID Connect para autenticar los SDK y las herramientas de AWS

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 proveedor de identidad web o una federación OpenID Connect(OIDC) o SAML. Para obtener más información sobre los roles de IAM, consulte Métodos para asumir un rol de IAM en la Guía del usuario de IAM.

Una vez configurado el rol de IAM en su SDK, si esa función está configurada para confiar en su proveedor de identidad, puede configurar aún más el SDK para que asuma esa función a fin de obtener credenciales de AWS temporales.

nota

AWS recomienda utilizar puntos de conexión regionales siempre que sea posible y configurar su Región de AWS.

Cómo federar con identidad web u OpenID Connect

Puede usar los JSON Web Tokens (JWT) de proveedores de identidad pública, como Login With Amazon, Facebook o Google, para obtener credenciales de AWS temporales mediante AssumeRoleWithWebIdentity. Según cómo se los use, estos JWT pueden denominarse tokens de ID o tokens de acceso. También puede utilizar los JWT emitidos por proveedores de identidad (IDP) que sean compatibles con el protocolo de descubrimiento de la OIDC, como EnTraid o PingFederate.

Si utiliza Amazon Elastic Kubernetes Service, esta característica permite especificar diferentes roles de IAM para cada uno de sus cuentas de servicio en un clúster de Amazon EKS. Esta característica de Kubernets distribuye los JWT a los pods que luego son utilizados por este proveedor de credenciales a fin de obtener credenciales de AWS 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 JSON Web Token (JWT) 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 o de 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 SON Web Token (JWT) 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 AssumeRoleWithWebIdentity de AWS STS 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 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 AWS SDK, 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.