Asumir el rol de proveedor de credenciales - SDK y herramientas de AWS

Asumir el rol de proveedor de credenciales

nota

Para obtener ayuda para comprender el diseño de las páginas de configuración o para interpretar la tabla Soporte mediante herramientas y SDK de AWS que aparece a continuación, consulte Comprender las páginas de configuración de esta guía.

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 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, otra Cuenta de AWS, un proveedor de identidad web o una federación OIDC o SAML.

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, utilice los siguientes comandos.

Para comenzar a utilizar esta configuración, consulte Asumir un rol con credenciales de AWS para autenticar los SDK y las herramientas de AWS en esta guía.

Asumir la configuración del proveedor de credenciales de rol

Configure esta funcionalidad mediante lo siguiente:

credential_source: configuración de archivos AWS config compartidos

Se utiliza en instancias de Amazon EC2 o en contenedores de Amazon Elastic Container Service para especificar dónde el SDK o la herramienta puede encontrar credenciales que tienen permisos para asumir el rol que especificó con el parámetro role_arn.

Valor predeterminado: ninguno.

Valores válidos:

No puede especificar credential_source y source_profile en el mismo perfil.

Ejemplo de configuración en un archivo config para indicar que las credenciales deben proceder de Amazon EC2:

credential_source = Ec2InstanceMetadata role_arn = arn:aws:iam::123456789012:role/my-role-name
duration_seconds: configuración de archivos config de AWS compartidos

Especifica la duración máxima de la sesión de rol, en segundos.

Esta configuración solo se aplica cuando el perfil especifica que se asume un rol.

Valor predeterminado: 3600 segundos (una hora)

Valores válidos: Este valor puede oscilar entre 900 segundos (15 minutos) y el valor de la duración máxima de la sesión para el rol (que puede ser 43 200 segundos como máximo, o 12 horas). Para obtener más información, consulte Cómo consultar la configuración de la duración máxima de la sesión para un rol en la Guía del usuario de IAM.

Ejemplo de esta configuración en un archivo config:

duration_seconds = 43200
external_id: configuración de archivos config de AWS compartidos

Especifica un identificador único utilizado por terceros para adoptar un rol en las cuentas de los clientes.

Esta configuración solo se aplica cuando el perfil especifica asumir un rol y la política de confianza del rol requiere un valor para ExternalId. El valor se asigna al parámetro ExternalId que se pasa a la operación AssumeRole cuando el perfil especifica un rol.

Valor predeterminado: ninguno.

Valores válidos: Consulte Cómo utilizar un ID externo al otorgar acceso a los recursos de AWS a terceros en la Guía del usuario de IAM.

Ejemplo de esta configuración en un archivo config:

external_id = unique_value_assigned_by_3rd_party
mfa_serial: configuración de archivos config de AWS compartidos

Especifica la identificación o el número de serie de un dispositivo de autenticación multifactor (MFA) que el usuario debe utilizar al asumir un rol.

Se requiere cuando se asume un rol en el que la política de confianza para ese rol incluye una condición que requiere la autenticación MFA. Para obtener más información sobre la MFA, consulte AWSautenticación multifactor de en IAM en la Guía del usuario de IAM.

Valor predeterminado: ninguno

Valores válidos: el valor puede ser un número de serie de un dispositivo de hardware (como GAHT12345678) o un nombre de recurso de Amazon (ARN) de un dispositivo MFA virtual. El formato del ARN es el siguiente: arn:aws:iam::account-id:mfa/mfa-device-name

Ejemplo de esta configuración en un archivo config:

En este ejemplo, se asume un dispositivo MFA virtual, denominado MyMFADevice, que se creó para la cuenta y se habilitó para un usuario.

mfa_serial = arn:aws:iam::123456789012:mfa/MyMFADevice
role_arn: configuración de archivos config de AWS compartidos
AWS_ROLE_ARN: variable de entorno
aws.roleArn: propiedad del sistema JVM: solo en Java/Kotlin

Especifica el nombre de recurso de Amazon (ARN) de un rol de IAM que desea utilizar para realizar las operaciones solicitadas con este perfil.

Valor predeterminado: ninguno.

Valores válidos: el valor debe ser el ARN de un rol de IAM, con el siguiente formato: arn:aws:iam::account-id:role/role-name

Además, también debe especificar una de las siguientes configuraciones:

  • source_profile: para identificar otro perfil y usarlo para buscar las credenciales que tengan permiso para asumir el rol en este perfil.

  • credential_source: utilizar las credenciales identificadas por las variables de entorno actuales o las credenciales adjuntas a un perfil de instancia de Amazon EC2 o a una instancia de contenedor de Amazon ECS.

  • web_identity_token_file: utilizar proveedores de identidades públicos o cualquier proveedor de identidades compatible con OpenID Connect (OIDC) para los usuarios que han sido autenticados en un móvil o una aplicación web.

role_session_name: configuración de archivos config de AWS compartidos
AWS_ROLE_SESSION_NAME: variable de entorno
aws.roleSessionName: propiedad del sistema JVM: solo en Java/Kotlin

Especifica el nombre que se va a asociar a la sesión de rol. Este nombre aparece en los registros de AWS CloudTrail para las entradas asociadas a esta sesión, que puede resultar útil al realizar auditorías. Para más información, consulte Elemento userIdentity de CloudTrail en la Guía del usuario de AWS CloudTrail.

Valor predeterminado: un parámetro opcional. Si no proporciona este valor, se genera automáticamente un nombre de sesión en caso de que el perfil asuma un rol.

Valores válidos: se proporcionan al parámetro RoleSessionName cuando la AWS CLI o la API de AWS llama a la operación AssumeRole (o a operaciones como la operación AssumeRoleWithWebIdentity) en su nombre. El valor pasa a formar parte del nombre de recurso de Amazon (ARN) del usuario de rol asumido que puede consultar y aparece como parte de las entradas de registro de CloudTrail para las operaciones invocadas por este perfil.

arn:aws:sts::123456789012:assumed-role/my-role-name/my-role_session_name.

Ejemplo de esta configuración en un archivo config:

role_session_name = my-role-session-name
source_profile: configuración de archivos config de AWS compartidos

Especifica otro perfil cuyas credenciales se utilizan para asumir la función especificada en la configuración role_arn del perfil original. Para saber cómo se utilizan los perfiles en los archivos compartidos config y credentials de AWS, consulte Archivos compartidos config y credentials.

Si especifica un perfil que también sea un perfil de asunción de roles, cada rol se asumirá en orden secuencial para resolver completamente las credenciales. Esta cadena se detiene cuando el SDK encuentra un perfil con credenciales. El encadenamiento de roles limita la duración de la sesión de rol de la API de la AWS CLI o de AWS a un máximo de una hora y no puede aumentar. Para obtener más información, consulte los Términos y conceptos de roles en la Guía del usuario de IAM.

Valor predeterminado: ninguno.

Valores válidos: una cadena de texto que consiste en el nombre de un perfil definido en los archivos config y credentials. También debe especificar un valor para role_arn en el perfil actual.

No puede especificar credential_source y source_profile en el mismo perfil.

Ejemplo de esta configuración en un archivo de configuración:

[profile A] source_profile = B role_arn = arn:aws:iam::123456789012:role/RoleA role_session_name = ProfileARoleSession [profile B] credential_process = ./aws_signing_helper credential-process --certificate /path/to/certificate --private-key /path/to/private-key --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID --role-arn arn:aws:iam::account:role/ROLE_ID

En el ejemplo anterior, el perfil A indica al SDK o a la herramienta que busque automáticamente las credenciales del perfil B vinculado. En este caso, el perfil B utiliza la herramienta de ayudante de credenciales proporcionada por Uso de IAM Roles Anywhere para autenticar los SDK y las herramientas de AWS. para obtener las credenciales del SDK de AWS. Estas credenciales temporales las utiliza el código para acceder a los recursos de AWS. El rol especificado debe tener políticas de permisos de IAM asociadas que permitan la ejecución del código solicitado, como el comando Servicio de AWS o el método de API. Cada acción que realiza el perfil A incluye el nombre de la sesión del rol en los registros de CloudTrail.

Para ver un segundo ejemplo de encadenamiento de roles, puede usar la siguiente configuración si tiene una aplicación en una instancia de Amazon Elastic Compute Cloud y desea que esa aplicación asuma otro rol.

[profile A] source_profile = B role_arn = arn:aws:iam::123456789012:role/RoleA role_session_name = ProfileARoleSession [profile B] credential_source=Ec2InstanceMetadata

El perfil A utilizará las credenciales de la instancia de Amazon EC2 para asumir el rol especificado y las renovará de manera automática.

web_identity_token_file: configuración de archivos config de AWS compartidos
AWS_WEB_IDENTITY_TOKEN_FILE: variable de entorno
aws.webIdentityTokenFile: propiedad del sistema JVM: solo en Java/Kotlin

Especifica la ruta de un archivo que contiene un token de acceso de un proveedor de OAuth 2.0 admitido o de un proveedor de identidad del ID de OpenID Connect.

Esta configuración permite la autenticación mediante proveedores de federaciones de identidades web, como Google, Facebook y Amazon, entre muchos otros. El SDK o la herramienta para desarrolladores carga el contenido de este archivo y lo pasa como argumento WebIdentityToken cuando llama a la operación AssumeRoleWithWebIdentity en su nombre.

Valor predeterminado: ninguno.

Valores válidos: este valor debe ser una ruta y un nombre de archivo. El archivo debe contener un token de acceso de OAuth 2.0 o un token de OpenID Connect que le proporcionó un proveedor de identidades. Las rutas relativas se consideran relativas al directorio de trabajo del proceso.

Soporte mediante SKD y herramientas de AWS

Los siguientes SDK admiten las características y los ajustes descritos en este tema. Se anotan todas las excepciones parciales. Todos los ajustes de propiedades del sistema JVM son compatibles con AWS SDK para Java y AWS SDK para Kotlin únicamente.

SDK Compatible Notas o más información
AWS CLI v2
SDK para C++ Parcial credential_source no admitido. duration_seconds no admitido. mfa_serial no admitido.
SDK para Go V2 (1.x)
SDK para Go 1.x (V1) Para usar la configuración de archivos compartidos config, debe activar la carga desde el archivo de configuración; consulte Sesiones.
SDK para Java 2.x Parcial mfa_serial no es compatible. duration_seconds no es compatible.
SDK para Java 1.x Parcial credential_source no es compatible. mfa_serial no es compatible. No se admiten las propiedades del sistema JVM.
SDK para JavaScript 3.x
SDK para JavaScript 2.x Parcial credential_source no admitidas.
SDK de para Kotlin
SDK para .NET 4.x
SDK para .NET 3.x
SDK para PHP 3.x
SDK para Python (Boto3)
SDK para Ruby 3.x
SDK de para Rust
SDK de para Swift
Herramientas para PowerShell V5
Herramientas para PowerShell V4