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 AWSconfigcompartidos-
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:
-
Entorno: especifica que el SDK o la herramienta va a recuperar las credenciales fuente a partir de las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY.
-
Ec2InstanceMetadata: especifica que el SDK o la herramienta va a utilizar el rol de IAM asociado al perfil de instancia EC2 para obtener las credenciales fuente.
-
EcsContainer: especifica que el SDK o la herramienta van a utilizar el rol de IAM asociado al contenedor de Amazon ECS o el rol de IAM asociado al contenedor de Amazon EKS para obtener como credenciales fuente.
No puede especificar
credential_sourceysource_profileen el mismo perfil.Ejemplo de configuración en un archivo
configpara 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 archivosconfigde 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 archivosconfigde 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ámetroExternalIdque se pasa a la operaciónAssumeRolecuando 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 archivosconfigde 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-nameEjemplo 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 archivosconfigde AWS compartidosAWS_ROLE_ARN: variable de entornoaws.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-nameAdemá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 archivosconfigde AWS compartidosAWS_ROLE_SESSION_NAME: variable de entornoaws.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
RoleSessionNamecuando la AWS CLI o la API de AWS llama a la operaciónAssumeRole(o a operaciones como la operaciónAssumeRoleWithWebIdentity) 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_nameEjemplo de esta configuración en un archivo
config:role_session_name =my-role-session-name source_profile: configuración de archivosconfigde AWS compartidos-
Especifica otro perfil cuyas credenciales se utilizan para asumir la función especificada en la configuración
role_arndel perfil original. Para saber cómo se utilizan los perfiles en los archivos compartidosconfigycredentialsde 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
configycredentials. También debe especificar un valor pararole_arnen el perfil actual.No puede especificar
credential_sourceysource_profileen el mismo perfil.Ejemplo de esta configuración en un archivo de configuración:
[profileA] source_profile =Brole_arn = arn:aws:iam::123456789012:role/RoleArole_session_name =ProfileARoleSession[profileB] 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_IDEn el ejemplo anterior, el perfil
Aindica al SDK o a la herramienta que busque automáticamente las credenciales del perfilBvinculado. En este caso, el perfilButiliza 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 perfilAincluye 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.
[profileA] source_profile =Brole_arn = arn:aws:iam::123456789012:role/RoleArole_session_name =ProfileARoleSession[profileB] credential_source=Ec2InstanceMetadataEl perfil
Autilizará 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 archivosconfigde AWS compartidosAWS_WEB_IDENTITY_TOKEN_FILE: variable de entornoaws.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 WebIdentityTokencuando llama a la operaciónAssumeRoleWithWebIdentityen 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 | Sí | |
| SDK para C++ | Parcial | credential_source no admitido. duration_seconds no admitido. mfa_serial no admitido. |
| SDK para Go V2 (1.x) |
Sí | |
| SDK para Go 1.x (V1) | Sí | 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 | Sí | |
| SDK para JavaScript 2.x | Parcial | credential_source no admitidas. |
| SDK de para Kotlin | Sí | |
| SDK para .NET 4.x | Sí | |
| SDK para .NET 3.x | Sí | |
| SDK para PHP 3.x | Sí | |
| SDK para Python (Boto3) |
Sí | |
| SDK para Ruby 3.x | Sí | |
| SDK de para Rust | Sí | |
| SDK de para Swift | Sí | |
| Herramientas para PowerShell V5 | Sí | |
| Herramientas para PowerShell V4 | Sí |