

# Identidades de IAM
<a name="id"></a>

Una identidad de IAM puede estar asociada a una o más políticas que determinan qué acciones puede realizar una identidad, en qué recursos de AWS y bajo qué condiciones. Las identidades de IAM incluyen usuarios de IAM, grupos de IAM y roles de IAM. Una identidad de IAM es un tipo de identidad que representa a un usuario humano o carga de trabajo programática que se puede autenticar y, luego, autorizar para realizar acciones en Cuentas de AWS. Las identidades de IAM incluyen usuarios de IAM y roles de IAM. Para ver las definiciones de los términos de uso común, consulte [Términos](introduction_identity-management.md#intro-structure-terms).

Puede federar identidades existentes desde un proveedor de identidad externo. Estas identidades asumirán roles de IAM para acceder a los recursos de AWS. Para obtener más información, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md).

También puede utilizar AWS IAM Identity Center para crear y administrar identidades y el acceso a los recursos de AWS. Los conjuntos de permisos del IAM Identity Center crean automáticamente los roles de IAM necesarios para proporcionar acceso a los recursos. Para obtener más información consulte [What Is IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)

El Usuario raíz de la cuenta de AWS es un principio de la Cuenta de AWS que se crea cuando se establece su Cuenta de AWS. Este usuario tiene acceso a todos los recursos y los servicios de AWS en la cuenta. Para obtener más información, consulte [usuario raíz de IAM](#id_root). 

**nota**  
Siga las [prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/best-practices-use-cases.html) cuando trabaja con identidades de IAM. 
Siga las [prácticas recomendadas para el usuario raíz de su Cuenta de AWS](root-user-best-practices.md) cuando trabaje con el usuario raíz.
Si tiene problemas para iniciar sesión, consulte [Inicie sesión en la Consola de administración de AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html). 

## usuario raíz de IAM
<a name="id_root"></a>

Cuando crea por primera vez una Cuenta de AWS, se comienza con una identidad de inicio de sesión que tiene acceso completo a todos los Servicios de AWS y recursos de la cuenta. Esta identidad recibe el nombre de Cuenta de AWSusuario raíz de la **. Para obtener más información, consulte [Usuario raíz de la cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html).

## Usuarios de IAM
<a name="id_iam-users"></a>

Un *usuario de IAM* es una identidad de su Cuenta de AWS que dispone de permisos específicos para una sola persona o aplicación. Para obtener más información, consulte [Usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html). 

## Grupos de usuarios de IAM
<a name="id_iam-groups"></a>

Un *grupo de usuarios de IAM* es una identidad que especifica un conjunto de usuarios de IAM. Para obtener más información, consulte [Grupos de usuarios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html).

## Roles de IAM
<a name="id_iam-roles"></a>

Un *rol de IAM* es una identidad de su Cuenta de AWS que dispone de permisos específicos. Es similar a un usuario de IAM, pero no está asociado a una persona determinada. Para obtener más información, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

# Usuario raíz de la cuenta de AWS
<a name="id_root-user"></a>

Cuando se crea por primera vez una cuenta de Amazon Web Services (AWS), se comienza con una única identidad de inicio de sesión que tiene acceso completo a todos los servicios y recursos de AWS de la cuenta. Esta identidad recibe el nombre en la cuenta de AWS de *usuario raíz*. La dirección de correo electrónico y la contraseña que utilizó para crear su Cuenta de AWS son los credenciales que debe usar para iniciar sesión como usuario raíz.
+ Utilice el usuario raíz únicamente para realizar las tareas que requieren permisos a nivel raíz. Para obtener la lista completa de tareas que requieren que inicie sesión como usuario raíz, consulte [Tareas que requieren credenciales de usuario raíz](#root-user-tasks). 
+ Siga las [prácticas recomendadas del usuario raíz para su Cuenta de AWS](root-user-best-practices.md).
+ Si tiene problemas para iniciar sesión, consulte [Inicie sesión en la Consola de administración de AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html).

**importante**  
Se recomienda encarecidamente no utilizar el usuario raíz para las tareas cotidianas y seguir las [prácticas recomendadas para el usuario raíz para la Cuenta de AWS](root-user-best-practices.md). Proteja las credenciales del Usuario raíz y utilícelas solo para las tareas que solo el Usuario raíz pueda realizar. Para obtener la lista completa de tareas que requieren que inicie sesión como usuario raíz, consulte [Tareas que requieren credenciales de usuario raíz](#root-user-tasks). 

Si bien la MFA se aplica a los usuarios raíz de forma predeterminada, es necesario que el cliente tome medidas para agregar la MFA durante la creación inicial de la cuenta o cuando se le solicite durante el inicio de sesión. Para obtener más información sobre cómo usar la MFA para proteger al usuario raíz, consulte [Autenticación multifactor para Usuario raíz de la cuenta de AWS](enable-mfa-for-root.md).

## Administración de forma centralizada del acceso raíz a las cuentas de miembros
<a name="id_root-user-access-management"></a>

Para ayudarlo a administrar las credenciales a escala, puede proteger de forma centralizada el acceso a las credenciales de usuario raíz de las cuentas de miembros en AWS Organizations. Cuando habilita AWS Organizations, se combinan todas las cuentas de AWS de una organización para que puedan ser administradas de manera centralizada. La centralización del acceso raíz le permite eliminar credenciales de usuario raíz y realizar las siguientes tareas con privilegios en las cuentas de miembros.

**Eliminación de las credenciales de usuario raíz de las cuentas de miembros**  
Tras [centralizar el acceso raíz para las cuentas de miembros](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html), puede optar por eliminar las credenciales de usuario raíz de las cuentas de miembros de Organizations. Puede eliminar la contraseña del usuario raíz, las claves de acceso y los certificados de firma, así como desactivar la autenticación multifactor (MFA). Las cuentas nuevas que cree en Organizations no tienen credenciales de usuario raíz de forma predeterminada. Las cuentas de miembros no pueden iniciar sesión con su usuario raíz ni recuperar la contraseña de su usuario raíz a menos que la recuperación de cuentas esté habilitada.

**Realización de tareas con privilegios que requieren credenciales de usuario raíz**  
Algunas tareas se pueden realizar únicamente cuando se inicia sesión como usuario raíz de una cuenta. Algunas de las [Tareas que requieren credenciales de usuario raíz](#root-user-tasks) se pueden realizar con la cuenta de administración o el administrador delegado de IAM. Para obtener más información sobre cómo realizar acciones con privilegios en las cuentas de miembros, consulte [Realización de una tarea con privilegios](id_root-user-privileged-task.md).

**Habilitación de la recuperación de cuentas del usuario raíz**  
Si necesita recuperar las credenciales de usuario raíz de una cuenta de miembro, la cuenta de administración o el administrador delegado de Organizations pueden realizar la tarea con privilegios **Permitir la recuperación de contraseñas**. La persona con acceso a la bandeja de entrada del correo del usuario raíz de la cuenta de miembro puede [Restablecer la contraseña del usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) para recuperar las credenciales del usuario raíz. Recomendamos eliminar las credenciales del usuario raíz una vez que haya completado la tarea que requiere el acceso al usuario raíz.

# Centralización del acceso raíz para las cuentas de miembros
<a name="id_root-enable-root-access"></a>

Las credenciales de usuario raíz son las credenciales iniciales que se asignan a cada una de las Cuenta de AWS que tienen acceso completo a todos los servicios y recursos de AWS de la cuenta. Cuando habilita AWS Organizations, se combinan todas las cuentas de AWS de una organización para que puedan ser administradas de manera centralizada. Cada cuenta de miembro tiene su propio usuario raíz con permisos predeterminados para realizar cualquier acción en la cuenta de miembro. Le recomendamos que proteja de forma centralizada las credenciales de usuario raíz de las Cuentas de AWS administradas con AWS Organizations para evitar la recuperación de las credenciales de usuario raíz y el acceso a gran escala.

Tras centralizar el acceso raíz, puede optar por eliminar las credenciales de usuario raíz de las cuentas de miembros de su organización. Puede eliminar la contraseña del usuario raíz, las claves de acceso y los certificados de firma, así como desactivar la autenticación multifactor (MFA). Las cuentas nuevas que cree en AWS Organizations no tienen credenciales de usuario raíz de forma predeterminada. Las cuentas de miembros no pueden iniciar sesión con su usuario raíz ni recuperar la contraseña de su usuario raíz.

**nota**  
Si bien algunas [Tareas que requieren credenciales de usuario raíz](id_root-user.md#root-user-tasks) se pueden realizar mediante la cuenta de administración o el administrador delegado de IAM, otros tareas únicamente se pueden realizar cuando se inicia sesión como usuario raíz de una cuenta.  
Si necesita recuperar las credenciales de usuario raíz de una cuenta de miembro para llevar a cabo una de estas tareas, siga los pasos que se indican en [Realización de una tarea con privilegios](id_root-user-privileged-task.md) y seleccione **Permitir la recuperación de contraseñas**. La persona que tenga acceso a la bandeja de entrada del correo del usuario raíz de la cuenta de miembro podrá entonces seguir los pasos para [restablecer la contraseña del usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) e iniciar sesión con el usuario raíz de la cuenta de miembro.  
 Recomendamos eliminar las credenciales del usuario raíz una vez que haya completado la tarea que requiere el acceso al usuario raíz.

## Requisitos previos
<a name="enable-root-access-management_prerequisite"></a>

Antes de centralizar el acceso raíz, debe tener una cuenta configurada con los siguientes ajustes:
+ Debe tener los siguientes permisos de IAM:
  + `iam:GetAccessKeyLastUsed`
  + `iam:GetAccountSummary`
  + `iam:GetLoginProfile`
  + `iam:GetUser`
  + `iam:ListAccessKeys`
  + `iam:ListMFADevices`
  + `iam:ListSigningCertificates`
  + `sts:AssumeRoot`
**nota**  
Use la política [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials) administrada por AWS para reducir los permisos cuando realice una tarea con privilegios en una cuenta de miembro de AWS Organizations o usar cualquier política con acceso a `iam:GetAccountSummary`, para auditar el estado de las credenciales de usuario raíz de una cuenta de miembro.  
Para generar el informe de información de credenciales del usuario raíz, otras políticas solo necesitan la acción `iam:GetAccountSummary` para producir el mismo resultado. También puede enumerar u obtener información sobre las credenciales de los usuarios raíz individuales, lo que incluye:  
Si hay una contraseña de usuario raíz presente
Si hay clave de acceso del usuario raíz presente y cuándo se utilizó por última vez
Si el usuario raíz tiene certificados de firma asociados
Dispositivos de MFA asociados al usuario raíz
Lista del estado de las credenciales del usuario raíz consolidado
+ Debe administrar sus Cuentas de AWS en [AWS Organizations](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_introduction.html).
+ Debe contar con los siguientes permisos para habilitar esta característica en la organización:
  + `iam:EnableOrganizationsRootCredentialsManagement`
  + `iam:EnableOrganizationsRootSessions`
  + `iam:ListOrganizationsFeatures`
  + `organizations:EnableAwsServiceAccess`
  + `organizations:ListAccountsForParent`
  + `organizations:RegisterDelegatedAdministrator` 
+ Para garantizar una funcionalidad óptima de la consola, recomendamos habilitar los siguientes permisos adicionales:
  + `organizations:DescribeAccount`
  + `organizations:DescribeOrganization`
  + `organizations:ListAWSServiceAccessForOrganization`
  + `organizations:ListDelegatedAdministrators`
  + `organizations:ListOrganizationalUnitsForParent`
  + `organizations:ListParents`
  + `organizations:ListTagsForResource`

## Habilitación del acceso raíz centralizado (consola)
<a name="enable-root-access-console"></a>

**Habilitación de esta característica en las cuentas de miembros en la Consola de administración de AWS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Administrar acceso raíz** y, a continuación, elija **Habilitar**.
**nota**  
Si ve que la **Administración del acceso raíz está deshabilitada**, habilite el acceso de confianza para AWS Identity and Access Management en AWS Organizations. Para obtener más información, consulte la sección [AWS IAM y AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-iam.html) en la *Guía del usuario de AWS Organizations*.

1. En la sección Capacidades para habilitar, elija qué características desea habilitar.
   + Seleccione **Administración de credenciales raíz** para permitir que la cuenta de administración y el administrador delegado de IAM eliminen las credenciales de usuario raíz de las cuentas de miembros. Debe habilitar las Acciones raíz con privilegios en las cuentas de miembros para permitir que las cuentas de miembros recuperen sus credenciales de usuario raíz una vez eliminadas.
   + Seleccione **Acciones raíz con privilegios en las cuentas de miembros** para permitir que la cuenta de administración y el administrador delegado de IAM realicen determinadas tareas que requieren credenciales de usuario raíz.

1. (Opcional) Introduzca el ID de cuenta del **Administrador delegado** que está autorizado a administrar el acceso de usuario raíz y a tomar medidas privilegiadas en las cuentas de los miembros. Recomendamos utilizar una cuenta destinada exclusivamente a la seguridad o administración.

1. Seleccione **Habilitar**.

## Habilitación del acceso raíz centralizado (AWS CLI)
<a name="enable-root-access-cli"></a>

**Habilitación del acceso raíz centralizado desde AWS Command Line Interface (AWS CLI)**

1. Si aún no ha habilitado el acceso de confianza para AWS Identity and Access Management en AWS Organizations, utilice el siguiente comando: [aws organizations enable-aws-service-access](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/organizations/enable-aws-service-access.html).

1. Utilice el siguiente comando para permitir que la cuenta de administración y el administrador delegado eliminen las credenciales de usuario raíz de las cuentas de miembros: [aws iam enable-organizations-root-credentials-management](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-organizations-root-credentials-management.html).

1. Utilice el siguiente comando para permitir que la cuenta de administración y el administrador delegado realicen determinadas tareas que requieren credenciales de usuario raíz: [aws iam enable-organizations-root-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-organizations-root-sessions.html).

1. (Opcional) Utilice el siguiente comando para registrar un administrador delegado: [aws organizations register-delegated-administrator](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/organizations/register-delegated-administrator.html).

   En el siguiente ejemplo, se asigna la cuenta 111111111111 como administradora delegada del servicio de IAM.

   ```
   aws organizations register-delegated-administrator 
   --service-principal iam.amazonaws.com
   --account-id 111111111111
   ```

## Habilitación del acceso raíz centralizado (API de AWS)
<a name="enable-root-access-api"></a>

**Habilitación del acceso raíz centralizado desde la API de AWS**

1. Si aún no ha habilitado el acceso de confianza para AWS Identity and Access Management en AWS Organizations, utilice el siguiente comando: [EnableAWSServiceAccess](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html).

1. Utilice el siguiente comando para permitir que la cuenta de administración y el administrador delegado eliminen las credenciales de usuario raíz de las cuentas de miembros: [EnableOrganizationsRootCredentialsManagement](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOrganizationsRootCredentialsManagement.html).

1. Utilice el siguiente comando para permitir que la cuenta de administración y el administrador delegado realicen determinadas tareas que requieren credenciales de usuario raíz: [EnableOrganizationsRootSessions](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOrganizationsRootSessions.html).

1. (Opcional) Utilice el siguiente comando para registrar un administrador delegado: [RegisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_RegisterDelegatedAdministrator.html).

## Siguientes pasos
<a name="enable-root-access_next-steps"></a>

Una vez que haya protegido de forma centralizada las credenciales con privilegios de las cuentas de miembros de su organización, consulte [Realización de una tarea con privilegios](id_root-user-privileged-task.md) para tomar medidas con privilegios en una cuenta de miembro.

# Realización de tarea con privilegios en la cuenta de miembro de AWS Organizations
<a name="id_root-user-privileged-task"></a>

La cuenta de administración de AWS Organizations o la cuenta de administrador delegado de IAM puede ejecutar ciertas tareas con privilegios en las cuentas de miembros que normalmente requerirían credenciales de usuario raíz. Con el acceso raíz centralizado, estas tareas se ejecutan mediante sesiones con privilegios de corta duración. Estas sesiones ofrecen credenciales temporales destinadas a acciones con privilegios específicos, sin que sea necesario que el usuario raíz inicie sesión en la cuenta de miembro.

Una vez que inicie una sesión con privilegios, podrá eliminar políticas de bucket de Amazon S3 o políticas de colas de Amazon SQS mal configuradas, y eliminar y rehabilitar las credenciales de usuario raíz de una cuenta de miembro.

**nota**  
Para utilizar el acceso raíz centralizado, debe iniciar sesión a través de una cuenta de administración o una cuenta de administrador delegado como un usuario o rol de IAM con el permiso `sts:AssumeRoot` otorgado de manera explícita. No puede usar credenciales de usuario raíz para llamar a `sts:AssumeRoot`.

## Requisitos previos
<a name="root-user-privileged-task_prerequisite"></a>

Antes de iniciar una sesión con privilegios, debe tener las siguientes configuraciones:
+ Ha habilitado el acceso raíz centralizado en su organización. Para ver los pasos necesarios para habilitar esta característica, consulte [Centralización del acceso raíz para las cuentas de miembros](id_root-enable-root-access.md).
+ Su cuenta de administración o cuenta de administrador delegado tiene los siguientes permisos: `sts:AssumeRoot`

## Realización de una acción con privilegios en una cuenta de miembro (consola)
<a name="root-user-privileged-task_action-console"></a>

**Inicialización de una sesión para realizar una acción con privilegios en una cuenta de miembro en la Consola de administración de AWS**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de, elija **Administración de acceso raíz**.

1. Seleccione un nombre de la lista de cuentas de miembros y elija **Realizar una acción con privilegios**.

1. Elija la acción con privilegios que desea realizar en la cuenta de miembro.
   + Seleccione **Eliminar política de bucket de Amazon S3** para eliminar una política de bucket mal configurada que impida a todas las entidades principales acceder al bucket de Amazon S3.

     1. Elija **Explorar S3** para seleccionar un nombre de los buckets que pertenecen a la cuenta de miembro y, a continuación, seleccione **Elegir**.

     1. Elija **Eliminar política de bucket**.

     1. Use la consola de Amazon S3 para corregir la política de bucket después de eliminar la política mal configurada. Para obtener más información, consulte [Agregar una política de bucket mediante la consola de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) en la *Guía del usuario de Amazon S3*.
   + Seleccione **Eliminar política de Amazon SQS** para eliminar una política basada en recursos de Amazon Simple Queue Service que impida a todas las entidades principales acceder a una cola de Amazon SQS.

     1. Introduzca el nombre de la cola en **Nombre de la cola de SQS** y seleccione **Eliminar política de SQS.**

     1. Use la consola de Amazon SQS para corregir la política de cola después de eliminar la política mal configurada. Para obtener más información, consulte [Configuring an access policy in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html) en la *Guía para desarrolladores de Amazon SQS*.
   + Seleccione **Eliminar credenciales raíz** para eliminar el acceso raíz de la cuenta de miembro. Al eliminar las credenciales del usuario raíz, se eliminan la contraseña del usuario raíz, las claves de acceso y los certificados de firma y se desactiva la autenticación multifactor (MFA) de la cuenta miembro.

     1. Seleccione **Eliminar las credenciales raíz**.
   + Seleccione **Permitir la recuperación de contraseñas** para recuperar las credenciales del usuario raíz de una cuenta de miembro.

     Esta opción solo está disponible cuando la cuenta de miembro no tiene credenciales de usuario raíz.

     1. Seleccione **Permitir la recuperación de contraseñas**.

     1. Tras realizar esta acción con privilegios, la persona que tenga acceso a la bandeja de entrada del correo del usuario raíz de la cuenta de miembro podrá [restablecer la contraseña del usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) e iniciar sesión con el usuario raíz de la cuenta de miembro.

## Realización de una acción con privilegios en una cuenta de miembro (AWS CLI)
<a name="root-user-privileged-task_action-cli"></a>

**Inicialización de una sesión para realizar una acción con privilegios en una cuenta de miembro con la AWS Command Line Interface**

1. Utilice el siguiente comando para iniciar una sesión de usuario raíz: [aws sts assume-root](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-root.html).
**nota**  
El punto de conexión global no es compatible para `sts:AssumeRoot`. Debe enviar esta solicitud a un punto de conexión regional de AWS STS. Para obtener más información, consulte [Administración de AWS STS en una Región de AWS](id_credentials_temp_enable-regions.md).

   Al iniciar una sesión de usuario raíz con privilegios para una cuenta de miembro, debe definir `task-policy-arn` para utilizar la sesión para realizar la acción con privilegios que se llevará a cabo durante la sesión. Puede usar una de las siguientes políticas administradas de AWS para determinar las acciones de sesión con privilegios.
   + [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials)
   + [IAMCreateRootUserPassword](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMCreateRootUserPassword)
   + [IAMDeleteRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMDeleteRootUserCredentials)
   + [S3UnlockBucketPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-S3UnlockBucketPolicy)
   + [SQSUnlockQueuePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-SQSUnlockQueuePolicy)

   Para limitar las acciones que una cuenta de administración o un administrador delegado pueden realizar durante una sesión de usuario raíz con privilegios, puede usar la clave de condición AWS STS [sts:TaskPolicyArn](reference_policies_iam-condition-keys.md#ck_taskpolicyarn).

    *En el siguiente ejemplo, el administrador delegado inicia sesión de usuario raíz para eliminar las credenciales de usuario raíz de la cuenta de miembro con el ID 111122223333*. 

   ```
   aws sts assume-root \
     --target-principal 111122223333 \
     --task-policy-arn arn=arn:aws:iam::aws:policy/root-task/IAMDeleteRootUserCredentials \
     --duration-seconds 900
   ```

1. Utilice el `SessionToken`, el `AccessKeyId` y la `SecretAccessKey` de la respuesta para realizar acciones con privilegios en la cuenta de miembro. Si omite el nombre de usuario y la contraseña en la solicitud, se utilizará la cuenta de miembro de manera predeterminada.
   + **Compruebe el estado de las credenciales del usuario raíz**. Utilice los siguientes comandos para comprobar el estado de las credenciales de usuario raíz de una cuenta de miembro.
     + [get-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-user.html)
     + [get-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-login-profile.html)
     + [list-access-keys](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-access-keys.html)
     + [list-signing-certificates](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-signing-certificates.html)
     + [list-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-mfa-devices.html)
     + [get-access-key-last-used](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-access-key-last-used.html)
   + **Eliminar credenciales de usuario raíz**. Utilice los siguientes comandos para eliminar el acceso raíz. Puede eliminar la contraseña del usuario raíz, las claves de acceso y los certificados de firma, así como desactivar la autenticación multifactor (MFA) para eliminar totalmente el acceso y la recuperación del usuario raíz.
     + [delete-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-login-profile.html)
     + [delete-access-key](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-access-key.html)
     + [delete-signing-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-signing-certificate.html)
     + [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html)
   + **Eliminar política de bucket de Amazon S3**. Utilice los siguientes comandos para leer, editar y eliminar una política de bucket mal configurada que impida a todas las entidades principales acceder al bucket de Amazon S3.
     + [list-buckets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-buckets.html)
     + [get-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)
     + [put-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-policy.html)
     + [delete-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-policy.html)
   + **Eliminar política de Amazon SQS**. Utilice los siguientes comandos para ver y eliminar una política basada en recursos de Amazon Simple Queue Service que impida a todas las entidades principales acceder a una cola de Amazon SQS.
     + [list-queues](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/list-queues.html)
     + [get-queue-url](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-url.html)
     + [get-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html)
     + [set-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/set-queue-attributes.html)
   + **Permitir la recuperación de contraseñas**. Utilice los siguientes comandos para ver el nombre de usuario y recuperar las credenciales del usuario raíz de una cuenta de miembro.
     + [get-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-login-profile.html)
     + [create-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-login-profile.html)

## Realización de una acción con privilegios en una cuenta de miembro (API de AWS)
<a name="root-user-privileged-task_action-api"></a>

**Inicialización de una sesión para realizar una acción con privilegios en una cuenta de miembro con la API de AWS**

1. Utilice el siguiente comando para iniciar una sesión de usuario raíz: [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html).
**nota**  
El punto de conexión global no es compatible con AssumeRoot. Debe enviar esta solicitud a un punto de conexión regional de AWS STS. Para obtener más información, consulte [Administración de AWS STS en una Región de AWS](id_credentials_temp_enable-regions.md).

   Al iniciar una sesión de usuario raíz con privilegios para una cuenta de miembro, debe definir `TaskPolicyArn` para utilizar la sesión para realizar la acción con privilegios que se llevará a cabo durante la sesión. Puede usar una de las siguientes políticas administradas de AWS para determinar las acciones de sesión con privilegios.
   + [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials)
   + [IAMCreateRootUserPassword](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMCreateRootUserPassword)
   + [IAMDeleteRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMDeleteRootUserCredentials)
   + [S3UnlockBucketPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-S3UnlockBucketPolicy)
   + [SQSUnlockQueuePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-SQSUnlockQueuePolicy)

   Para limitar las acciones que una cuenta de administración o un administrador delegado pueden realizar durante una sesión de usuario raíz con privilegios, puede usar la clave de condición AWS STS [sts:TaskPolicyArn](reference_policies_iam-condition-keys.md#ck_taskpolicyarn).

   En el siguiente ejemplo, el administrador delegado inicia una sesión de usuario raíz para leer, editar y eliminar una política basada en recursos mal configurada para un bucket de Amazon S3 de la cuenta de miembro con el ID *111122223333*.

   ```
   https://sts.us-east-2.amazonaws.com/
     ?Version=2011-06-15
     &Action=AssumeRoot
     &TargetPrincipal=111122223333
     &PolicyArns.arn=arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy 
     &DurationSeconds 900
   ```

1. Utilice el `SessionToken`, el `AccessKeyId` y la `SecretAccessKey` de la respuesta para realizar acciones con privilegios en la cuenta de miembro. Si omite el nombre de usuario y la contraseña en la solicitud, se utilizará la cuenta de miembro de manera predeterminada.
   + **Compruebe el estado de las credenciales del usuario raíz**. Utilice los siguientes comandos para comprobar el estado de las credenciales de usuario raíz de una cuenta de miembro.
     + [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)
     + [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)
     + [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)
     + [ListSigningCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSigningCertificates.html)
     + [ListMFADevices](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html)
     + [GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)
   + **Eliminar credenciales de usuario raíz**. Utilice los siguientes comandos para eliminar el acceso raíz. Puede eliminar la contraseña del usuario raíz, las claves de acceso y los certificados de firma, así como desactivar la autenticación multifactor (MFA) para eliminar totalmente el acceso y la recuperación del usuario raíz.
     + [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)
     + [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)
     + [DeleteSigningCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSigningCertificate.html)
     + [DeactivateMfaDevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)
   + **Eliminar política de bucket de Amazon S3**. Utilice los siguientes comandos para leer, editar y eliminar una política de bucket mal configurada que impida a todas las entidades principales acceder al bucket de Amazon S3.
     + [ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
     + [GetBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
     + [PutBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
     + [DeleteBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
   + **Eliminar política de Amazon SQS**. Utilice los siguientes comandos para ver y eliminar una política basada en recursos de Amazon Simple Queue Service que impida a todas las entidades principales acceder a una cola de Amazon SQS.
     + [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)
     + [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)
     + [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)
     + [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)
   + **Permitir la recuperación de contraseñas**. Utilice los siguientes comandos para ver el nombre de usuario y recuperar las credenciales del usuario raíz de una cuenta de miembro.
     + [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)
     + [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

# Autenticación multifactor para Usuario raíz de la cuenta de AWS
<a name="enable-mfa-for-root"></a>

**importante**  
AWS recomienda, en lo posible, que se utilice una clave de paso o de seguridad para la MFA en AWS, ya que son más resistentes a ataques como el phishing. Para obtener más información, consulte [Claves de acceso y claves de seguridad](#passkeys-security-keys-for-root).

La autenticación multifactor (MFA) es un mecanismo simple y eficaz para mejorar la seguridad. El primer factor, su contraseña, es un secreto que debe memorizar, también conocido como factor de conocimiento. Otros factores pueden ser factores de posesión (algo que posea, como una clave de seguridad) o factores inherentes (algo que sea suyo y solo suyo, como un escaneo biométrico). Para más seguridad, le recomendamos encarecidamente que configure la autenticación multifactor (MFA) para ayudar a proteger sus recursos de AWS.

**nota**  
Todos los tipos de Cuenta de AWS (cuentas independientes, cuentas de administración y cuentas de miembros) requieren que la MFA esté configurada para su usuario raíz. Los usuarios deben registrar la MFA en un plazo de 35 días a partir de su primer intento de inicio de sesión para acceder a la Consola de administración de AWS si la MFA aún no está habilitada.

Puede habilitar MFA para el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Cuando habilita la MFA para el usuario raíz, esto solo afecta a las credenciales del usuario raíz. Para obtener más información sobre cómo habilitar MFA para los usuarios de IAM, consulte [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md).

**nota**  
Las Cuentas de AWS administradas con AWS Organizations pueden tener la opción de [administrar de forma centralizada el acceso raíz](id_root-user.md#id_root-user-access-management) de las cuentas miembro para prevenir la recuperación de credenciales y el acceso a escala. Si esta opción está habilitada, puede eliminar las credenciales del usuario raíz de las cuentas miembro, incluidas las contraseñas y la MFA, lo que previene de manera efectiva el inicio de sesión como usuario raíz, la recuperación de la contraseña o la configuración de la MFA. Como alternativa, si prefiere mantener métodos de inicio de sesión basados en contraseñas, registre la MFA para mejorar la protección de la cuenta.

Antes de habilitar la MFA para su usuario raíz, revise y [actualice la configuración de la cuenta y la información de contacto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html) para asegurarse de que tiene acceso al correo electrónico y al número de teléfono. Si su dispositivo MFA se pierde, se lo roban o no funciona, puede iniciar sesión como usuario raíz mediante la verificación de su identidad con ese correo electrónico y número de teléfono. Para obtener más información acerca de cómo iniciar sesión con factores de autenticación alternativos, consulte [Recuperación de una identidad protegida por MFA en IAM](id_credentials_mfa_lost-or-broken.md). Para deshabilitar esta característica, póngase en contacto con [AWS Support](https://console.aws.amazon.com/support/home#/). 

AWS admite los siguientes tipos de MFA para el usuario raíz:
+ [Claves de acceso y claves de seguridad](#passkeys-security-keys-for-root)
+ [Aplicaciones de autenticador virtual](#virtual-auth-apps-for-root)
+ [Tokens TOTP físicos](#hardware-totp-token-for-root)

## Claves de acceso y claves de seguridad
<a name="passkeys-security-keys-for-root"></a>

AWS Identity and Access Management admite claves de acceso y claves de seguridad para MFA. Según los estándares FIDO, las claves de acceso utilizan la criptografía de clave pública para proporcionar una autenticación sólida y resistente a la suplantación de identidad que es más segura que las contraseñas. AWS admite dos tipos de claves de acceso: claves de acceso vinculadas al dispositivo (claves de seguridad) y claves de acceso sincronizadas.
+ **Claves de seguridad**: son dispositivos físicos, como una YubiKey, que se utilizan como segundo factor de autenticación. Una sola clave de seguridad puede admitir varias cuentas de usuario raíz y usuarios de IAM. 
+ **Claves de acceso sincronizadas**: utilizan administradores de credenciales de proveedores como Google, Apple, cuentas de Microsoft y servicios de terceros como 1Password, Dashlane y Bitwarden como segundo factor.

Puede utilizar autenticadores biométricos integrados, como Touch ID en los MacBooks de Apple, para desbloquear el administrador de credenciales e iniciar sesión en AWS. Las claves de acceso se crean con el proveedor que elija mediante su huella digital, su rostro o el PIN del dispositivo. También puede utilizar una clave de acceso de autenticación entre dispositivos (CDA) de un dispositivo, como un dispositivo móvil o una clave de seguridad de hardware, para iniciar sesión en otro dispositivo, como una computadora portátil. Para obtener más información, consulte [cross-device authentication](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda) (CDA).

Puede sincronizar las claves de acceso entre sus dispositivos para facilitar el inicio de sesión con AWS y mejorar la usabilidad y la capacidad de recuperación. Para obtener más información acerca de la habilitación de las claves de acceso y las claves de seguridad, consulte [Habilitación de una clave de acceso o clave de seguridad para el usuario raíz (consola)](enable-fido-mfa-for-root.md).

FIDO Alliance mantiene una lista de todos los [productos certificados por FIDO](https://fidoalliance.org/certification/fido-certified-products/) que son compatibles con las especificaciones de FIDO.

## Aplicaciones de autenticador virtual
<a name="virtual-auth-apps-for-root"></a>

Una aplicación de autenticador virtual se ejecuta en un teléfono u otro dispositivo y emula un dispositivo físico. Las aplicaciones de autenticación virtual aplican el algoritmo de [contraseña temporal de un solo uso](https://datatracker.ietf.org/doc/html/rfc6238) (TOTP) y admiten varios tokens en un mismo dispositivo. El usuario debe escribir un código válido del dispositivo cuando se le solicite durante el proceso de inicio de sesión. Cada token asignado a un usuario debe ser único. Un usuario no puede escribir un código desde el token de otro usuario para la autenticación.

Recomendamos que utilice un dispositivo MFA virtual mientras espera la aprobación de compra de hardware o mientras espera a que llegue su hardware. Para ver una lista de algunas aplicaciones compatibles que puede utilizar como dispositivos de MFA virtuales, consulte [Autenticación multifactor (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). Para obtener instrucciones acerca de cómo configurar un dispositivo MFA virtual con AWS, consulte [Habilitación de un dispositivo MFA virtual para el usuario raíz (consola)](enable-virt-mfa-for-root.md).

## Tokens TOTP físicos
<a name="hardware-totp-token-for-root"></a>

Un dispositivo de hardware genera un código numérico de seis dígitos basado en el [algoritmo de contraseña temporal de un solo uso (TOTP)](https://datatracker.ietf.org/doc/html/rfc6238). El usuario debe escribir un código válido del dispositivo en otra página web durante el inicio de sesión. Cada dispositivo MFA asignado a un usuario debe ser único. Un usuario no puede escribir un código desde el dispositivo de otro usuario para la autenticación. Para obtener más información sobre los dispositivos MFA físicos admitidos, consulte [Autenticación multifactor (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). Para obtener instrucciones sobre cómo configurar un token TOTP de hardware con AWS, consulte [Habilitación de un token TOTP de hardware para el usuario raíz de la (consola)](enable-hw-mfa-for-root.md).

Si desea usar un dispositivo MFA físico, le recomendamos que utilice las claves de seguridad FIDO como una alternativa a los dispositivos TOTP físicos. Las claves de seguridad FIDO tienen la ventaja de que no necesitan baterías, son resistentes a la suplantación de identidad y son compatibles con varios usuarios raíz o de IAM en un solo dispositivo, lo que mejora la seguridad.

**Topics**
+ [

## Claves de acceso y claves de seguridad
](#passkeys-security-keys-for-root)
+ [

## Aplicaciones de autenticador virtual
](#virtual-auth-apps-for-root)
+ [

## Tokens TOTP físicos
](#hardware-totp-token-for-root)
+ [

# Habilitación de una clave de acceso o clave de seguridad para el usuario raíz (consola)
](enable-fido-mfa-for-root.md)
+ [

# Habilitación de un dispositivo MFA virtual para el usuario raíz (consola)
](enable-virt-mfa-for-root.md)
+ [

# Habilitación de un token TOTP de hardware para el usuario raíz de la (consola)
](enable-hw-mfa-for-root.md)

# Habilitación de una clave de acceso o clave de seguridad para el usuario raíz (consola)
<a name="enable-fido-mfa-for-root"></a>

Puede configurar y habilitar una clave de acceso para el usuario raíz únicamente desde la Consola de administración de AWS, no desde la AWS CLI ni desde la API de AWS. <a name="enable_fido_root"></a>

**Cómo habilitar una clave de acceso o clave de seguridad para su usuario raíz (consola)**

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la parte derecha de la barra de navegación, elija su nombre de cuenta y, a continuación, **Credenciales de seguridad**.  
![\[Credenciales de seguridad en el menú de navegación\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. En la página **Mis credenciales de seguridad** del usuario raíz, en **Autenticación multifactor (MFA**), elija **Asignar dispositivo de MFA**.

1. En la página de **nombres del dispositivo de MFA**, introduzca un **Nombre de dispositivo**, elija **Clave de acceso o Clave de seguridad** y, a continuación, elija **Siguiente.**

1. En **Configurar dispositivo**, configure su clave de acceso. Cree una clave de acceso con datos biométricos, como su rostro o huella digital, con el PIN del dispositivo o al insertar la clave de seguridad FIDO en el puerto USB de la computadora y al pulsarla.

1. Siga las instrucciones del navegador para elegir un proveedor de claves de acceso o dónde quiere guardarlas para utilizarlas en todos sus dispositivos. 

1. Elija **Continuar**.

Ya ha registrado su clave de acceso para usarla con AWS. La próxima vez que utilice sus credenciales de usuario raíz para iniciar sesión, deberá realizar la autenticación con su clave de seguridad para completar el proceso de inicio de sesión.

Para obtener ayuda sobre cómo solucionar problemas con su llave de seguridad FIDO, consulte [Solucionar problemas con claves de acceso y claves de seguridad FIDO](troubleshoot_mfa-fido.md).

# Habilitación de un dispositivo MFA virtual para el usuario raíz (consola)
<a name="enable-virt-mfa-for-root"></a>

Puede utilizar Consola de administración de AWS para configurar y habilitar un dispositivo MFA virtual para su usuario raíz. Para habilitar dispositivos MFA para la Cuenta de AWS, debe haber iniciado sesión en AWS con las credenciales de usuario raíz. 

**Para configurar y habilitar un dispositivo MFA virtual para utilizarlo con su usuario raíz (consola)**

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la parte derecha de la barra de navegación, elija su nombre de cuenta y seleccione **Security Credentials** (Credenciales de seguridad).  
![\[Credenciales de seguridad en el menú de navegación\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. En la sección **Multi-Factor Authentication (MFA)** (Autenticación multifactor [MFA]), elija **Assign MFA device** (Asignar dispositivo MFA).

1. En el asistente, escriba un **Nombre de dispositivo**, elija **Aplicación del autenticador** y luego, **Siguiente**.

   IAM generará y mostrará la información de configuración del dispositivo MFA virtual, incluido un gráfico de código QR. El gráfico es una representación de la clave de configuración secreta que se puede introducir manualmente en dispositivos que no admiten códigos QR.

1. Abra la aplicación de MFA virtual en el dispositivo. 

   Si la aplicación de MFA virtual admite varios dispositivos o cuentas de MFA, elija la opción para crear un nuevo dispositivo o cuenta de MFA virtual.

1. La forma más sencilla de configurar la aplicación consiste en utilizar la aplicación para escanear el código QR. Si no puede analizar el código, puede escribir la información de configuración manualmente. El código QR y la clave de configuración secreta generada por IAM están vinculados a su Cuenta de AWS y no se pueden utilizar con otra cuenta. Sin embargo, se pueden volver a utilizar para configurar un dispositivo MFA nuevo para su cuenta en caso de que pierda el acceso al dispositivo MFA original.
   + En el asistente, para utilizar el código QR para configurar el dispositivo MFA virtual, elija **Show QR code (Mostrar código QR)**. A continuación, siga las instrucciones de la aplicación para escanear el código. Por ejemplo, puede que tenga que elegir el icono de la cámara o un comando similar a **Scan account barcode (Escanear código de barras)** y, a continuación, utilizar la cámara del dispositivo para analizar el código QR.
   + En el asistente **Set up device** (Configurar el dispositivo), elija **Show secret key** (Mostrar clave secreta) y, a continuación, escriba la clave secreta en su aplicación MFA.
**importante**  
Haga una copia de seguridad protegida del código QR o la clave de configuración secreta, o asegúrese de habilitar varios dispositivos MFA para su cuenta. Puede registrar hasta **ocho** dispositivos MFA de cualquier combinación de los [tipos de MFA admitidos actualmente](https://aws.amazon.com/iam/features/mfa/) con el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Un dispositivo MFA virtual puede dejar de estar disponible si, por ejemplo, pierde el smartphone donde se aloja el dispositivo MFA virtual. Si eso ocurre y no puede iniciar sesión en su cuenta sin dispositivos de MFA adicionales asociados al usuario o incluso mediante [Recuperación de un dispositivo MFA de usuario raíz](id_credentials_mfa_lost-or-broken.md#root-mfa-lost-or-broken), no podrá iniciar sesión en su cuenta y tendrá que [contactarse con el servicio de atención al cliente](https://support.aws.amazon.com/#/contacts/aws-mfa-support) para eliminar la protección de MFA de la cuenta. 

   El dispositivo comienza a generar números de seis dígitos.

1. En el asistente, en la casilla **MFA code 1** (Código MFA 1), escriba la contraseña de un solo uso que aparece actualmente en el dispositivo MFA virtual. Espere hasta 30 segundos a que el dispositivo genere una nueva contraseña de uso único. A continuación, escriba la otra contraseña de uso único en el cuadro **MFA code 2 (Código MFA 2)**. Elija **Add MFA** (Agregar MFA). 
**importante**  
Envíe su solicitud inmediatamente después de generar el código. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo. Si esto ocurre, puede [volver a sincronizar el dispositivo](id_credentials_mfa_sync.md).

El dispositivo ya está listo para utilizarlo con AWS. Para obtener más información sobre el uso de MFA con la Consola de administración de AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md).

# Habilitación de un token TOTP de hardware para el usuario raíz de la (consola)
<a name="enable-hw-mfa-for-root"></a>

Puede configurar y habilitar un dispositivo MFA virtual para el usuario raíz únicamente desde la Consola de administración de AWS, no desde la AWS CLI ni la API de AWS.

**nota**  
Puede ver texto diferente, como, por ejemplo, **Iniciar sesión mediante MFA** y **Solución de problemas con el dispositivo de autenticación**. Sin embargo, se proporcionan las mismas características. En cualquier caso, si no puede verificar la dirección de correo electrónico y el número de teléfono de su cuenta mediante factores de autenticación alternativos, póngase en contacto con [AWS Support](https://aws.amazon.com/forms/aws-mfa-support) para eliminar la configuración de MFA.<a name="enable_physical_root"></a>

**Para habilitar un token TOTP de hardware para su usuario raíz (consola)**

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la parte derecha de la barra de navegación, elija su nombre de cuenta y, a continuación, **Credenciales de seguridad**.  
![\[Credenciales de seguridad en el menú de navegación\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Expanda la sección **Autenticación multifactor (MFA)**.

1. Elija **Assign MFA device** (Asignar dispositivo MFA).

1. En el asistente, escriba un **Device name** (Nombre del dispositivo), elija **Hardware TOTP token** (Token TOTP de hardware) y, a continuación, elija **Next** (Siguiente).

1. En el campo **Serial number (Número de serie)**, escriba el número de serie que se encuentra en la parte posterior del dispositivo MFA.

1. En el cuadro **Código MFA 1**, escriba el número de seis dígitos que se encuentra en el dispositivo MFA. Es posible que tenga que pulsar el botón de la parte anterior del dispositivo para mostrar el número.  
![\[Panel de IAM, dispositivo MFA\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/MFADevice.png)

1. Espere 30 segundos a que el dispositivo actualice el código y, a continuación, escriba el número de seis dígitos siguiente en el cuadro **Código MFA 2**. Es posible que tenga que volver a pulsar el botón de la parte anterior del dispositivo para mostrar el otro número.

1. Elija **Add MFA** (Agregar MFA). Ahora el dispositivo MFA está asociado a Cuenta de AWS.
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos de autenticación. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo. Si esto ocurre, puede [volver a sincronizar el dispositivo](id_credentials_mfa_sync.md).

   La siguiente vez que utilice sus credenciales de usuario raíz para iniciar sesión, debe escribir un código del dispositivo de MFA.

# Cambiar la contraseña para Usuario raíz de la cuenta de AWS
<a name="root-user-password"></a>

Puede cambiar la dirección de correo electrónico y la contraseña en la página [Credenciales de seguridad](https://console.aws.amazon.com/iam/home?#security_credential) o en la página **Cuenta**. También puede elegir **Forgot password? (¿Ha olvidado la contraseña?)** en la página de inicio de sesión de AWS para restablecer la contraseña.

Para cambiar la contraseña del usuario raíz, debe iniciar sesión como Usuario raíz de la cuenta de AWS y no como un usuario de IAM. Para obtener información sobre cómo restablecer la contraseña de usuario raíz *olvidada*, consulte [Restablecimiento de una contraseña de usuario raíz perdida u olvidada](reset-root-password.md). 

Para proteger la contraseña, es importante seguir estas prácticas recomendadas:
+ Cambie la contraseña periódicamente. 
+ Mantenga la contraseña en secreto, ya que cualquier persona que la conozca podrá acceder a su cuenta.
+ Utiliza una contraseña diferente de AWS a la utilizada en otros sitios. 
+ Evite utilizar contraseñas que sean fáciles de adivinar. Entre estas se incluyen contraseñas tales como `secret`, `password`, `amazon` o `123456`. Además, evite usar palabras del diccionario, su nombre, dirección de correo electrónico u otra información personal que pueda obtenerse fácilmente.

**importante**  
Las Cuentas de AWS administradas con AWS Organizations pueden tener habilitado el [acceso raíz centralizado](id_root-user.md#id_root-user-access-management) para las cuentas de los miembros. Estas cuentas de miembros no tienen credenciales de usuario raíz, no pueden iniciar sesión como usuarios raíz y no pueden recuperar la contraseña del usuario raíz. Póngase en contacto con su administrador si necesita realizar una tarea que requiera credenciales de usuario raíz.

------
#### [ Consola de administración de AWS ]

**Para cambiar la contraseña para el usuario raíz**
**Permisos mínimos**  
Para realizar los siguientes pasos, debe tener al menos los siguientes permisos IAM:  
Debe iniciar sesión como usuario raíz de la Cuenta de AWS, lo cual no requiere permisos adicionales de AWS Identity and Access Management (IAM). No puede realizar estos pasos como usuario o rol de IAM.

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la esquina superior derecha de la consola, elija su nombre o número de cuenta y, a continuación, seleccione **Credenciales de seguridad**.

1. En la página **Cuenta**, junto a **Configuración de la cuenta**, elija **Editar**. Se le solicitará que vuelva a autenticarse por motivos de seguridad.
**nota**  
Si no ve la opción **Editar**, es probable que no haya iniciado sesión como el usuario raíz de la cuenta. No puede modificar la configuración de la cuenta si ha iniciado sesión como usuario o rol de IAM.

1. En la página **Actualizar la configuración de la cuenta**, en **Contraseña**, seleccione **Editar**.

1. En la página **Actualizar contraseña**, complete los campos **Contraseña actual**, **Contraseña nueva** y **Confirmar contraseña nueva**.
**importante**  
Asegúrese de elegir una contraseña segura. Aunque puede definir una política de contraseñas de cuentas para los usuarios de IAM, dicha política no se aplica al usuario raíz.

   AWS exige que la contraseña cumpla con las siguientes condiciones:
   + Debe tener 8 caracteres como mínimo y 128 como máximo.
   + Debe incluir, como mínimo, tres de estos tipos de caracteres combinados: mayúsculas, minúsculas, números y símbolos \$1 @ \$1 \$1 % ^ & \$1 () <> [] \$1\$1 \$1 \$1\$1-=.
   + No debe ser idéntica al nombre de la Cuenta de AWS ni a la dirección de correo electrónico.

1. Seleccione **Save changes (Guardar cambios)**.

------
#### [ AWS CLI or AWS SDK ]

Esta tarea no es compatible con la AWS CLI o con una operación de API de uno de los AWS SDK. Solamente puede realizar esta tarea mediante la Consola de administración de AWS.

------

# Restablecimiento de una contraseña de usuario raíz perdida u olvidada
<a name="reset-root-password"></a>

Cuando creó su Cuenta de AWS por primera vez, proporcionó una dirección de correo electrónico y contraseña. Estas son sus credenciales de Usuario raíz de la cuenta de AWS. Si olvida su contraseña de usuario raíz, puede restablecer la contraseña desde la Consola de administración de AWS.

Las Cuentas de AWS administradas con AWS Organizations pueden tener habilitado el [acceso raíz centralizado](id_root-user.md#id_root-user-access-management) para las cuentas de los miembros. Estas cuentas de miembros no tienen credenciales de usuario raíz, no pueden iniciar sesión como usuarios raíz y no pueden recuperar la contraseña del usuario raíz. Póngase en contacto con su administrador si necesita realizar una tarea que requiera credenciales de usuario raíz.

**importante**  
**¿Tiene problemas para iniciar sesión en AWS?** Asegúrese de que está en la [página de inicio de sesión de AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html) correcta para su tipo de usuario. Si es el Usuario raíz de la cuenta de AWS (propietario de la cuenta), puede iniciar sesión en AWS con las credenciales que configuró cuando creó la Cuenta de AWS. Si es usuario de IAM, el administrador de su cuenta puede proporcionarle las credenciales que puede utilizar para iniciar sesión en AWS. Si necesita solicitar soporte técnico, no utilice el enlace de comentarios de esta página, ya que el formulario lo recibe el equipo de documentación de AWS, no Soporte. En lugar de ello, en la página [Contacte con nosotros](https://aws.amazon.com/contact-us/), elija **Todavía no es posible iniciar sesión en la cuenta de AWS** y, a continuación, elija una de las opciones de asistencia disponibles.

**Para restablecer la contraseña de su usuario raíz**

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.
**nota**  
 Si ha iniciado sesión en la [Consola de administración de AWS](https://console.aws.amazon.com/) con las credenciales de *usuario de IAM*, debe cerrar la sesión para poder restablecer la contraseña de usuario raíz. Si aparece la página de inicio de sesión de usuario de IAM específica de la cuenta, elija **Iniciar sesión utilizando las credenciales de la cuenta raíz** cerca de la parte inferior de la página. Si es necesario, proporcione la dirección de correo electrónico de la cuenta y elija **Siguiente** para acceder a la página **Inicio de sesión de usuario raíz**.

1. Elija **Forgot your password? (¿Ha olvidado su contraseña?)**.
**nota**  
Si es usuario de IAM, esta opción no se encuentra disponible. La opción **¿Ha olvidado su contraseña?** solo se encuentra disponible para la cuenta de usuario raíz. Los usuarios de IAM deben solicitar a su administrador que restablezca una contraseña olvidada. Para obtener más información, consulte [Olvidé la contraseña del usuario de IAM de mi cuenta de AWS](https://docs.aws.amazon.com/signin/latest/userguide/troubleshooting-sign-in-issues.html#troubleshoot-forgot-iam-password). Si inicia sesión mediante el portal de acceso de AWS, consulte [Restablecimiento de la contraseña de usuario del IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/resetpassword-accessportal.html).

1. Proporcione la dirección de correo electrónico asociada a la cuenta. A continuación, proporcione el texto CAPTCHA y elija **Continue (Continuar)**.

1. Busque un mensaje de Amazon Web Services en la bandeja del correo electrónico asociado con su cuenta de Cuenta de AWS. El correo electrónico procederá de una dirección que termina en `@verify.signin.aws`. Siga las indicaciones del correo electrónico. Si no ve el correo electrónico en su cuenta, compruebe la carpeta de spam. Si ya no tiene acceso al correo electrónico, consulte [No tengo acceso al correo electrónico de mi cuenta de AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-troubleshooting.html#credentials-not-working-console) en la *Guía del usuario de AWS Sign-In*.

# Creación de claves de acceso para el usuario raíz
<a name="id_root-user_manage_add-key"></a>

**aviso**  
Le recomendamos encarecidamente **no** crear pares de claves de acceso para el usuario raíz. Dado que [solo unas pocas tareas requieren el usuario raíz](id_root-user.md#root-user-tasks) y, por lo general, las realiza con poca frecuencia, le recomendamos iniciar sesión en la Consola de administración de AWS para realizar las tareas de usuario raíz. Antes de crear claves de acceso, revise las [alternativas a las claves de acceso a largo plazo](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys).

Aunque no lo recomendamos, puede crear claves de acceso para el usuario raíz para poder ejecutar comandos en AWS Command Line Interface (AWS CLI) o utilizar las operaciones de la API desde uno de los AWS SDK con las credenciales de usuario raíz. Cuando crea una clave de acceso, se genera el ID de clave de acceso y la clave de acceso secreta como conjunto. Cuando se crea la clave de acceso, AWS permite ver y descargar la clave de acceso secreta que forma parte de la clave de acceso. Si no la descarga o la pierde, puede eliminar la clave de acceso y, a continuación, crear una nueva. Puede crear claves de acceso de usuario raíz con la consola, la AWS CLI o la API de AWS.

Una clave de acceso recién creada tiene estado *activo*; esto significa que se puede utilizar para efectuar llamadas de CLI y a la API. Puede asignar un máximo de dos claves de acceso al usuario raíz.

Las claves de acceso que no están en uso deben desactivarse. Una vez que una clave de acceso está inactiva, no se la puede utilizar para las llamadas a la API. Las llaves no activas cuentan igual para su límite. Puede crear o eliminar una clave de acceso en cualquier momento. Sin embargo, cuando se elimina una clave de acceso, desaparece para siempre y ya no se puede recuperar.

------
#### [ Consola de administración de AWS ]

**Para crear una clave de acceso para la Usuario raíz de la cuenta de AWS**
**Permisos mínimos**  
Para realizar los siguientes pasos, debe tener al menos los siguientes permisos IAM:  
Debe iniciar sesión como usuario raíz de la Cuenta de AWS, lo cual no requiere permisos adicionales de AWS Identity and Access Management (IAM). No puede realizar estos pasos como usuario o rol de IAM.

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la esquina superior derecha de la consola, elija su nombre o número de cuenta y, a continuación, seleccione **Credenciales de seguridad**. 

1. En la sección **Claves de acceso**, haga clic en **Crear clave de acceso**. Si esta opción no está disponible, significa que ya tiene el número máximo de claves de acceso. Debe eliminar una de las claves de acceso existentes antes de poder crear una nueva. Para obtener más información, consulte [IAM Object Quotas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities). 

1. En la página **Alternativas a las claves de acceso de usuario raíz**, revise las recomendaciones de seguridad. Para continuar, seleccione la casilla de verificación y, a continuación, elija **Crear clave de acceso**. 

1. En la página **Recuperar clave de acceso**, se muestra el ID de **clave de acceso**. 

1. En **Clave de acceso secreta**, elija **Mostrar** y, a continuación, copie el ID de clave de acceso y la clave secreta de la ventana del navegador, luego, pegue esos datos en un lugar seguro. También puede elegir **Descargar archivo .csv**, lo cual descargará un archivo denominado `rootkey.csv` que contiene el ID de clave de acceso y la clave secreta. Guarde el archivo en un lugar seguro.

1. Seleccione **Listo**. Cuando ya no necesite la clave de acceso, [le recomendamos eliminarla](id_root-user_manage_delete-key.md) o, al menos, considerar desactivarla para que nadie pueda utilizarla de manera indebida.

------
#### [ AWS CLI & SDKs ]

**Para crear una clave de acceso para el usuario raíz**
**nota**  
Para ejecutar el siguiente comando u operación de API como usuario raíz, ya debe tener un par de claves de acceso activo. Si no tiene ninguna clave de acceso, cree la primera con Consola de administración de AWS. A continuación, puede usar las credenciales de la primera clave de acceso con la AWS CLI para crear la segunda clave de acceso o eliminar una clave de acceso.
+ AWS CLI: [aws iam create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)  
**Example**  

  ```
  $ aws iam create-access-key
  {
      "AccessKey": {
          "UserName": "MyUserName",
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "Status": "Active",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "CreateDate": "2021-04-08T19:30:16+00:00"
      }
  }
  ```
+ API de AWS: [CreateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) en la *Referencia de la API de IAM*. 

------

# Eliminación de claves de acceso para el usuario raíz
<a name="id_root-user_manage_delete-key"></a>

Puede utilizar la Consola de administración de AWS, la AWS CLI o la API de AWS para eliminar las claves de acceso de usuario raíz.

------
#### [ Consola de administración de AWS ]

**Para eliminar una clave de acceso para el usuario raíz**
**Permisos mínimos**  
Para realizar los siguientes pasos, debe tener al menos los siguientes permisos IAM:  
Debe iniciar sesión como usuario raíz de la Cuenta de AWS, lo cual no requiere permisos adicionales de AWS Identity and Access Management (IAM). No puede realizar estos pasos como usuario o rol de IAM.

1. Abra la [Consola de administración de AWS](https://console.aws.amazon.com/) e inicie sesión con sus credenciales de usuario raíz.

   Para obtener instrucciones, consulte [Iniciar sesión en la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la esquina superior derecha de la consola, elija su nombre o número de cuenta y, a continuación, seleccione **Credenciales de seguridad**. 

1. En la sección **Claves de acceso**, seleccione la clave de acceso que desea eliminar y, a continuación, en **Acciones**, elija **Eliminar**.
**nota**  
Como alternativa, puede **desactivar** una clave de acceso, en lugar de eliminarla de forma permanente. Esto le permitirá volver a utilizarla más tarde, sin tener que cambiar el ID de clave o la clave secreta. Mientras la clave está inactiva, todos los intentos de utilizarla en las solicitudes a la API de AWS, muestran el error acceso denegado.

1. En el cuadro de diálogo **Eliminar <ID de clave de acceso>**, seleccione **Desactivar**, introduzca el ID de clave de acceso para confirmar que desea eliminarla y, a continuación, seleccione **Eliminar**. 

------
#### [ AWS CLI & SDKs ]

**Para eliminar una clave de acceso para el usuario raíz**
**Permisos mínimos**  
Para realizar los siguientes pasos, debe tener al menos los siguientes permisos IAM:  
Debe iniciar sesión como usuario raíz de la Cuenta de AWS, lo cual no requiere permisos adicionales de AWS Identity and Access Management (IAM). No puede realizar estos pasos como usuario o rol de IAM.
+ AWS CLI: [aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)  
**Example**  

  ```
  $ aws iam delete-access-key \
      --access-key-id AKIAIOSFODNN7EXAMPLE
  ```

  Este comando no genera ninguna salida si se realiza correctamente.
+ API de AWS: [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## Tareas que requieren credenciales de usuario raíz
<a name="root-user-tasks"></a>

Le recomendamos [configurar un usuario administrativo en AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) para realizar las tareas diarias y acceder a los recursos de AWS. Sin embargo, las tareas que se enumeran a continuación únicamente se pueden realizar cuando se inicia sesión como usuario raíz de una cuenta.

Para simplificar la administración de las credenciales de usuario raíz con privilegios en todas las cuentas de miembros de AWS Organizations, puede habilitar el acceso raíz centralizado para garantizar de forma centralizada el acceso con altos privilegios a sus Cuentas de AWS. [Administración de forma centralizada del acceso raíz a las cuentas de miembros](#id_root-user-access-management) le permite eliminar las credenciales de usuario raíz e impedir su recuperación a largo plazo de forma centralizada, lo que mejora la seguridad de las cuentas de su organización. Después de habilitar esta característica, puede realizar las siguientes tareas con privilegios en las cuentas de miembros.
+ Elimine las credenciales del usuario raíz de la cuenta de miembro para impedir la recuperación de la cuenta de usuario raíz. También puede permitir la recuperación de contraseñas para recuperar las credenciales de usuario raíz de una cuenta de miembro.
+ Elimine una política de bucket mal configurada que impida a todas las entidades principales acceder a un bucket de Amazon S3.
+ Elimine una política basada en recursos de Amazon Simple Queue Service que impida a todas las entidades principales acceder a una cola de Amazon SQS.

**Tareas de administración de cuentas**
+ [Cambie la configuración de la Cuenta de AWS.](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html) Las Cuentas de AWS independientes que no forman parte de AWS Organizations requieren credenciales raíz para actualizar la dirección de correo electrónico, la contraseña y las claves de acceso del usuario raíz. Otras configuraciones de la cuenta, como el nombre de cuenta, la información de contacto, los contactos alternativos y la moneda de pago preferida y Regiones de AWS, no requieren credenciales de usuario raíz.
**nota**  
AWS Organizations, con todas las características activadas, se puede usar para administrar la configuración de las cuentas de miembro de forma centralizada desde la cuenta de administración y las cuentas de administrador delegado. Los usuarios de IAM autorizados o los roles de IAM, tanto en la cuenta de administración como en las cuentas de administrador delegado, pueden cerrar las cuentas de miembro y actualizar las direcciones de correo electrónico raíz, los nombres de las cuentas, la información de contacto, los contactos alternativos y las Regiones de AWS de las cuentas de miembro. 
+ [Cierre su Cuenta de AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/close-account.html). Las Cuentas de AWS independientes que no forman parte de AWS Organizations requieren credenciales raíz para cerrar la cuenta. Con AWS Organizations, puede cerrar las cuentas de miembro de forma centralizada desde la cuenta de administración y las cuentas de administrador delegado.
+ [Restaure los permisos de usuario de IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) Si el único administrador de IAM revoca de manera accidental sus propios permisos, usted puede iniciar sesión como usuario raíz para editar políticas y restaurar esos permisos.

**Etiquetas de facturación.**
+ [Active el acceso de IAM a la consola de Administración de facturación y costos](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html#ControllingAccessWebsite-Activate).
+ Algunas tareas de facturación están limitadas al usuario raíz. Para obtener más información, consulte la Guía del usuario AWS Billing sobre la [gestión de una Cuenta de AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-account-payment.html).
+ Consulte ciertas facturas de impuestos. Un usuario de IAM con el permiso [aws-portal:ViewBilling](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-permissions-ref.html#user-permissions) puede ver y descargar facturas de IVA de AWS Europa, pero no de AWS Inc o Amazon Internet Services Private Limited (AISPL).

**AWS GovCloud (US)Tareas de**
+ [Regístrese en AWS GovCloud (US)](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/getting-started-sign-up.html).
+ Solicite las claves de acceso de usuario raíz de la cuenta AWS GovCloud (US) a AWS Support.

**Tarea de Amazon EC2**
+ [Se ha registrado como vendedor](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) en el marketplace de instancias reservadas.

**AWS KMSTarea de**
+ En caso de que una clave de AWS Key Management Service se vuelva inmanejable, un administrador puede recuperarla al contactar a Soporte; sin embargo, Soporte responde al número de teléfono principal del usuario raíz para solicitar la autorización al confirmar la OTP del ticket.

**Tarea de Amazon Mechanical Turk**
+  [Vincule su Cuenta de AWS a su cuenta de MTurk Requester](https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkGettingStartedGuide/SetUp.html#accountlinking).

**Tareas de Amazon Simple Storage Service**
+ [Configure un bucket de Amazon S3 para habilitar MFA (autenticación multifactor)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html).
+ [Edite o elimine una política de bucket de Amazon S3 que deniega todas las entidades principales](https://aws.amazon.com/premiumsupport/knowledge-center/change-vpc-endpoint-s3-bucket-policy/).

  Puede utilizar acciones privilegiadas para desbloquear un bucket de Amazon S3 con una política de bucket mal configurada. Para obtener más información, consulte [Realización de tarea con privilegios en la cuenta de miembro de AWS Organizations](id_root-user-privileged-task.md).

**Tareas de Amazon Simple Queue Service**
+ [Edite o elimine una política basada en recursos de Amazon SQS que deniega todas las entidades principales](https://aws.amazon.com/premiumsupport/knowledge-center/sqs-queue-access-issues-deny-policy).

  Puede utilizar acciones privilegiadas para desbloquear una cola de Amazon SQS con una política basada en recursos mal configurada. Para obtener más información, consulte [Realización de tarea con privilegios en la cuenta de miembro de AWS Organizations](id_root-user-privileged-task.md).

## Recursos adicionales
<a name="id_root-user-resources"></a>

Para obtener más información sobre el usuario raíz de AWS, consulte los siguientes recursos:
+ Para obtener ayuda con los problemas de los usuarios raíz, consulte [Solucionar problemas con el usuario raíz](troubleshooting_root-user.md).
+ Para administrar de forma centralizada las direcciones de correo electrónico de usuario raíz en AWS Organizations, consulte [Actualización de la dirección de correo electrónico del usuario raíz de una cuenta miembro](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_update_primary_email.html) en la *Guía del usuario de AWS Organizations*.

En los siguientes artículos se proporciona información adicional sobre cómo trabajar con el usuario raíz.
+ [¿Cuáles son algunas de las prácticas recomendadas para proteger mi Cuenta de AWS y sus recursos?](https://repost.aws/knowledge-center/security-best-practices)
+ [Cómo puedo crear una regla de eventos de EventBridge que me notifique que se ha utilizado mi usuario raíz?](https://repost.aws/knowledge-center/root-user-account-eventbridge-rule) 
+ [Supervisar y notificar la actividad Usuario raíz de la cuenta de AWS](https://aws.amazon.com/blogs/mt/monitor-and-notify-on-aws-account-root-user-activity/) 
+ [Supervisar la actividad del usuario raíz de IAM](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) 

# Usuarios de IAM
<a name="id_users"></a>

**importante**  
 Las [prácticas recomendadas](best-practices.md) de IAM sugieren que exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales, en lugar de utilizar usuarios de IAM con credenciales a largo plazo. Para los [casos de uso específicos](gs-identities-iam-users.md) no compatibles con usuarios federados, recomendamos utilizar únicamente usuarios de IAM.

Un *usuario de IAM* es una entidad que se crea en Cuenta de AWS. El usuario de IAM representa al usuario humano o carga de trabajo que utiliza el usuario de IAM para interactuar con los recursos de AWS. Un usuario de IAM consta de un nombre y credenciales.

Un usuario de IAM con permisos de administrador no es lo mismo que el Usuario raíz de la cuenta de AWS. Para obtener más información sobre el usuario raíz, consulte [Usuario raíz de la cuenta de AWS](id_root-user.md).

## ¿Cómo AWS identifica un usuario de IAM?
<a name="id_users_create_aws-identifiers"></a>

Al crear un usuario de IAM, IAM crea estas formas de identificar dicho usuario:
+ Un “nombre fácil de recordar” para el usuario de IAM, que es el nombre que especificó al crear el usuario de IAM, como `Richard` o `Anaya`. Estos son los nombres que aparecen en la Consola de administración de AWS. Los nombres de usuario de IAM aparecen en los Nombres de Recursos de Amazon (ARN), por lo que no recomendamos incluir información de identificación personal en el nombre de IAM. Consulte [Requisitos de nombres de IAM](reference_iam-quotas.md#reference_iam-quotas-names) para obtener información sobre los requisitos y las restricciones de los nombres de IAM.
+ Un Amazon Resource Name (Nombre de recurso de Amazon [ARN]) para el usuario de IAM. Puede utilizar el ARN cuando necesite identificar de forma inequívoca el usuario de IAM en todo AWS. Por ejemplo, puede utilizar un ARN para especificar el usuario de IAM como entidad `Principal` en una política de IAM para un bucket de Amazon S3. Un ARN para un usuario de IAM podría ser el siguiente: 

  `arn:aws:iam::account-ID-without-hyphens:user/Richard`
+ Un identificador único para el usuario de IAM. Este ID solo se devuelve cuando utilice la API, Tools for Windows PowerShell o la AWS CLI para crear el usuario de IAM; no podrá verlo en la consola.

Para obtener más información sobre estos identificadores, consulte [Identificadores de IAM](reference_identifiers.md).

## Usuarios de IAM y credenciales
<a name="id_users_creds"></a>

Puede obtener acceso a AWS de diferentes formas en función de las credenciales de usuario de IAM:
+ [**Console password**](id_credentials_passwords.md) (Contraseña de la consola): una contraseña que el usuario de IAM puede escribir para iniciar sesión en sesiones interactivas, como la Consola de administración de AWS. Al desactivar la contraseña (acceso a la consola) para un usuario de IAM, se impide que inicien sesión en la Consola de administración de AWS con sus credenciales. No cambia sus permisos ni les impide acceder a la consola utilizando un rol asumido. Los usuarios de IAM con acceso a la consola habilitado también pueden usar estas mismas credenciales para autenticarse y acceder con la AWS CLI y el SDK mediante el comando AWS CLI de la `aws login`. Estos usuarios deberán tener los permisos [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/SignInLocalDevelopmentAccess.html). Consulte [Credenciales de autenticación y acceso para la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html) en la *Guía del usuario de AWS Command Line Interface* para obtener más información. 
+ [**Teclas de acceso**](id_credentials_access-keys.md): se utilizan para hacer llamadas programáticas a AWS. Sin embargo, hay alternativas más seguras que hay que tener en cuenta antes de crear claves de acceso para los usuarios de IAM. Para más información, consulte [Consideraciones y alternativas para las claves de acceso a largo plazo](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys) en la Guía de la *Referencia general de AWS*. Si el usuario de IAM dispone de claves de acceso activas, estas seguirán funcionando y permitirán el acceso a través de la AWS CLI, Tools for Windows PowerShell, API de AWS o Console Mobile Application de AWS.
+ [**Claves SSH para utilizar con CodeCommit**](id_credentials_ssh-keys.md): una clave SSH pública en formato OpenSSH que puede utilizarse para realizar la autenticación con CodeCommit.
+ [**Certificados de servidor**](id_credentials_server-certs.md): los certificados SSL/TLS que puede utilizar para realizar la autenticación con algunos servicios de AWS. Le recomendamos que utilice AWS Certificate Manager (ACM) para aprovisionar, administrar e implementar los certificados de servidor. Utilice IAM solo cuando tenga que admitir conexiones HTTPS en una región que no sea compatible con ACM. Para saber qué regiones admiten ACM , consulte [puntos finales y cuotas de AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) en la *Referencia general de AWS*.

Puede elegir las credenciales adecuadas para el usuario de IAM. Cuando se utiliza la Consola de administración de AWS para crear un usuario de IAM, debe elegir como mínimo la inclusión de una contraseña de consola o claves de acceso. De forma predeterminada, los nuevos usuarios de IAM creados mediante la AWS CLI o API de AWS no tienen credenciales de ningún tipo. Debe crear el tipo de credenciales para un usuario de IAM en función de las necesidades de su usuario. 

Dispone de las opciones siguientes para administrar contraseñas, claves de acceso y dispositivos de autenticación multifactor (MFA):
+ **[Administrar las contraseñas de los usuarios de IAM](id_credentials_passwords.md).** Cree y cambie las contraseñas que permiten el acceso a la Consola de administración de AWS. Establezca una política de contraseñas para aplicar un mínimo de complejidad a las contraseñas. Permita que los usuarios de IAM cambien sus contraseñas. 
+ **[Administrar las claves de acceso para los usuarios de IAM](id_credentials_access-keys.md).** Cree y actualice claves de acceso para acceder a los recursos de la cuenta mediante programación. 
+ **[Active la autenticación multifactor (MFA) para el usuario de IAM](id_credentials_mfa.md).** Como [práctica recomendada](best-practices.md), le sugerimos exigir la autenticación multifactor para todos los usuarios de IAM de su cuenta. Con la MFA, los usuarios de IAM deben proporcionar dos formas de identificación: en primer lugar, proporcionar las credenciales que forman parte de su identidad del usuario (una contraseña o clave de acceso). Además, proporcionan un código numérico temporal que se genera en un dispositivo de hardware o mediante una aplicación en un smartphone o una tablet.
+ **[Buscar contraseñas y claves de acceso sin utilizar](id_credentials_finding-unused.md).** Cualquier persona que tenga una contraseña o clave de acceso para su cuenta o un usuario de IAM de su cuenta tendrá acceso a sus recursos de AWS. La [práctica recomendada](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html) de seguridad es eliminar las contraseñas y claves de acceso cuando los usuarios de IAM ya no las necesiten.
+ **[Descargar un informe de credenciales para la cuenta](id_credentials_getting-report.md).** Puede generar y descargar un informe de credenciales que contenga una lista de todos los usuarios de IAM de su cuenta y el estado de sus credenciales, tales como contraseñas, claves de acceso y dispositivos MFA. Para las contraseñas y claves de acceso, el informe de credenciales muestra cuándo se ha utilizado la contraseña o una clave de acceso por última vez.

## Usuarios de IAM y permisos
<a name="id_users_perms"></a>

De forma predeterminada, un nuevo usuario de IAM no tiene [permisos](access.md) para realizar ninguna actividad. El usuario no está autorizado a realizar ninguna operación de AWS ni a tener acceso a los recursos de AWS. Un beneficio de tener usuarios de IAM individuales es que puede asignar permisos específicos para cada uno. Es posible asignar permisos administrativos a unos usuarios para que administren los recursos de AWS e incluso creen y administren otros usuarios de IAM. Sin embargo, en la mayoría de los casos, será necesario limitar los permisos de un usuario para que realice únicamente las tareas (acciones u operaciones de AWS) y utilice los recursos que necesita para su trabajo. 

Imagine que tiene un usuario denominado Diego. Al crear el usuario de IAM `Diego` , debe crear una contraseña para dicho usuario y asociar permisos al usuario que le permitan lanzar una determinada instancia de Amazon EC2 y leer información (`GET`) de una tabla en una base de datos de Amazon RDS. Para obtener los procedimientos que indican cómo crear usuarios de IAM y concederles permisos y credenciales iniciales, consulte [Creación de un usuario de IAM en su Cuenta de AWS](id_users_create.md). Para obtener los procedimientos que indican cómo cambiar los permisos de los usuarios existentes, consulte [Cambio de los permisos de un usuario de IAM](id_users_change-permissions.md). Para obtener los procedimientos que indican cómo cambiar las claves de acceso y la contraseña de un usuario, consulte [Contraseñas de los usuarios en AWS](id_credentials_passwords.md) y [Administración de claves de acceso para usuarios de IAM](id_credentials_access-keys.md).

También puede agregar un límite de permisos a los usuarios de IAM. Un límite de permisos es una característica avanzada que le permite utilizar políticas administradas de AWS para limitar los permisos máximos que puede conceder una política basada en identidad a un usuario de IAM o rol. Para obtener más información sobre los tipos de políticas y sus usos, consulte [Políticas y permisos en AWS Identity and Access Management](access_policies.md).

## Usuarios de IAM y cuentas
<a name="id_users_accounts"></a>

Cada usuario de IAM está asociado a una única Cuenta de AWS. Dado que los usuarios de IAM se definen en la Cuenta de AWS, no necesitan tener un método de pago válido para AWS. Cualquier actividad de AWS realizada por los usuarios de IAM de la cuenta se factura en su cuenta.

El número y el tamaño de recursos de IAM en una cuenta de AWS son limitados. Para obtener más información, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md).

## Usuarios de IAM como cuentas de servicio
<a name="id_users_service_accounts"></a>

Un usuario de IAM es un recurso en IAM que tiene credenciales y permisos asociados. Un usuario de IAM puede representar una persona o una aplicación que utiliza sus credenciales para realizar solicitudes de AWS. Esto se suele conocer como *cuenta de servicio*. Si decide utilizar las credenciales a largo plazo de un usuario de IAM en su aplicación, **no integre las claves de acceso directamente en el código de la aplicación.** Los SDK de AWS y las AWS Command Line Interface le permiten colocar las claves de acceso en ubicaciones conocidas para que no tenga que mantenerlas en el código. Para obtener más información, consulte [Administración correcta de las claves de acceso de los usuarios de IAM](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#iam-user-access-keys) en la *Referencia general de AWS*. De forma alternativa, y como práctica recomendada, puede [utilizar credenciales de seguridad temporales (roles de IAM) en lugar de las claves de acceso a largo plazo](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles).

# Cómo inician sesión los usuarios de IAM en AWS
<a name="id_users_sign-in"></a>

Para iniciar sesión en Consola de administración de AWS como usuario de IAM, debe proporcionar el ID de la cuenta o alias de la cuenta además de su nombre de usuario y contraseña. Cuando su administrador creó su usuario de IAM en la consola, deberían haberle enviado sus credenciales de inicio de sesión, incluido su nombre de usuario y la URL a la página de inicio de sesión de su cuenta que incluye tu ID de cuenta o alias de cuenta. 

```
https://My_AWS_Account_ID.signin.aws.amazon.com/console/
```

**Sugerencia**  
Para crear un marcador en la página de inicio de sesión de la cuenta en el navegador web, debe escribir manualmente la URL de dicho inicio de sesión de su cuenta en la entrada de marcador. No utilice la función de marcador del navegador web, porque las redirecciones podrían ocultar la URL de inicio de sesión. 

También puede iniciar sesión en el siguiente punto de enlace de inicio de sesión general y escribir manualmente el ID de la cuenta o alias de la cuenta:

```
[https://console.aws.amazon.com/](https://console.aws.amazon.com/)
```

Para su comodidad, en la página de inicio de sesión de AWS se utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. La próxima vez que el usuario vaya a cualquier página en Consola de administración de AWS, la consola utiliza la cookie para redirigir al usuario a la página de inicio de sesión de la cuenta.

Solo tiene acceso a los recursos de AWS que su administrador especifica en la política que está asociada a su identidad de usuario de IAM. Para trabajar en la consola, usted debe disponer de permisos para llevar a cabo las acciones propias de la consola, como enumerar y crear recursos de AWS. Para obtener más información, consulte [Recursos de AWS para administración de acceso](access.md) y [Ejemplos de políticas basadas en identidad de IAM](access_policies_examples.md).

**nota**  
Si su organización ya cuenta con un sistema de identidad, puede ser conveniente crear una opción de inicio de sesión único (SSO). SSO proporciona a los usuarios acceso a la Consola de administración de AWS para su cuenta, aunque no dispongan de una identidad de usuario de IAM. El SSO también elimina la necesidad de que los usuarios inicien sesión por separado en el sitio web de la organización y en AWS. Para obtener más información, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md). 

**Registro de los detalles de inicio de sesión en CloudTrail**  
Si habilita CloudTrail para registrar los eventos de inicio de sesión en los registros, sea consciente del modo en que CloudTrail elige dónde registrar los eventos.
+ Si los usuarios inician sesión directamente en una consola, se les redirige a un punto de enlace de inicio de sesión global o regional, en función de si la consola de servicios seleccionada admite las regiones. Por ejemplo, la página de inicio de la consola admite las regiones, por lo que si inicia sesión en la URL siguiente:

  ```
  https://alias.signin.aws.amazon.com/console
  ```

  se le redirigirá a un punto de enlace de inicio de sesión regional, por ejemplo `https://us-east-2.signin.aws.amazon.com`, lo que se traduce en una entrada de log de CloudTrail regional en el registro de la región del usuario:

  Por otra parte, la consola de Amazon S3 no admite las regiones, por lo que si inicia sesión con la URL siguiente

  ```
  https://alias.signin.aws.amazon.com/console/s3
  ```

  AWS le redirige al punto de enlace de inicio de sesión global en `https://signin.aws.amazon.com`, lo que se traduce en una entrada de registro de CloudTrail global.
+ Puede solicitar manualmente un determinado punto de enlace de inicio de sesión regional iniciando sesión en la página de inicio principal de la consola habilitada para regiones, mediante una sintaxis de URL como la siguiente:

  ```
  https://alias.signin.aws.amazon.com/console?region=ap-southeast-1
  ```

  AWS le redirige al punto de enlace de inicio de sesión regional `ap-southeast-1`, lo que se traduce en un evento de registro de CloudTrail regional.

Para obtener más información acerca de CloudTrail e IAM, consulte [Registro de eventos de IAM con CloudTrail ](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html).

Si los usuarios necesitan acceso programático para trabajar con su cuenta, puede crear un par de claves de acceso (un ID de clave de acceso y una clave de acceso secreta) para cada usuario. Sin embargo, hay alternativas más seguras que hay que tener en cuenta antes de crear claves de acceso para los usuarios. Para más información, consulte [Consideraciones y alternativas para las claves de acceso a largo plazo](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys) en la Guía de la *Referencia general de AWS*.

## Recursos adicionales
<a name="id_users_sign-in-additional-resources"></a>

Los siguientes recursos pueden ayudarlo a obtener más información sobre el inicio de sesión en AWS.
+ Con la [Guía del usuario para el inicio de sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html), le resultará más fácil entender las diferentes formas en las que puede iniciar sesión en Amazon Web Services (AWS), según el tipo de usuario que sea.
+ Puede iniciar sesión en hasta cinco identidades diferentes al mismo tiempo en un solo navegador web en la Consola de administración de AWS. Para obtener más información, consulte [Cómo iniciar sesión en varias cuentas](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html) en la *Guía de introducción a Consola de administración de AWS*.

# Inicio de sesión con MFA habilitado
<a name="console_sign-in-mfa"></a>

Los usuarios que están configurados con dispositivos de [autenticación multifactor (MFA)](id_credentials_mfa.md) deben utilizar sus dispositivos MFA para iniciar sesión en la Consola de administración de AWS. Después de que el usuario escriba sus credenciales de inicio de sesión, AWS comprueba la cuenta del usuario para ver si se necesita MFA. 

**importante**  
Si utiliza credenciales de clave de acceso y de clave secreta para el acceso directo a la Consola de administración de AWS con la llamada a la API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) AWS STS, NO se requerirá la MFA. Para obtener más información, consulte [Uso de las credenciales de clave de acceso y de clave secreta para el acceso a la consola](securing_access-keys.md#console-access-security-keys).

En las siguientes secciones, se proporciona información sobre cómo los usuarios completan el inicio de sesión cuando se necesita un código MFA. 

**Topics**
+ [

## Varios dispositivos de MFA habilitados
](#console_sign-in-multiple-mfa)
+ [

## Clave de seguridad FIDO
](#console_sign-in-mfa-fido)
+ [

## Dispositivo de MFA virtual
](#console_sign-in-mfa-virtual)
+ [

## Token TOTP de hardware
](#console_sign-in-mfa-hardware)

## Varios dispositivos de MFA habilitados
<a name="console_sign-in-multiple-mfa"></a>

Si un usuario inicia sesión en la Consola de administración de AWS como usuario raíz de una Cuenta de AWS o usuario de IAM con varios dispositivos MFA habilitados para esa cuenta, solo tendrá que utilizar un dispositivo MFA para iniciar sesión. Después de que el usuario se autentique con su contraseña, selecciona qué tipo de dispositivo MFA desea utilizar para finalizar la autenticación. A continuación, se pide al usuario que se autentique con el tipo de dispositivo que ha seleccionado. 

## Clave de seguridad FIDO
<a name="console_sign-in-mfa-fido"></a>

Si el código MFA es obligatorio para el usuario, aparece una segunda página de inicio de sesión. El usuario tiene que tocar la clave de seguridad FIDO.

**nota**  
Los usuarios de Google Chrome no deben elegir ninguna de las opciones disponibles en la ventana emergente que pide **verificar su identidad con amazon.com**. Solo tiene que tocar la clave de seguridad.

A diferencia de otros dispositivos MFA, las claves de seguridad FIDO no se desincronizan. Los administradores pueden desactivar una clave de seguridad FIDO si se pierde o se rompe. Para obtener más información, consulte [Desactivación de dispositivos MFA (consola)](id_credentials_mfa_disable.md#deactive-mfa-console).

Para obtener información sobre los navegadores compatibles con WebAuthn y los dispositivos de AWS compatibles con FIDO, consulte [Configuraciones admitidas para usar las claves de acceso y las claves de seguridad](id_credentials_mfa_fido_supported_configurations.md).

## Dispositivo de MFA virtual
<a name="console_sign-in-mfa-virtual"></a>

Si el código MFA es obligatorio para el usuario, aparece una segunda página de inicio de sesión. En el cuadro **MFA code (Código MFA)**, el usuario escribe el código numérico proporcionado por la aplicación MFA.

Si el código MFA es correcto, el usuario obtiene acceso a la Consola de administración de AWS. Si el código es incorrecto, el usuario puede volver a intentarlo con otro código. 

Es posible que un dispositivo MFA virtual no se sincronice. Si después de varios intentos incorrectos, el usuario no puede iniciar sesión en la Consola de administración de AWS, se le solicitará que sincronice el dispositivo MFA virtual. El usuario puede seguir las instrucciones en pantalla para sincronizar el dispositivo MFA virtual. Para obtener información sobre cómo sincronizar un dispositivo en nombre de un usuario en la Cuenta de AWS, consulte [Resincronización de dispositivos MFA de hardware y virtuales](id_credentials_mfa_sync.md). 

## Token TOTP de hardware
<a name="console_sign-in-mfa-hardware"></a>

Si el código MFA es obligatorio para el usuario, aparece una segunda página de inicio de sesión. En el cuadro **MFA code** (Código MFA), el usuario debe ingresar el código numérico proporcionado por un token TOTP de hardware. 

Si el código MFA es correcto, el usuario obtiene acceso a la Consola de administración de AWS. Si el código es incorrecto, el usuario puede volver a intentarlo con otro código. 

Un token TOTP físico puede perder la sincronización. Si después de varios intentos incorrectos, el usuario no puede iniciar sesión en la Consola de administración de AWS, se le solicitará que sincronice el dispositivo de token MFA. El usuario puede seguir las instrucciones en pantalla para sincronizar el dispositivo de token MFA. Para obtener información sobre cómo sincronizar un dispositivo en nombre de un usuario en la Cuenta de AWS, consulte [Resincronización de dispositivos MFA de hardware y virtuales](id_credentials_mfa_sync.md). 

# Creación de un usuario de IAM en su Cuenta de AWS
<a name="id_users_create"></a>

**importante**  
 Las [prácticas recomendadas](best-practices.md) de IAM sugieren que exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales, en lugar de utilizar usuarios de IAM con credenciales a largo plazo. Para los [casos de uso específicos](gs-identities-iam-users.md) no compatibles con usuarios federados, recomendamos utilizar únicamente usuarios de IAM.

El proceso para crear un usuario de IAM y habilitarlo para que realice tareas incluye los siguientes pasos:

1. Cree el [usuario en el Consola de administración de AWS, el AWS CLI](getting-started-workloads.md), Tools for Windows PowerShell o mediante una Operación de la API de AWS. Si crea el usuario en la Consola de administración de AWS, los pasos 1 a 4 se realizan automáticamente de acuerdo con sus preferencias. Si crea los usuarios de IAM de forma programada, debe ejecutar cada uno de los pasos de forma individual.

1. Cree las credenciales del usuario en función del tipo de acceso que este requiera:
   + **Habilitar el acceso a la consola: *opcional***: si el usuario necesita acceder a la Consola de administración de AWS, [cree una contraseña para el usuario](id_credentials_passwords_admin-change-user.md). Al desactivar el acceso a la consola para un usuario, se impide que inicien sesión en la Consola de administración de AWS con su nombre de usuario y contraseña. No cambia sus permisos ni les impide acceder a la consola utilizando un rol asumido.
**sugerencia**  
Cree solo las credenciales que necesite el usuario. Por ejemplo, en el caso de un usuario que necesite obtener acceso únicamente mediante la Consola de administración de AWS, no cree claves de acceso.

1. Proporcionar al usuario permisos para realizar las tareas requeridas. Le recomendamos colocar a los usuarios de IAM en grupos y administrar los permisos mediante políticas asociadas a esos grupos. Pero también puede otorgar permisos mediante la asociación directa de políticas de permisos al usuario. Si utiliza la consola para agregar el usuario, puede copiar los permisos de un usuario existente al nuevo usuario.

   También puede agregar un [límite de permisos](access_policies_boundaries.md) para limitar los permisos del usuario mediante una política que defina los permisos máximos que puede tener el usuario. Los límites de permisos no otorgan ningún permiso.

   Para obtener instrucciones sobre cómo crear una política de permisos personalizada que se pueda utilizar para conceder permisos o establecer un límite de permisos, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](access_policies_create.md).

1. (Opcional) Añadir metadatos al usuario asociando etiquetas. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Proporcione al usuario la información de inicio de sesión necesaria. Esto incluye la contraseña y la URL de la consola de la página de inicio de sesión de la cuenta en la que el usuario proporciona esas credenciales. Para obtener más información, consulte [Cómo inician sesión los usuarios de IAM en AWS](id_users_sign-in.md).

1. (Opcional) Configure [la autenticación multifactor (MFA)](id_credentials_mfa.md) para el usuario. MFA requiere que el usuario proporcione un código de un solo uso cada vez que inicia sesión en la Consola de administración de AWS.

1. (Opcional) Conceda a los usuarios de IAM permisos para administrar sus propias credenciales de seguridad. (De forma predeterminada, los usuarios de IAM no tienen permisos para administrar sus propias credenciales). Para obtener más información, consulte [Autorización para que los usuarios de IAM cambien sus contraseñas](id_credentials_passwords_enable-user-change.md).
**nota**  
Si utiliza la consola para crear el usuario y selecciona **El usuario debe crear una nueva contraseña en el siguiente inicio de sesión (recomendado)**, el usuario tiene los permisos necesarios.

Para obtener información sobre los permisos que necesita para poder crear un usuario, consulte [Permisos obligatorios para obtener acceso a recursos de IAM](access_permissions-required.md).

Para obtener instrucciones sobre cómo crear usuarios de IAM para casos de uso específicos, consulte los siguientes temas:
+ [Crear un usuario de IAM para el acceso de emergencia](getting-started-emergency-iam-user.md)
+ [Creación de un usuario de IAM para cargas de trabajo que no puedan usar roles de IAM](getting-started-workloads.md)

# Visualización de usuarios de IAM
<a name="id_users_list"></a>

Puede enumerar los usuarios de IAM de su Cuenta de AWS o de un determinado grupo de IAM y enumerar todos los grupos de IAM a los que pertenece un usuario. Para obtener información sobre los permisos que necesita para poder enumerar los usuarios, consulte [Permisos obligatorios para obtener acceso a recursos de IAM](access_permissions-required.md). 

## Cómo enumerar todos los usuarios de IAM de su cuenta
<a name="id_users_manage_list-users"></a>

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**. 

La consola muestra a los usuarios de IAM de su Cuenta de AWS.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)`

------
#### [ API ]

Llame a la operación siguiente:
+ `[ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` 

------

## Cómo enumerar los usuarios de IAM en un grupo de IAM
<a name="id_users_manage_list-users-group"></a>

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, elija **User groups** (Grupos de usuarios).

1. Seleccione el nombre del grupo de usuarios. 

Los usuarios de IAM que son miembros del grupo aparecen enumerados en la pestaña **Usuarios**.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ `[aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)`

------
#### [ API ]

Llame a la operación siguiente:
+ `[GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)` 

------

## Enumeración de todos los grupos de IAM en los que un usuario se encuentra
<a name="id_users_manage_list-groups-users"></a>

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Users** (Usuarios), elija el nombre de usuario de IAM. 

1. Seleccione la pestaña **Grupos** para ver la lista de grupos que incluyen al usuario actual.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)`

------
#### [ API ]

Llame a la operación siguiente:
+ `[ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)` 

------

## Siguientes pasos
<a name="id_users_list-next-steps"></a>

Una vez que tenga una lista de sus usuarios de IAM, puede cambiar el nombre de un usuario de IAM, eliminarlo o desactivarlo mediante los siguientes procedimientos.
+ [Cambio de nombre de un usuario de IAM](id_users_rename.md)
+ [Eliminación o desactivación de un usuario de IAM](id_users_remove.md)

# Cambio de nombre de un usuario de IAM
<a name="id_users_rename"></a>

**nota**  
Como [práctica recomendada](best-practices.md), le recomendamos que exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales. Si sigue las prácticas recomendadas, no estará administrando usuarios ni grupos de IAM. En cambio, sus usuarios y grupos se administran fuera de AWS y pueden acceder a los recursos de AWS como una *identidad federada*. Una identidad federada es un usuario del directorio de usuarios de su empresa, un proveedor de identidades web, AWS Directory Service, el directorio de Identity Center o cualquier usuario que acceda a los servicios de AWS con credenciales proporcionadas a través de una fuente de identidades. Las identidades federadas utilizan los grupos definidos por su proveedor de identidades. Si utiliza AWS IAM Identity Center, consulte [Manage identities in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) (Administración de identidades en IAM Identity Center) en la *Guía del usuario de AWS IAM Identity Center* para obtener información sobre la creación de usuarios y grupos en IAM Identity Center.

Amazon Web Services ofrece varias herramientas para administrar los usuarios de IAM en su Cuenta de AWS. Puede enumerar los usuarios de IAM de su cuenta o de un grupo de usuario o enumerar todos los grupos de IAM a los que pertenece un usuario. Puede cambiar el nombre o cambiar la ruta de un usuario de IAM. Si va a utilizar identidades federadas en lugar de usuarios de IAM, puede eliminar un usuario de IAM de su cuenta de AWS o desactivarlo.

Para obtener más información sobre cómo agregar, modificar o eliminar las políticas administradas para un usuario de IAM, consulte [Cambio de los permisos de un usuario de IAM](id_users_change-permissions.md). Para obtener información acerca de la administración de las políticas insertadas para usuarios de IAM, consulte [Adición y eliminación de permisos de identidad de IAM](access_policies_manage-attach-detach.md), [Edición de políticas de IAM](access_policies_manage-edit.md) y [Eliminación de políticas de IAM](access_policies_manage-delete.md). Como práctica recomendada, utilice políticas administradas en lugar de políticas en línea. Las *políticas administradas de AWS* conceden permisos para muchos casos de uso comunes. Tenga presente que es posible que las políticas administradas de AWS no concedan permisos de privilegios mínimos para sus casos de uso concretos, ya que están disponibles para que las utilicen todos los clientes de AWS. En consecuencia, se recomienda reducir aún más los permisos definiendo [políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) específicas para sus casos de uso. Para obtener más información, consulte [AWSPolíticas administradas por](access_policies_managed-vs-inline.md#aws-managed-policies). Para obtener más información acerca de las políticas administradas AWS que están diseñadas para funciones de trabajo específicas, consulte [AWSPolíticas administradas de para funciones de trabajo](access_policies_job-functions.md).

Para obtener información acerca de validar las políticas de IAM, consulte [Validación de la política de IAM](access_policies_policy-validator.md).

**sugerencia**  
El [Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) puede analizar los servicios y acciones que utilizan sus roles de IAM y, a continuación, generar una política detallada que puede utilizar. Después de probar cada política generada, puede implementarla en el entorno de producción. Eso garantiza que solo se concedan los permisos necesarios a las cargas de trabajo. Para obtener más información acerca de la generación de políticas, consulte [Generación de políticas de IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

Para obtener información sobre cómo administrar las contraseñas de usuario de IAM, consulte [Administrar las contraseñas de los usuarios de IAM](id_credentials_passwords_admin-change-user.md).

## Cambio de nombre de un usuario de IAM
<a name="id_users_renaming"></a>

Para cambiar el nombre de un usuario o ruta, debe utilizar la AWS CLI, Tools for Windows PowerShell o API de AWS. No hay ninguna otra opción en la consola para cambiar el nombre de un usuario. Para obtener información sobre los permisos que necesita para poder cambiar el nombre de un usuario, consulte [Permisos obligatorios para obtener acceso a recursos de IAM](access_permissions-required.md). 

Al cambiar la ruta de acceso o el nombre de un usuario, ocurrirá lo siguiente: 
+ Cualquier política asociada al usuario permanecerá con el usuario con el nuevo nombre.
+ El usuario permanecerá en los mismos grupos de IAM con el nuevo nombre.
+ El ID único del usuario seguirá siendo el mismo. Para obtener más información sobre los ID únicos, consulte [Identificadores únicos](reference_identifiers.md#identifiers-unique-ids).
+ Cualquier política de recurso o rol que haga referencia al usuario *como principal* (se concede acceso al usuario) se actualizará automáticamente para utilizar el nuevo nombre o ruta de acceso. Por ejemplo, las políticas basadas en colas de Amazon SQS o las políticas basadas en recursos de Amazon S3 se actualizarán automáticamente para utilizar el nuevo nombre y ruta de acceso. 

IAM no actualizará automáticamente políticas que hagan referencia al usuario *como recurso* para utilizar el nuevo nombre o ruta de acceso; debe hacerlo manualmente. Por ejemplo, imagine que el usuario `Richard` tiene una política asociada a él que le permite administrar sus credenciales de seguridad. Si un administrador cambia el nombre de `Richard` a `Rich`, el administrador también debe actualizar dicha política para cambiar el recurso de:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Richard
```

a este:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Rich
```

Lo mismo sucede si un administrador cambia la ruta de acceso; el administrador debe actualizar la política para reflejar la nueva ruta de acceso para el usuario. 

### Para cambiar el nombre de un usuario
<a name="id_users_manage_list-users-rename"></a>
+ AWS CLI: [aws iam update-user](https://docs.aws.amazon.com/cli/latest/reference/iam/update-user.html)
+ API de AWS: [UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html) 

# Eliminación o desactivación de un usuario de IAM
<a name="id_users_remove"></a>

Según [las prácticas recomendadas](best-practices.md#remove-credentials), lo ideal es eliminar de su Cuenta de AWS a los usuarios de IAM que no utiliza. Si desea conservar las credenciales de los usuarios de IAM para usarlas en el futuro, en lugar de eliminarlas de la cuenta, puede desactivar el acceso del usuario. Para obtener más información, consulte [Desactivación de un usuario de IAM](#id_users_deactivating).

**aviso**  
Una vez eliminados un usuario de IAM y sus claves de acceso, no se pueden restaurar ni recuperar.

## Requisito previo: ver el acceso del usuario de IAM
<a name="users-manage_prerequisites"></a>

Antes de eliminar a un usuario, revise su actividad reciente a nivel de servicio. Esto ayuda a evitar que se le quite el acceso a una entidad principal (persona o aplicación) que lo esté utilizando. Para obtener más información acerca de cómo ver la información de acceso reciente, consulte [Ajuste de permisos en AWS con información sobre los últimos accesos](access_policies_last-accessed.md).

## Eliminación de un usuario de IAM (consola)
<a name="id_users_deleting_console"></a>

Cuando se usa la Consola de administración de AWS para eliminar un usuario de IAM, IAM elimina automáticamente la siguiente información asociada: 
+ El identificador del usuario de IAM.
+ Las suscripciones a grupos, es decir, se elimina el usuario de IAM de todos los grupos a los que haya pertenecido.
+ Las contraseñas asociadas al usuario de IAM. 
+ Todas las políticas insertadas incrustadas en el usuario de IAM (las políticas que se aplicaron al usuario de IAM por medio de permisos de grupo de usuarios no se verán afectadas). 
**nota**  
IAM elimina todas las políticas administradas adjuntas al usuario de IAM cuando se elimina el usuario, pero no elimina las políticas administradas. 
+ Cualquier dispositivo MFA asociado

### Para eliminar un usuario de IAM (consola)
<a name="id_users_remove-section-1"></a>

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios** y, a continuación, seleccione la casilla de verificación junto al nombre del usuario de IAM que desee eliminar. 

1. En la parte superior de la página, elija **Eliminar**.
**nota**  
Si alguno de los usuarios tiene claves de acceso activas, debe desactivar las claves de acceso antes de eliminar los usuarios. Para obtener más información, consulte [Cómo desactivar una clave de acceso para un usuario de IAM](access-keys-admin-managed.md#admin-deactivate-access-key).

1. En el cuadro de diálogo de confirmación, ingrese el nombre de usuario en el campo de entrada de texto para confirmar la eliminación del usuario. Elija **Eliminar**. 

La consola muestra una notificación de estado en la que se indica que se borró el usuario de IAM.

------

## Eliminación de un usuario de IAM (AWS CLI)
<a name="id_users_deleting_cli"></a>

A diferencia de la Consola de administración de AWS, a la hora de eliminar un usuario de IAM con la AWS CLI, debe eliminar los elementos adjuntos al usuario de IAM manualmente. Este procedimiento ilustra el proceso. 

**Para eliminar un usuario de IAM de su Cuenta de AWS (AWS CLI)**

1. Elimine la contraseña de usuario, si el usuario dispone de una.

   `[aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)`

1. Elimine las claves de acceso de usuario, si el usuario dispone de ellas.

   `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` (para generar una lista de las claves de acceso del usuario) y `[aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)`

1. Elimine el certificado de firma del usuario. Tenga en cuenta que al eliminar una credencial de seguridad, ya nunca más podrá recuperarla.

   `[aws iam list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html)` (para generar una lista de los certificados de firma del usuario) y `[aws iam delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html)`

1. Elimine la clave pública SSH del usuario, si el usuario dispone de ella.

   `[aws iam list-ssh-public-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-ssh-public-keys.html)` (para generar una lista de las claves públicas SSH del usuario) y `[aws iam delete-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-ssh-public-key.html)`

1. Elimine las credenciales de Git del usuario.

   `[aws iam list-service-specific-credentials](https://docs.aws.amazon.com/cli/latest/reference/iam/list-service-specific-credentials.html)` (para generar una lista de las credenciales de Git del usuario) y `[aws iam delete-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-specific-credential.html)`

1. Desactive el dispositivo Multi-Factor Authentication (MFA) del usuario, si este dispone de uno.

   `[aws iam list-mfa-devices](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-devices.html)` (para generar una lista de los dispositivos MFA del usuario), `[aws iam deactivate-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)` (para desactivar el dispositivo) y `[aws iam delete-virtual-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html)` (para eliminar de forma permanente un dispositivo de MFA virtual) 

1. Elimine las políticas insertadas del usuario. 

   `[aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)` (para generar una lista de las políticas insertadas para el usuario) y [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html) (para eliminar la política) 

1. Desasocie cualquier política administrada que esté asociada al usuario. 

   `[aws iam list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)` (para generar una lista de las políticas administradas adjuntas al usuario) y [https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html) (para desasociar la política) 

1. Elimine el usuario de cualquier grupo de IAM. 

   `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)` (para generar una lista de los grupos de IAM a los que pertenece el usuario) y `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)` 

1. Elimine el usuario.

   `[aws iam delete-user](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)` 

## Desactivación de un usuario de IAM
<a name="id_users_deactivating"></a>

Puede que tenga que desactivar un usuario de IAM mientras esté temporalmente fuera de su empresa. Puede dejar sus credenciales de usuario de IAM en su lugar y seguir bloqueando su acceso a AWS.

Para desactivar un usuario, cree y asocie una política para denegar el acceso del usuario a AWS. Puede restaurar el acceso del usuario más adelante.

A continuación se muestran dos ejemplos de políticas de denegación que puede asociar a un usuario para denegar su acceso.

La siguiente política no incluye un límite de tiempo. Debe eliminar la política para restaurar el acceso del usuario.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [ 
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*"
      } 
   ]
}
```

------

La siguiente política incluye una condición que inicia la política el 24 de diciembre de 2024 a las 23:59 h (UTC) y la termina el 28 de febrero de 2025 a las 23:59 h (UTC).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "DateGreaterThan": {"aws:CurrentTime": "2024-12-24T23:59:59Z"},
          "DateLessThan": {"aws:CurrentTime": "2025-02-28T23:59:59Z"}
          }
       }
   ]
}
```

------

# Control del acceso del usuario de IAM a la Consola de administración de AWS
<a name="console_controlling-access"></a>

Los usuarios de IAM con permiso que inicien sesión en su cuenta de Cuenta de AWS a través de la Consola de administración de AWS pueden acceder a sus recursos de AWS. En la siguiente lista se enumeran las formas en las que puede conceder a los usuarios de IAM acceso a los recursos de su cuenta de Cuenta de AWS a través de la Consola de administración de AWS. También se muestra cómo los usuarios de IAM pueden obtener acceso a otras características de la cuenta de AWS a través del sitio web de AWS.

**nota**  
No se cobra por utilizar IAM.

**la , Consola de administración de AWS**  
Cree una contraseña para cada usuario de IAM que necesite obtener acceso a la Consola de administración de AWS. Los usuarios obtienen acceso a la consola mediante la página de inicio de sesión de la cuenta de Cuenta de AWS habilitada para IAM. Para obtener más información acerca de cómo acceder a la página de inicio de sesión, consulte [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In*. Para obtener información sobre cómo crear contraseñas, consulte [Contraseñas de los usuarios en AWS](id_credentials_passwords.md).  
Puede desactivar el acceso de un usuario de IAM a la Consola de administración de AWS eliminando su contraseña. Esto les impide iniciar sesión en Consola de administración de AWS utilizando sus credenciales de inicio de sesión. No cambia sus permisos ni les impide acceder a la consola utilizando un rol asumido. Si el usuario dispone de claves de acceso activas, estas seguirán funcionando y permitirán el acceso a través de la AWS CLI, Tools for Windows PowerShell, API de AWS o Console Mobile Application de AWS.

**Sus recursos de AWS, como instancias de Amazon EC2, buckets de Amazon S3, etc.**  
Aunque sus usuarios de IAM tengan contraseñas, también necesitan tener permiso para obtener acceso a sus recursos de AWS. Cuando se crea un usuario de IAM, ese usuario no tiene permisos de manera predeterminada. Para dar a sus usuarios de IAM los permisos que necesitan, debe asociarles políticas. Si tiene muchos usuarios de IAM que realizan las mismas tareas con los mismos recursos, puede asignarlos a un grupo. A continuación, asigne los permisos a dicho grupo. Para obtener información sobre cómo crear usuarios de IAM y grupos, consulte [Identidades de IAM](id.md). Para obtener información sobre cómo utilizar políticas para establecer permisos, consulte [Recursos de AWS para administración de acceso](access.md).

**AWSForos de debate de **  
Todo el mundo puede leer las publicaciones de los [foros de debate de AWS](https://forums.aws.amazon.com/). Los usuarios que quieran publicar preguntas o comentarios en el foro de debate de AWS pueden hacerlo utilizando su nombre de usuario. La primera vez que un usuario publica en el foro de discusión de AWS, se le pide que introduzca un alias y una dirección de correo electrónico. Solo ese usuario puede utilizar ese alias en los foros de discusión de AWS. 

**Información de uso y facturación de su cuenta de Cuenta de AWS**  
Puede conceder a los usuarios acceso a la información de facturación y de uso de su cuenta de Cuenta de AWS. Para obtener más información, consulte [Control del acceso de los usuarios a su información de facturación](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html) en la *Guía del usuario de AWS Billing*. 

**Información de su perfil de Cuenta de AWS**  
Los usuarios no pueden obtener acceso a la información de su perfil de cuenta de Cuenta de AWS.

**Credenciales de seguridad de su cuenta de Cuenta de AWS**  
Los usuarios no pueden obtener acceso a las credenciales de seguridad de su cuenta de Cuenta de AWS.

**nota**  
Las políticas de IAM controlan el acceso independientemente de la interfaz. Por ejemplo, puede proporcionar a un usuario una contraseña para acceder a la Consola de administración de AWS. Las políticas para ese usuario (o cualquier grupo al que pertenezca) controlarían lo que el usuario puede hacer en la Consola de administración de AWS. O bien, podría proporcionar al usuario claves de acceso de AWS para realizar llamadas de API a AWS. Las políticas controlarían las acciones que el usuario podría llamar a través de una biblioteca o cliente que utiliza esas claves de acceso para la autenticación.

# Cambio de los permisos de un usuario de IAM
<a name="id_users_change-permissions"></a>

Puede modificar los permisos de un usuario de IAM de una Cuenta de AWS cambiando su pertenencia a grupos, copiando los permisos de un usuario existente, asociando políticas directamente al usuario o definiendo un [límite de permisos](access_policies_boundaries.md). Un límite de permisos controla los permisos que puede tener un usuario como máximo. Los límites de permisos son una característica avanzada de AWS.

Para obtener información sobre los permisos que necesita para poder modificar los permisos de un usuario, consulte [Permisos obligatorios para obtener acceso a recursos de IAM](access_permissions-required.md).

**Topics**
+ [

## Ver acceso de usuario
](#users-modify_prerequisites)
+ [

## Generar una política basada en la actividad de acceso de un usuario
](#users_change_permissions-gen-policy)
+ [

## Adición de permisos a un usuario (consola)
](#users_change_permissions-add-console)
+ [

## Cambio de los permisos de un usuario (consola)
](#users_change_permissions-change-console)
+ [

## Cómo eliminar una política de permisos de un usuario (consola)
](#users_change_permissions-remove-policy-console)
+ [

## Cómo eliminar el límite de permisos de un usuario (consola)
](#users_change_permissions-remove-boundary-console)
+ [

## Adición y eliminación de permisos de un usuario (AWS CLI o API de AWS)
](#users_change_permissions-add-programmatic)

## Ver acceso de usuario
<a name="users-modify_prerequisites"></a>

Antes de cambiar los permisos para un usuario, debe revisar su actividad de nivel de servicio reciente. Esto es importante porque no desea eliminar el acceso de un principal (persona o aplicación) que está utilizándolo. Para obtener más información acerca de cómo ver la información de acceso reciente, consulte [Ajuste de permisos en AWS con información sobre los últimos accesos](access_policies_last-accessed.md).

## Generar una política basada en la actividad de acceso de un usuario
<a name="users_change_permissions-gen-policy"></a>

A veces puede conceder permisos a una entidad de IAM (usuario o rol) de más allá de lo que requieren. Para ayudarle a refinar los permisos que concede, puede generar una política de IAM que esté basada en la actividad de acceso de una entidad. El analizador de acceso de IAM revisa los registros de AWS CloudTrail y genera una plantilla de política que contiene los permisos que ha utilizado la entidad en el intervalo de fechas especificado. Puede utilizar la plantilla para crear una política administrada con permisos detallados y, a continuación, adjuntarla a la entidad de IAM. De esta forma, solo concede los permisos que el usuario o rol necesita para interactuar con los recursos de AWS para su caso de uso específico. Para obtener más información, consulte [Generación de políticas del Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Adición de permisos a un usuario (consola)
<a name="users_change_permissions-add-console"></a>

IAM ofrece de tres formas de agregar políticas de permisos a un usuario:
+ **Agregar al usuario de IAM a un grupo de IAM**: Convierta al usuario en miembro de un grupo. Las políticas del grupo se asocian al usuario.
+ **Copiar los permisos de un usuario de IAM existente**: Copie todas las suscripciones a grupos, las políticas administradas asociadas, las políticas insertadas y todos los límites de permisos existentes del usuario de origen.
+ **Adjuntar políticas directamente al usuario de IAM**: Adjunte una política administrada directamente al usuario. Para facilitar la administración de permisos, adjunte sus políticas a un grupo y, a continuación, haga a los usuarios de IAM miembros de los grupos apropiados.

**importante**  
Si el usuario tiene un límite de permisos, no se pueden añadir permisos al usuario por encima de los que autoriza este límite.

### Cómo agregar permisos mediante la adición del usuario de IAM a un grupo
<a name="users_change_permissions-add-group-console"></a>

Cuando se añade un usuario de IAM a un grupo de IAM, se actualizan inmediatamente los permisos del usuario con los permisos definidos para el grupo.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Users** (Usuarios), elija el nombre de usuario de IAM. 

1. Seleccione la pestaña **Grupos** para ver la lista de grupos que incluyen al usuario actual.

1. Elija **Añadir usuario al grupo o grupos**. 

1. Seleccione la casilla de verificación de todos los grupos a los que desee que el usuario pertenezca. La lista muestra el nombre de cada grupo y las políticas que el usuario recibe si pasa a ser miembro de ese grupo.

1. (Opcional) Puede seleccionar **Crear grupo** para definir un grupo nuevo. Esto resulta útil si desea añadir al usuario a un grupo con políticas adjuntas diferentes a las de los grupos existentes:

   1. En la pestaña nueva, en **Nombre del grupo de usuarios**, escriba un nombre para el grupo nuevo.
**nota**  
El número y el tamaño de recursos de IAM en una cuenta de AWS son limitados. Para obtener más información, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md). Los nombres de grupo pueden ser una combinación de un máximo de 128 letras, dígitos y los siguientes caracteres: más (\$1), igual (=), coma (,), punto (.), arroba (@) y guion (-). Los nombres deben ser únicos dentro de una cuenta. No distinguen entre mayúsculas y minúsculas. Por ejemplo, no puede crear dos grupos llamados *TESTGROUP* y *testgroup*.

   1. Seleccione una o varias casillas de verificación para las políticas administradas que desea asociar al grupo. También puede crear una política administrada nueva eligiendo **Create policy (Crear política)**. Si lo hace, vuelva a esta ventana o pestaña del navegador cuando haya acabado de crear la política nueva; elija **Refresh (Actualizar)** y, a continuación, elija la nueva política para asociarla a su grupo. Para obtener más información, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](access_policies_create.md).

   1. Elija **Crear grupo de usuarios**.

   1. Vuelva a la pestaña original y actualice la lista de grupos. A continuación, seleccione la casilla del grupo nuevo.

1. Seleccione **Añadir usuario a grupos**.

La consola muestra un mensaje de estado en el que se le informa que se ha añadido el usuario a los grupos que especificó.

------

### Cómo agregar permisos a partir de la copia de los permisos de otro usuario de IAM
<a name="users_change_permissions-add-copy-console"></a>

Cuando elige agregar permisos a partir de la copia a un usuario de IAM, IAM copia todas las suscripciones a grupos, las políticas administradas asociadas, las políticas insertadas y los límites de permisos existentes del usuario especificado y los aplica inmediatamente al usuario seleccionado.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Users** (Usuarios), elija el nombre de usuario de IAM. 

1. En la pestaña **Permisos**, seleccione **Agregar permisos**.

1. En la página **Agregar permisos**, seleccione **Copiar permisos**. La lista muestra los usuarios de IAM disponibles junto con sus suscripciones a grupos y las políticas que tienen asociadas. 

1. Seleccione el botón de opción que está junto al usuario cuyos permisos quiere copiar. 

1. Elija **Siguiente** para ver la lista de cambios que se realizarán en el usuario. A continuación, elija **Add permissions (Añadir permisos)**.

La consola muestra un mensaje de estado en el que se le informa que se han copiado los permisos del usuario de IAM que especificó.

------

### Cómo agregar permisos mediante la asociación directa de políticas al usuario de IAM
<a name="users_change_permissions-add-directly-console"></a>

Usted puede asociar una política administrada directamente al usuario de IAM. Los permisos actualizados se aplican inmediatamente.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Users** (Usuarios), elija el nombre de usuario de IAM. 

1. En la pestaña **Permisos**, seleccione **Agregar permisos**.

1. En la página **Agregar permisos**, seleccione **Asociar políticas directamente**. La lista **Políticas de permisos** muestra las políticas disponibles junto con sus tipos de políticas y las entidades asociadas. 

1. Seleccione el botón de opción situado junto al **nombre de la política** que quiere asociar. 

1. Elija **Siguiente** para ver la lista de cambios que se realizarán en el usuario. A continuación, elija **Add permissions (Añadir permisos)**.

La consola muestra un mensaje de estado en el que se le informa que se ha agregado la política al usuario de IAM que especificó.

------

### Cómo configurar el límite de permisos de un usuario de IAM
<a name="users_change_permissions-set-boundary-console"></a>

El límite de permisos es una característica avanzada para administrar los permisos en AWS que se usa para configurar la cantidad máxima de permisos que puede tener un usuario de IAM. Cuando se configura un límite de permisos, se restringen inmediatamente los permisos del usuario de IAM al límite, independientemente de los demás permisos concedidos.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Usuarios**, elija el nombre del usuario de IAM cuyo límite de permisos desea modificar. 

1. Elija la pestaña **Permisos**. Si es necesario, abra la sección **Límite de permisos** y luego, elija **Configurar límite de permisos**.

1. En la página **Configurar límite de permisos**, en **Políticas de permisos**, seleccione la política que quiera usar para definir el límite de permisos.

1. Elija **Set boundary (Configurar límite)**.

La consola muestra un mensaje de estado en el que se le informa que se ha agregado el límite de permisos.

------

## Cambio de los permisos de un usuario (consola)
<a name="users_change_permissions-change-console"></a>

IAM le permite cambiar los permisos asociados a un usuario de las siguientes maneras:
+ **Editar una política de permisos**: editar la política insertada del usuario, la política insertada del grupo del usuario o una política administrada que esté asociada al usuario directamente o a través de un grupo. Si el usuario tiene un límite de permisos, no se le pueden conceder permisos por encima de los que autoriza la política utilizada como límite de permisos del usuario.
+ **Cambiar el límite de permisos**: cambiar la política utilizada como límite de permisos para el usuario. Esto puede ampliar o reducir los permisos máximos que puede tener un usuario. 

### Edición de una política de permisos asociada a un usuario
<a name="users_change_permissions-edit-policy-console"></a>

Cuando se modifican los permisos, se actualiza el acceso del usuario inmediatamente.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Usuarios**, elija el nombre del usuario de IAM cuyo límite de permisos desea modificar. 

1. Elija la pestaña **Permisos**. Si es necesario, abra la sección **Límite de permisos**.

1. Elija el nombre de la política que desea editar para ver sus detalles. Seleccione la pestaña **Entidades asociadas** para ver otras entidades (usuarios, grupos y roles de IAM) que podrían verse afectadas si se edita la política. 

1. Elija la pestaña **Permissions (Permisos)** y revise los permisos que concede la política. Para efectuar cambios en los permisos, seleccione **Editar**. 

1. Edite la política y resuelva las recomendaciones de [validación de políticas](access_policies_policy-validator.md). Para obtener más información, consulte [Edición de políticas de IAM](access_policies_manage-edit.md).

1. Seleccione **Siguiente**, revise el resumen de la política y, a continuación, elija **Guardar cambios**.

La consola muestra un mensaje de estado en el que se le informa que se ha actualizado la política.

------

### Cómo modificar el límite de permisos de un usuario
<a name="users_change_permissions-change-boundary-console"></a>

Cuando se modifica el límite de permisos, se actualiza el acceso del usuario inmediatamente.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Usuarios**, elija el nombre del usuario de IAM cuyo límite de permisos desea modificar. 

1. Elija la pestaña **Permisos**. Si es necesario, abra la sección **Permissions boundary (Límite de permisos)** y, a continuación, elija **Change boundary (Cambiar límite)**.

1. Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Set boundary (Configurar límite)**.

La consola muestra un mensaje de estado en el que se le informa que se ha modificado el límite de permisos.

------

## Cómo eliminar una política de permisos de un usuario (consola)
<a name="users_change_permissions-remove-policy-console"></a>

Cuando se elimina una política de permisos, se actualiza el acceso del usuario inmediatamente.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. Seleccione el nombre del usuario cuyas políticas de permisos desea eliminar. 

1. Elija la pestaña **Permisos**. 

1. Si desea eliminar permisos mediante la remoción de una política existente, consulte la columna **Medio de asociación** para comprender cómo el usuario obtiene la política antes de elegir **Eliminar** para eliminar la política:
   + Si la política se aplica por la suscripción a un grupo, cuando elija **Eliminar** eliminará al usuario del grupo. Recuerde que es posible que tenga varias políticas asociadas a un único grupo. Si elimina al usuario de ese grupo, el usuario perderá el acceso a *todas* las políticas que recibió al pertenecer a dicho grupo.
   + Si la política es una política administrada asociada directamente al usuario, cuando elija **Eliminar** separará la política del usuario. Esto no afecta a la política en sí o a cualquier otra entidad a la que la política pueda estar asociada.
   + Si la política es una política insertada incrustada y selecciona **Eliminar**, se elimina la política de IAM. Las políticas insertadas que están directamente asociadas a un usuario existen únicamente en dicho usuario.

Si la política se otorgó al usuario mediante la suscripción a un grupo, la consola muestra un mensaje de estado en el que se le informa que se ha eliminado el usuario de IAM del grupo de IAM. Si la política está directamente asociada o insertada, en el mensaje de estado se le informa que se ha eliminado la política.

------

## Cómo eliminar el límite de permisos de un usuario (consola)
<a name="users_change_permissions-remove-boundary-console"></a>

Cuando se elimina el límite de permisos, se actualiza el acceso del usuario inmediatamente.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Usuarios**, seleccione el nombre del usuario de IAM cuyo límite de permisos desea eliminar. 

1. Elija la pestaña **Permisos**. Si es necesario, abra la sección **Límite de permisos**.

1.  Elija **Change boundary (Cambiar límite)**. Para confirmar que desea eliminar el límite de permisos, seleccione **Eliminar límite** en el cuadro de diálogo de confirmación.

La consola muestra un mensaje de estado en el que se le informa que se ha eliminado el límite de permisos.

------

## Adición y eliminación de permisos de un usuario (AWS CLI o API de AWS)
<a name="users_change_permissions-add-programmatic"></a>

Para añadir o eliminar permisos de forma programada, debe añadir o eliminar las suscripciones a grupos, asociar o separar las políticas administradas o eliminar las políticas insertadas. Para obtener más información, consulte los temas siguientes:
+ [Edición de usuarios de grupos de IAM](id_groups_manage_add-remove-users.md)
+ [Adición y eliminación de permisos de identidad de IAM](access_policies_manage-attach-detach.md)

# Contraseñas de los usuarios en AWS
<a name="id_credentials_passwords"></a>

Puede administrar las contraseñas de los usuarios de IAM de su cuenta. Los usuarios de IAM necesitan contraseñas para obtener acceso a la Consola de administración de AWS. Los usuarios no necesitan contraseñas para obtener acceso a los recursos de AWS mediante programación, utilizando la AWS CLI, Tools for Windows PowerShell, los SDK de AWS o las API. Para esos entornos, tiene la opción de asignar [claves de acceso](id_credentials_access-keys.md) a los usuarios de IAM. Sin embargo, existen otras alternativas más seguras a las claves de acceso que le recomendamos que tenga en cuenta en primer lugar. Para obtener más información, consulte [AWSCredenciales de seguridad de](security-creds.md).

**nota**  
Si uno de sus usuarios de IAM pierde u olvida la contraseña, usted *no* podrá recuperarla de IAM. En función de su configuración, el usuario o el administrador debe crear una contraseña nueva.

**Topics**
+ [

# Configuración de una política de contraseñas de la cuenta para usuarios de IAM
](id_credentials_passwords_account-policy.md)
+ [

# Administrar las contraseñas de los usuarios de IAM
](id_credentials_passwords_admin-change-user.md)
+ [

# Autorización para que los usuarios de IAM cambien sus contraseñas
](id_credentials_passwords_enable-user-change.md)
+ [

# Cómo un usuario de IAM cambia su propia contraseña
](id_credentials_passwords_user-change-own.md)

# Configuración de una política de contraseñas de la cuenta para usuarios de IAM
<a name="id_credentials_passwords_account-policy"></a>

Puede establecer una política de contraseñas personalizada en la Cuenta de AWS para especificar los requisitos de complejidad y los periodos de rotación obligatorios de las contraseñas de los usuarios de IAM. Si no establece una política de contraseñas personalizada, las contraseñas de los usuarios de IAM deberán cumplir con la política de contraseñas predeterminada de AWS. Para obtener más información, consulte [Opciones de la política de contraseñas personalizada](#password-policy-details).

**Topics**
+ [

## Reglas para configurar una política de contraseñas
](#password-policy-rules)
+ [

## Permisos necesarios para establecer una política de contraseñas
](#default-policy-permissions-required)
+ [

## Política de contraseñas predeterminada
](#default-policy-details)
+ [

## Opciones de la política de contraseñas personalizada
](#password-policy-details)
+ [

## Cómo configurar una política de contraseñas (consola)
](#IAMPasswordPolicy)
+ [

## Cómo cambiar una política de contraseñas (consola)
](#id_credentials_passwords_account-policy-section-1)
+ [

## Para eliminar una política de contraseñas personalizada (consola)
](#id_credentials_passwords_account-policy-section-2)
+ [

## Configuración de una política de contraseñas (AWS CLI)
](#PasswordPolicy_CLI)
+ [

## Configuración de una política de contraseñas (API de AWS)
](#PasswordPolicy_API)

## Reglas para configurar una política de contraseñas
<a name="password-policy-rules"></a>

La política de contraseñas de IAM no se aplica a la contraseña de Usuario raíz de la cuenta de AWS ni a las claves de acceso de los usuarios de IAM. Si una contraseña vence, el usuario de IAM no podrá iniciar sesión en la Consola de administración de AWS, pero podrá seguir utilizando sus claves de acceso.

Al crear o cambiar una política de contraseñas, la mayoría de los ajustes de la política de contraseñas se aplican la siguiente vez que los usuarios cambien sus contraseñas. Sin embargo, algunos de los ajustes se aplican de forma inmediata. Por ejemplo: 
+ Cuando cambian los requisitos de longitud mínima y de tipos de caracteres, esta configuración se aplica la próxima vez que los usuarios cambian la contraseña. Los usuarios no están obligados a cambiar sus contraseñas, aunque las contraseñas existentes no cumplan la política de contraseñas actualizada.
+ Si configura el periodo de vencimiento de una contraseña, este se aplica de forma inmediata. Por ejemplo, supongamos que se establece un periodo de vencimiento de la contraseña de 90 días. En ese caso, la contraseña vence para todos los usuarios de IAM cuya contraseña existente tiene más de 90 días. Esos usuarios deberán cambiar su contraseña la próxima vez que inicien sesión.

No puede crear una “política de bloqueo” para bloquear a los usuarios el acceso a la cuenta después de un número específico de intentos fallidos de inicio de sesión. Para mejorar la seguridad, se recomienda combinar una política de contraseñas seguras con la autenticación multifactor (MFA). Para obtener más información acerca de MFA, consulte [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md).

## Permisos necesarios para establecer una política de contraseñas
<a name="default-policy-permissions-required"></a>

Debe configurar permisos para permitir que una entidad (usuario o rol) de IAM vea o edite la política de contraseñas de cuenta. Puede incluir las siguientes acciones de política de contraseñas en una política de IAM: 
+ `iam:GetAccountPasswordPolicy`: permite a la entidad ver la política de contraseñas de su cuenta
+ `iam:DeleteAccountPasswordPolicy`: permite a la entidad eliminar la política de contraseñas personalizada para su cuenta y volver a la política de contraseñas predeterminada
+ `iam:UpdateAccountPasswordPolicy`: permite a la entidad crear o cambiar la política de contraseñas personalizada de su cuenta

La siguiente política permite el acceso total para ver y editar la política de contraseñas de la cuenta. Para obtener información sobre cómo crear una política de IAM mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullAccessPasswordPolicy",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:DeleteAccountPasswordPolicy",
                "iam:UpdateAccountPasswordPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Para obtener información acerca de los permisos necesarios para que un usuario de IAM cambie su propia contraseña, consulte [Autorización para que los usuarios de IAM cambien sus contraseñas](id_credentials_passwords_enable-user-change.md).

## Política de contraseñas predeterminada
<a name="default-policy-details"></a>

Si un administrador no establece una política de contraseñas personalizada, las contraseñas de los usuarios de IAM deben cumplir con la política de contraseñas predeterminada de AWS.

La política de contraseñas predeterminada aplica las siguientes condiciones:
+ tener una longitud mínima de contraseña de 8 caracteres y una longitud máxima de 128 caracteres
+ Un mínimo de tres de los siguientes tipos de caracteres: mayúsculas, minúsculas, números y caracteres no alfanuméricos (`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`)
+ No ser idéntica al nombre de la Cuenta de AWS ni a la dirección de correo electrónico
+ La contraseña no caduca nunca

## Opciones de la política de contraseñas personalizada
<a name="password-policy-details"></a>

Cuando configure una política de contraseñas personalizada para su cuenta, podrá especificar las siguientes condiciones:
+ **Establecer la longitud mínima de la contraseña**: usted puede especificar un mínimo de 6 caracteres y un máximo de 128 caracteres.
+ **Establecer la seguridad de la contraseña**: usted puede seleccionar cualquiera de las siguientes casillas de verificación para definir la seguridad de las contraseñas de los usuarios de IAM:
  + Exija al menos una letra mayúscula del alfabeto latino (A-Z).
  + Exija al menos una letra minúscula del alfabeto latino (a-z).
  + Exija al menos un número
  + Exija al menos un carácter no alfanumérico . `! @ # $ % ^ & * ( ) _ + - = [ ] { } | '` 
+ **Activar el vencimiento de la contraseña**: puede seleccionar y especificar un mínimo de 1 día y un máximo de 1095 días de validez de las contraseñas de los usuarios de IAM una vez establecidas. Por ejemplo, si especifica un vencimiento de 90 días, afecta inmediatamente a todos los usuarios. Los usuarios con contraseñas de más de 90 días, cuando inician sesión en la consola después del cambio, deben establecer una nueva contraseña. Los usuarios con contraseñas de entre 75 y 89 días de antigüedad reciben un aviso en la Consola de administración de AWS sobre el vencimiento de su contraseña. Los usuarios de IAM pueden cambiar su contraseña en cualquier momento si tienen permiso para hacerlo. Cuando establecen una contraseña nueva, el periodo de vencimiento para esa contraseña vuelve a comenzar. Un usuario de IAM solo puede tener una contraseña válida a la vez.
+ **La caducidad de la contraseña requiere un restablecimiento por parte del administrador**: seleccione esta opción para evitar que los usuarios de IAM utilicen la Consola de administración de AWS para actualizar sus propias contraseñas después de que la contraseña caduque. Antes de seleccionar esta opción, confirme que su Cuenta de AWS tenga más de un usuario con permisos administrativos para restablecer las contraseñas de los usuarios de IAM. Los administradores con el permiso `iam:UpdateLoginProfile` pueden restablecer las contraseñas de usuario de IAM. Los usuarios de IAM con el permiso `iam:ChangePassword` y las claves de acceso activas pueden restablecer su propia contraseña de la consola de usuario de IAM mediante programación. Si desactiva esta casilla de verificación, los usuarios de IAM con contraseñas vencidas aún deberán establecer una nueva contraseña antes de poder acceder a la Consola de administración de AWS.
+ **Permitir que los usuarios cambien su propia contraseña**: puede permitir que todos los usuarios de IAM de su cuenta cambien su propia contraseña. Esto permite a los usuarios acceder a la acción `iam:ChangePassword` solo para su usuario y a la acción `iam:GetAccountPasswordPolicy`. Esta opción no adjunta una política de permisos a cada usuario. Más bien, IAM aplica los permisos en la cuenta para todos los usuarios. También puede permitir que solo algunos usuarios administren sus propias contraseñas. Para ello, desactive esta casilla de verificación. Para obtener más información acerca del uso de políticas para limitar quién puede administrar contraseñas, consulte [Autorización para que los usuarios de IAM cambien sus contraseñas](id_credentials_passwords_enable-user-change.md).
+ **Impedir la reutilización de las contraseñas**: puede impedir que los usuarios de IAM reutilicen una cantidad específica de contraseñas anteriores. Puede especificar un número mínimo de 1 y un número máximo de 24 contraseñas anteriores que no se pueden repetir. 

## Cómo configurar una política de contraseñas (consola)
<a name="IAMPasswordPolicy"></a>

Puede utilizar la Consola de administración de AWS para crear, cambiar o eliminar una política de contraseñas personalizada. Los cambios en la política de contraseñas se aplican a los nuevos usuarios de IAM creados después de estos cambios y a los usuarios de IAM existentes cuando cambian sus contraseñas.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, elija **Configuración de cuenta**.

1. En la sección **Password policy** (Política de contraseñas), elija **Edit** (Editar). 

1. Elija **Custom** (Personalizado) para usar una política de contraseñas personalizada.

1. Seleccione las opciones que desee aplicar a su política de contraseñas y elija **Save changes (Guardar cambios)**. 

1. Para confirmar que desea establecer la política de contraseñas personalizada, seleccione **Set custom** (Establecer la política personalizada).

La consola muestra un mensaje de estado en el que se le informa que se han actualizado los requisitos de contraseña para los usuarios de IAM.

------

## Cómo cambiar una política de contraseñas (consola)
<a name="id_credentials_passwords_account-policy-section-1"></a>

Puede utilizar la Consola de administración de AWS para crear, cambiar o eliminar una política de contraseñas personalizada. Los cambios en la política de contraseñas se aplican a los nuevos usuarios de IAM creados después de estos cambios y a los usuarios de IAM existentes cuando cambian sus contraseñas.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, elija **Configuración de cuenta**.

1. En la sección **Password policy** (Política de contraseñas), elija **Edit** (Editar). 

1. Seleccione las opciones que desee aplicar a su política de contraseñas y elija **Save changes (Guardar cambios)**. 

1. Para confirmar que desea establecer la política de contraseñas personalizada, seleccione **Set custom** (Establecer la política personalizada).

La consola muestra un mensaje de estado en el que se le informa que se han actualizado los requisitos de contraseña para los usuarios de IAM.

------

## Para eliminar una política de contraseñas personalizada (consola)
<a name="id_credentials_passwords_account-policy-section-2"></a>

Puede utilizar la Consola de administración de AWS para crear, cambiar o eliminar una política de contraseñas personalizada. Los cambios en la política de contraseñas se aplican a los nuevos usuarios de IAM creados después de estos cambios y a los usuarios de IAM existentes cuando cambian sus contraseñas.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, elija **Configuración de cuenta**.

1. En la sección **Password policy** (Política de contraseñas), elija **Edit** (Editar). 

1. Elija **IAM default** (Predeterminado de IAM) para eliminar la política de contraseñas personalizada y elija **Save changes** (Guardar cambios).

1. Para confirmar que desea establecer la política de contraseñas predeterminada de IAM, seleccione **Set default** (Establecer la política predeterminada).

La consola muestra un mensaje de estado en el que se le informa que la política de contraseñas está configurada como predeterminada de IAM.

------

## Configuración de una política de contraseñas (AWS CLI)
<a name="PasswordPolicy_CLI"></a>

Puede utilizar la AWS Command Line Interface para establecer una política de contraseñas.

**Para administrar la política personalizada de contraseñas de cuentas desde la AWS CLI**  
Ejecute los comandos siguientes:
+ Para crear o cambiar la política de contraseñas personalizada: [https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)
+ Para ver la política de contraseñas: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html) 
+ Para eliminar la política de contraseñas personalizada: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html) 

## Configuración de una política de contraseñas (API de AWS)
<a name="PasswordPolicy_API"></a>

Puede utilizar las operaciones de la API de AWS para establecer una política de contraseñas.

**Para administrar la política personalizada de contraseñas de cuentas desde la API de AWS**  
Llame a las siguientes operaciones:
+ Para crear o cambiar la política de contraseñas personalizada: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)
+ Para ver la política de contraseñas: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html) 
+ Para eliminar la política de contraseñas personalizada: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html) 

# Administrar las contraseñas de los usuarios de IAM
<a name="id_credentials_passwords_admin-change-user"></a>

Los usuarios de IAM que utilizan la Consola de administración de AWS para trabajar con los recursos de AWS deben tener una contraseña para poder iniciar sesión. Puede crear, cambiar o eliminar la contraseña de un usuario de IAM en su cuenta de AWS. 

Una vez que haya asignado una contraseña a un usuario, el usuario puede iniciar sesión en la Consola de administración de AWS con la URL de inicio de sesión de su cuenta, que tiene este aspecto: 

```
https://12-digit-AWS-account-ID or alias.signin.aws.amazon.com/console
```

Para obtener más información acerca de cómo los usuarios de IAM inician sesión en la Consola de administración de AWS, consulte [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In*. 

Aunque los usuarios tengan sus propias contraseñas, deben seguir teniendo permisos para obtener acceso a los recursos de AWS. De forma predeterminada, un usuario no tiene permisos. Para conceder a los usuarios los permisos que necesitan, debe asignarles políticas o a los grupos a los que pertenezcan. Para obtener información sobre cómo crear usuarios y grupos, consulte [Identidades de IAM](id.md). Para obtener información sobre cómo utilizar políticas para establecer permisos, consulte [Cambio de los permisos de un usuario de IAM](id_users_change-permissions.md). 

Puede conceder a los usuarios permiso para cambiar sus propias contraseñas. Para obtener más información, consulte [Autorización para que los usuarios de IAM cambien sus contraseñas](id_credentials_passwords_enable-user-change.md). Para obtener más información acerca de cómo los usuarios acceden a la página de inicio de sesión de su cuenta, consulte [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In*. 

**Topics**
+ [

## Creación, cambio o eliminación de la contraseña de un usuario de IAM (consola)
](#id_credentials_passwords_admin-change-user_console)

## Creación, cambio o eliminación de la contraseña de un usuario de IAM (consola)
<a name="id_credentials_passwords_admin-change-user_console"></a>

También puede utilizar la Consola de administración de AWS para administrar contraseñas de los usuarios de IAM.

Las necesidades de acceso de sus usuarios pueden cambiar con el tiempo. Es posible que deba habilitar un usuario destinado al acceso a la CLI para poder acceder a la consola, cambiar la contraseña de un usuario porque recibe el correo electrónico con sus credenciales o eliminar un usuario cuando abandona la organización o ya no necesita acceso a AWS. 

### Para crear una contraseña para un usuario de IAM (consola)
<a name="id_credentials_passwords_admin-change-user-section-1"></a>

Utilice este procedimiento para conceder a un usuario acceso a la consola mediante la creación de una contraseña asociada al nombre de usuario.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre del usuario cuya contraseña desea crear. 

1. Elija la pestaña **Credenciales de seguridad** y luego, en **Inicio de sesión en la consola**, elija **Habilitar el acceso a la consola**.

1. En el cuadro de diálogo **Habilitar el acceso a la consola**, seleccione **Restablecer contraseña** y seleccione si IAM debe generar una contraseña o crear una contraseña personalizada: 
   + Para que IAM genere una contraseña, elija **Contraseña generada automáticamente**.
   + Para crear una contraseña personalizada, elija **Custom password (Contraseña personalizada)** y escriba la contraseña. 
**nota**  
La contraseña que cree debe cumplir con la [política de contraseñas](id_credentials_passwords_account-policy.md) de la cuenta.

1. Para exigir al usuario que cree una contraseña nueva cuando inicie sesión, seleccione **Exigir cambio de contraseña en el próximo inicio de sesión**. 

1. Para exigir al usuario que utilice la nueva contraseña inmediatamente, seleccione **Revocar sesiones activas de la consola**. De este modo, se adjunta una política insertada al usuario de IAM que le deniega el acceso a los recursos si sus credenciales son anteriores a la fecha especificada en la política.

1. Seleccione **Restablecer contraseña**.

1. En el cuadro de diálogo **Contraseña de la consola**, se le informa que ha activado la nueva contraseña del usuario. Para ver la contraseña y poder compartirla con el usuario, seleccione **Mostrar** en el cuadro de diálogo **Contraseña de la consola**. Seleccione **Descargar archivo .csv** para descargar un archivo con las credenciales del usuario.
**importante**  
Por motivos de seguridad, no puede obtener acceso a la contraseña después de completar este paso, pero puede crear una nueva contraseña en cualquier momento.

La consola muestra un mensaje de estado en el que se le informa que se ha habilitado el acceso a la consola.

------

### Para cambiar la contraseña de un usuario de IAM (consola)
<a name="id_credentials_passwords_admin-change-user-section-2"></a>

Utilice este procedimiento para actualizar una contraseña asociada al nombre de usuario.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre del usuario cuya contraseña desea cambiar. 

1. Elija la pestaña **Credenciales de seguridad** y luego, en **Inicio de sesión en la consola**, elija **Administrar el acceso a la consola**.

1. En el cuadro de diálogo **Administrar el acceso a la consola**, seleccione **Restablecer contraseña** y seleccione si IAM debe generar una contraseña o crear una contraseña personalizada: 
   + Para que IAM genere una contraseña, elija **Contraseña generada automáticamente**.
   + Para crear una contraseña personalizada, elija **Custom password (Contraseña personalizada)** y escriba la contraseña. 
**nota**  
La contraseña que cree debe cumplir con la [política de contraseñas](id_credentials_passwords_account-policy.md) de la cuenta.

1. Para exigir al usuario que cree una contraseña nueva cuando inicie sesión, seleccione **Exigir cambio de contraseña en el próximo inicio de sesión**. 

1. Para exigir al usuario que utilice la nueva contraseña inmediatamente, seleccione **Revocar sesiones activas de la consola**. De este modo, se adjunta una política insertada al usuario de IAM que le deniega el acceso a los recursos si sus credenciales son anteriores a la fecha especificada en la política.

1. Seleccione **Restablecer contraseña**.

1. En el cuadro de diálogo **Contraseña de la consola**, se le informa que ha activado la nueva contraseña del usuario. Para ver la contraseña y poder compartirla con el usuario, seleccione **Mostrar** en el cuadro de diálogo **Contraseña de la consola**. Seleccione **Descargar archivo .csv** para descargar un archivo con las credenciales del usuario.
**importante**  
Por motivos de seguridad, no puede obtener acceso a la contraseña después de completar este paso, pero puede crear una nueva contraseña en cualquier momento.

La consola muestra un mensaje de estado en el que se le informa que se ha actualizado el acceso a la consola.

------

### Para eliminar (desactivar) la contraseña de un usuario de IAM (consola)
<a name="id_credentials_passwords_admin-change-user-section-3"></a>

Utilice este procedimiento para eliminar una contraseña asociada al nombre de usuario, lo que le quita al usuario el acceso a la consola.

**importante**  
Puede desactivar el acceso de un usuario de IAM a la Consola de administración de AWS eliminando su contraseña. Esto les impide iniciar sesión en la Consola de administración de AWS utilizando sus credenciales de inicio de sesión. No cambia sus permisos ni les impide acceder a la consola utilizando un rol asumido. Si el usuario dispone de claves de acceso activas, estas seguirán funcionando y permitirán el acceso a través de la AWS CLI, Tools for Windows PowerShell, API de AWS o Console Mobile Application de AWS.

------
#### [ Console ]

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en el tema [Cómo iniciar sesión en AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de inicio de sesión en AWS*.

1. En la **página principal de la consola de IAM**, dentro del panel de navegación izquierdo, ingrese su consulta en el cuadro de texto **Buscar en IAM**.

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre del usuario cuya contraseña desea eliminar. 

1. Elija la pestaña **Credenciales de seguridad** y luego, en **Inicio de sesión en la consola**, elija **Administrar el acceso a la consola**.

1. Para exigir al usuario que deje de usar la consola inmediatamente, seleccione **Revocar sesiones activas de la consola**. De este modo, se adjunta una política insertada al usuario de IAM que le deniega el acceso a los recursos si sus credenciales son anteriores a la fecha especificada en la política.

1. Seleccione **Deshabilitar el acceso**.

La consola muestra un mensaje de estado en el que se le informa que se ha deshabilitado el acceso a la consola.

------

### Creación, cambio o eliminación de la contraseña de un usuario de IAM (AWS CLI)
<a name="Using_ManagingPasswordsCLIAPI"></a>

También puede utilizar la API de la AWS CLI para administrar contraseñas de los usuarios de IAM.

**Para crear una contraseña (AWS CLI)**

1. (Opcional) Para determinar si un usuario tiene una contraseña, ejecute este comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. Para crear una contraseña, ejecute este comando: [aws iam create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html)

**Para cambiar la contraseña de un usuario (AWS CLI)**

1. (Opcional) Para determinar si un usuario tiene una contraseña, ejecute este comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. Para cambiar una contraseña, ejecute este comando: [aws iam update-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/update-login-profile.html)

**Para eliminar (deshabilitar) la contraseña de un usuario (AWS CLI)**

1. (Opcional) Para determinar si un usuario tiene una contraseña, ejecute este comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. (Opcional) Para determinar cuándo se utilizó una contraseña por última vez, ejecute este comando: [aws iam get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html)

1. Para eliminar una contraseña, ejecute este comando: [aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)

**importante**  
Al eliminar la contraseña de un usuario, este ya no puede iniciar sesión en la Consola de administración de AWS. Si el usuario dispone de claves de acceso activas, estas seguirán funcionando y permitirán el acceso a través de AWS CLI, Tools for Windows PowerShell, o llamadas de función de API de AWS. Cuando se utiliza la AWS CLI, Herramientas para Windows PowerShell o la API de AWS para eliminar un usuario de una Cuenta de AWS, primero se debe eliminar la contraseña mediante esta operación. Para obtener más información, consulte [Eliminación de un usuario de IAM (AWS CLI)](id_users_remove.md#id_users_deleting_cli). 

**Revocación de las sesiones de consola activas de un usuario antes de una hora específica (AWS CLI)**

1. Para incrustar una política insertada que revoque las sesiones de consola activas de un usuario de IAM antes de una hora específica, utilice la siguiente política en línea y ejecute este comando: [aws iam put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)

   Esta política insertada deniega todos los permisos e incluye la clave de condición `aws:TokenIssueTime`. Revoca las sesiones de consola activas del usuario antes de la hora especificada en el elemento `Condition` de la política insertada. Reemplace el valor de la clave de condición `aws:TokenIssueTime` por su propio valor.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (Opcional) Para mostrar los nombres de las políticas insertadas en el usuario de IAM, ejecute este comando: [aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)

1. (Opcional) Para ver la política insertada con nombre incrustada en el usuario de IAM, ejecute este comando: [aws iam get-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user-policy.html)

### Creación, cambio o eliminación de la contraseña de un usuario de IAM (API de AWS)
<a name="Using_ManagingPasswordsAPI"></a>

También puede utilizar la API de la AWS para administrar contraseñas de los usuarios de IAM.

**Para crear una contraseña (API de AWS)**

1. (Opcional) Para determinar si un usuario tiene una contraseña, llame a esta operación: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. Para crear una contraseña, llame a esta operación: [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

**Para cambiar la contraseña de un usuario (API de AWS)**

1. (Opcional) Para determinar si un usuario tiene una contraseña, llame a esta operación: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. Para cambiar una contraseña, llame a esta operación: [UpdateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateLoginProfile.html)

**Para eliminar (deshabilitar) la contraseña de un usuario (API de AWS)**

1. (Opcional) Para determinar si un usuario tiene una contraseña, ejecute este comando: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. (Opcional) Para determinar cuándo se utilizó una contraseña por última vez, ejecute este comando: [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)

1. Para eliminar una contraseña, ejecute este comando: [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)

**importante**  
Al eliminar la contraseña de un usuario, este ya no puede iniciar sesión en la Consola de administración de AWS. Si el usuario dispone de claves de acceso activas, estas seguirán funcionando y permitirán el acceso a través de AWS CLI, Tools for Windows PowerShell, o llamadas de función de API de AWS. Cuando se utiliza la AWS CLI, Herramientas para Windows PowerShell o la API de AWS para eliminar un usuario de una Cuenta de AWS, primero se debe eliminar la contraseña mediante esta operación. Para obtener más información, consulte [Eliminación de un usuario de IAM (AWS CLI)](id_users_remove.md#id_users_deleting_cli). 

**Revocación de las sesiones de consola activas de un usuario antes de una hora específica (API de AWS)**

1. Para incrustar una política insertada que revoque las sesiones de consola activas de un usuario de IAM antes de una hora específica, utilice la siguiente política insertada y ejecute este comando: [PutUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html)

   Esta política insertada deniega todos los permisos e incluye la clave de condición `aws:TokenIssueTime`. Revoca las sesiones de consola activas del usuario antes de la hora especificada en el elemento `Condition` de la política insertada. Reemplace el valor de la clave de condición `aws:TokenIssueTime` por su propio valor.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (Opcional) Para mostrar los nombres de las políticas insertadas en el usuario de IAM, ejecute este comando: [ListUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html)

1. (Opcional) Para ver la política insertada con nombre incrustada en el usuario de IAM, ejecute este comando: [GetUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html)

# Autorización para que los usuarios de IAM cambien sus contraseñas
<a name="id_credentials_passwords_enable-user-change"></a>

**nota**  
Los usuarios con identidades federadas utilizarán el proceso definido por su proveedor de identidades para cambiar sus contraseñas. Como [práctica recomendada](best-practices.md), exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales.

Puede permitir a los usuarios de IAM que cambien sus propias contraseñas para iniciar sesión en la Consola de administración de AWS. Puede hacerlo de una de las dos formas siguientes:
+ [Permitir a todos los usuarios de IAM de la cuenta cambiar sus propias contraseñas](#proc_letalluserschangepassword). 
+ [Permitir solo a usuarios de IAM determinados cambiar sus propias contraseñas](#proc_letselectuserschangepassword). En este caso, desactive la opción para que todos los usuarios cambien sus propias contraseñas y utilice una política de IAM para otorgar permisos solo a algunos usuarios. Este enfoque permite a esos usuarios cambiar sus propias contraseñas y, de manera opcional, otras credenciales, como sus propias claves de acceso. 

**importante**  
Se recomienda [establecer una política de contraseñas personalizada](id_credentials_passwords_account-policy.md) que requiera que los usuarios de IAM creen contraseñas seguras.

## Para permitir que todos los usuarios de IAM cambien sus contraseñas
<a name="proc_letalluserschangepassword"></a>

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, haga clic en **Account settings (Configuración de la cuenta)**.

1. En la sección **Password policy** (Política de contraseñas), elija **Edit** (Editar).

1. Elija **Custom** (Personalizado) para usar una política de contraseñas personalizada.

1. Seleccione **Allow users to change their own password** (Permitir que los usuarios cambien su propia contraseña) y, a continuación, elija **Save changes** (Guardar cambios). Esto permite a todos los usuarios de la cuenta acceder a la acción `iam:ChangePassword` solo para su usuario y a la acción `iam:GetAccountPasswordPolicy`.

1. Proporcione a los usuarios las siguientes instrucciones para cambiar sus contraseñas: [Cómo un usuario de IAM cambia su propia contraseña](id_credentials_passwords_user-change-own.md). 

------
#### [ AWS CLI ]

Ejecute el siguiente comando:
+ `[aws iam update-account-password-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)`

------
#### [ API ]

Para crear un alias para la URL de la página de inicio de sesión de la Consola de administración de AWS, llame a la siguiente operación:
+ `[UpdateAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)` 

------

## Para permitir a usuarios de IAM determinados cambiar sus propias contraseñas
<a name="proc_letselectuserschangepassword"></a>

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, haga clic en **Account settings (Configuración de la cuenta)**. 

1. En la sección **Password policy (Política de contraseñas)**, asegúrese de que la opción **Allow users to change their own password (Permitir que los usuarios cambien su propia contraseña)** no esté seleccionada. Si la casilla de verificación está marcada, todos los usuarios podrán cambiar sus contraseñas. (Lea el procedimiento previo.) 

1. Cree usuarios que puedan cambiar sus propias contraseñas, si no existen todavía. Para obtener más información, consulte [Creación de un usuario de IAM en su Cuenta de AWS](id_users_create.md). 

1. (Opcional) Cree un grupo de IAM para los usuarios que deberían poder cambiar sus contraseñas y, a continuación, agregue los usuarios del paso anterior al grupo. Para obtener más información, consulte [Grupos de usuarios de IAM](id_groups.md). 

1. Asigne la siguiente política al grupo. Para obtener más información, consulte [Administración de políticas de IAM](access_policies_manage.md).

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:GetAccountPasswordPolicy",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": "iam:ChangePassword",
         "Resource": "arn:aws:iam::*:user/${aws:username}"
       }
     ]
   }
   ```

------

   Esta política otorga acceso a la acción [cambiar contraseña](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html), que permite a los usuarios cambiar únicamente sus propias contraseñas desde la consola, la AWS CLI, Tools for Windows PowerShell o la API. También otorga acceso a la acción [GetAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html), que permite al usuario ver la política de contraseñas actual. Este permiso es necesario para que el usuario pueda ver la política de contraseñas de cuentas en la página **Change Password (Cambiar contraseña)**. El usuario debe poder leer la política de contraseñas actual para asegurarse de que la contraseña cambiada cumpla los requisitos de la política.

1. Proporcione a los usuarios las siguientes instrucciones para cambiar sus contraseñas: [Cómo un usuario de IAM cambia su propia contraseña](id_credentials_passwords_user-change-own.md). 

------

### Para obtener más información
<a name="HowToPwdIAMUser-moreinfo"></a>

Para obtener más información acerca de cómo administrar credenciales, consulte los siguientes temas:
+ [Autorización para que los usuarios de IAM cambien sus contraseñas](#id_credentials_passwords_enable-user-change) 
+ [Contraseñas de los usuarios en AWS](id_credentials_passwords.md)
+ [Configuración de una política de contraseñas de la cuenta para usuarios de IAM](id_credentials_passwords_account-policy.md)
+ [Administración de políticas de IAM](access_policies_manage.md)
+ [Cómo un usuario de IAM cambia su propia contraseña](id_credentials_passwords_user-change-own.md)

# Cómo un usuario de IAM cambia su propia contraseña
<a name="id_credentials_passwords_user-change-own"></a>

Si dispone de permiso para cambiar su propia contraseña de usuario de IAM, puede utilizar una página especial en la Consola de administración de AWS para hacerlo. También puede utilizar la AWS CLI o la API de AWS.

**Topics**
+ [

## Permisos necesarios
](#change-own-passwords-permissions-required)
+ [

## Cómo cambian los usuarios de IAM su propia contraseña (consola)
](#ManagingUserPwdSelf-Console)
+ [

## Cómo cambian los usuarios de IAM su propia contraseña (AWS CLI o API de AWS)
](#ManagingUserPwdSelf-CLIAPI)

## Permisos necesarios
<a name="change-own-passwords-permissions-required"></a>

Para cambiar la contraseña de su propio usuario de IAM, debe contar con los permisos de la siguiente política: [AWS: permite a los usuarios de IAM cambiar su propia contraseña de consola en la página Credenciales de seguridad](reference_policies_examples_aws_my-sec-creds-self-manage-password-only.md).

## Cómo cambian los usuarios de IAM su propia contraseña (consola)
<a name="ManagingUserPwdSelf-Console"></a>

En el siguiente procedimiento se describe cómo un usuario de IAM puede utilizar la Consola de administración de AWS para cambiar su propia contraseña.

**Para cambiar la contraseña de su propio usuario de IAM (consola)**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la pestaña **Credenciales de AWS IAM**, elija **Actualizar contraseña**.

1. En **Current password (Contraseña actual)**, escriba la contraseña actual. Escriba una contraseña nueva **New password (Nueva contraseña)** y **Confirm new password (Confirmar nueva contraseña)**. A continuación, elija **Actualizar contraseña**.
**nota**  
La nueva contraseña debe cumplir los requisitos de la política de contraseñas de cuentas. Para obtener más información, consulte [Configuración de una política de contraseñas de la cuenta para usuarios de IAM](id_credentials_passwords_account-policy.md). 

## Cómo cambian los usuarios de IAM su propia contraseña (AWS CLI o API de AWS)
<a name="ManagingUserPwdSelf-CLIAPI"></a>

En el siguiente procedimiento se describe cómo un usuario de IAM puede utilizar la AWS CLI o la API de AWS para cambiar su propia contraseña.

**Para cambiar su propia contraseña de IAM, utilice lo siguiente:**
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html](https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html)
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html)

# Administración de claves de acceso para usuarios de IAM
<a name="id_credentials_access-keys"></a>

**importante**  
Como [práctica recomendada](best-practices.md), utilice credenciales de seguridad temporales (por ejemplo, roles de IAM) en lugar de crear credenciales a largo plazo como claves de acceso. Antes de crear claves de acceso, revise las [alternativas a las claves de acceso a largo plazo](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys).

Las claves de acceso son credenciales a largo plazo para un usuario de IAM o el Usuario raíz de la cuenta de AWS. Puede utilizar las claves de acceso para firmar solicitudes mediante programación a la AWS CLI o a la API de AWS (directamente o mediante el SDK de AWS). Para obtener más información, consulte [Acceso programático con credenciales de seguridad AWS](security-creds-programmatic-access.md).

Las claves de acceso se componen de dos partes: un ID de clave de acceso (por ejemplo, `AKIAIOSFODNN7EXAMPLE`) y una clave de acceso secreta (por ejemplo, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). Debe utilizar el ID de clave de acceso y la clave de acceso secreta juntos, como un nombre de usuario y contraseña, para autenticar sus solicitudes.



Cuando cree un par de claves de acceso, guarde el ID de clave de acceso y la clave de acceso secreta en un lugar seguro. La clave de acceso secreta solo se puede recuperar cuando se crea la clave. Si pierde su clave de acceso secreta, debe eliminar la clave de acceso y crear una nueva. Para obtener instrucciones adicionales, consulte [Actualización de las claves de acceso](id-credentials-access-keys-update.md).

Puede tener un máximo de dos claves de acceso por usuario.

**importante**  
Los usuarios de IAM con claves de acceso suponen un riesgo para la seguridad de las cuentas. Administre las claves de acceso de forma segura. No proporcione sus claves de acceso a terceros no autorizados, ni siquiera para que le ayuden a [buscar sus identificadores de cuenta](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html). Si lo hace, podría conceder a otra persona acceso permanente a su cuenta.  
Al trabajar con claves de acceso, tenga en cuenta lo siguiente:  
**NO** use las credenciales raíz de la cuenta para crear claves de acceso.
**NO** incluya claves de acceso ni información sobre credenciales en sus archivos de aplicación. 
**NO** incluya archivos que contengan información de credenciales ni claves de acceso en el área del proyecto.
La información de credenciales o claves de acceso almacenadas en el archivo de credenciales de AWS compartido se almacenan en texto no cifrado.

## Recomendaciones de supervisión
<a name="monitor-access-keys"></a>

Después de crear las claves de acceso:
+ Utilice AWS CloudTrail para supervisar el uso de las claves de acceso y detectar cualquier intento de acceso no autorizado. Para obtener más información, consulte [Registro de llamadas a IAM y a la API de AWS STS con AWS CloudTrail](cloudtrail-integration.md).
+ Configure alarmas de CloudWatch para notificar los intentos de denegación de acceso a los administradores a fin de ayudar a detectar actividades maliciosas. Para obtener más información, consulte la [Guía del usuario de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).
+ Revise, actualice y elimine periódicamente las claves de acceso si es necesario.

En las siguientes secciones, se detallan las tareas de administración asociadas a las claves de acceso.

**Topics**
+ [

## Recomendaciones de supervisión
](#monitor-access-keys)
+ [

# Control del uso de las claves de acceso adjuntando una política insertada a un usuario de IAM
](access-keys_inline-policy.md)
+ [

# Permisos requeridos para administrar claves de acceso
](access-keys_required-permissions.md)
+ [

# Cómo los usuarios de IAM pueden gestionar sus propias claves de acceso
](access-key-self-managed.md)
+ [

# Cómo un administrador de IAM puede gestionar las claves de acceso de los usuarios de IAM
](access-keys-admin-managed.md)
+ [

# Actualización de las claves de acceso
](id-credentials-access-keys-update.md)
+ [

# Protección de las claves de acceso
](securing_access-keys.md)

# Control del uso de las claves de acceso adjuntando una política insertada a un usuario de IAM
<a name="access-keys_inline-policy"></a>

Otra práctica recomendada es que las [cargas de trabajo utilicen credenciales temporales con roles de IAM](best-practices.md#bp-workloads-use-roles) para acceder a AWS. A los usuarios de IAM con claves de acceso se les debe asignar el acceso con privilegio mínimo; además, deben tener activada la [autenticación multifactor (MFA](id_credentials_mfa.md)). Para obtener más información sobre cómo asumir roles de IAM, consulte [Métodos para asumir un rol](id_roles_manage-assume.md).

Sin embargo, si va a crear una prueba de concepto de una automatización de servicios u otro caso de uso a corto plazo y decide ejecutar las cargas de trabajo con un usuario de IAM con claves de acceso, le recomendamos que [utilice condiciones de políticas a fin de restringir aún más el acceso](best-practices.md#use-policy-conditions) de sus credenciales de usuario de IAM.

En este caso, puede crear una política con límite de tiempo que haga caducar las credenciales una vez que transcurra el tiempo especificado o, si ejecuta una carga de trabajo desde una red segura, puede utilizar una política de restricción de IP.

Para ambos casos de uso, puede utilizar una política insertada que se adjunte al usuario de IAM que tenga las claves de acceso.

**Configuración de una política con límite de tiempo para un usuario de IAM**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Usuarios** y, a continuación, seleccione el nombre del usuario para el caso de uso a corto plazo. Si todavía no ha creado el usuario, puede [crearlo](getting-started-workloads.md) ahora.

1. En la página **Detalles**, elija la pestaña **Permisos**.

1. Elija **Agregar permisos** y, a continuación, seleccione **Crear política insertada**.

1. En la sección **Editor de políticas**, seleccione **JSON** para que se muestre el editor JSON.

1. En el editor JSON, ingrese la siguiente política y sustituya el valor de la marca de tiempo `aws:CurrentTime` por la fecha y hora de caducidad deseadas:

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
         "DateGreaterThan": {
         "aws:CurrentTime": "2025-03-01T00:12:00Z"
           }
         }
       }
     ]
   }
   ```

------

   Esta política utiliza el efecto `Deny` para restringir todas las acciones en todos los recursos después de la fecha especificada. La condición `DateGreaterThan` compara la hora actual con la marca de tiempo que configuró.

1. Seleccione **Siguiente** para dirigirse a la página **Revisar y crear**. En los detalles de la **política**, en **Nombre de la política**, ingrese un nombre para la política y, a continuación, elija **Crear política**.

Una vez creada la política, se mostrará en la pestaña **Permisos** del usuario. Cuando la hora actual sea posterior o igual a la hora especificada en la política, el usuario dejará de tener acceso a los recursos de AWS. Asegúrese de informar a los desarrolladores de cargas de trabajo de la fecha de caducidad que especificó para estas claves de acceso. 

**Configuración de una política de restricción de IP para un usuario de IAM**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Usuarios** y luego seleccione el usuario que ejecutará la carga de trabajo desde la red segura. Si todavía no ha creado el usuario, puede [crearlo](getting-started-workloads.md) ahora.

1. En la página **Detalles**, elija la pestaña **Permisos**.

1. Elija **Agregar permisos** y, a continuación, seleccione **Crear política insertada**.

1. En la sección **Editor de políticas**, seleccione **JSON** para que se muestre el editor JSON.

1. Copie la siguiente política de IAM en el editor de JSON y cambie las direcciones o rangos de direcciones IPv4 o IPv6 públicas según sus necesidades. Puede usar [https://checkip.amazonaws.com/](https://checkip.amazonaws.com/) para determinar su dirección IP pública actual. Puede especificar direcciones IP individuales o rangos de direcciones IP mediante la notación de barra diagonal. Para obtener más información, consulte [aws:SourceIp](reference_policies_condition-keys.md#condition-keys-sourceip). 
**nota**  
Las direcciones IP no deben estar ocultas por una VPN o un servidor proxy.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid":"IpRestrictionIAMPolicyForIAMUser",
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "NotIpAddress": {
             "aws:SourceIp": [
               "203.0.113.0/24",
               "2001:DB8:1234:5678::/64",
               "203.0.114.1"
             ]
           },
           "BoolIfExists": {
             "aws:ViaAWSService": "false"
           }
         }
       }
     ]
   }
   ```

------

   Este ejemplo de política deniega el uso de las claves de acceso de un usuario de IAM con esta política aplicada, a menos que la solicitud se haya originado en las redes (especificadas en la notación CIDR) “203.0.113.0/24”, “2001:DB8:1234:5678::/64” o en la dirección IP específica “203.0.114.1”. 

1. Seleccione **Siguiente** para dirigirse a la página **Revisar y crear**. En los detalles de la **política**, en **Nombre de la política**, ingrese un nombre para la política y, a continuación, elija **Crear política**.

Una vez creada la política, se mostrará en la pestaña **Permisos** del usuario. 

También podría aplicar esta política como una política de control de servicio (SCP) en varias cuentas de AWS en AWS Organizations; le recomendamos que utilice una condición adicional, `aws:PrincipalArn`, para que esta declaración de política solo se aplique a los usuarios de IAM dentro de las cuentas de AWS sujetas a esta SCP. La siguiente política incluye esa actualización:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IpRestrictionServiceControlPolicyForIAMUsers",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "203.0.113.0/24",
            "2001:DB8:1234:5678::/64",
            "203.0.114.1"
          ]
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        },
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:iam::*:user/*"
        }
      }
    }
  ]
}
```

------

# Permisos requeridos para administrar claves de acceso
<a name="access-keys_required-permissions"></a>

**nota**  
`iam:TagUser` es un permiso opcional para agregar y editar las descripciones de la clave de acceso. Para obtener más información, consulte [Etiquetado de usuarios de IAM](id_tags_users.md)

Para crear claves de acceso para su usuario de IAM, debe contar con los permisos de la siguiente política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

Para actualizar claves de acceso para su propio usuario de IAM, debe contar con los permisos de la siguiente política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetAccessKeyLastUsed",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# Cómo los usuarios de IAM pueden gestionar sus propias claves de acceso
<a name="access-key-self-managed"></a>

Los administradores de IAM pueden conceder permiso a los usuarios de IAM para autogestionar sus claves de acceso mediante la asociación de la política que se describe en [Permisos requeridos para administrar claves de acceso](access-keys_required-permissions.md).

Con estos permisos, el usuario de IAM puede utilizar los siguientes procedimientos para crear, activar, desactivar y eliminar las claves de acceso asociadas a su nombre de usuario.

**Topics**
+ [

## Cómo crear su propia clave de acceso (consola)
](#Using_CreateAccessKey)
+ [

## Cómo desactivar su clave de acceso (consola)
](#deactivate-access-key-seccreds)
+ [

## Cómo activar su clave de acceso (consola)
](#activate-access-key-seccreds)
+ [

## Cómo eliminar su clave de acceso (consola)
](#delete-access-key-seccreds)

## Cómo crear su propia clave de acceso (consola)
<a name="Using_CreateAccessKey"></a>

Si se le han concedido los permisos adecuados, puede utilizar la Consola de administración de AWS para crear sus propias claves de acceso.

**Para crear sus propias claves de acceso (consola)**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la sección **Claves de acceso**, haga clic en **Crear clave de acceso**. Si ya dispone de dos claves de acceso, este botón estará desactivado y deberá eliminar una clave de acceso antes de poder crear una nueva.

1. En la página **Access key best practices & alternatives** (Prácticas recomendadas y alternativas para la clave de acceso), elija su caso de uso para conocer las opciones adicionales que pueden ayudarle a evitar la creación de una clave de acceso de larga duración. Si determina que su caso de uso aún requiere una clave de acceso, elija **Other** (Otro) y, a continuación, **Next** (Siguiente).

1. (Opcional) Establezca un valor de etiqueta de descripción para la clave de acceso. Esto agrega un par clave-valor de etiqueta a su usuario de IAM. Esto puede ayudarlo a identificar y actualizar claves de acceso más adelante. La clave de la etiqueta se establece en el ID de la clave de acceso. El valor de la etiqueta se establece en la descripción de la clave de acceso que especifique. Cuando haya terminado, seleccione **Create access key** (Crear clave de acceso).

1. En la página **Retrieve access keys** (Recuperar claves de acceso), elija **Show** (Mostrar) para revelar el valor de la clave de acceso secreta de su usuario o **Download .csv file** (Descargar archivo .csv). Esta es su única oportunidad de guardar su clave de acceso secreta. Una vez guardada la clave de acceso secreta en un lugar seguro, seleccione **Done** (Listo).

## Cómo desactivar su clave de acceso (consola)
<a name="deactivate-access-key-seccreds"></a>

Si se le han concedido los permisos adecuados, puede utilizar la Consola de administración de AWS para desactivar su clave de acceso.

**Para desactivar una clave de acceso**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la sección **Access keys** (Claves de acceso), busque la clave que desea desactivar, seleccione **Actions** (Acciones) y, a continuación, seleccione **Deactivate** (Desactivar). Cuando se le pida confirmación, elija **Deactivate** (Desactivar). Una clave de acceso desactivada sigue contando para el límite de dos claves de acceso.

## Cómo activar su clave de acceso (consola)
<a name="activate-access-key-seccreds"></a>

Si se le han concedido los permisos adecuados, puede utilizar la Consola de administración de AWS para activar su clave de acceso.

**Para activar una clave de acceso**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la sección **Access keys** (Claves de acceso), busque la clave que desea activar, seleccione **Actions** (Acciones) y, a continuación, **Activate** (Activar).

## Cómo eliminar su clave de acceso (consola)
<a name="delete-access-key-seccreds"></a>

Si se le han concedido los permisos adecuados, puede utilizar la Consola de administración de AWS para eliminar su clave de acceso.

**Para eliminar una clave de acceso cuando ya no la necesite**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la sección **Access keys** (Claves de acceso), busque la clave que desea eliminar, seleccione **Actions** (Acciones) y, a continuación, **Eliminar**. Siga las instrucciones del cuadro de diálogo para, en primer lugar, **Deactivate** (Desactivar) y, a continuación, confirmar la eliminación. Le recomendamos que compruebe que la clave de acceso ya no se utilice antes de eliminarla definitivamente.

# Cómo un administrador de IAM puede gestionar las claves de acceso de los usuarios de IAM
<a name="access-keys-admin-managed"></a>

Los administradores de IAM pueden crear, activar, desactivar y eliminar las claves de acceso asociadas a cada usuario de IAM. También pueden enumerar los usuarios de IAM de la cuenta que tienen claves de acceso y localizar qué usuario de IAM tiene una clave de acceso específica.

**Topics**
+ [

## Cómo crear una clave de acceso para un usuario de IAM
](#admin-create-access-key)
+ [

## Cómo desactivar una clave de acceso para un usuario de IAM
](#admin-deactivate-access-key)
+ [

## Cómo activar una clave de acceso para un usuario de IAM
](#admin-activate-access-key)
+ [

## Cómo eliminar una clave de acceso para un usuario de IAM
](#admin-delete-access-key)
+ [

## Cómo enumerar las claves de acceso de un usuario de IAM
](#admin-list-access-key)
+ [

## Cómo enumerar las claves de acceso de un usuario de IAM
](#admin-list-access-key)
+ [

## Cómo mostrar todos los ID de las claves de acceso de los usuarios de su cuenta
](#admin-list-all-access-keys)
+ [

## Cómo usar el ID de una clave de acceso para buscar un usuario
](#admin-find-user-access-keys)
+ [

## Cómo buscar el uso más reciente del ID de una clave de acceso
](#admin-find-most-recent-use-access-keys)

## Cómo crear una clave de acceso para un usuario de IAM
<a name="admin-create-access-key"></a>

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. En la pestaña **Credenciales de seguridad**, en la sección **Claves de acceso**, seleccione **Crear clave de acceso**.

   Si el botón se encuentra desactivado, deberá borrar una de las claves existentes antes de poder crear una nueva.

1. En la página **Access key best practices & alternatives** (Prácticas recomendadas y alternativas para la clave de acceso), revise las prácticas recomendadas y las alternativas. Elija su caso de uso para conocer las opciones adicionales que pueden permitirle evitar la creación de una clave de acceso a largo plazo.

1. Si determina que su caso de uso aún requiere una clave de acceso, elija **Other** (Otro) y, a continuación, **Next** (Siguiente).

1. **(Opcional)** En la página **Establecer una etiqueta de descripción**, puede agregar una etiqueta descriptiva a la clave de acceso para facilitar el seguimiento de la clave de acceso. Seleccione **Crear clave de acceso**.

1. En la página **Retrieve access key page** (Recuperar clave de acceso), elija **Show** (Mostrar) para revelar el valor de la clave de acceso secreta de su usuario.

1. Para guardar el ID de la clave de acceso y la clave de acceso secreta en un archivo `.csv` en una ubicación segura de su ordenador, seleccione el botón **Download .csv file** (Descargar archivo .csv).
**importante**  
Esta será su única oportunidad para ver y descargar esta clave de acceso que acaba de crear y no podrá recuperarla. Asegúrese de mantener su clave de acceso de forma segura.

Cuando se crea una clave de acceso para un usuario, el par de claves se activa de forma predeterminada y el usuario puede utilizarlo inmediatamente.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) 

------

## Cómo desactivar una clave de acceso para un usuario de IAM
<a name="admin-deactivate-access-key"></a>

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. En la pestaña **Credenciales de seguridad**, en la sección **Claves de acceso**, seleccione el menú desplegable **Acciones** y, a continuación, seleccione **Desactivar**.

1. En el cuadro de diálogo **Desactivar**, seleccione **Desactivar** para confirmar que desea desactivar la clave de acceso.

Después de desactivar una clave de acceso, ya no puede ser usada por las llamadas a la API. Puede volver a activarla si es necesario.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## Cómo activar una clave de acceso para un usuario de IAM
<a name="admin-activate-access-key"></a>

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. En la pestaña **Credenciales de seguridad**, en la sección **Claves de acceso**, seleccione el menú desplegable **Acciones** y, a continuación, seleccione **Activar**.

Después de activar una clave de acceso, puede ser usada por las llamadas a la API. Puede volver a desactivarla si es necesario.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## Cómo eliminar una clave de acceso para un usuario de IAM
<a name="admin-delete-access-key"></a>

Una vez que se desactivó una clave de acceso, si ya no es necesaria, elimínela.

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. En la pestaña **Credenciales de seguridad**, en la sección **Claves de acceso**, seleccione el menú desplegable **Acciones** correspondiente a la clave de acceso inactiva y, a continuación, seleccione **Eliminar**.

1. En el cuadro de diálogo **Eliminar**, introduzca el ID de la clave de acceso en el campo de entrada de texto y, a continuación, seleccione **Eliminar** para confirmar que desea eliminar la clave de acceso.

Después de eliminar una clave de acceso, no se puede recuperar.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## Cómo enumerar las claves de acceso de un usuario de IAM
<a name="admin-list-access-key"></a>

Puede ver una lista de los ID de las claves de acceso asociadas a un usuario de IAM. 

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. En la pestaña **Credenciales de seguridad**, en la sección **Claves de acceso**, se enumeran las claves de acceso del usuario.

Cada usuario de IAM puede tener dos claves de acceso.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## Cómo enumerar las claves de acceso de un usuario de IAM
<a name="admin-list-access-key"></a>

Puede ver una lista de los ID de las claves de acceso asociadas a un usuario de IAM. 

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. En la pestaña **Credenciales de seguridad**, en la sección **Claves de acceso**, se enumeran los ID de las claves de acceso del usuario, incluido el estado de cada clave que se muestra.
**nota**  
Solo se ve el ID de clave de acceso del usuario. La clave de acceso secreta solo se puede recuperar cuando se crea la clave.

Cada usuario de IAM puede tener dos claves de acceso.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## Cómo mostrar todos los ID de las claves de acceso de los usuarios de su cuenta
<a name="admin-list-all-access-keys"></a>

Puede ver una lista de los ID de las claves de acceso en su Cuenta de AWS. 

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre de usuario para abrir la página de datos del usuario.

1. Si es necesario, agregue la columna **ID de clave de acceso** a la tabla de usuarios ejecutando los siguientes pasos:

   1. Arriba de la tabla, en el extremo derecho, seleccione el ícono **Preferencias** (![\[Preferences icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. En el cuadro de diálogo **Preferencias**, en **Seleccionar columnas visibles**, active la opción **ID de clave de acceso**.

   1. Elija **Confirmar** para volver a la lista de usuarios. La lista se actualiza para incluir el ID de la clave de acceso.

1. La columna **ID de clave de acceso** muestra el estado de cada clave de acceso, seguido de su ID; por ejemplo, **`Active - AKIAIOSFODNN7EXAMPLE`** o **`Inactive - AKIAI44QH8DHBEXAMPLE`**. 

   Puede utilizar esta información para ver y copiar los ID de las claves de acceso de los usuarios que tengan una o dos claves de acceso. La columna muestra un **`-`** cuando los usuarios no tienen claves de acceso.
**nota**  
La clave de acceso secreta solo se puede recuperar cuando se crea la clave.

Cada usuario de IAM puede tener dos claves de acceso.

------

## Cómo usar el ID de una clave de acceso para buscar un usuario
<a name="admin-find-user-access-keys"></a>

Puede usar el ID de una clave de acceso para buscar un usuario en su Cuenta de AWS. 

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, en el cuadro de búsqueda, introduzca el **ID de la clave de acceso**, por ejemplo, AKIAI44QH8DHBEXAMPLE. 

1. El usuario de IAM al que está asociado el ID de la clave de acceso aparecerá en el panel de navegación. Elija el nombre de usuario para abrir la página de datos del usuario.

------

## Cómo buscar el uso más reciente del ID de una clave de acceso
<a name="admin-find-most-recent-use-access-keys"></a>

El uso más reciente de una clave de acceso se muestra en la lista de usuarios de la página de usuarios de IAM, en la página de detalles del usuario, y forma parte del informe de credenciales. 

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En la lista de usuarios, consulte la columna **Último uso de la clave de acceso**.

   Si la columna no aparece, seleccione el ícono **Preferencias** (![\[Preferences icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-settings-icon.console.png)) y, en **Seleccionar columnas visibles**, active **Clave de acceso utilizada por última vez** para que se muestre la columna.

1. (opcional) En el panel de navegación, en **Informes de acceso**, seleccione **Informe de credenciales** para descargar un informe que incluye la información del último uso de las claves de acceso de todos los usuarios de IAM de su cuenta.

1. (opcional) Seleccione un usuario de IAM para ver los detalles del usuario. La sección **Resumen** incluye los ID de las claves de acceso, su estado y cuándo se usaron por última vez.

------
#### [ AWS CLI ]

Use el siguiente comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) 

------

# Actualización de las claves de acceso
<a name="id-credentials-access-keys-update"></a>

Como [práctica recomendada](best-practices.md#update-access-keys) de seguridad, se recomienda actualizar las claves de acceso de usuario de IAM cuando sea necesario; por ejemplo, cuando un empleado deje la empresa. Los usuarios de IAM pueden actualizar sus propias claves de acceso si se les han concedido los permisos necesarios.

Para obtener más información sobre cómo conceder a sus usuarios de IAM permisos para actualizar sus propias claves de acceso, consulte [AWS: permite a los usuarios de IAM administrar su propia contraseña, sus claves de acceso y sus claves públicas SSH en la página Credenciales de seguridad](reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh.md). También puede aplicar una política de contraseñas a su cuenta para solicitarles a todos los usuarios de IAM que actualicen sus contraseñas periódicamente, e informarles cuán seguido deben hacerlo. Para obtener más información, consulte [Configuración de una política de contraseñas de la cuenta para usuarios de IAM](id_credentials_passwords_account-policy.md). 

**nota**  
Si pierde su clave de acceso secreta, debe eliminar la clave de acceso y crear una nueva. La clave de acceso secreta solo se puede recuperar cuando se crea la clave. Utilice este procedimiento para desactivar y reemplazar las claves de acceso perdidas por credenciales nuevas.

**Topics**
+ [

## Actualización de las claves de acceso de usuario de IAM (consola)
](#rotating_access_keys_console)
+ [

## Actualización de las claves de acceso (AWS CLI)
](#rotating_access_keys_cli)
+ [

## Actualización de las claves de acceso (API de AWS)
](#rotating_access_keys_api)

## Actualización de las claves de acceso de usuario de IAM (consola)
<a name="rotating_access_keys_console"></a>

Puede actualizar las claves de acceso desde la Consola de administración de AWS.

**Para actualizar las claves de acceso de un usuario de IAM sin interrumpir sus aplicaciones (consola)**

1. Aunque la primera clave de acceso sigue activa, cree otra clave de acceso.

   1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. En el panel de navegación, seleccione **Users (Usuarios)**.

   1. Elija el nombre del usuario que desee y, a continuación, elija la pestaña **Security credentials (Credenciales de seguridad)**.

   1. En la sección **Claves de acceso**, haga clic en **Crear clave de acceso**. En la página **Access key best practices & alternatives** (Prácticas recomendadas y alternativas para la clave de acceso), seleccione **Other** (Otros) y, a continuación, **Next** (Siguiente).

   1. (Opcional) Establezca un valor de etiqueta de descripción para la clave de acceso para agregar un par clave-valor de etiqueta a este usuario de IAM. Esto puede ayudarlo a identificar y actualizar claves de acceso más adelante. La clave de la etiqueta se establece en el ID de la clave de acceso. El valor de la etiqueta se establece en la descripción de la clave de acceso que especifique. Cuando haya terminado, seleccione **Create access key** (Crear clave de acceso).

   1. En la página **Retrieve access keys** (Recuperar claves de acceso), elija **Show** (Mostrar) para revelar el valor de la clave de acceso secreta de su usuario o **Download .csv file** (Descargar archivo .csv). Esta es su única oportunidad de guardar su clave de acceso secreta. Una vez guardada la clave de acceso secreta en un lugar seguro, seleccione **Done** (Listo).

      Cuando se crea una clave de acceso para un usuario, el par de claves se activa de forma predeterminada y el usuario puede utilizarlo inmediatamente. En este punto, el usuario tiene dos claves de acceso activas.

1. Actualice todas las aplicaciones y herramientas para utilizar la nueva clave de acceso.

1. <a name="id_credentials_access-keys-key-still-in-use"></a>Para determinar si la primera clave de acceso todavía está en uso, consulte la información **Last used** (Último uso) de la clave de acceso más antigua. Un enfoque consiste en esperar varios días y después comprobar si se ha usado la clave de acceso antigua antes de continuar.

1. Aunque la información de **Last used** (Último uso) indique que la clave antigua nunca se ha utilizado, le recomendamos que no elimine inmediatamente la primera clave de acceso. En su lugar, elija **Actions** (Acciones) y, a continuación, seleccione **Deactivate** (Desactivar) para desactivar la primera clave de acceso.

1. Utilice únicamente la clave de acceso nueva para confirmar que sus aplicaciones funcionan. Todas las aplicaciones y herramientas que sigan utilizando la clave de acceso original dejarán de funcionar en este momento, ya que ya no podrán obtener acceso a los recursos de AWS. Si encuentra una aplicación o herramienta de este tipo, puede reactivar la primera clave de acceso. A continuación, vuelva a [Step 3](#id_credentials_access-keys-key-still-in-use) y actualice esta aplicación para utilizar la nueva clave.

1. Después de esperar un tiempo para asegurarse de que todas las aplicaciones y herramientas se hayan actualizado, podrá eliminar la primera clave de acceso:

   1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. En el panel de navegación, seleccione **Users (Usuarios)**.

   1. Elija el nombre del usuario que desee y, a continuación, elija la pestaña **Security credentials (Credenciales de seguridad)**.

   1. En la sección **Access keys** (Claves de acceso) de la clave de acceso que desea eliminar, seleccione **Actions** (Acciones) y, a continuación, **Delete** (Eliminar). Siga las instrucciones del cuadro de diálogo para, en primer lugar, **Deactivate** (Desactivar) y, a continuación, confirmar la eliminación.

**Para determinar qué claves de acceso deben actualizarse o eliminarse (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Si es necesario, añada la columna **Access key age (Antigüedad de la clave de acceso)** a la tabla de usuarios ejecutando los siguientes pasos:

   1. Encima de la tabla, en el extremo derecho, elija el icono de configuración (![\[Settings icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. En **Manage columns (Administrar columnas)**, seleccione **Access key age (Antigüedad de la clave de acceso)**.

   1. Seleccione **Close (Cerrar)** para volver a la lista de usuarios.

1. La columna **Access key age (Antigüedad de la clave de acceso)** muestra el número de días que han transcurrido desde la creación de la clave de acceso activa más antigua. Puede utilizar esta información para encontrar usuarios con claves de acceso que deban actualizarse o eliminarse. La columna muestra **None (Ninguna)** cuando los usuarios no tienen clave de acceso.

## Actualización de las claves de acceso (AWS CLI)
<a name="rotating_access_keys_cli"></a>

Puede actualizar las claves de acceso desde la AWS Command Line Interface.

**Para actualizar las claves de acceso sin interrumpir sus aplicaciones (AWS CLI)**

1. Aunque la primera clave de acceso sigue activa, cree otra clave de acceso que, de forma predeterminada, está activa. Use el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

     En este punto, el usuario tiene dos claves de acceso activas.

1. <a name="step-update-apps"></a>Actualice todas las aplicaciones y herramientas para utilizar la nueva clave de acceso.

1. <a name="step-determine-use"></a>Determine si la primera clave de acceso todavía está en uso utilizando este comando:
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

   Un enfoque consiste en esperar varios días y después comprobar si se ha usado la clave de acceso antigua antes de continuar.

1. Aunque el paso [Step 3](#step-determine-use) indique que la clave antigua no se usa, le recomendamos que no elimine inmediatamente la primera clave de acceso. En su lugar, cambie el estado de la primera clave de acceso a `Inactive` utilizando este comando:
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

1. Utilice únicamente la clave de acceso nueva para confirmar que sus aplicaciones funcionan. Todas las aplicaciones y herramientas que sigan utilizando la clave de acceso original dejarán de funcionar en este momento, ya que ya no podrán obtener acceso a los recursos de AWS. Si se encuentra con una de estas aplicaciones o herramientas, puede cambiar de nuevo su estado a `Active` para volver a activar la primera clave de acceso. A continuación, vuelva al paso [Step 2](#step-update-apps) y actualice esta aplicación para utilizar la nueva clave.

1. Después de esperar un tiempo para asegurarse de que todas las aplicaciones y herramientas se hayan actualizado, podrá eliminar la primera clave de acceso con este comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

## Actualización de las claves de acceso (API de AWS)
<a name="rotating_access_keys_api"></a>

Puede actualizar las claves de acceso con la API de AWS.

**Para actualizar claves de acceso sin interrumpir sus aplicaciones (API de AWS)**

1. Aunque la primera clave de acceso sigue activa, cree otra clave de acceso que, de forma predeterminada, está activa. Llame a la operación siguiente:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)

     En este punto, el usuario tiene dos claves de acceso activas.

1. <a name="step-update-apps-2"></a>Actualice todas las aplicaciones y herramientas para utilizar la nueva clave de acceso.

1. <a name="step-determine-use-2"></a>Determine si la primera clave de acceso todavía está en uso llamando a esta operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)

   Un enfoque consiste en esperar varios días y después comprobar si se ha usado la clave de acceso antigua antes de continuar.

1. Aunque el paso [Step 3](#step-determine-use-2) indique que la clave antigua no se usa, le recomendamos que no elimine inmediatamente la primera clave de acceso. En su lugar, cambie el estado de la primera clave de acceso a `Inactive` llamando a esta operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)

1. Utilice únicamente la clave de acceso nueva para confirmar que sus aplicaciones funcionan. Todas las aplicaciones y herramientas que sigan utilizando la clave de acceso original dejarán de funcionar en este momento, ya que ya no podrán obtener acceso a los recursos de AWS. Si se encuentra con una de estas aplicaciones o herramientas, puede cambiar de nuevo su estado a `Active` para volver a activar la primera clave de acceso. A continuación, vuelva al paso [Step 2](#step-update-apps-2) y actualice esta aplicación para utilizar la nueva clave.

1. Después de esperar un tiempo para asegurarse de que todas las aplicaciones y herramientas se hayan actualizado, podrá eliminar la primera clave de acceso llamando a esta operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)

# Protección de las claves de acceso
<a name="securing_access-keys"></a>

Cualquier persona que tenga su clave de acceso disfrutará del mismo nivel de acceso a los recursos de AWS que usted. Por lo tanto, AWS adopta importantes medidas para proteger las claves de acceso y, en consonancia con nuestro [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/), también usted debería adoptarlas. 

Amplíe las siguientes secciones para obtener orientación que le permita proteger sus claves de acceso. 

**nota**  
Puede que su organización tenga políticas y requisitos de seguridad distintos de los descritos en este tema. Las sugerencias proporcionadas aquí pretenden ser directrices generales. 

## Eliminar (o no generar) claves de acceso Usuario raíz de la cuenta de AWS
<a name="root-password"></a>

**Una de las mejores formas de proteger su cuenta es no tener una clave de acceso para su Usuario raíz de la cuenta de AWS.** A menos que necesite tener una clave de acceso de usuario raíz (lo que es poco frecuente), es mejor no generarla. En su lugar, cree un usuario administrativo en AWS IAM Identity Center para las tareas administrativas diarias. Para obtener más información sobre cómo crear un usuario administrativo en IAM Identity Center, consulte [Introducción](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) en la *Guía del usuario de IAM Identity Center*.

Si ya tiene una clave de acceso de usuario raíz para su cuenta, le recomendamos hacer lo siguiente: buscar lugares en las aplicaciones donde utiliza dicha clave actualmente (si procede) y sustituir la clave de acceso de usuario raíz por una clave de acceso de usuario de IAM. Luego deshabilite y elimine la clave de acceso de usuario raíz. Para obtener más información sobre cómo actualizar claves de acceso, consulte . [Actualización de las claves de acceso](id-credentials-access-keys-update.md)



## Utilice credenciales de seguridad temporales (roles de IAM) en lugar de claves de acceso a largo plazo
<a name="use-roles"></a>

En muchos casos, no necesita claves de acceso a largo plazo que nunca caducan (como sucede con un usuario de IAM). En su lugar, puede crear roles de IAM y generar credenciales de seguridad temporales. Las credenciales de seguridad temporales se componen de un ID de clave de acceso y una clave de acceso secreta, pero, además, incluyen un token de seguridad que indica cuándo caducan las credenciales. 

Las claves de acceso a largo plazo, como las asociadas a los usuarios de IAM y al usuario raíz, siguen siendo válidas hasta que se revocan manualmente. No obstante, las credenciales de seguridad temporales obtenidas a través de roles de IAM y otras características de AWS Security Token Service caducan tras un breve periodo de tiempo. Utilice las credenciales de seguridad temporales para ayudar a reducir el riesgo en caso de se vean expuestas accidentalmente.

Utilice un rol de IAM y credenciales de seguridad temporales en las siguientes situaciones:
+ **Tiene una aplicación o scripts de AWS CLI que se ejecutan en una instancia de Amazon EC2.** No utilice claves de acceso directamente en su aplicación. No transfiera una clave de acceso a la aplicación, no la integre en la aplicación y no deje que la aplicación lea claves de cualquier origen. En cambio, defina un rol de IAM que tenga los permisos adecuados para su aplicación y lance la instancia Amazon Elastic Compute Cloud (Amazon EC2) con [roles para EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html). Al hacerlo, se asocia un rol de IAM a la instancia de Amazon EC2. Esta práctica también habilita a la aplicación para obtener credenciales de seguridad temporales que, a su vez, puede usar para realizar llamadas mediante programación a AWS. AWS SDK y AWS Command Line Interface (AWS CLI) pueden obtener credenciales temporales del rol automáticamente. 
+ **Debe conceder acceso entre cuentas.** Utilice un rol de IAM para establecer la confianza entre cuentas y, a continuación, conceder a los usuarios de una cuenta permisos limitados para acceder a la cuenta de confianza. Para obtener más información, consulte [Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM](tutorial_cross-account-with-roles.md).
+ **Tiene una aplicación móvil.** No integre una clave de acceso en la aplicación, ni siquiera en el almacenamiento cifrado. En su lugar, utilice [Amazon Cognito](https://aws.amazon.com/cognito/) para administrar identidades de los usuarios en su aplicación. Este servicio permite autenticar a los usuarios mediante Login with Amazon, Facebook, Google o cualquier proveedor de identidad compatible con OpenID Connect (OIDC). A continuación, puede utilizar el proveedor de credenciales de Amazon Cognito a fin de administrar las credenciales que la aplicación utiliza para realizar solicitudes a AWS.
+ **Desea utilizar la federación en AWS y su organización admite SAML 2.0.** Si trabaja para una organización que tiene un proveedor de identidad compatible con SAML 2.0, configure el proveedor para que use SAML. Puede utilizar SAML para intercambiar información de autenticación con AWS y recuperar un conjunto de credenciales de seguridad temporales. Para obtener más información, consulte [Federación SAML 2.0](id_roles_providers_saml.md).
+ **Desea utilizar la federación en AWS y su organización tiene un almacén de identidades local.** Si los usuarios pueden autenticarse dentro de su organización, puede escribir una aplicación que emita credenciales de seguridad temporales para obtener acceso a los recursos de AWS. Para obtener más información, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).
+ **Utilice las condiciones de las políticas de IAM para permitir el acceso únicamente desde las redes previstas.** Puede limitar dónde y cómo se utilizan sus claves de acceso mediante la implementación de [políticas de IAM con condiciones](reference_policies_elements_condition_operators.md) que especifiquen y permitan únicamente las redes previstas, como sus direcciones IP públicas o sus nubes privadas virtuales (VPC). De esta forma, sabrá que las claves de acceso solo se pueden usar en las redes previstas y aceptables. 

**nota**  
¿Está utilizando una instancia de Amazon EC2 con una aplicación que requiere acceso a los recursos de AWS? Si es así, utilice [roles de IAM para EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html).

## Administración correcta de las claves de acceso de usuario de IAM
<a name="iam-user-access-keys"></a>

Si debe crear claves de acceso para el acceso mediante programación a AWS, créelas para los usuarios de IAM y conceda a los usuarios solo los permisos que necesitan.

Tenga en cuenta estas precauciones para ayudar a proteger las claves de acceso de usuario de IAM:
+ **No integre las claves de acceso directamente en el código.** Los [AWS SDK](https://aws.amazon.com/tools/#sdk) de y las [Herramientas de línea de comandos de AWS](https://aws.amazon.com/tools/#cli) le permiten colocar las claves de acceso en ubicaciones conocidas para que no tenga que mantenerlas en código. 

  Ponga las claves de acceso en una de las siguientes ubicaciones:
  + **El archivo de credenciales de AWS.** Los SDK de AWS y la AWS CLI utilizan automáticamente las credenciales que se guardan en el archivo de credenciales de AWS. 

    Para obtener información acerca de cómo utilizar el archivo de credenciales de AWS, consulte la documentación del SDK. Los ejemplos incluyen [Conjunto de AWS credenciales y región](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) en la *Guía de desarrollo de AWS SDK para Java* y[ Archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) en la *Guía del usuario de AWS Command Line Interface*.

    Para almacenar las credenciales para AWS SDK para .NET y AWS Tools for Windows PowerShell, recomendamos utilizar la tienda del SDK. Para obtener más información, consulte [Uso de la tienda del SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html) en la *Guía de desarrollo de AWS SDK para .NET*.
  + **Variables de entorno.** En un sistema multitenencia, opte por las variables de entorno de usuario, en lugar de las variables de entorno de sistema. 

    Para obtener más información acerca de cómo utilizar las variables de entorno para almacenar credenciales, consulte [Variables de entorno](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) en la *Guía del usuario de AWS Command Line Interface*. 
+ **Utilice claves de acceso distintas para las diferentes aplicaciones.** Hacer esto le permitirá aislar los permisos y revocar las claves de acceso para aplicaciones individuales si se ven expuesta. Tener claves de acceso separadas para diferentes aplicaciones también genera entradas distintas en los archivos de registro de [AWS CloudTrail](https://aws.amazon.com/cloudtrail/). Esta configuración hace más sencillo determinar qué aplicación realizó acciones concretas. 
+ **Actualice las claves de acceso cuando sea necesario.** Si existe el riesgo de que la clave de acceso se vea comprometida, actualícela y elimine la anterior. Para obtener más información, consulte [Actualización de las claves de acceso](id-credentials-access-keys-update.md) 
+ **Elimine las claves de acceso no utilizadas.** Si un usuario deja la organización, elimine el usuario de IAM correspondiente, de tal forma que ya no pueda obtener acceso a los recursos. Para saber cuándo se utilizó por última vez una clave de acceso, utilice la API [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) (comando de AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)).
+ **Utilice las credenciales temporales y configure la autenticación multifactor para las operaciones de API más confidenciales.** Con las políticas de IAM, puede especificar qué operaciones de API puede llamar un usuario. En algunos casos, es posible que quiera la seguridad adicional de exigir a los usuarios que se autentiquen con MFA de AWS antes de permitirles llevar a cabo acciones especialmente confidenciales. Por ejemplo, es posible que tenga una política que permita a un usuario realizar las acciones de Amazon EC2 `RunInstances`, `DescribeInstances` y de `StopInstances`. Sin embargo, es posible que quiera restringir una acción destructiva, como `TerminateInstances` y asegurarse de que los usuarios solo pueden realizar esta acción si se autentican mediante un dispositivo MFA de AWS. Para obtener más información, consulte [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md).

## Acceder a la aplicación móvil usando claves de acceso de AWS
<a name="access-keys-mobile-app"></a>

Puede acceder a un conjunto limitado de servicios y características de AWS mediante la aplicación móvil de AWS. La aplicación móvil le permite dar soporte a la respuesta frente a incidentes mientras está en movimiento. Para obtener más información y descargar la aplicación, consulte [Aplicación móvil de la consola de AWS](https://aws.amazon.com/console/mobile/).

Puede iniciar sesión en la aplicación móvil con la contraseña de la consola o las claves de acceso. Como práctica recomendada, no utilice las clave de acceso de usuario raíz. En su lugar, le recomendamos encarecidamente que, además de utilizar una contraseña o un bloqueo biométrico en su dispositivo móvil, cree un usuario de IAM específicamente para administrar los recursos de AWS mediante la aplicación móvil. Si pierde su dispositivo móvil, puede eliminar el acceso del usuario de IAM.

**Para iniciar sesión con las teclas de acceso (aplicación móvil)**

1. Abra la aplicación en su dispositivo móvil.

1. Si es la primera vez que agrega una identidad al dispositivo, elija **Add an identity (Agregar una identidad)** y, a continuación, elija **Access keys (Teclas de acceso)**.

   Si ya ha iniciado sesión con otra identidad, elija el icono de menú y elija **Switch identity (Cambiar identidad)**. A continuación, elija **Sign in as a different identity (Iniciar sesión con una identidad diferente)** y, a continuación, **Access keys (Teclas de acceso)**.

1. En la página **Access keys (Claves de acceso)** introduzca su información:
   + **ID de clave de acceso**: introduzca el ID de clave de acceso.
   + **Clave de acceso secreta**: introduzca la clave de acceso secreta.
   + **Nombre de identidad**: introduzca el nombre de la identidad que aparecerá en la aplicación móvil. No es necesario que coincida con su nombre de usuario de IAM.
   + **PIN de identidad**: cree un número de identificación personal (PIN) que utilizará en los futuros inicios de sesión.
**nota**  
Si habilita la biometría para la aplicación móvil de AWS, se le pedirá que utilice su huella digital o reconocimiento facial para la verificación en lugar del PIN. Si la biometría falla, es posible que se le pida el PIN en su lugar.

1. Elija **Verify and add keys (Verificar y agregue claves)**.

   Ahora puede acceder a un conjunto selecto de sus recursos mediante la aplicación móvil.

## Información relacionada
<a name="more-resources"></a>

En las siguientes secciones, se proporciona información sobre cómo configurar los AWS SDK y la AWS CLI para utilizar claves de acceso:
+ [Conjunto de AWS credenciales y región](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) en la *Guía para desarrolladores de AWS SDK para Java*
+ [Uso de la tienda del SDK](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html) en la *Guía para desarrolladores de AWS SDK para .NET*.
+ [Proporcione credenciales al SDK](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/credentials.html) en la *Guía para desarrolladores de AWS SDK para PHP*.
+ [Configuración](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) en la documentación de Boto 3 (AWS SDK para Python).
+ [Using AWS Credentials](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) en la *Guía del usuario de AWS Tools for Windows PowerShell* 
+ [Archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) en la *Guía del usuario de AWS Command Line Interface*. 
+ [Conceder acceso mediante un rol de IAM](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) en la Guía *AWS SDK para .NETpara desarrolladores*
+ [Configure los roles de IAM para Amazon EC2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) en el *AWS SDK for Java 2.x*

## Uso de las credenciales de clave de acceso y de clave secreta para el acceso a la consola
<a name="console-access-security-keys"></a>

Es posible utilizar las credenciales de clave de acceso y de clave secreta para el acceso directo a la Consola de administración de AWS, no solo la AWS CLI. Esto se puede lograr mediante la llamada a la API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) AWS STS. Al crear una URL de consola con las credenciales y el token temporales proporcionados por `GetFederationToken`, las entidades principales de IAM pueden acceder a la consola. Para obtener más información, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).

Vale la pena aclarar que al iniciar sesión en la consola directamente con credenciales de usuario raíz o de IAM con la MFA habilitada, se requerirá la MFA. Sin embargo, si se utiliza el método descrito anteriormente (usar credenciales temporales con `GetFederationToken`), NO se requerirá la MFA.



## Auditoría de las claves de acceso
<a name="Using_access-keys-audit"></a>

Puede revisar las claves de acceso de AWS en su código para determinar si las claves proceden de una cuenta de su propiedad. Puede transferir un ID de clave de acceso mediante el comando [https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html) de la AWS CLI o la operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html) de la API de AWS.

Las operaciones de AWS CLI y de la API de AWS devuelven el ID de la cuenta de Cuenta de AWS a la que pertenece la clave de acceso. Los ID de clave de acceso que comienzan por `AKIA` son credenciales a largo plazo para un usuario de IAM o un Usuario raíz de la cuenta de AWS. Los ID de clave de acceso que comienzan por `ASIA` son credenciales temporales que se crean mediante operaciones de AWS STS. Si la cuenta de la respuesta le pertenece, puede iniciar sesión como usuario raíz y revisar las claves de acceso de usuario raíz. A continuación, puede extraer un [informe de credenciales](id_credentials_getting-report.md) para saber qué usuario de IAM es el propietario de las claves. Para saber quién solicitó las credenciales temporales para una clave de acceso `ASIA`, consulte los eventos de AWS STS en los registros de CloudTrail.

Por motivos de seguridad, puede [revisar los registros de AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quién realizó una acción en AWS. Puede utilizar la clave de condición de `sts:SourceIdentity` en la política de confianza de rol para exigir a los usuarios que especifiquen una identidad cuando asuman un rol. Por ejemplo, puede requerir que los usuarios de IAM especifiquen su propio nombre de usuario como su identidad de origen. Esto puede permitirle determinar qué usuario hizo una acción específica en AWS. Para obtener más información, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity).

Esta operación no indica el estado de la clave de acceso. La clave podría estar activa, inactiva o eliminada. Es posible que las claves activas no tengan permisos para realizar una operación. Proporcionar una clave de acceso eliminada podría devolver un error que indicara que la clave no existe.

# Autenticación multifactor de AWS en IAM
<a name="id_credentials_mfa"></a>

Para más seguridad, le recomendamos que configure la autenticación multifactor (MFA) para ayudar a proteger sus recursos de AWS. Puede habilitar la MFA para Usuario raíz de la cuenta de AWS de todas las Cuentas de AWS, incluidas las cuentas independientes, las cuentas de administración y las cuentas miembro, así como para sus usuarios de IAM. Recomendamos, en lo posible, utilizar la MFA resistente al phishing, como las claves de paso y de seguridad. Estos autenticadores basados en FIDO utilizan criptografía de clave pública y son resistentes al phishing, a los ataques de intermediarios y a los de repetición, por lo que ofrecen un mayor nivel de seguridad que las opciones basadas en TOTP.

La MFA se aplica a todos los tipos de cuentas para su usuario raíz. Para obtener más información, consulte [Protección de sus credenciales de usuario raíz de la cuenta de AWS Organizations](root-user-best-practices.md#ru-bp-organizations). 

Cuando habilita MFA para el usuario raíz, esto solo afecta a las credenciales del usuario raíz. Los usuarios de IAM de la cuenta son identidades diferenciadas que tienen sus propias credenciales, y cada identidad tiene su propia configuración de MFA. Para obtener más información sobre cómo usar la MFA para proteger al usuario raíz, consulte [Autenticación multifactor para Usuario raíz de la cuenta de AWS](enable-mfa-for-root.md).

Los usuarios de IAM y Usuario raíz de la cuenta de AWS pueden registrar hasta ocho dispositivos de MFA de cualquier tipo. El registro de varios dispositivos de MFA puede proporcionar flexibilidad y ayudarlo a reducir el riesgo de interrupción del acceso en caso de pérdida o rotura de un dispositivo. Solo necesita un dispositivo de MFA para iniciar sesión en la Consola de administración de AWS o crear una sesión a través de la AWS CLI.

**nota**  
Se recomienda exigir a los usuarios humanos que utilicen credenciales temporales cuando accedan a AWS. ¿Ha considerado la posibilidad de usar AWS IAM Identity Center? Puede usar IAM Identity Center para administrar de forma centralizada el acceso a múltiples Cuentas de AWS y proporcionar a los usuarios un acceso protegido por MFA y de inicio de sesión único a todas sus cuentas asignadas desde un solo lugar. Con IAM Identity Center, puede crear y administrar identidades de usuario en IAM Identity Center o conectarse fácilmente a su proveedor de identidades existente compatible con SAML 2.0. Para obtener más información, consulte [¿Qué es el Centro de identidades de IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) en la *Guía del usuario de AWS IAM Identity Center*.

La MFA aporta seguridad adicional que exige a los usuarios que proporcionen una autenticación exclusiva obtenida de un mecanismo de MFA admitido de AWS, además de las credenciales de inicio de sesión cuando se accede a sitios web o servicios de AWS.

## Tipos de MFA
<a name="id_credentials_mfa-types"></a>

AWS admite los siguientes tipos de MFA:

**Contents**
+ [

### Claves de acceso y claves de seguridad
](#passkeys-security-keys-for-iam-users)
+ [

### Aplicaciones de autenticador virtual
](#virtual-auth-apps-for-iam-users)
+ [

### Tokens TOTP físicos
](#hardware-totp-token-for-iam-users)

### Claves de acceso y claves de seguridad
<a name="passkeys-security-keys-for-iam-users"></a>

AWS Identity and Access Management admite claves de acceso y claves de seguridad para MFA. Según los estándares FIDO, las claves de acceso utilizan la criptografía de clave pública para proporcionar una autenticación sólida y resistente a la suplantación de identidad que es más segura que las contraseñas. AWS admite dos tipos de claves de acceso: claves de acceso vinculadas al dispositivo (claves de seguridad) y claves de acceso sincronizadas.
+ **Claves de seguridad**: son dispositivos físicos, como una YubiKey, que se utilizan como segundo factor de autenticación. Una sola clave de seguridad puede admitir varias cuentas de usuario raíz y usuarios de IAM.
+ **Claves de acceso sincronizadas**: utilizan administradores de credenciales de proveedores como Google, Apple, cuentas de Microsoft y servicios de terceros como 1Password, Dashlane y Bitwarden como segundo factor.

Puede utilizar autenticadores biométricos integrados, como Touch ID en los MacBooks de Apple, para desbloquear el administrador de credenciales e iniciar sesión en AWS. Las claves de acceso se crean con el proveedor que elija mediante su huella digital, su rostro o el PIN del dispositivo. También puede utilizar una clave de acceso de autenticación entre dispositivos (CDA) de un dispositivo, como un dispositivo móvil o una clave de seguridad de hardware, para iniciar sesión en otro dispositivo, como una computadora portátil. Para obtener más información, consulte [cross-device authentication](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda) (CDA).

Puede sincronizar las claves de acceso entre sus dispositivos para facilitar el inicio de sesión con AWS y mejorar la usabilidad y la capacidad de recuperación. Para obtener más información acerca de la habilitación de las claves de acceso y las claves de seguridad, consulte [Habilitación de una clave de acceso o clave de seguridad para el usuario raíz (consola)](enable-fido-mfa-for-root.md).

FIDO Alliance mantiene una lista de todos los [productos certificados por FIDO](https://fidoalliance.org/certification/fido-certified-products/) que son compatibles con las especificaciones de FIDO.

### Aplicaciones de autenticador virtual
<a name="virtual-auth-apps-for-iam-users"></a>

Una aplicación de autenticador virtual se ejecuta en un teléfono u otro dispositivo y emula un dispositivo físico. Las aplicaciones de autenticación virtual aplican el algoritmo de [contraseña temporal de un solo uso](https://datatracker.ietf.org/doc/html/rfc6238) (TOTP) y admiten varios tokens en un mismo dispositivo. El usuario debe escribir un código válido del dispositivo cuando se le solicite durante el proceso de inicio de sesión. Cada token asignado a un usuario debe ser único. Un usuario no puede escribir un código desde el token de otro usuario para la autenticación.

Recomendamos utilizar MFA resistentes al phishing, [como las claves de paso o de seguridad](#passkeys-security-keys-for-iam-users), para obtener la máxima protección. Si aún no puede utilizar las claves de paso o de seguridad, recomendamos que utilice un dispositivo MFA virtual mientras espera la aprobación de la compra de hardware o su llegada. Para ver una lista de algunas aplicaciones compatibles que puede utilizar como dispositivos de MFA virtuales, consulte [Autenticación multifactor (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1).

Para obtener instrucciones acerca de cómo configurar un dispositivo de MFA virtual para un usuario de IAM, consulte [Asignación de un dispositivo de MFA virtual en la Consola de administración de AWS](id_credentials_mfa_enable_virtual.md).

**nota**  
Los dispositivos MFA virtuales no asignados en su Cuenta de AWS se eliminan al agregar nuevos dispositivos MFA virtuales a través de la Consola de administración de AWS o mediante el proceso de inicio de sesión. Los dispositivos MFA virtuales no asignados son dispositivos de su cuenta, pero que el usuario raíz de la cuenta o los usuarios de IAM no utilizan para el proceso de inicio de sesión. Se eliminan para poder agregar nuevos dispositivos MFA virtuales a su cuenta. También le permite reutilizar los nombres de los dispositivos.  
Para ver los dispositivos MFA virtuales no asignados en su cuenta, puede usar el comando [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI o una llamada a la [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html).
Para desactivar un dispositivo MFA virtual, puede utilizar el comando [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI o una llamada a la [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). El dispositivo dejará de estar asignado.
Para conectar un dispositivo MFA virtual no asignado al usuario raíz o los usuarios de IAM de su Cuenta de AWS, necesitará el código de autenticación generado por el dispositivo junto con el comando [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) AWS CLI o la llamada a la [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html).

### Tokens TOTP físicos
<a name="hardware-totp-token-for-iam-users"></a>

Un dispositivo de hardware genera un código numérico de seis dígitos basado en el [algoritmo de contraseña temporal de un solo uso (TOTP)](https://datatracker.ietf.org/doc/html/rfc6238). El usuario debe escribir un código válido del dispositivo en otra página web durante el inicio de sesión.

Estos tokens se utilizan exclusivamente con Cuentas de AWS. Solo se pueden utilizar tokens que posean sus propias semillas de token que estén compartidas de manera secura con AWS. Las semillas de token son claves secretas que se generan en el momento de la producción de los tokens. Los tokens comprados en otras fuentes no funcionarán con IAM. Para garantizar la compatibilidad, debe comprar su dispositivo MFA de hardware en uno de los siguientes enlaces: [token OTP](https://www.amazon.com/SafeNet-IDProve-Time-based-6-Digit-Services/dp/B002CRN5X8) o [tarjeta de pantalla OTP](https://www.amazon.com/SafeNet-IDProve-Card-Amazon-Services/dp/B00J4NGUO4).
+ Cada dispositivo MFA asignado a un usuario debe ser único. Un usuario no puede escribir un código desde el dispositivo de otro usuario para la autenticación. Para obtener más información sobre los dispositivos MFA físicos admitidos, consulte [Autenticación multifactor (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1).
+ Si desea utilizar un dispositivo de MFA físico, le recomendamos que utilice las claves de seguridad como una alternativa a los dispositivos TOTP físicos. Las claves de seguridad no requieren batería, son eficaces ante intentos de suplantación de identidad y admiten varios usuarios en un solo dispositivo.

Solo puede habilitar una clave de acceso o clave de seguridad desde la Consola de administración de AWS, no desde la AWS CLI ni desde la API de AWS. Para poder habilitar una clave de seguridad, debe tener acceso físico al dispositivo.

Para obtener instrucciones sobre cómo configurar un token TOTP físico para un usuario de IAM, consulte [Asignación de un token de TOTP de hardware en la Consola de administración de AWS](id_credentials_mfa_enable_physical.md).

**nota**  
**MFA basada en mensaje de texto SMS**: AWS finalizó la compatibilidad con la habilitación de la autenticación multifactor (MFA) por SMS. Recomendamos a los clientes que tienen usuarios de IAM que utilizan la MFA basada en mensajes de texto SMS que cambien a uno de los siguientes métodos alternativos: [clave de acceso o clave de seguridad](id_credentials_mfa_enable_fido.md), [dispositivo MFA virtual (basado en software)](id_credentials_mfa_enable_virtual.md) o [dispositivo MFA físico](id_credentials_mfa_enable_physical.md). Puede identificar a los usuarios de su cuenta con un dispositivo MFA de SMS asignado. En la consola de IAM, seleccione **Usuarios** en el panel de navegación y busque usuarios con **SMS** en la columna **MFA** de la tabla.

## Recomendaciones de MFA
<a name="id_credentials_mfa-recommendations"></a>

Para ayudar a proteger sus identidades de AWS, siga estas recomendaciones para la autenticación MFA. 
+ Recomendamos utilizar MFA resistentes al phishing, como las [claves de paso y de seguridad](#passkeys-security-keys-for-iam-users), como dispositivo de MFA. Los autenticadores basados en FIDO brindan la mejor protección contra ataques como el phishing.
+ Le recomendamos que habilite varios dispositivos MFA para el Usuario raíz de la cuenta de AWS y los usuarios de IAM en las Cuentas de AWS. Esto le permite subir el nivel de seguridad de sus Cuentas de AWS y simplificar la administración de acceso a usuarios con privilegios elevados, como el Usuario raíz de la cuenta de AWS.
+ Puede registrar hasta **ocho** dispositivos MFA de cualquier combinación de los [tipos de MFA admitidos actualmente](https://aws.amazon.com/iam/features/mfa/) con el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Con varios dispositivos MFA, solo necesita un dispositivo MFA para iniciar sesión en la Consola de administración de AWS o crear una sesión a través de AWS CLI como ese usuario. Un usuario de IAM debe autenticarse con un dispositivo de MFA existente para habilitar o deshabilitar un dispositivo de MFA adicional.
+ En caso de pérdida, robo o inaccesibilidad de un dispositivo MFA, puede utilizar uno de los dispositivos MFA restantes para acceder a la Cuenta de AWS sin seguir el procedimiento de recuperación de Cuenta de AWS. En caso de pérdida o robo de un dispositivo MFA, este debe disociarse del principal de IAM al que está asociado.
+ El uso de varios MFA permite que sus empleados que se encuentren en ubicaciones geográficamente dispersas o que trabajen de forma remota utilicen MFA basado en hardware para acceder a AWS sin necesidad de coordinar un intercambio físico de un único dispositivo de hardware entre empleados.
+ El uso de dispositivos MFA adicionales para los directores de IAM permite utilizar uno o más MFA para el uso diario y, al mismo tiempo, mantener los dispositivos MFA físicos en una ubicación física segura, como una bóveda o una caja fuerte para realizar copias de seguridad y redundancia.

**Notas**  
No se puede pasar la información del MFA de una clave de seguridad o de paso a las operaciones de la API de AWS STS para solicitar credenciales temporales. Obtenga credenciales para utilizarlas con la AWS CLI y los SDK de AWS cuando use una clave de seguridad o de paso ejecutando el comando `aws login`.
No puede utilizar los comandos de la AWS CLI ni operaciones de la API de AWS para activar [FIDO security keys](id_credentials_mfa_enable_fido.md) (Claves de seguridad FIDO).
No puede utilizar el mismo nombre para más de un usuario raíz o dispositivo MFA de IAM.

## Recursos adicionales
<a name="id_credentials_mfa-resources"></a>

Los siguientes recursos pueden ayudarle a obtener más información sobra MFA.
+ Para obtener más información sobre el uso de MFA para acceder a AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md).
+  Puede aprovechar IAM Identity Center para activar el acceso seguro de MFA al portal de acceso de AWS, a las aplicaciones integradas de IAM Identity Center y a la AWS CLI. Para obtener más información, consulte [Habilitar la MFA en IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/mfa-getting-started.html).

# Asignación de una clave de acceso o de seguridad en la Consola de administración de AWS
<a name="id_credentials_mfa_enable_fido"></a>

Las claves de acceso son un tipo de [dispositivo de autenticación multifactor (MFA)](id_credentials_mfa.md) que puede utilizar para proteger sus recursos de AWS. AWS admite claves de acceso sincronizadas y claves de acceso vinculadas al dispositivo, también conocidas como claves de seguridad. 

Las claves de acceso sincronizadas le permiten a los usuarios de IAM acceder a sus credenciales de inicio de sesión de FIDO en muchos de sus dispositivos, incluso en los nuevos, sin tener que volver a inscribir todos los dispositivos en cada cuenta. Las claves de acceso sincronizadas incluyen administradores de credenciales propios, como Google, Apple y Microsoft, y administradores de credenciales de terceros, como 1Password, Dashlane y Bitwarden, como segundo factor. También puede utilizar la tecnología biométrica en el dispositivo (por ejemplo, TouchID, FaceID) para desbloquear el administrador de credenciales elegido para utilizar contraseñas. 

Como alternativa, las claves de acceso vinculadas al dispositivo están vinculadas a una clave de seguridad FIDO que se conecta a un puerto USB de su computadora y, a continuación, se pulsa cuando se le solicite para completar el proceso de inicio de sesión de forma segura. Si ya utiliza una clave de seguridad FIDO con otros servicios y tiene una [configuración compatible con AWS](id_credentials_mfa_fido_supported_configurations.md) (por ejemplo, YubiKey 5 Series de Yubico), también puede utilizarla con AWS. De lo contrario, deberá adquirir una clave de seguridad FIDO si desea utilizar WebAuthn para MFA en AWS. Además, las llaves de seguridad FIDO con compatibles con varios usuarios raíz o de IAM en el mismo dispositivo, lo que mejora su utilidad para la seguridad de las cuentas. Para obtener información sobre las especificaciones y opciones de compra de ambos tipos de dispositivo, consulte [Autenticación multifactor](https://aws.amazon.com/iam/details/mfa/).

Puede registrar hasta **ocho** dispositivos MFA de cualquier combinación de los [tipos de MFA admitidos actualmente](https://aws.amazon.com/iam/features/mfa/) con el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Con varios dispositivos MFA, solo necesita un dispositivo MFA para iniciar sesión en la Consola de administración de AWS o crear una sesión a través de AWS CLI como ese usuario. Le recomendamos que registre varios dispositivos MFA. Por ejemplo, puede registrar un autenticador integrado y también una clave de seguridad que guarde en un lugar físico seguro. Si no puede utilizar el autenticador integrado, puede utilizar su clave de seguridad registrada. Para las aplicaciones de autenticación, también recomendamos activar la copia de seguridad en la nube o la característica de sincronización en esas aplicaciones para evitar perder el acceso a la cuenta si pierde o se rompe el dispositivo que contiene las aplicaciones de autenticación.

**nota**  
Se recomienda exigir a los usuarios humanos que utilicen credenciales temporales cuando accedan a AWS. Sus usuarios pueden federarse en AWS con un proveedor de identidades donde se autentican con sus credenciales corporativas y configuraciones MFA. Para administrar el acceso a AWS y a las aplicaciones empresariales, le recomendamos que utilice IAM Identity Center. Para obtener más información, consulte la [Guía del usuario del IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html). 

**Topics**
+ [

## Permisos necesarios
](#enable-fido-mfa-for-iam-user-permissions-required)
+ [

## Habilitación de una clave de acceso o clave de seguridad para su propio usuario de IAM (consola)
](#enable-fido-mfa-for-own-iam-user)
+ [

## Habilitación de una clave de acceso o clave de seguridad para otro usuario de IAM (consola)
](#enable-fido-mfa-for-iam-user)
+ [

## Sustitución de una clave de acceso o clave de seguridad
](#replace-fido-mfa)
+ [

# Configuraciones admitidas para usar las claves de acceso y las claves de seguridad
](id_credentials_mfa_fido_supported_configurations.md)

## Permisos necesarios
<a name="enable-fido-mfa-for-iam-user-permissions-required"></a>

Para administrar una clave de acceso FIDO para su propio usuario de IAM mientras protege las acciones confidenciales relacionadas con MFA, debe tener los permisos de la siguiente política:

**nota**  
Los valores de ARN son valores estáticos y no son un indicador de qué protocolo se utilizó para registrar el autenticador. El protocolo U2F está obsoleto, por lo que todas las nuevas implementaciones utilizan WebAuthn.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Habilitación de una clave de acceso o clave de seguridad para su propio usuario de IAM (consola)
<a name="enable-fido-mfa-for-own-iam-user"></a>

Solo puede habilitar una clave de acceso o clave de seguridad para su propio usuario de IAM desde la Consola de administración de AWS, no desde la AWS CLI ni desde la API de AWS. Para poder habilitar una clave de seguridad, debe tener acceso físico al dispositivo.

**Cómo habilitar una clave de acceso o clave de seguridad para su propio usuario de IAM (consola)**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la página del usuario de IAM seleccionado, elija la pestaña **Credenciales de seguridad**.

1. En **autenticación multifactor (MFA)**, seleccione **Asignar dispositivo MFA**.

1. En la página de **Nombres del dispositivo de MFA**, introduzca un **Nombre de dispositivo**, elija **Clave de acceso o Clave de seguridad** y, a continuación, elija **Siguiente**.

1. En **Configurar dispositivo**, configure su clave de acceso. Cree una clave de acceso con datos biométricos, como su rostro o huella digital, con el PIN del dispositivo o al insertar la clave de seguridad FIDO en el puerto USB de la computadora y al pulsarla.

1. Siga las instrucciones de su navegador y, a continuación, seleccione **Continuar**.

Ya ha registrado su clave de acceso o clave de seguridad para utilizarla con AWS. Para obtener más información sobre el uso de MFA con la Consola de administración de AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md). 

## Habilitación de una clave de acceso o clave de seguridad para otro usuario de IAM (consola)
<a name="enable-fido-mfa-for-iam-user"></a>

Solo puede habilitar una clave de acceso o clave de seguridad para otro usuario de IAM desde la Consola de administración de AWS, no desde la AWS CLI ni desde la API de AWS.

**Cómo habilitar una clave de acceso o clave de seguridad para otro usuario de IAM (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Users (Usuarios)**.

1. En **Usuarios**, elija el nombre del usuario para el que desea activar la MFA.

1. En la página del usuario de IAM seleccionado, elija la pestaña **Credenciales de seguridad**. 

1. En **autenticación multifactor (MFA)**, seleccione **Asignar dispositivo MFA**.

1. En la página de **Nombres del dispositivo de MFA**, introduzca un **Nombre de dispositivo**, elija **Clave de acceso o Clave de seguridad** y, a continuación, elija **Siguiente**.

1. En **Configurar dispositivo**, configure su clave de acceso. Cree una clave de acceso con datos biométricos, como su rostro o huella digital, con el PIN del dispositivo o al insertar la clave de seguridad FIDO en el puerto USB de la computadora y al pulsarla.

1. Siga las instrucciones de su navegador y, a continuación, seleccione **Continuar**.

Ya ha registrado una clave de acceso o clave de seguridad para que la utilice otro usuario de IAM con AWS. Para obtener más información sobre el uso de MFA con la Consola de administración de AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md).

## Sustitución de una clave de acceso o clave de seguridad
<a name="replace-fido-mfa"></a>

Puede tener hasta ocho dispositivos de MFA de cualquier combinación de los [tipos de MFA admitidos actualmente](https://aws.amazon.com/iam/features/mfa/) asignados a un usuario a la vez con el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Si el usuario pierde un autenticador FIDO o necesita sustituirlo por cualquier motivo, antes debe desactivar el autenticador FIDO antiguo. Después, puede añadir un nuevo dispositivo MFA para el usuario.
+ Para desactivar el dispositivo que tenga asociado actualmente a otro usuario de IAM, consulte [Desactivación de un dispositivo MFA](id_credentials_mfa_disable.md).
+ Para agregar una nueva clave de seguridad FIDO para un usuario de IAM, consulte [Habilitación de una clave de acceso o clave de seguridad para su propio usuario de IAM (consola)](#enable-fido-mfa-for-own-iam-user).

Si no tiene acceso a una nueva clave de acceso o clave de seguridad, puede habilitar un nuevo dispositivo MFA virtual o token TOTP físico. Consulte una de las siguientes opciones para obtener instrucciones:
+ [Asignación de un dispositivo de MFA virtual en la Consola de administración de AWS](id_credentials_mfa_enable_virtual.md) 
+ [Asignación de un token de TOTP de hardware en la Consola de administración de AWS](id_credentials_mfa_enable_physical.md) 

# Configuraciones admitidas para usar las claves de acceso y las claves de seguridad
<a name="id_credentials_mfa_fido_supported_configurations"></a>

Puede utilizar las claves de acceso de FIDO2 vinculadas al dispositivo, también conocidas como claves de seguridad, como un método de autenticación multifactor (MFA) con IAM mediante el uso de las configuraciones admitidas actualmente. Entre ellos, se encuentran los dispositivos FIDO2 admitidos por IAM y los navegadores que con compatibles con FIDO2. Antes de registrar su dispositivo FIDO2, compruebe que esté utilizando la última versión del navegador y del sistema operativo (SO). Las funciones pueden comportarse de forma diferente en los distintos navegadores, autenticadores y clientes del sistema operativo. Si el registro del dispositivo falla en un navegador, puede intentar registrarse en otro navegador. 

FIDO2 es un estándar de autenticación abierto y una extensión de FIDO U2F, que ofrece el mismo alto nivel de seguridad basado en la criptografía de clave pública. FIDO2 se compone de la especificación de autenticación web del W3C (WebAuthn API) y del Protocolo de cliente a autenticador (CTAP) de FIDO Alliance, un protocolo de capa de aplicación. El CTAP permite la comunicación entre el cliente o la plataforma, como un navegador o un sistema operativo, con un autenticador externo. Cuando se habilita un autenticador certificado FIDO en AWS, la clave de seguridad crea un nuevo par de claves para utilizarlo solo con AWS. En primer lugar, introduzca sus credenciales. Cuando se le solicite, pulse en la clave de seguridad, que responde a la solicitud de verificación de autenticación emitida por AWS. Para obtener más información sobre el estándar FIDO2, consulte [FIDO2 Project](https://en.wikipedia.org/wiki/FIDO2_Project) (Proyecto FIDO2).

## Dispositivos FIDO2 compatibles con AWS
<a name="id_credentials_mfa_fido_supported_devices"></a>

IAM es compatible con dispositivos de seguridad FIDO2 que se conectan a sus dispositivos a través de USB, Bluetooth o NFC. IAM también admite autenticadores de plataforma como TouchID o FaceID. IAM no admite el registro de contraseña local para Windows Hello. Para crear y utilizar contraseñas, los usuarios de Windows deben utilizar la [autenticación entre dispositivos](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda), en la que se utiliza una contraseña de un dispositivo, como un dispositivo móvil o una clave de seguridad de hardware, para iniciar sesión en otro dispositivo, como un portátil.

**nota**  
AWS requiere acceso al puerto USB físico en el equipo para verificar su dispositivo FIDO2. Las claves de seguridad no funcionan con máquinas virtuales, conexiones remotas o en el modo incógnito de un navegador.

FIDO Alliance mantiene una lista de todos los [productos FIDO2](https://fidoalliance.org/certification/fido-certified-products/) que son compatibles con las especificaciones de FIDO.

## Navegadores compatibles con FIDO2
<a name="id_credentials_mfa_fido_browsers"></a>

La disponibilidad de los dispositivos de seguridad FIDO2 que se ejecutan en un navegador web depende de la combinación del navegador y el sistema operativo. En la actualidad, los siguientes navegadores admiten el uso de claves de seguridad:


****  

| Navegador web | macOS 10.15\$1 | Windows 10 | Linux | iOS 14.5\$1 | Android 7\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Chrome | Sí | Sí | Sí | Sí | No | 
| Safari | Sí | No | No | Sí | No | 
| Edge | Sí | Sí | No | Sí | No | 
| Firefox | Sí | Sí | No | Sí | No | 

**nota**  
La mayoría de las versiones de Firefox que actualmente admiten FIDO2 no lo hacen de forma predeterminada. Para obtener instrucciones sobre la habilitación de FIDO2 en Firefox, consulte [Solucionar problemas con claves de acceso y claves de seguridad FIDO](troubleshoot_mfa-fido.md).  
Es posible que Firefox en macOS no sea totalmente compatible con los flujos de trabajo de autenticación entre dispositivos para las claves de acceso. Es posible que se le pida que toque una clave de seguridad en lugar de continuar con la autenticación entre dispositivos. Le recomendamos usar otro navegador, como Chrome o Safari, para iniciar sesión con claves de acceso en macOS.

Para más información sobre la compatibilidad del navegador con un dispositivo certificado para FIDO2, como YubiKey, consulte [Compatibilidad de los sistemas operativos y los navegadores web con FIDO2 y U2F](https://support.yubico.com/hc/en-us/articles/360016615020-Operating-system-and-web-browser-support-for-FIDO2-and-U2F).

### Complementos de navegador
<a name="id_credentials_mfa_fido_plugins"></a>

AWS es compatible solo con los navegadores que admiten FIDO2 de forma nativa. AWS no es compatible con el uso de complementos para agregar compatibilidad con los navegadores de FIDO2. Algunos complementos de navegador son incompatibles con el estándar FIDO2 y pueden causar resultados inesperados con las claves de seguridad FIDO2. 

Para obtener información sobre la desactivación de complementos del navegador y otras sugerencias para la solución de problemas, consulte [No puedo habilitar mi clave de seguridad FIDO](troubleshoot_mfa-fido.md#troubleshoot_mfa-fido-cant-enable). 

## Certificaciones de dispositivos
<a name="id_credentials_mfa_fido_certifications"></a>

Recopilamos y asignamos certificaciones relacionadas con el dispositivo, como la validación FIPS y el nivel de certificación FIDO, solo durante el registro de una clave de seguridad. La certificación de su dispositivo se obtiene del [Servicio de metadatos (MDS) de FIDO Alliance](https://fidoalliance.org/metadata/). Si el estado de certificación o el nivel de su clave de seguridad cambian, eso no se reflejará de manera automática en las etiquetas del dispositivo. Para actualizar la información de certificación de un dispositivo, vuelva a registrar el dispositivo para obtener la información de certificación actualizada. 

AWS proporciona los siguientes tipos de certificación como claves de condición durante el registro del dispositivo, obtenidos del FIDO MDS: niveles de certificación FIPS-140-2, FIPS-140-3 y FIDO. Puede especificar el registro de autenticadores específicos en sus políticas de IAM, según el tipo y el nivel de certificación que prefiera. Para obtener más información, consulte las políticas a continuación.

### Ejemplos de políticas para certificaciones de dispositivos
<a name="id_credentials_mfa_fido_certifications_policies"></a>

Los siguientes casos de uso muestran ejemplos de políticas que le permiten registrar dispositivos MFA con certificaciones FIPS.

**Topics**
+ [

#### Caso de uso 1: permitir el registro únicamente de dispositivos que tengan certificaciones FIPS-140-2 L2
](#id_credentials_mfa_fido_certifications_policies_use_case_1)
+ [

#### Caso de uso 2: permitir el registro de dispositivos que tengan las certificaciones FIPS-140-2 L2 y FIDO L1
](#id_credentials_mfa_fido_certifications_policies_use_case_2)
+ [

#### Caso de uso 3: permitir el registro de dispositivos que tengan las certificaciones FIPS-140-2 L2 o FIPS-140-3 L2
](#id_credentials_mfa_fido_certifications_policies_use_case_3)
+ [

#### Caso de uso 4: permitir el registro de dispositivos que cuentan con la certificación FIPS-140-2 L2 y que admiten otros tipos de MFA, como los autenticadores virtuales y el TOTP físico
](#id_credentials_mfa_fido_certifications_policies_use_case_4)

#### Caso de uso 1: permitir el registro únicamente de dispositivos que tengan certificaciones FIPS-140-2 L2
<a name="id_credentials_mfa_fido_certifications_policies_use_case_1"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### Caso de uso 2: permitir el registro de dispositivos que tengan las certificaciones FIPS-140-2 L2 y FIDO L1
<a name="id_credentials_mfa_fido_certifications_policies_use_case_2"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2",
                    "iam:FIDO-certification": "L1"
                }
            }
        }
    ]
}
```

------

#### Caso de uso 3: permitir el registro de dispositivos que tengan las certificaciones FIPS-140-2 L2 o FIPS-140-3 L2
<a name="id_credentials_mfa_fido_certifications_policies_use_case_3"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### Caso de uso 4: permitir el registro de dispositivos que cuentan con la certificación FIPS-140-2 L2 y que admiten otros tipos de MFA, como los autenticadores virtuales y el TOTP físico
<a name="id_credentials_mfa_fido_certifications_policies_use_case_4"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Create"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Activate",
          "iam:FIDO-FIPS-140-2-certification": "L2"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "Null": {
          "iam:RegisterSecurityKey": "true"
        }
      }
    }
  ]
}
```

------

## AWS CLI y API de AWS
<a name="id_credentials_mfa_fido_cliapi"></a>

AWS admite el uso de claves de acceso y claves de seguridad solo en la Consola de administración de AWS. El uso de claves de acceso y claves de seguridad para la MFA no es compatible con la [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) ni la [API de AWS](https://aws.amazon.com/tools/), y tampoco se pueden utilizar para acceder a las [operaciones de la API protegidas por la MFA](id_credentials_mfa_configure-api-require.md).

## Recursos adicionales
<a name="id_credentials_mfa_fido_additional_resources"></a>
+ Para obtener más información sobre el uso de claves de seguridad en AWS, consulte [Asignación de una clave de acceso o de seguridad en la Consola de administración de AWS](id_credentials_mfa_enable_fido.md).
+ Para obtener ayuda con la resolución de problemas de claves de acceso y claves de seguridad en AWS, consulte [Solucionar problemas con claves de acceso y claves de seguridad FIDO](troubleshoot_mfa-fido.md).
+ Para obtener información general del sector sobre la compatibilidad con FIDO2, consulte [Proyecto FIDO2](https://en.wikipedia.org/wiki/FIDO2_Project). 

# Asignación de un dispositivo de MFA virtual en la Consola de administración de AWS
<a name="id_credentials_mfa_enable_virtual"></a>

**importante**  
AWS recomienda, en lo posible, utilizar una clave de paso o de seguridad para la MFA en AWS. Para obtener más información, consulte [Asignación de una clave de acceso o de seguridad en la Consola de administración de AWS](id_credentials_mfa_enable_fido.md).

Puede utilizar un teléfono u otro dispositivo como dispositivo de autenticación multifactor (MFA) virtual. Para ello, instale una aplicación móvil que cumpla con [RFC 6238, un algoritmo TOTP (contraseña de un solo uso basada en el tiempo) basado en estándares](https://datatracker.ietf.org/doc/html/rfc6238). Estas aplicaciones generan un código de autenticación de seis dígitos. Dado que los autenticadores pueden usarse en dispositivos móviles que no son seguros y los códigos podrían compartirse con personas no autorizadas, la MFA basada en TOTP no brinda el mismo nivel de seguridad que las opciones resistentes al phishing, como las claves de acceso y de seguridad de [FIDO2](https://en.wikipedia.org/wiki/FIDO_Alliance#FIDO2). Recomendamos utilizar las claves de paso o de seguridad para la MFA a fin de obtener la máxima protección contra ataques como el phishing.

Si aún no puede utilizar las claves de paso o de seguridad, recomendamos que utilice un dispositivo MFA virtual mientras espera la aprobación de la compra de cualquier hardware o su llegada

La mayoría de aplicaciones de MFA virtual admiten la creación de varios dispositivos virtuales, lo que le permite utilizar la misma aplicación para varias Cuentas de AWS o usuarios. Puede registrar hasta **ocho** dispositivos de MFA de cualquier combinación de los [tipos de MFA](https://aws.amazon.com/iam/features/mfa/) con los usuarios de IAM y Usuario raíz de la cuenta de AWS. Solo necesita un dispositivo de MFA para iniciar sesión en la Consola de administración de AWS o crear una sesión a través de la AWS CLI. Le recomendamos que registre varios dispositivos MFA. En el caso de las aplicaciones de autenticación, también recomendamos habilitar la copia de seguridad en la nube o la característica de sincronización para evitar perder el acceso a la cuenta si pierde o se rompe su dispositivo.

AWS requiere una aplicación de MFA virtual que genere una contraseña de un solo uso (OTP) de seis dígitos. Para obtener una lista de las aplicaciones MFA virtuales que puede utilizar, consulte [Autenticación multifactor](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). 

**Topics**
+ [

## Permisos necesarios
](#mfa_enable_virtual_permissions-required)
+ [

## Habilite un dispositivo MFA virtual para un usuario de IAM (Consola)
](#enable-virt-mfa-for-iam-user)
+ [

## Reemplazar un dispositivo MFA virtual
](#replace-virt-mfa)

## Permisos necesarios
<a name="mfa_enable_virtual_permissions-required"></a>

Para administrar dispositivos MFA virtuales para su usuario de IAM, debe contar con los permisos de la siguiente política: [AWS: permite a los usuarios de IAM autenticados por MFA administrar su propio dispositivo MFA en la página Credenciales de seguridad](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md).

## Habilite un dispositivo MFA virtual para un usuario de IAM (Consola)
<a name="enable-virt-mfa-for-iam-user"></a>

Puede utilizar IAM en la Consola de administración de AWS para habilitar y administrar un dispositivo MFA virtual para un usuario de IAM en su cuenta. Puede asociar etiquetas a los recursos de IAM, incluidos los dispositivos MFA virtuales, a fin de identificar, organizar y controlar el acceso a ellos. Puede etiquetar dispositivos MFA virtuales solo cuando utiliza la AWS CLI o la API de AWS. Para habilitar y administrar un dispositivo MFA utilizando la AWS CLI o la API de AWS, consulte [Asignación de dispositivos de MFA en la AWS CLI o API de AWS](id_credentials_mfa_enable_cliapi.md). Para más información acerca del etiquetado de recursos de IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md). 

**nota**  
Debe tener acceso físico al hardware que alojará el dispositivo MFA virtual del usuario para poder configurar la MFA. Por ejemplo, puede configurar MFA para un usuario que utilice un dispositivo MFA virtual que se ejecute en un smartphone. En ese caso, debe tener el smartphone disponible para completar el asistente. Por este motivo, puede interesarle que los usuarios puedan configurar y administrar sus propios dispositivos MFA virtuales. En ese caso, debe conceder a los usuarios los permisos necesarios para realizar las acciones de IAM necesarias. Para obtener más información y consultar un ejemplo de una política de IAM que concede dichos permisos, consulte el [Tutorial de IAM: permitir a los usuarios administrar sus credenciales y configuración de MFA](tutorial_users-self-manage-mfa-and-creds.md) y [AWS: permite a los usuarios de IAM autenticados por MFA administrar su propio dispositivo MFA en la página Credenciales de seguridad](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md) en la política de ejemplo. 

**Para habilitar un dispositivo MFA virtual para un usuario de IAM (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. En la lista **Users** (Usuarios), elija el nombre de usuario de IAM.

1. Elija la pestaña **Credenciales de seguridad**. En **autenticación multifactor (MFA)**, seleccione **Asignar dispositivo MFA**.

1. En el asistente, escriba un **Nombre de dispositivo**, elija **Aplicación del autenticador** y luego, **Siguiente**.

   IAM generará y mostrará la información de configuración del dispositivo MFA virtual, incluido un gráfico de código QR. El gráfico es una representación de la "clave de configuración secreta" que se puede introducir manualmente en dispositivos que no admiten códigos QR.

1. Abra su aplicación de MFA virtual. Para ver una lista de las aplicaciones que puede utilizar para alojar dispositivos MFA virtuales, consulte [Multi-Factor Authentication](https://aws.amazon.com/iam/details/mfa/). 

   Si la aplicación de MFA virtual admite varios dispositivos o cuentas de MFA, elija la opción para crear un nuevo dispositivo o cuenta de MFA virtual.

1. Determine si la aplicación MFA admite códigos QR y, a continuación, lleve a cabo alguna de las siguientes operaciones:
   + Desde el asistente, elija **Show QR code (Mostrar código QR)** y, a continuación, utilice la aplicación para escanear el código QR. Puede ser un ícono de cámara o una opción de **Código de escaneo** que utiliza la cámara del dispositivo para escanear el código.
   + En el asistente, elija **Show secret key** (Mostrar clave secreta) y, a continuación, escriba la clave secreta en su aplicación MFA.

   Cuando haya terminado, el dispositivo MFA virtual comenzará a generar contraseñas de uso único. 

1. En la página **Configurar el dispositivo**, en el cuadro **Código MFA 1**, escriba la contraseña de uso único que aparece actualmente en el dispositivo MFA virtual. Espere hasta 30 segundos a que el dispositivo genere una nueva contraseña de uso único. A continuación, escriba la otra contraseña de uso único en el cuadro **MFA code 2 (Código MFA 2)**. Elija **Add MFA** (Agregar MFA). 
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo. Si esto ocurre, puede [volver a sincronizar el dispositivo](id_credentials_mfa_sync.md).

Ahora el dispositivo MFA virtual ya está listo para utilizarlo con AWS. Para obtener más información sobre el uso de MFA con la Consola de administración de AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md).

**nota**  
Los dispositivos MFA virtuales no asignados en su Cuenta de AWS se eliminan al agregar nuevos dispositivos MFA virtuales a través de la Consola de administración de AWS o mediante el proceso de inicio de sesión. Los dispositivos MFA virtuales no asignados son dispositivos de su cuenta, pero que el usuario raíz de la cuenta o los usuarios de IAM no utilizan para el proceso de inicio de sesión. Se eliminan para poder agregar nuevos dispositivos MFA virtuales a su cuenta. También le permite reutilizar los nombres de los dispositivos.  
Para ver los dispositivos MFA virtuales no asignados en su cuenta, puede usar el comando [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) AWS CLI o una llamada a la [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html).
Para desactivar un dispositivo MFA virtual, puede utilizar el comando [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) AWS CLI o una llamada a la [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). El dispositivo dejará de estar asignado.
Para conectar un dispositivo MFA virtual no asignado al usuario raíz o los usuarios de IAM de su Cuenta de AWS, necesitará el código de autenticación generado por el dispositivo junto con el comando [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) AWS CLI o la llamada a la [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html).

## Reemplazar un dispositivo MFA virtual
<a name="replace-virt-mfa"></a>

Los usuarios de IAM y Usuario raíz de la cuenta de AWS pueden registrar hasta **ocho** dispositivos de MFA de cualquier combinación de los tipos de MFA. Si el usuario pierde un dispositivo o debe reemplazarlo por cualquier motivo, desactive el antiguo dispositivo. Después, puede añadir el nuevo dispositivo para el usuario.
+ Para desactivar el dispositivo que tenga asociado actualmente a otro usuario de IAM, consulte [Desactivación de un dispositivo MFA](id_credentials_mfa_disable.md).
+ Para agregar un dispositivo MFA virtual de sustitución para otro usuario de IAM, siga los pasos que se indican en el procedimiento [Habilite un dispositivo MFA virtual para un usuario de IAM (Consola)](#enable-virt-mfa-for-iam-user) anterior.
+ Para agregar un dispositivo MFA virtual de reemplazo para Usuario raíz de la cuenta de AWS, siga los pasos que se indican en el procedimiento [Habilitación de un dispositivo MFA virtual para el usuario raíz (consola)](enable-virt-mfa-for-root.md).

# Asignación de un token de TOTP de hardware en la Consola de administración de AWS
<a name="id_credentials_mfa_enable_physical"></a>

**importante**  
AWS recomienda, en lo posible, utilizar una clave de paso o de seguridad para la MFA en AWS. Para obtener más información, consulte [Asignación de una clave de acceso o de seguridad en la Consola de administración de AWS](id_credentials_mfa_enable_fido.md).

Un token TOTP de hardware genera un código numérico de seis dígitos basado en un algoritmo de contraseña temporal de un solo uso (TOTP). El usuario debe escribir un código válido del dispositivo cuando se le solicite durante el proceso de inicio de sesión. Todos los dispositivos MFA asignados a un usuario deben ser únicos; un usuario no puede escribir el código del dispositivo de otro usuario para autenticarlo. Los dispositivos MFA no se pueden compartir entre cuentas o usuarios.

Los tokens TOTP de hardware y las [claves de seguridad FIDO](id_credentials_mfa_enable_fido.md) son dispositivos físicos que se compran. Los dispositivos MFA de hardware generan códigos TOTP para la autenticación al iniciar sesión en AWS. Se basan en baterías, las cuales pueden necesitar ser reemplazadas y resincronizadas con AWS en el tiempo. Las claves de seguridad FIDO, que utilizan criptografía de clave pública, no requieren baterías y ofrecen un proceso de autenticación perfecto. Recomendamos utilizar las claves de seguridad FIDO para evitar la suplantación de identidad, ya que ofrecen una alternativa más segura a los dispositivos TOTP. Además, las llaves de seguridad FIDO con compatibles con varios usuarios raíz o de IAM en el mismo dispositivo, lo que mejora su utilidad para la seguridad de las cuentas. Para obtener información sobre las especificaciones y opciones de compra de ambos tipos de dispositivo, consulte [Autenticación multifactor](https://aws.amazon.com/iam/details/mfa/).



Se puede habilitar un token TOTP de hardware para un usuario de IAM desde la Consola de administración de AWS, la línea de comandos o la API de IAM. Para habilitar un dispositivo MFA para su Usuario raíz de la cuenta de AWS, consulte [Habilitación de un token TOTP de hardware para el usuario raíz de la (consola)](enable-hw-mfa-for-root.md).

Puede registrar hasta **ocho** dispositivos MFA de cualquier combinación de los [tipos de MFA admitidos actualmente](https://aws.amazon.com/iam/features/mfa/) con el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Con varios dispositivos MFA, solo necesita un dispositivo MFA para iniciar sesión en la Consola de administración de AWS o crear una sesión a través de AWS CLI como ese usuario.

**importante**  
Se recomienda habilitar varios dispositivos MFA para que los usuarios puedan seguir accediendo a la cuenta en caso de pérdida o inaccesibilidad del dispositivo MFA.

**nota**  
Si desea habilitar el dispositivo MFA desde la línea de comandos, utilice [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html). Para habilitar el dispositivo MFA con la API de IAM, utilice la operación [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html). 

**Topics**
+ [

## Permisos necesarios
](#enable-hw-mfa-for-iam-user-permissions-required)
+ [

## Habilitar un token TOTP de hardware para su propio usuario de IAM (consola)
](#enable-hw-mfa-for-own-iam-user)
+ [

## Habilitar un token TOTP de hardware para otro usuario de IAM (consola)
](#enable-hw-mfa-for-iam-user)
+ [

## Reemplazar un dispositivo MFA físico
](#replace-phys-mfa)

## Permisos necesarios
<a name="enable-hw-mfa-for-iam-user-permissions-required"></a>

Para administrar un token TOTP de hardware para su propio usuario de IAM mientras protege acciones sensibles relacionadas con MFA, debe tener los permisos de la siguiente política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Habilitar un token TOTP de hardware para su propio usuario de IAM (consola)
<a name="enable-hw-mfa-for-own-iam-user"></a>

 Puede habilitar su propio token TOTP de hardware desde la Consola de administración de AWS.

**nota**  
Para poder habilitar un dispositivo MFA físico, debe tener acceso físico al dispositivo.

**Para habilitar un token TOTP de hardware para su propio usuario de IAM (consola)**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la pestaña **Credenciales de AWS IAM**, en la sección **Autenticación multifactor (MFA)**, elija **Asignar dispositivo MFA**.

1. En el asistente, escriba un **Device name** (Nombre del dispositivo), elija **Hardware TOTP token** (Token TOTP de hardware) y, a continuación, elija **Next** (Siguiente).

1. Escriba el número de serie del dispositivo. Por lo general, se encuentra en la parte posterior del dispositivo.

1. En el cuadro **Código MFA 1**, escriba el número de seis dígitos que se encuentra en el dispositivo MFA. Es posible que tenga que pulsar el botón de la parte anterior del dispositivo para mostrar el número.  
![\[Panel de IAM, dispositivo MFA\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/MFADevice.png)

1. Espere 30 segundos a que el dispositivo actualice el código y, a continuación, escriba el número de seis dígitos siguiente en el cuadro **Código MFA 2**. Es posible que tenga que volver a pulsar el botón de la parte anterior del dispositivo para mostrar el otro número.

1. Elija **Agregar MFA**.
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos de autenticación. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo. Si esto ocurre, puede [volver a sincronizar el dispositivo](id_credentials_mfa_sync.md).

El dispositivo ya está listo para utilizarlo con AWS. Para obtener más información sobre el uso de MFA con la Consola de administración de AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md).

## Habilitar un token TOTP de hardware para otro usuario de IAM (consola)
<a name="enable-hw-mfa-for-iam-user"></a>

 Puede habilitar un token TOTP de hardware para otro usuario de IAM desde la Consola de administración de AWS.

**Para habilitar un token TOTP de hardware para otro usuario de IAM (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Elija el nombre del usuario para el que desea activar la MFA.

1. Elija la pestaña **Credenciales de seguridad**. En **autenticación multifactor (MFA)**, seleccione **Asignar dispositivo MFA**.

1. En el asistente, escriba un **Nombre del dispositivo**, elija **Token TOTP de hardware** y, a continuación, elija **Siguiente**.

1. Escriba el número de serie del dispositivo. Por lo general, se encuentra en la parte posterior del dispositivo.

1. En el cuadro **Código MFA 1**, escriba el número de seis dígitos que se encuentra en el dispositivo MFA. Es posible que tenga que pulsar el botón de la parte anterior del dispositivo para mostrar el número.  
![\[Panel de IAM, dispositivo MFA\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/MFADevice.png)

1. Espere 30 segundos a que el dispositivo actualice el código y, a continuación, escriba el número de seis dígitos siguiente en el cuadro **Código MFA 2**. Es posible que tenga que volver a pulsar el botón de la parte anterior del dispositivo para mostrar el otro número.

1. Elija **Agregar MFA**.
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos de autenticación. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo. Si esto ocurre, puede [volver a sincronizar el dispositivo](id_credentials_mfa_sync.md).

El dispositivo ya está listo para utilizarlo con AWS. Para obtener más información sobre el uso de MFA con la Consola de administración de AWS, consulte [Inicio de sesión con MFA habilitado](console_sign-in-mfa.md).

## Reemplazar un dispositivo MFA físico
<a name="replace-phys-mfa"></a>

Puede tener hasta ocho dispositivos MFA de cualquier combinación de los [tipos de MFA admitidos actualmente](https://aws.amazon.com/iam/features/mfa/) asignados a un usuario a la vez con el Usuario raíz de la cuenta de AWS y los usuarios de IAM. Si el usuario pierde un dispositivo o debe reemplazarlo por cualquier motivo, primero debe desactivar el antiguo dispositivo. Después, puede añadir el nuevo dispositivo para el usuario.
+ Para desactivar el dispositivo que tenga asociado actualmente a un usuario, consulte [Desactivación de un dispositivo MFA](id_credentials_mfa_disable.md).
+ Para agregar un token TOTP de hardware de reemplazo para un usuario de IAM, siga los pasos del procedimiento [Habilitar un token TOTP de hardware para otro usuario de IAM (consola)](#enable-hw-mfa-for-iam-user) anterior en este tema.
+ Para agregar un token TOTP de hardware de reemplazo para el Usuario raíz de la cuenta de AWS, siga los pasos del procedimiento [Habilitación de un token TOTP de hardware para el usuario raíz de la (consola)](enable-hw-mfa-for-root.md) anterior de este tema.

# Asignación de dispositivos de MFA en la AWS CLI o API de AWS
<a name="id_credentials_mfa_enable_cliapi"></a>

Puede utilizar comandos de la AWS CLI u operaciones de la API de AWS para habilitar un dispositivo MFA virtual para un usuario de IAM. No es posible habilitar un dispositivo MFA para el Usuario raíz de la cuenta de AWS con la AWS CLI, la API de AWS, las herramientas para Windows PowerShell ni con ninguna otra herramienta de línea de comandos. Sin embargo, puede utilizar la Consola de administración de AWS para habilitar un dispositivo MFA para el usuario raíz. 

Al habilitar un dispositivo MFA desde la Consola de administración de AWS, esta ejecuta varias operaciones automáticamente. En cambio, si crea un dispositivo virtual utilizando la AWS CLI, las Tools for Windows PowerShell o la API de AWS, entonces deberá realizar los pasos manualmente y en el orden correcto. Por ejemplo, para crear un dispositivo MFA virtual, debe crear el objeto de IAM y extraer el código como una cadena o un código QR gráfico. A continuación, debe sincronizar el dispositivo y asociarlo con un usuario de IAM. Consulte la sección **Examples** de [New-IAMVirtualMFADevice](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=New-IAMVirtualMFADevice.html&tocid=New-IAMVirtualMFADevice) para obtener más detalles. Para un dispositivo físico, puede omitir el paso de creación e ir directamente a sincronizar el dispositivo y asociarlo con el usuario. 

Puede asociar etiquetas a los recursos de IAM, incluidos los dispositivos MFA virtuales, a fin de identificar, organizar y controlar el acceso a ellos. Puede etiquetar dispositivos MFA virtuales solo cuando utiliza la AWS CLI o la API de AWS.

Un usuario de IAM que utilice el SDK o la CLI puede habilitar un dispositivo MFA adicional llamando a [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) o desactivar un dispositivo MFA existente mediante una llamada a [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). Para hacerlo correctamente, primero deben llamar a [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) y enviar los códigos MFA con un dispositivo MFA existente. Esta llamada devuelve credenciales de seguridad temporales que luego se pueden usar para firmar las operaciones de API que requieren la autenticación MFA. Para ver un ejemplo de solicitud y respuesta, consulte [`GetSessionToken`: credenciales temporales para usuarios de entornos que no son de confianza](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken). 

**Para crear la entidad del dispositivo virtual en IAM para representar un dispositivo de MFA virtual**  
Estos comandos proporcionan un ARN para el dispositivo que se utiliza en lugar de un número de serie en muchos de los siguientes comandos.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html) 

**Para habilitar un dispositivo MFA para su uso con AWS**  
Estos comandos sincronizan el dispositivo con AWS y lo asocian con un usuario. Si el dispositivo es virtual, utilice el ARN del dispositivo virtual como número de serie.

**importante**  
Envíe su solicitud inmediatamente después de generar los códigos de autenticación. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo. Si esto ocurre, puede resincronizar el dispositivo utilizando los comandos que se describen a continuación.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 

**Para desactivar un dispositivo**  
Utilice estos comandos para desvincular el dispositivo del usuario y desactivarlo. Si el dispositivo es virtual, utilice el ARN del dispositivo virtual como número de serie. Asimismo, debe eliminar la entidad de dispositivo virtual por separado. 
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

**Para crear una lista de entidades de dispositivo de MFA virtual**  
Utilice estos comandos para una lista de entidades de dispositivo de MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 

**Cómo etiquetar un dispositivo MFA virtual**  
Utilice estos comandos para etiquetar un dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html) 

**Enumerar etiquetas para un dispositivo MFA virtual**  
Utilice estos comandos para enumerar las etiquetas asociadas a un dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html) 

**Quitar etiquetas de un dispositivo MFA virtual**  
Utilice estos comandos para quitar las etiquetas asociadas a un dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html) 

**Para resincronizar un dispositivo de MFA**  
Utilice estos comandos si el dispositivo genera códigos que no acepta AWS. Si el dispositivo es virtual, utilice el ARN del dispositivo virtual como número de serie.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html) 

**Para eliminar una entidad de dispositivo MFA virtual en IAM**  
En cuanto el dispositivo se desvincule del usuario, puede eliminar la entidad de dispositivo.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html) 

**Para recuperar un dispositivo MFA virtual perdido o que no funciona**  
A veces, el dispositivo de un usuario que aloja la aplicación de MFA virtual se pierde, se reemplaza o no funciona. Cuando esto sucede, el usuario no puede recuperarlo por sí mismo. Los usuarios deben ponerse en contacto con un administrador para desactivar el dispositivo. Para obtener más información, consulte [Recuperación de una identidad protegida por MFA en IAM](id_credentials_mfa_lost-or-broken.md).

# Comprobación del estado de MFA
<a name="id_credentials_mfa_checking-status"></a>

Utilice la consola de IAM para comprobar si un Usuario raíz de la cuenta de AWS o un usuario de IAM tiene un dispositivo MFA válido habilitado.

**Para comprobar el estado de un usuario raíz MFA**

1. Inicie sesión en la Consola de administración de AWS con sus credenciales de usuario raíz y, a continuación, abrir la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).

1. Compruebe en **Multi-factor Authentication (MFA) (Autenticación multifactor [MFA])** para ver si la MFA está habilitada o desactivada. Si la MFA no se ha activado, aparecerá un símbolo de alerta (![\[Alert icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-alert-icon.console.png)). 

Si desea activar MFA para la cuenta, consulte una de las siguientes opciones:
+ [Habilitación de un dispositivo MFA virtual para el usuario raíz (consola)](enable-virt-mfa-for-root.md)
+ [Habilitación de una clave de acceso o clave de seguridad para el usuario raíz (consola)](enable-fido-mfa-for-root.md)
+ [Habilitación de un token TOTP de hardware para el usuario raíz de la (consola)](enable-hw-mfa-for-root.md)

**Para verificar el estado de MFA de los usuarios de IAM**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. En el panel de navegación, seleccione **Usuarios**.

1. Si es necesario, agregue la columna **MFA** a la tabla de usuarios realizando los siguientes pasos:

   1. Encima de la tabla, en el extremo derecho, elija el icono de configuración (![\[Settings icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. En **Manage Columns (Administrar columnas)**, seleccione **MFA**.

   1. (Opcional) Desactive la casilla de verificación de los encabezados de columna que no quiera que aparezcan en la tabla de los usuarios.

   1. Seleccione **Close (Cerrar)** para volver a la lista de usuarios.

1. La columna **MFA** le informa sobre el dispositivo MFA que está activado. Si ningún dispositivo MFA está activado para el usuario, la consola muestra **None** (Ninguno). Si el usuario tiene un dispositivo MFA activado, la columna **MFA** muestra el tipo de dispositivo que está activado con un valor **Virtual**, **FIDO Security Key** (Clave de seguridad FIDO), **Hardware** o **SMS**.
**nota**  
AWS finalizó el soporte para habilitar la autenticación multifactor (MFA) por SMS. Recomendamos a los clientes que tienen usuarios de IAM que utilizan MFA basado en mensajes de texto SMS que cambien a uno de los siguientes métodos alternativos: [dispositivo MFA virtual (basado en software)](id_credentials_mfa_enable_virtual.md), [clave de seguridad FIDO](id_credentials_mfa_enable_fido.md) o [dispositivo MFA de hardware](id_credentials_mfa_enable_physical.md). Puede identificar a los usuarios de su cuenta con un dispositivo MFA de SMS asignado. Para ello, vaya a la consola de IAM, elija **Users (Usuarios)** en el panel de navegación y busque los usuarios con **SMS** en la columna **MFA** de la tabla.

1. Para ver información adicional sobre el dispositivo MFA de un usuario, seleccione el nombre del usuario cuyo estado de MFA quiere comprobar. A continuación, elija la pestaña **Security credentials (Credenciales de seguridad)**. 

1. Si no hay ningún dispositivo MFA activo para el usuario, la consola muestra **No hay dispositivos MFA. Asigne un dispositivo MFA para mejorar la seguridad de su entorno de AWS** en la sección **Autenticación multifactor (MFA)**. Si el usuario tiene dispositivos MFA activados, la sección **Multi-factor authentication (MFA)** (Autenticación multifactor [MFA]) muestra detalles sobre los dispositivos:
   + El nombre del dispositivo
   + El tipo de dispositivo
   + El identificador del dispositivo, como el número de serie de un dispositivo físico o el ARN en AWS de un dispositivo virtual
   + Cuándo se creó el dispositivo

Para eliminar o volver a sincronizar un dispositivo, seleccione el botón de radio situado junto al dispositivo y, a continuación, **Remove** (Eliminar) o **Resync** (Volver a sincronizar).

Para obtener más información sobre la habilitación de MFA, consulte los siguientes temas: 
+ [Asignación de un dispositivo de MFA virtual en la Consola de administración de AWS](id_credentials_mfa_enable_virtual.md)
+ [Asignación de una clave de acceso o de seguridad en la Consola de administración de AWS](id_credentials_mfa_enable_fido.md)
+ [Asignación de un token de TOTP de hardware en la Consola de administración de AWS](id_credentials_mfa_enable_physical.md)

# Resincronización de dispositivos MFA de hardware y virtuales
<a name="id_credentials_mfa_sync"></a>

Puede utilizar AWS para volver a sincronizar sus dispositivos MFA (autenticación multifactor [MFA]) físicos y virtuales. Si el dispositivo no se sincroniza al intentar utilizarlo, el intento de inicio de sesión del usuario dará un error e IAM le pedirá que vuelva a sincronizar el dispositivo.

**nota**  
Las claves de seguridad FIDO no pierden la sincronización. Si una llave de seguridad FIDO se pierde o avería, puede desactivarla. Para obtener instrucciones sobre cómo desactivar cualquier tipo de dispositivo MFA, consulte [Para desactivar un dispositivo MFA de otro usuario de IAM (consola)](id_credentials_mfa_disable.md#deactivate-mfa-for-user).

Como administrador de AWS, puede volver a sincronizar sus dispositivos MFA físicos y virtuales de los usuarios de IAM si pierden la sincronización.

Si el dispositivo MFA de Usuario raíz de la cuenta de AWS no funciona, puede volver a sincronizarlo con la consola de IAM y completar o no el proceso de inicio de sesión. Si no puedes resincronizar correctamente el dispositivo, es posible que tengas que desasociarlo y volver a asociarlo. Para obtener más información acerca de cómo hacerlo, consulte [Desactivación de un dispositivo MFA](id_credentials_mfa_disable.md) y [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md).

**Topics**
+ [

## Permisos necesarios
](#id_credentials_mfa_sync_console-permissions-required)
+ [

## Resincronización de dispositivos MFA físicos y virtuales (consola de IAM)
](#id_credentials_mfa_sync_console)
+ [

## Resincronización de dispositivos MFA físicos y virtuales (AWS CLI)
](#id_credentials_mfa_sync_cli)
+ [

## Resincronización de dispositivos MFA físicos y virtuales (API de AWS)
](#id_credentials_mfa_sync_api)

## Permisos necesarios
<a name="id_credentials_mfa_sync_console-permissions-required"></a>

Para resincronizar dispositivos MFA virtuales o de hardware para su propio usuario de IAM, debe tener los permisos de la siguiente política. Esta política no permite crear ni desactivar un dispositivo.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToViewAndManageTheirOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "BlockAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Resincronización de dispositivos MFA físicos y virtuales (consola de IAM)
<a name="id_credentials_mfa_sync_console"></a>

Puede utilizar la consola de IAM para volver a sincronizar dispositivos de MFA físicos y virtuales.

**Para volver a sincronizar un dispositivo MFA físico o virtual para su propio usuario de IAM (consola)**

1. Utilice el ID de su cuenta de AWS o el alias de su cuenta, el nombre de usuario de IAM y la contraseña para iniciar sesión en la [consola de IAM](https://console.aws.amazon.com/iam).
**nota**  
Para su comodidad, la página de inicio de sesión AWS utiliza una cookie del navegador para recordar su nombre de usuario de IAM y la información de su cuenta. Si ha iniciado sesión anteriormente como un usuario diferente, elija **Iniciar sesión en otra cuenta** cerca del final de la página para volver a la página principal de inicio de sesión. Desde allí, puede escribir su ID de cuenta AWS o su alias de cuenta, de modo que se lo redirija a la página de inicio de sesión del usuario de IAM y tenga acceso a su cuenta.

   Para obtener el ID de la Cuenta de AWS, contacte con su administrador.

1. En la esquina superior derecha de la barra de navegación, elija su nombre de usuario y, a continuación, **Security credentials** (Credenciales de seguridad).   
![\[Enlace de credenciales de seguridad de la Consola de administración de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. En la pestaña **Credenciales de AWS IAM**, en la sección **Autenticación multifactor (MFA)**, elija el botón de opción junto al dispositivo MFA y elija **Volver a sincronizar**.

1. Escriba los dos códigos generados de forma secuencial desde el dispositivo en **MFA code 1 (Código MFA 1)** y **MFA code 2 (Código MFA 2)**. Luego, seleccione **Resync** (Volver a sincronizar).
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos. Si genera los códigos y, a continuación, espera demasiado tiempo para enviar la solicitud, la solicitud parece funcionar, pero el dispositivo permanece sin sincronizar. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo.

**Para volver a sincronizar un dispositivo MFA físico o virtual para otro usuario de IAM (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Users (Usuarios)** y, a continuación, elija el nombre del usuario cuyo dispositivo MFA debe volver a sincronizarse.

1. Seleccione la **pestaña de credenciales de** seguridad. En la sección **Autenticación multifactor (MFA)**, elija el botón de opción junto al dispositivo MFA y seleccione **Volver a sincronizar**.

1. Escriba los dos códigos generados de forma secuencial desde el dispositivo en **MFA code 1 (Código MFA 1)** y **MFA code 2 (Código MFA 2)**. Luego, seleccione **Resync** (Volver a sincronizar).
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos. Si genera los códigos y, a continuación, espera demasiado tiempo para enviar la solicitud, la solicitud parece funcionar, pero el dispositivo permanece sin sincronizar. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo.

**Para volver a sincronizar su MFA de usuario raíz antes de iniciar sesión (consola)**

1. En la página **Inicio de sesión en Amazon Web Services con un dispositivo de autenticación**, seleccione **¿Tiene problemas con su dispositivo de autenticación? Click here (Haga clic aquí**.
**nota**  
Puede ver texto diferente, como, por ejemplo, **Iniciar sesión mediante MFA** y **Solución de problemas con el dispositivo de autenticación**. Sin embargo, se proporcionan las mismas características.

1. En la sección **Re-Sync With Our Servers (Volver a sincronizar con nuestros servidores)**, escriba los dos códigos generados de forma secuencial desde el dispositivo en **MFA code 1 (Código MFA 1)** y **MFA code 2 (Código MFA 2)**. A continuación, seleccione **Re-sync authentication device (Volver a sincronizar dispositivo de autenticación)**.

1. Si es necesario, escriba la contraseña de nuevo y elija **Sign in (Iniciar sesión)**. Finalmente, complete el inicio de sesión con su dispositivo MFA.

**Para volver a sincronizar su dispositivo MFA de su usuario raíz tras iniciar sesión (consola)**

1. Inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/) como el propietario de la cuenta; para ello, elija **Root user (Usuario raíz)** e ingrese el email de su Cuenta de AWS. En la siguiente página, escriba su contraseña.
**nota**  
Como usuario raíz, no puede iniciar sesión en la página **Iniciar sesión como usuario de IAM**. Si aparece la página **Iniciar sesión como usuario de IAM**, elija **Iniciar sesión con el correo electrónico de usuario raíz** en la parte inferior de la página. Para obtener ayuda para iniciar sesión como usuario raíz, consulte [Inicio de sesión a la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la parte derecha de la barra de navegación, elija su nombre de cuenta y, a continuación, **Security credentials** (Credenciales de seguridad). Si es necesario, elija **Continue to Security Credentials** (Seguir en Credenciales de seguridad).  
![\[Credenciales de seguridad en el menú de navegación\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Expanda la sección **Multi-factor authentication (MFA) (Autenticación multifactor [MFA])** en la página.

1. Seleccione el botón de opción situado junto al dispositivo y haga clic en **Resync** (Volver a sincronizar).

1. En el cuadro de diálogo **Resync MFA device** (Volver a sincronizar el dispositivo MFA), escriba los dos códigos generados de forma secuencial desde el dispositivo en **MFA code 1** (Código MFA 1) y **MFA code 2** (Código MFA 2). Luego, seleccione **Resync** (Volver a sincronizar).
**importante**  
Envíe su solicitud inmediatamente después de generar los códigos. Si genera los códigos y después espera demasiado tiempo a enviar la solicitud, el dispositivo MFA se asociará correctamente al usuario, pero no estará sincronizado. Esto ocurre porque las contraseñas temporales de un solo uso (TOTP) caducan tras un corto periodo de tiempo.

## Resincronización de dispositivos MFA físicos y virtuales (AWS CLI)
<a name="id_credentials_mfa_sync_cli"></a>

Puede volver a sincronizar dispositivos MFA físicos y virtuales con la AWS CLI.

**Para volver a sincronizar un dispositivo MFA físico o virtual para un usuario de IAM (AWS CLI)**  
En una línea de comandos, emita el comando [aws iam resync-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html):
+ Dispositivo MFA virtual: especifique el nombre de recurso de Amazon (ARN) del dispositivo como el número de serie.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number arn:aws:iam::123456789012:mfa/RichardsMFA --authentication-code1 123456 --authentication-code2 987654
  ```
+ Dispositivo MFA físico: especifique el número de serie del dispositivo físico como el número de serie. El formato es específico del proveedor. Por ejemplo, puede comprar un token Gemalto de Amazon. Su número de serie suele ser de cuatro letras seguidas de cuatro números.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number ABCD12345678 --authentication-code1 123456 --authentication-code2 987654
  ```

**importante**  
Envíe su solicitud inmediatamente después de generar los códigos. Si genera los códigos y después espera demasiado tiempo para enviar la solicitud, esta dará un error porque los códigos caducan tras un breve intervalo de tiempo.

## Resincronización de dispositivos MFA físicos y virtuales (API de AWS)
<a name="id_credentials_mfa_sync_api"></a>

IAM tiene una llamada a la API que realiza la sincronización. En este caso, le recomendamos que dé permiso a los usuarios de dispositivos MFA físicos y virtuales para obtener acceso a esta llamada a la API. A continuación, debe crear una herramienta basada en esa llamada a la API que permita a sus usuarios volver a sincronizar sus dispositivos siempre que sea necesario.

**Para volver a sincronizar un dispositivo MFA físico o virtual para un usuario de IAM (API de AWS)**
+ Envíe la solicitud [ResyncMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html).

# Desactivación de un dispositivo MFA
<a name="id_credentials_mfa_disable"></a>

Si tiene problemas para iniciar sesión con un dispositivo de autenticación multifactor (MFA) como un usuario de IAM, póngase en contacto con su administrador para obtener ayuda.

Como administrador, puede desactivar el dispositivo para otro usuario de IAM. Esto permite al usuario iniciar sesión sin utilizar MFA. Puede hacerlo como una solución temporal, mientras se sustituye el dispositivo MFA o si no está disponible temporalmente. Sin embargo, le recomendamos que habilite un nuevo dispositivo para el usuario tan pronto como sea posible. Para obtener información sobre cómo habilitar un nuevo dispositivo MFA, consulte [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md).

**nota**  
Si utiliza la API o la AWS CLI para eliminar un usuario de su Cuenta de AWS, debe desactivar o eliminar el dispositivo MFA del usuario. Puede realizar este cambio como parte del proceso de eliminación del usuario. Para obtener más información acerca de la eliminación de usuarios, consulte [Eliminación o desactivación de un usuario de IAM](id_users_remove.md).

**Topics**
+ [

## Desactivación de dispositivos MFA (consola)
](#deactive-mfa-console)
+ [

## Desactivación de dispositivos MFA (AWS CLI)
](#deactivate-mfa-cli)
+ [

## Desactivación de dispositivos MFA (API de AWS)
](#deactivate-mfa-api)

## Desactivación de dispositivos MFA (consola)
<a name="deactive-mfa-console"></a><a name="deactivate-mfa-for-user"></a>

**Para desactivar un dispositivo MFA de otro usuario de IAM (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Usuarios**.

1. Para desactivar el dispositivo MFA para un usuario, elija el nombre del usuario cuyo MFA desea eliminar.

1. Seleccione la **pestaña de credenciales de** seguridad.

1. En **Autenticación multifactor (MFA)**, elija el botón de opción junto al dispositivo MFA, seleccione **Eliminar** y luego, **Eliminar**.

   El dispositivo se elimina de AWS. No puede utilizarse para iniciar sesión ni autenticar solicitudes hasta que se vuelva a activar y asociar a una cuenta de usuario de AWS o Usuario raíz de la cuenta de AWS.<a name="deactivate-mfa-for-root"></a>

**Para deshabilitar el dispositivo de MFA para su usuario Usuario raíz de la cuenta de AWS (consola)**

1. Inicie sesión en la [consola de IAM](https://console.aws.amazon.com/iam/) como el propietario de la cuenta; para ello, elija **Root user (Usuario raíz)** e ingrese el email de su Cuenta de AWS. En la siguiente página, escriba su contraseña.
**nota**  
Como usuario raíz, no puede iniciar sesión en la página **Iniciar sesión como usuario de IAM**. Si aparece la página **Iniciar sesión como usuario de IAM**, elija **Iniciar sesión con el correo electrónico de usuario raíz** en la parte inferior de la página. Para obtener ayuda para iniciar sesión como usuario raíz, consulte [Inicio de sesión a la Consola de administración de AWS como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

1. En la parte derecha de la barra de navegación, elija su nombre de cuenta y, a continuación, **Security credentials** (Credenciales de seguridad). Si es necesario, elija **Continue to Security Credentials** (Seguir en Credenciales de seguridad).  
![\[Credenciales de seguridad en el menú de navegación\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. En la sección **Multi-factor authentication (MFA)** (Autenticación multifactor [MFA]), seleccione el botón de opción situado junto al dispositivo MFA que desea desactivar y, a continuación, **Remove** (Eliminar).

1. Elija **Eliminar**.

   Se ha desactivado el dispositivo MFA para la Cuenta de AWS. Busque en la bandeja del correo electrónico asociado con su Cuenta de AWS un mensaje de confirmación de Amazon Web Services. El correo electrónico le informa de que su autenticación multifactor (MFA) de Amazon Web Services se ha desactivado. El mensaje vendrá de `@amazon.com` o `@aws.amazon.com`.

**nota**  
Los dispositivos MFA virtuales no asignados en su Cuenta de AWS se eliminan al agregar nuevos dispositivos MFA virtuales a través de la Consola de administración de AWS o mediante el proceso de inicio de sesión. Los dispositivos MFA virtuales no asignados son dispositivos de su cuenta, pero que el usuario raíz de la cuenta o los usuarios de IAM no utilizan para el proceso de inicio de sesión. Se eliminan para poder agregar nuevos dispositivos MFA virtuales a su cuenta. También le permite reutilizar los nombres de los dispositivos.

## Desactivación de dispositivos MFA (AWS CLI)
<a name="deactivate-mfa-cli"></a>

**Para desactivar un dispositivo MFA para un usuario de IAM (AWS CLI)**
+ Ejecute este comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)

## Desactivación de dispositivos MFA (API de AWS)
<a name="deactivate-mfa-api"></a>

**Para desactivar un dispositivo MFA para un usuario de IAM (API de AWS)**
+ Llame a esta operación: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

# Recuperación de una identidad protegida por MFA en IAM
<a name="id_credentials_mfa_lost-or-broken"></a>

Si el [dispositivo MFA virtual](id_credentials_mfa_enable_virtual.md) o el [token TOTP de hardware](id_credentials_mfa_enable_physical.md) parece funcionar correctamente, pero no puede utilizarlo para obtener acceso a sus recursos de AWS, es posible que no esté sincronizado con AWS. Para obtener más información acerca de cómo sincronizar un dispositivo de MFA virtual o físico, consulte [Resincronización de dispositivos MFA de hardware y virtuales](id_credentials_mfa_sync.md). Las [claves de seguridad FIDO](id_credentials_mfa_enable_fido.md) no pierden la sincronización.

Si el [dispositivo de MFA](id_credentials_mfa.md) de Usuario raíz de la cuenta de AWS se ha perdido, está averiado o no funciona, puede recuperar el acceso a su cuenta. Los usuarios de IAM deben ponerse en contacto con un administrador para desactivar el dispositivo.

**importante**  
Le recomendamos que active varios dispositivos de MFA. El registro de varios dispositivos de MFA ayuda a garantizar el acceso continuo en caso de pérdida o rotura de un dispositivo. Los usuarios de IAM y Usuario raíz de la cuenta de AWS pueden registrar hasta ocho dispositivos de MFA de cualquier tipo.

## Requisito previo: utilizar otro dispositivo de MFA
<a name="mfa-lost-or-broken-prerequisites"></a>

Si su dispositivo de [autenticación multifactor (MFA)](id_credentials_mfa.md) se pierde, se daña o no funciona, puede iniciar sesión con otro dispositivo MFA registrado para el mismo usuario raíz o usuario de IAM.

**Cómo iniciar sesión con otro dispositivo de MFA**

1. Inicie sesión en la [Consola de administración de AWS](url-comsole-domain;iam) con su identificador de Cuenta de AWS o con el alias y la contraseña de la cuenta.

1. En la página **Additional verification required** o en la página **Multi-factor authentication**, elija **Pruebe con otro método de MFA**.

1. Autentíque con el tipo de dispositivo de MFA que haya seleccionado.

1. El siguiente paso varía en función de si ha iniciado sesión correctamente con un dispositivo de MFA alternativo.
   + Si ha iniciado sesión correctamente, puede [Resincronización de dispositivos MFA de hardware y virtuales](id_credentials_mfa_sync.md), lo que podría resolver el problema. Si ha perdido su dispositivo de MFA, o si el dispositivo se ha dañado, puede desactivarlo. Para obtener instrucciones sobre cómo desactivar cualquier tipo de dispositivo MFA, consulte [Desactivación de un dispositivo MFA](id_credentials_mfa_disable.md).
   + Si no puede iniciar sesión con MFA, siga los pasos de [Recuperación de un dispositivo MFA de usuario raíz](#root-mfa-lost-or-broken) o [Recuperación de un dispositivo MFA de usuario de IAM](#iam-user-mfa-lost-or-broken) para recuperar su identidad protegida por MFA.



## Recuperación de un dispositivo MFA de usuario raíz
<a name="root-mfa-lost-or-broken"></a>

Si no puede iniciar sesión con su dispositivo de MFA, puede utilizar métodos alternativos e iniciar sesión mediante la verificación de su identidad mediante el correo electrónico y el número de teléfono de contacto principal registrados en su cuenta.

Confirme que puede acceder al correo electrónico y al número de teléfono de contacto principal asociados a su cuenta antes de utilizar factores de autenticación alternativos a fin de iniciar sesión como usuario raíz. Si necesita actualizar el número de teléfono de contacto principal, inicie sesión como usuario de IAM con acceso de *Administrador* en lugar del usuario raíz. Para obtener instrucciones adicionales sobre cómo actualizar la información de contacto de la cuenta, consulte [Editar la información de contacto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html) en la *Guía del usuario de AWS Billing*. Si no tiene acceso a un correo electrónico ni a un número de teléfono de contacto principal, debe contactar con [AWS Support](https://support.aws.amazon.com/#/contacts/aws-mfa-support).

**importante**  
Se recomienda mantener actualizados la dirección de correo electrónico y el número de teléfono de contacto vinculados al usuario raíz para recuperar la cuenta correctamente. Para obtener más información, consulte [Actualizar su contacto principal para Cuenta de AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html) en la *Guía de referencia de AWS Account Management*.

**Para iniciar sesión con otros factores de autenticación como Usuario raíz de la cuenta de AWS**

1.  Inicie sesión en [Consola de administración de AWS](https://console.aws.amazon.com/) como propietario de la cuenta; para ello, elija **Usuario raíz** e introduzca el correo electrónico de su Cuenta de AWS. En la siguiente página, escriba su contraseña.

1. En la página **Se requiere verificación adicional**, seleccione un método de MFA con el que autenticarse y elija **Siguiente**. 
**nota**  
Es posible que aparezca un texto alternativo, como **Sign in using MFA** (Iniciar sesión con MFA), **Troubleshoot your authentication device** (Solucionar problemas de su dispositivo de autenticación) o **Troubleshoot MFA** (Solucionar problemas de MFA), pero la funcionalidad es la misma. Si no puede utilizar factores de autenticación alternativos para verificar la dirección de correo electrónico y el número de teléfono de contacto principal de su cuenta, contacte con [AWS Support](https://support.aws.amazon.com/#/contacts/aws-mfa-support) a fin de desactivar su dispositivo de MFA.

1. Según el tipo de MFA que utilice, verá una página diferente, pero la opción **Solución de problemas de MFA** funciona igual. En la página **Se requiere verificación adicional** o en la página **Autenticación multifactor**, elija **Solución problemas de MFA**.

1. Si se le solicita, escriba la contraseña de nuevo y elija **Sign in (Inicio de sesión)**.

1. En la página **Solución de problemas con el dispositivo de autenticación**, en la sección **Iniciar sesión con otros factores de autenticación**, elija **Iniciar sesión con otros factores**.

1. En la página **Iniciar sesión con otros factores de autenticación**, autentique su cuenta verificando la dirección de correo electrónico y seleccione **Enviar correo electrónico de verificación**. 

1. Busque en la bandeja del correo electrónico asociado a su Cuenta de AWS un mensaje de Amazon Web Services (no-reply-aws@amazon.com). Siga las indicaciones del correo electrónico.

   Si no ve el correo electrónico en su cuenta, revise la carpeta de spam o vuelva a su navegador y seleccione **Resend the email (Reenviar el correo electrónico)**.

1. Después de verificar su dirección de correo electrónico, podrá continuar el proceso de autenticación de la cuenta. Para verificar su número de teléfono de contacto principal, elija **Call me now** (Llamarme ahora).

1. Responda a la llamada de AWS y, cuando se le solicite, introduzca el número de 6 dígitos del sitio web de AWS en el teclado de su teléfono. 

   Si no recibe la llamada de AWS, seleccione **Sign in (Iniciar sesión)** para iniciar sesión de nuevo en la consola y volver a comenzar. O consulte [Lost or unusable Multi-Factor Authentication (MFA) device](https://support.aws.amazon.com/#/contacts/aws-mfa-support) (Dispositivo de autenticación multifactor [MFA] perdido o inutilizado) para contactar con el servicio de asistencia técnica para obtener ayuda.

1. Después de verificar su número de teléfono, podrá iniciar sesión en su cuenta. Para ello, elija **Sign in to the console (Iniciar sesión en la consola)**.

1. El siguiente paso varía en función del tipo de MFA que utilice:
   + Si utiliza un dispositivo MFA virtual, elimine la cuenta del dispositivo. A continuación, diríjase a la página [Credenciales de seguridad de AWS](https://console.aws.amazon.com/iam/home?#security_credential) y elimine la entidad de dispositivo MFA virtual antigua antes de crear una nueva.
   + Para obtener una clave de seguridad FIDO, diríjase a la página [Credenciales de seguridad de AWS](https://console.aws.amazon.com/iam/home?#security_credential) y desactive la clave de seguridad FIDO antigua antes de habilitar una nueva.
   + En el caso de un token de TOTP de hardware, contacte con el proveedor externo para que lo ayude a reparar o sustituir el dispositivo. Puede seguir iniciando sesión a través de factores de autenticación alternativos hasta que reciba su nuevo dispositivo. Una vez que tenga su nuevo dispositivo de MFA de hardware, visite la página [Credenciales de seguridad de AWS](https://console.aws.amazon.com/iam/home?#security_credential) y elimine el dispositivo de MFA antiguo.
**nota**  
No es necesario reemplazar un dispositivo MFA perdido o robado con el mismo tipo de dispositivo. Por ejemplo, si se rompe la clave de seguridad FIDO y pide una nueva, puede utilizar la MFA virtual o un token de TOTP de hardware hasta que reciba una clave FIDO nueva.

**importante**  
Si su dispositivo de MFA ha desaparecido o se lo han robado, cambie la contraseña de usuario raíz después de iniciar sesión y establecer el dispositivo de MFA de reemplazo. Es posible que un atacante haya robado el dispositivo de autenticación y también tenga su contraseña actual. Para obtener más información, consulte [Cambiar la contraseña para Usuario raíz de la cuenta de AWS](root-user-password.md).

## Recuperación de un dispositivo MFA de usuario de IAM
<a name="iam-user-mfa-lost-or-broken"></a>

Si es usuario de IAM, pero no puede iniciar sesión con MFA, no podrá recuperar un dispositivo de MFA usted mismo. Debe ponerse en contacto con un administrador para desactivar el dispositivo. Después, puede habilitar un nuevo dispositivo.

**Para obtener ayuda relacionada con un dispositivo de MFA asociado a un usuario de IAM**

1. Póngase en contacto con el administrador de AWS o cualquier otra persona que le diera el nombre de usuario y la contraseña de usuario de IAM. El administrador debe desactivar el dispositivo de MFA tal y como se describe en [Desactivación de un dispositivo MFA](id_credentials_mfa_disable.md) para que pueda iniciar sesión.

1. El siguiente paso varía en función del tipo de MFA que utilice:
   + Si utiliza un dispositivo MFA virtual, elimine la cuenta del dispositivo. A continuación, active el dispositivo virtual tal y como se describe en [Asignación de un dispositivo de MFA virtual en la Consola de administración de AWS](id_credentials_mfa_enable_virtual.md).
   + Si se trata de una clave de seguridad FIDO, contacte con el proveedor externo para que lo ayude a sustituir el dispositivo. Cuando reciba la nueva clave de seguridad FIDO, habilítela como se describe en [Asignación de una clave de acceso o de seguridad en la Consola de administración de AWS](id_credentials_mfa_enable_fido.md).
   + En el caso de un token de TOTP de hardware, contacte con el proveedor externo para que lo ayude a reparar o sustituir el dispositivo. Una vez que tenga el nuevo dispositivo de MFA físico, habilítelo tal y como se describe en [Asignación de un token de TOTP de hardware en la Consola de administración de AWS](id_credentials_mfa_enable_physical.md).
**nota**  
No es necesario reemplazar un dispositivo MFA perdido o robado con el mismo tipo de dispositivo. Puede tener hasta ocho dispositivos MFA de cualquier combinación. Por ejemplo, si se rompe la clave de seguridad FIDO y pide una nueva, puede utilizar la MFA virtual o un token de TOTP de hardware hasta que reciba una clave FIDO nueva.

1. Si su dispositivo MFA ha sido robado o se ha extraviado, cambie su contraseña para que la persona que tenga el dispositivo de autenticación no tenga también su contraseña actual. Para obtener más información, consulte [Administrar las contraseñas de los usuarios de IAM](id_credentials_passwords_admin-change-user.md)

# Acceso seguro a la API con MFA
<a name="id_credentials_mfa_configure-api-require"></a>

Con las políticas de IAM, puede especificar qué operaciones de API puede llamar un usuario. Puede aplicar seguridad adicional al exigir a los usuarios que se autentiquen con la autenticación multifactor (MFA) antes de permitirles realizar acciones particularmente sensibles.

Por ejemplo, es posible que tenga una política que permita a un usuario realizar las acciones de Amazon EC2 `RunInstances`, `DescribeInstances` y de `StopInstances`. Sin embargo, es posible que quiera restringir una acción destructiva, como `TerminateInstances` y asegurarse de que los usuarios solo pueden realizar esta acción si se autentican mediante un dispositivo MFA de AWS.

**Topics**
+ [

## Descripción general
](#MFAProtectedAPI-overview)
+ [

## Situación: protección de MFA para la delegación entre cuentas
](#MFAProtectedAPI-cross-account-delegation)
+ [

## Situación: protección de MFA para el acceso a operaciones de API de la cuenta actual
](#MFAProtectedAPI-user-mfa)
+ [

## Situación: protección de MFA para recursos que tienen políticas basadas en recursos
](#MFAProtectedAPI-resource-policies)

## Descripción general
<a name="MFAProtectedAPI-overview"></a>

Para agregar la protección de MFA a las operaciones de API es preciso realizar estas tareas:

1. El administrador configura un dispositivo de MFA de AWS para cada usuario que deba realizar solicitudes de la API que requieran una autenticación MFA. Para obtener más información, consulte [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md). 

1. El administrador crea políticas para los usuarios que contienen un elemento `Condition` que comprueba si el usuario se ha autenticado con un dispositivo MFA de AWS.

1. El usuario llama a una de las operaciones de la API de AWS STS que admiten los parámetros de MFA: [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) o [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html). Dentro de la llamada, el usuario incluye el identificador del dispositivo que está asociado al usuario. El usuario también incluye la contraseña de un solo uso basada en el tiempo (TOTP) que el dispositivo genera. En cualquier caso, el usuario obtiene credenciales de seguridad temporales que puede utilizar para realizar solicitudes adicionales a AWS.
**nota**  
La protección de MFA para las operaciones de API de un servicio solo está disponible si el servicio es compatible con las credenciales de seguridad temporales. Para obtener una lista de estos servicios, consulte [Uso de credenciales de seguridad temporales para acceder a AWS](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html).

Si se produce un error en la autorización, AWS devuelve un mensaje de error de acceso denegado (al igual que con cualquier otro acceso no autorizado). Con las políticas de API protegidas mediante MFA, AWS deniega el acceso a las operaciones de API especificadas en las políticas si el usuario intenta llamar a una operación de API sin una autenticación MFA válida. La operación también se deniega si la marca temporal de la solicitud de la operación API no entra en el rango especificado en la política. Debe volver a autenticarse al usuario en MFA solicitando nuevas credenciales de seguridad temporales con un código de MFA y el número de serie del dispositivo.

### Políticas de IAM con condiciones de MFA
<a name="MFAProtectedAPI-policies"></a>

Las políticas con condiciones de MFA se pueden asociar a los elementos siguientes:
+ Un usuario o grupo de IAM
+ Un recurso, como un bucket de Amazon S3, una cola de Amazon SQS o un tema de Amazon SNS
+ La política de confianza de un rol de IAM que un usuario puede asumir

Puede utilizar una condición de MFA de una política para comprobar las propiedades siguientes:
+ Existencia: para simplemente verificar que el usuario se autenticó realmente con MFA, compruebe que la clave `aws:MultiFactorAuthPresent` sea `True` en una condición `Bool`. La clave solo está presente cuando el usuario se autentica con credenciales a corto plazo. Las credenciales a largo plazo, como, por ejemplo, las claves de acceso, no contienen esta clave.
+ Duración: si quiere conceder acceso únicamente dentro de un periodo determinado de tiempo después de la autenticación MFA, utilice un tipo de condición numérica para comparar la edad de la clave `aws:MultiFactorAuthAge` con un valor (por ejemplo, 3600 segundos). Tenga en cuenta que la clave `aws:MultiFactorAuthAge` no está presente si no se ha utilizado la MFA.

El siguiente ejemplo muestra la política de confianza de un rol de IAM que contiene una condición MFA para probar la existencia de la autenticación MFA. Con esta política, los usuarios de la cuenta de Cuenta de AWS especificada en el elemento `Principal` (sustituir `ACCOUNT-B-ID` por un ID de cuenta de Cuenta de AWS válido) pueden asumir la función a la que esta política está asociada. Sin embargo, tales usuarios solo puede asumir la función si el usuario está autenticado con MFA.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "ACCOUNT-B-ID"},
    "Action": "sts:AssumeRole",
    "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
  }
}
```

------

Para obtener más información sobre los tipos de condición para MFA, consulte [Claves de contexto de condición globales de AWS](reference_policies_condition-keys.md), [Operadores de condición numérica](reference_policies_elements_condition_operators.md#Conditions_Numeric) y [Operador de condición para comprobar la existencia de claves de condición](reference_policies_elements_condition_operators.md#Conditions_Null). 

### Elegir entre GetSessionToken y AssumeRole
<a name="scenarios"></a>

AWS STS proporciona dos operaciones de la API que permiten a los usuarios transmitir información de MFA: `GetSessionToken` y `AssumeRole`. La operación de API a la que el usuario llama para obtener credenciales de seguridad temporales depende de la situación a la que la API se aplique. 

**Utilice `GetSessionToken` en las situaciones siguientes:**
+ Llamadas a operaciones de API que tienen acceso a los recursos en la misma cuenta de Cuenta de AWS que el usuario de IAM que realiza la solicitud. Tenga en cuenta que las credenciales temporales de una solicitud `GetSessionToken` pueden obtener acceso a IAM y a las operaciones de la API de AWS STS y *solo* si contienen información de MFA en la solicitud de credenciales. Dado que las credenciales temporales devueltas por `GetSessionToken` contienen información de MFA, puede buscar la presencia de MFA en llamadas a las operaciones de API realizadas por las credenciales. 
+ El acceso a recursos que están protegidos con políticas basadas en recursos que contienen una condición de MFA.

La finalidad de la operación `GetSessionToken` es autenticar al usuario mediante MFA. No se pueden utilizar políticas para controlar las operaciones de autenticación.

**Utilice `AssumeRole` en las situaciones siguientes:**
+ Llamadas a operaciones de API que obtienen acceso a los recursos que están en la misma cuenta de Cuenta de AWS o en otra. Las llamadas a la API pueden incluir cualquier API de IAM o AWS STS. Tenga en cuenta que, para proteger el acceso, aplicar MFA en el momento en que el usuario asume el rol. Las credenciales temporales devueltas por `AssumeRole` no contienen información de MFA en el contexto, por lo que no puede buscar la presencia de MFA en operaciones de API individuales. Por ello debe utilizar `GetSessionToken` para restringir el acceso a los recursos protegidos por políticas basadas en recursos.

**nota**  
Los registros AWS CloudTrail contendrán información de MFA cuando el usuario de IAM inicie sesión con MFA. Si el usuario de IAM asume un rol de IAM, CloudTrail también registrará `mfaAuthenticated: true` en los atributos `sessionContext` para las acciones realizadas utilizando el rol asumido. Sin embargo, el registro de CloudTrail es independiente de lo que requiere IAM cuando se realizan llamadas a la API con las credenciales del rol asumido. Para obtener más información, consulte [Elemento userIdentity de CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

Más adelante, se proporciona información detallada sobre cómo implementar estas situaciones.

### Información importante sobre el acceso mediante API protegido por MFA
<a name="MFAProtectedAPI-important-points"></a>

Es importante comprender los siguientes aspectos de la protección de operaciones de API con MFA:
+ La protección con MFA solo está disponible con credenciales de seguridad temporales, las cuales deben obtenerse con `AssumeRole` o `GetSessionToken`. 
+ No puede utilizar el acceso a API protegido por MFA con las credenciales de usuario Usuario raíz de la cuenta de AWS.
+ No puede utilizar el acceso a API protegido por MFA con las llaves de seguridad U2F.
+ A los usuarios federados no se les puede asignar un dispositivo MFA para utilizarlo con servicios de AWS, por lo que no pueden obtener acceso a recursos de AWS controlados por MFA. (véase el punto siguiente). 
+ Las demás operaciones de API de AWS STS que devuelven credenciales temporales no admiten MFA. En `AssumeRoleWithWebIdentity` y `AssumeRoleWithSAML`, un proveedor externo autentica al usuario y AWS no puede determinar si ese proveedor exige una MFA. En `GetFederationToken`, MFA no está obligatoriamente asociado a un usuario concreto. 
+ Del mismo modo, las credenciales a largo plazo (claves de acceso de usuario de IAM y claves de acceso de usuario raíz) no se pueden utilizar con el acceso mediante API protegido por MFA, ya que no caducan.
+ También se puede llamar a `AssumeRole` y `GetSessionToken` sin información de MFA. En este caso, el intermediario obtiene credenciales de seguridad temporales, pero la información de la sesión para dichas credenciales temporales no indica si el usuario se autenticó con MFA.
+ Para establecer una protección de MFA para las operaciones de API, agregue condiciones de MFA a las políticas. Una política debe incluir la clave de condición `aws:MultiFactorAuthPresent` para aplicar el uso de MFA. Para la delegación entre cuentas, la política de confianza de la función debe incluir la clave de condición.
+ Cuando se permite que otra cuenta de Cuenta de AWS obtenga acceso a los recursos de su cuenta, la seguridad de los recursos dependerá de la configuración de la cuenta de confianza; es decir, de la otra cuenta (no de la suya). Esto es válido aunque se exija la autenticación multifactor. Cualquier identidad de la cuenta de confianza que tenga permiso para crear dispositivos MFA virtuales puede crear una notificación de MFA que respete la parte de la política de confianza de su rol. Antes de permitir que los miembros de otra cuenta obtengan acceso a sus recursos de AWS que requieren autenticación multifactor, debe asegurarse de que el propietario de la cuenta de confianza aplique las prácticas recomendadas de seguridad. Por ejemplo, la cuenta de confianza debe restringir exclusivamente a identidades concretas y de confianza el acceso a las operaciones de API confidenciales, tales como las operaciones de API de administración de dispositivos MFA.
+ Si una política contiene una condición de MFA, se deniega una solicitud si los usuarios de esta no se han autenticado con MFA o si proporcionan un identificador de dispositivo MFA no válido o una TOTP no válida.

## Situación: protección de MFA para la delegación entre cuentas
<a name="MFAProtectedAPI-cross-account-delegation"></a>

En este caso, quiere delegar el acceso de usuarios de IAM a otra cuenta, pero solo si dichos usuarios se autentican con un dispositivo MFA de AWS. Para obtener más información acerca de la delegación entre cuentas, consulte [Términos y conceptos de roles](id_roles.md#id_roles_terms-and-concepts). 

Supongamos que tiene una cuenta A (la cuenta que confía y es propietaria del recurso al que debe accederse) con la usuaria de IAM Anaya, que tiene permiso de administrador. Alice quiere conceder acceso al usuario Richard de la cuenta B (la cuenta de confianza), pero antes quiere asegurarse de que Richard se autentica con MFA antes de asumir el rol. 

1. En la cuenta que confía A, Anaya crea un rol de IAM denominado `CrossAccountRole` y establece la entidad principal de la política de confianza del rol en el ID de la cuenta B. La política de confianza concede permiso a la acción AWS STS `AssumeRole`. Anaya también añade una condición de MFA a la política de confianza, como la del siguiente ejemplo. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {"AWS": "ACCOUNT-B-ID"},
       "Action": "sts:AssumeRole",
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }
   }
   ```

------

1. Anaya añade una política de permisos al rol que especifica lo que le permite hacer la función. La política de permisos de un rol con protección de MFA no es diferente de cualquier otra política de permisos de rol. En el siguiente ejemplo, se muestra la política que Anaya agrega al rol; permite al usuario que la asume realizar cualquier acción de Amazon DynamoDB en la tabla `Books` de la cuenta A. Esta política también permite la acción `dynamodb:ListTables`, que es necesaria para llevar a cabo acciones en la consola. 
**nota**  
La política de permisos no incluye una condición de MFA. Es importante comprender que la autenticación MFA solo se usa para determinar si un usuario puede asumir el rol. Una vez que el usuario haya asumido el rol, no se realizarán más verificaciones de MFA. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "TableActions",
               "Effect": "Allow",
               "Action": "dynamodb:*",
               "Resource": "arn:aws:dynamodb:*:111122223333:table/Books"
           },
           {
               "Sid": "ListTables",
               "Effect": "Allow",
               "Action": "dynamodb:ListTables",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. En la cuenta de confianza B, el administrador se asegura de que el usuario de IAM Richard se haya configurado con un dispositivo MFA de AWS y de que conozca el ID del dispositivo. El ID de dispositivo es el número de serie si se trata de un dispositivo MFA físico, o bien el ARN si se trata de un dispositivo MFA virtual.

1. En la cuenta B, el administrador asocia la siguiente política al usuario Richard (o a un grupo del que sea miembro) que le permita llamar a la acción `AssumeRole`. El recurso se establece en el ARN del rol que Anaya creó en el paso 1. Observe que esta política no contiene una condición de MFA.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/CrossAccountRole"
               ]
           }
       ]
   }
   ```

------

1. En la cuenta B, Richard (o una aplicación que Richard esté ejecutando) llama a `AssumeRole`. La llamada a la API contiene el ARN del rol que se asumirá (`arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole`), el ID del dispositivo de MFA, y la TOTP actual que Richard obtiene de su dispositivo. 

   Cuando Richard llama a `AssumeRole`, AWS determina si tiene credenciales válidas, incluido la exigencia de MFA. En caso afirmativo, Richard asume el rol efectivamente y puede realizar cualquier acción de DynamoDB de la tabla denominada `Books` de la cuenta A con las credenciales temporales del rol. 

   Si desea ver un ejemplo de un programa que llame a `AssumeRole`, consulte [Llamada a AssumeRole con autenticación MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-assumerole).

## Situación: protección de MFA para el acceso a operaciones de API de la cuenta actual
<a name="MFAProtectedAPI-user-mfa"></a>

En este caso, debe asegurarse de que un usuario de su cuenta de Cuenta de AWS pueda obtener acceso a operaciones de la API confidenciales solamente cuando el usuario se haya autenticado con un dispositivo MFA de AWS.

Supongamos que tiene una cuenta A que contiene un grupo de desarrolladores que necesitan trabajar con instancias EC2. Los desarrolladores normales pueden trabajar con las instancias, pero no se les conceden permisos para las acciones `ec2:StopInstances` o `ec2:TerminateInstances`. Usted quiere limitar estas acciones privilegiadas "destructivas" solo a unos cuantos usuarios de confianza, por lo que añade protección de MFA a la política que permite estas acciones de Amazon EC2 de gran importancia. 

En este escenario, uno de los usuarios de confianza es Sofía. La usuaria Anaya es administradora de la cuenta A. 

1. Anaya se asegura de que Sofía esté configurada con un dispositivo MFA de AWS y de que Sofía conozca el ID del dispositivo. El ID de dispositivo es el número de serie si se trata de un dispositivo MFA físico, o bien el ARN si se trata de un dispositivo MFA virtual. 

1. Anaya crea un grupo denominado `EC2-Admins` y añade a la usuario Sofía al grupo.

1. Anaya asocia la siguiente política al grupo `EC2-Admins`. Esta política concede a los usuarios permiso para llamar a las acciones de Amazon EC2 `StopInstances` y `TerminateInstances` solo si el usuario se ha autenticado con MFA. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": [
         "ec2:StopInstances",
         "ec2:TerminateInstances"
       ],
       "Resource": ["*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------

1. 
**nota**  
Para que esta política surta efecto, antes los usuarios deben cerrar la sesión e iniciarla de nuevo.

   Si el usuario Sofía tiene que detener o terminar una instancia de Amazon EC2, ella (o una aplicación que esté ejecutando) llamará a `GetSessionToken`. Esta operación de API transmite el ID del dispositivo MFA y la TOTP actual que Sofía obtiene de su dispositivo.

1. La usuaria Sofía (o una aplicación que Sofía esté usando) utiliza las credenciales temporales que ofrece `GetSessionToken` para llamar a la acción de Amazon EC2 `StopInstances` o la acción de `TerminateInstances`. 

   Si desea ver un ejemplo de un programa que llame a `GetSessionToken`, consulte [Llamada a GetSessionToken con autenticación MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken), más adelante en el documento.

## Situación: protección de MFA para recursos que tienen políticas basadas en recursos
<a name="MFAProtectedAPI-resource-policies"></a>

En este caso, es usted propietario de un bucket de S3, una cola de SQS o un tema de SNS. Quiere asegurarse de que todos los usuarios de todas las cuentas de Cuenta de AWS que tengan acceso al recurso se autentiquen mediante un dispositivo MFA de AWS. 

Esta situación ilustra una forma de proporcionar una protección MFA entre cuentas en la que no se exija al usuario que asuma primero un rol. En este caso, el usuario puede obtener acceso al recursos si se cumplen tres condiciones. el usuario debe estar autenticado por MFA, debe poder obtener credenciales de seguridad temporales de `GetSessionToken` y debe pertenecer a una cuenta que sea de confianza para la política del recurso. 

Supongamos que está en la cuenta A y que crea un bucket de S3. Quiere conceder acceso a este bucket a usuarios que están en varias cuentas de Cuentas de AWS, pero solo si dichos usuarios están autenticados con MFA.

En este escenario, la usuaria Anaya es administradora de la cuenta A. El usuario Nikhil es un usuario de IAM de la cuenta C.

1. En la cuenta A, Anaya crea un bucket denominado `Account-A-bucket`.

1. Anaya añade la política de bucket al bucket. La política permite a todos los usuarios de la cuenta A, la cuenta B o la cuenta C las acciones de Amazon S3 `PutObject` y de `DeleteObject` en el bucket. La política contiene una condición de MFA. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"AWS": [
         "ACCOUNT-A-ID",
         "ACCOUNT-B-ID",
         "ACCOUNT-C-ID"
       ]},
       "Action": [
         "s3:PutObject",
         "s3:DeleteObject"
       ],
       "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------
**nota**  
Amazon S3 tiene una función de eliminación de MFA para el acceso de cuenta *raíz* (solo). Puede habilitar la eliminación de MFA de Amazon S3 cuando establezca el estado de control de versiones del bucket. La eliminación de MFA de Amazon S3 no se puede aplicar a un usuario de IAM y se administra de forma independiente del acceso mediante API protegido por MFA. Un usuario de IAM con permisos para eliminar un bucket no puede eliminar un bucket si la eliminación de MFA de Amazon S3 está habilitada. Para obtener más información acerca de la eliminación de MFA de Amazon S3, consulte [Eliminación de MFA](https://docs.aws.amazon.com/AmazonS3/latest/dev/MultiFactorAuthenticationDelete.html).

1. En la cuenta de confianza C, un administrador se asegura de que el usuario Nikhil se haya configurado con un dispositivo MFA de AWS y de que conozca el ID del dispositivo. El ID de dispositivo es el número de serie si se trata de un dispositivo MFA físico, o bien el ARN si se trata de un dispositivo MFA virtual. 

1. En la cuenta C, Nikhil (o una aplicación que esté ejecutando) llama a `GetSessionToken`. La llamada contiene el ID o el ARN del dispositivo de MFA y la TOTP actual que Nikhil obtiene de su dispositivo. 

1. Nikhil (o una aplicación que esté utilizando) utiliza las credenciales temporales devueltas por `GetSessionToken` para llamar a la acción `PutObject` Amazon S3 para cargar un archivo en `Account-A-bucket`. 

   Si desea ver un ejemplo de un programa que llame a `GetSessionToken`, consulte [Llamada a GetSessionToken con autenticación MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken), más adelante en el documento.
**nota**  
Las credenciales temporales que `AssumeRole` devuelve no funcionarán en este caso. Aunque el usuario puede proporcionar información de MFA para asumir un rol, las credenciales temporales devueltas por `AssumeRole` no contienen la información de MFA. Esa información se requiere para cumplir la condición de MFA de la política. 

# Código de muestra: solicitud de credenciales con autenticación multifactor
<a name="id_credentials_mfa_sample-code"></a>

En los siguientes ejemplos se muestra cómo llamar a las operaciones `GetSessionToken` y `AssumeRole` y transmitir los parámetros de autenticación MFA. No se requieren permisos para llamar a `GetSessionToken`, pero debe tener una política que le permita llamar a `AssumeRole`. Las credenciales devueltas se utilizan para enumerar todos los buckets de S3 de la cuenta.

## Llamada a GetSessionToken con autenticación MFA
<a name="MFAProtectedAPI-example-getsessiontoken"></a>

Los siguientes ejemplos muestran cómo llamar a `GetSessionToken` y transmitir la información de autenticación MFA. Las credenciales de seguridad temporales devueltas por la operación `GetSessionToken` se utilizarán para enumerar todos los buckets de S3 de la cuenta.

La política adjunta al usuario que ejecuta este código (o a un grupo al que pertenezca el usuario) proporciona los permisos para las credenciales temporales devueltas. En el código de este ejemplo, la política debe conceder al usuario permiso para solicitar la operación de Amazon S3 `ListBuckets`. 

Los siguientes ejemplos de código muestran cómo utilizar `GetSessionToken`.

------
#### [ CLI ]

**AWS CLI**  
**Cómo obtener un conjunto de credenciales a corto plazo para una identidad de IAM**  
El siguiente comando `get-session-token` recupera un conjunto de credenciales a corto plazo para la identidad de IAM que realiza la llamada. Las credenciales resultantes se pueden utilizar para las solicitudes donde la política requiere la autenticación multifactor (MFA). Las credenciales caducan 15 minutos después de haberse generado.  

```
aws sts get-session-token \
    --duration-seconds 900 \
    --serial-number "YourMFADeviceSerialNumber" \
    --token-code 123456
```
Salida:  

```
{
    "Credentials": {
        "AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE",
        "Expiration": "2020-05-19T18:06:10+00:00"
    }
}
```
Para obtener más información, consulte [Solicitud de credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken) en la *Guía del usuario de AWS IAM*.  
+  Para obtener información sobre la API, consulte [GetSessionToken](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-session-token.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: devuelve una instancia `Amazon.RuntimeAWSCredentials` que contiene credenciales temporales válidas durante un período de tiempo determinado. Las credenciales utilizadas para solicitar credenciales temporales se deducen de los valores predeterminados actuales del intérprete de comandos. Para especificar otras credenciales, utilice los parámetros -ProfileName o -AccessKey/-SecretKey.**  

```
Get-STSSessionToken
```
**Salida:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Ejemplo 2: devuelve una instancia de `Amazon.RuntimeAWSCredentials` que contiene credenciales temporales válidas durante una hora. Las credenciales utilizadas para realizar la solicitud se obtienen del perfil especificado.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**Salida:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Ejemplo 3: devuelve una instancia `Amazon.RuntimeAWSCredentials` que contiene credenciales temporales válidas durante una hora con el número de identificación del dispositivo MFA asociado a la cuenta, cuyas credenciales se especifican en el perfil “myprofilename” y el valor proporcionado por el dispositivo.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**Salida:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  Para obtener información sobre la API, consulte [GetSessionToken](https://docs.aws.amazon.com/powershell/v4/reference) en la *Referencia de Cmdlet de las Herramientas de AWS para PowerShell (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: devuelve una instancia `Amazon.RuntimeAWSCredentials` que contiene credenciales temporales válidas durante un período de tiempo determinado. Las credenciales utilizadas para solicitar credenciales temporales se deducen de los valores predeterminados actuales del intérprete de comandos. Para especificar otras credenciales, utilice los parámetros -ProfileName o -AccessKey/-SecretKey.**  

```
Get-STSSessionToken
```
**Salida:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Ejemplo 2: devuelve una instancia de `Amazon.RuntimeAWSCredentials` que contiene credenciales temporales válidas durante una hora. Las credenciales utilizadas para realizar la solicitud se obtienen del perfil especificado.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**Salida:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Ejemplo 3: devuelve una instancia `Amazon.RuntimeAWSCredentials` que contiene credenciales temporales válidas durante una hora con el número de identificación del dispositivo MFA asociado a la cuenta, cuyas credenciales se especifican en el perfil “myprofilename” y el valor proporcionado por el dispositivo.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**Salida:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  Para obtener información sobre la API, consulte [GetSessionToken](https://docs.aws.amazon.com/powershell/v5/reference) en la *Referencia de Cmdlet de las Herramientas de AWS para PowerShell (V5)*. 

------
#### [ Python ]

**SDK para Python (Boto3)**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples). 
Obtenga un token de sesión al pasar un token MFA y utilícelo para enumerar los buckets de Amazon S3 de la cuenta.  

```
def list_buckets_with_session_token_with_mfa(mfa_serial_number, mfa_totp, sts_client):
    """
    Gets a session token with MFA credentials and uses the temporary session
    credentials to list Amazon S3 buckets.

    Requires an MFA device serial number and token.

    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an Amazon Resource Name (ARN).
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    if mfa_serial_number is not None:
        response = sts_client.get_session_token(
            SerialNumber=mfa_serial_number, TokenCode=mfa_totp
        )
    else:
        response = sts_client.get_session_token()
    temp_credentials = response["Credentials"]

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Buckets for the account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  Para obtener detalles sobre la API, consulte [GetSessionToken](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/GetSessionToken) en la *Referencia de la API del AWS SDK para Python (Boto3)*. 

------

## Llamada a AssumeRole con autenticación MFA
<a name="MFAProtectedAPI-example-assumerole"></a>

Los siguientes ejemplos muestran cómo llamar a `AssumeRole` y transmitir la información de autenticación MFA. Las credenciales de seguridad temporales devueltas por `AssumeRole` se utilizan para enumerar todos los buckets de Amazon S3 de la cuenta.

Para obtener más información acerca de esta situación, consulte [Situación: protección de MFA para la delegación entre cuentas](id_credentials_mfa_configure-api-require.md#MFAProtectedAPI-cross-account-delegation). 

Los siguientes ejemplos de código muestran cómo utilizar `AssumeRole`.

------
#### [ .NET ]

**SDK para .NET**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/STS#code-examples). 

```
using System;
using System.Threading.Tasks;
using Amazon;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace AssumeRoleExample
{
    class AssumeRole
    {
        /// <summary>
        /// This example shows how to use the AWS Security Token
        /// Service (AWS STS) to assume an IAM role.
        ///
        /// NOTE: It is important that the role that will be assumed has a
        /// trust relationship with the account that will assume the role.
        ///
        /// Before you run the example, you need to create the role you want to
        /// assume and have it trust the IAM account that will assume that role.
        ///
        /// See https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html
        /// for help in working with roles.
        /// </summary>

        // A region property may be used if the profile or credentials loaded do not specify a region,
        // or to use a specific region.
        private static readonly RegionEndpoint REGION = RegionEndpoint.USWest2;

        static async Task Main()
        {
            // Create the SecurityToken client and then display the identity of the
            // default user.
            var roleArnToAssume = "arn:aws:iam::123456789012:role/testAssumeRole";

            var client = new Amazon.SecurityToken.AmazonSecurityTokenServiceClient(REGION);

            // Get and display the information about the identity of the default user.
            var callerIdRequest = new GetCallerIdentityRequest();
            var caller = await client.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"Original Caller: {caller.Arn}");

            // Create the request to use with the AssumeRoleAsync call.
            var assumeRoleReq = new AssumeRoleRequest()
            {
                DurationSeconds = 1600,
                RoleSessionName = "Session1",
                RoleArn = roleArnToAssume
            };

            var assumeRoleRes = await client.AssumeRoleAsync(assumeRoleReq);

            // Now create a new client based on the credentials of the caller assuming the role.
            var client2 = new AmazonSecurityTokenServiceClient(credentials: assumeRoleRes.Credentials, REGION);

            // Get and display information about the caller that has assumed the defined role.
            var caller2 = await client2.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"AssumedRole Caller: {caller2.Arn}");
        }
    }
}
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/sts-2011-06-15/AssumeRole) en la *Referencia de la API de AWS SDK para .NET*. 

------
#### [ Bash ]

**AWS CLI con Bash script**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples). 

```
###############################################################################
# function iecho
#
# This function enables the script to display the specified text only if
# the global variable $VERBOSE is set to true.
###############################################################################
function iecho() {
  if [[ $VERBOSE == true ]]; then
    echo "$@"
  fi
}

###############################################################################
# function errecho
#
# This function outputs everything sent to it to STDERR (standard error output).
###############################################################################
function errecho() {
  printf "%s\n" "$*" 1>&2
}

###############################################################################
# function sts_assume_role
#
# This function assumes a role in the AWS account and returns the temporary
#  credentials.
#
# Parameters:
#       -n role_session_name -- The name of the session.
#       -r role_arn -- The ARN of the role to assume.
#
# Returns:
#       [access_key_id, secret_access_key, session_token]
#     And:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function sts_assume_role() {
  local role_session_name role_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function sts_assume_role"
    echo "Assumes a role in the AWS account and returns the temporary credentials:"
    echo "  -n role_session_name -- The name of the session."
    echo "  -r role_arn -- The ARN of the role to assume."
    echo ""
  }

  while getopts n:r:h option; do
    case "${option}" in
      n) role_session_name=${OPTARG} ;;
      r) role_arn=${OPTARG} ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done

  response=$(aws sts assume-role \
    --role-session-name "$role_session_name" \
    --role-arn "$role_arn" \
    --output text \
    --query "Credentials.[AccessKeyId, SecretAccessKey, SessionToken]")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/aws-cli/sts-2011-06-15/AssumeRole) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ C\$1\$1 ]

**SDK para C\$1\$1**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sts#code-examples). 

```
bool AwsDoc::STS::assumeRole(const Aws::String &roleArn,
                             const Aws::String &roleSessionName,
                             const Aws::String &externalId,
                             Aws::Auth::AWSCredentials &credentials,
                             const Aws::Client::ClientConfiguration &clientConfig) {
    Aws::STS::STSClient sts(clientConfig);
    Aws::STS::Model::AssumeRoleRequest sts_req;

    sts_req.SetRoleArn(roleArn);
    sts_req.SetRoleSessionName(roleSessionName);
    sts_req.SetExternalId(externalId);

    const Aws::STS::Model::AssumeRoleOutcome outcome = sts.AssumeRole(sts_req);

    if (!outcome.IsSuccess()) {
        std::cerr << "Error assuming IAM role. " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
    else {
        std::cout << "Credentials successfully retrieved." << std::endl;
        const Aws::STS::Model::AssumeRoleResult result = outcome.GetResult();
        const Aws::STS::Model::Credentials &temp_credentials = result.GetCredentials();

        // Store temporary credentials in return argument.
        // Note: The credentials object returned by assumeRole differs
        // from the AWSCredentials object used in most situations.
        credentials.SetAWSAccessKeyId(temp_credentials.GetAccessKeyId());
        credentials.SetAWSSecretKey(temp_credentials.GetSecretAccessKey());
        credentials.SetSessionToken(temp_credentials.GetSessionToken());
    }

    return outcome.IsSuccess();
}
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/SdkForCpp/sts-2011-06-15/AssumeRole) en la *Referencia de la API de AWS SDK para C\$1\$1*. 

------
#### [ CLI ]

**AWS CLI**  
**Cómo asumir un rol**  
El siguiente comando `assume-role` recupera un conjunto de credenciales a corto plazo para el rol de IAM `s3-access-example`.  

```
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/xaccounts3access \
    --role-session-name s3-access-example
```
Salida:  

```
{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
        "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
    },
    "Credentials": {
        "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
        "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
        "Expiration": "2016-03-15T00:05:07Z",
        "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
    }
}
```
El resultado del comando contiene una clave de acceso, una clave secreta y un token de sesión que puede utilizar para autenticarse con AWS.  
Para el uso de la CLI de AWS, puede configurar un perfil con nombre asociado a un rol. Cuando utilice el perfil, la CLI de AWS llamará a assume-role y administrará las credenciales por usted. Para obtener más información, consulte [Uso de un rol de IAM en la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) en la *Guía del usuario de la CLI de AWS*.  
+  Para obtener información sobre la API, consulte [AssumeRole](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html) en la *Referencia de comandos de la AWS CLI*. 

------
#### [ Java ]

**SDK para Java 2.x**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sts#code-examples). 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
import software.amazon.awssdk.services.sts.model.StsException;
import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
import software.amazon.awssdk.services.sts.model.Credentials;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Locale;

/**
 * To make this code example work, create a Role that you want to assume.
 * Then define a Trust Relationship in the AWS Console. You can use this as an
 * example:
 *
 * {
 * "Version":"2012-10-17",		 	 	 
 * "Statement": [
 * {
 * "Effect": "Allow",
 * "Principal": {
 * "AWS": "<Specify the ARN of your IAM user you are using in this code example>"
 * },
 * "Action": "sts:AssumeRole"
 * }
 * ]
 * }
 *
 * For more information, see "Editing the Trust Relationship for an Existing
 * Role" in the AWS Directory Service guide.
 *
 * Also, set up your development environment, including your credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class AssumeRole {
    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <roleArn> <roleSessionName>\s

                Where:
                    roleArn - The Amazon Resource Name (ARN) of the role to assume (for example, arn:aws:iam::000008047983:role/s3role).\s
                    roleSessionName - An identifier for the assumed role session (for example, mysession).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String roleArn = args[0];
        String roleSessionName = args[1];
        Region region = Region.US_EAST_1;
        StsClient stsClient = StsClient.builder()
                .region(region)
                .build();

        assumeGivenRole(stsClient, roleArn, roleSessionName);
        stsClient.close();
    }

    public static void assumeGivenRole(StsClient stsClient, String roleArn, String roleSessionName) {
        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();

            // Display the time when the temp creds expire.
            Instant exTime = myCreds.expiration();
            String tokenInfo = myCreds.sessionToken();

            // Convert the Instant to readable date.
            DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.US)
                    .withZone(ZoneId.systemDefault());

            formatter.format(exTime);
            System.out.println("The token " + tokenInfo + "  expires on " + exTime);

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/sts-2011-06-15/AssumeRole) en la *Referencia de la API de AWS SDK for Java 2.x*. 

------
#### [ JavaScript ]

**SDK para JavaScript (v3)**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sts#code-examples). 
Cree el cliente.  

```
import { STSClient } from "@aws-sdk/client-sts";
// Set the AWS Region.
const REGION = "us-east-1";
// Create an AWS STS service client object.
export const client = new STSClient({ region: REGION });
```
Asuma el rol de IAM.  

```
import { AssumeRoleCommand } from "@aws-sdk/client-sts";

import { client } from "../libs/client.js";

export const main = async () => {
  try {
    // Returns a set of temporary security credentials that you can use to
    // access Amazon Web Services resources that you might not normally
    // have access to.
    const command = new AssumeRoleCommand({
      // The Amazon Resource Name (ARN) of the role to assume.
      RoleArn: "ROLE_ARN",
      // An identifier for the assumed role session.
      RoleSessionName: "session1",
      // The duration, in seconds, of the role session. The value specified
      // can range from 900 seconds (15 minutes) up to the maximum session
      // duration set for the role.
      DurationSeconds: 900,
    });
    const response = await client.send(command);
    console.log(response);
  } catch (err) {
    console.error(err);
  }
};
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand) en la *Referencia de la API de AWS SDK para JavaScript*. 

**SDK para JavaScript (v2)**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascript/example_code/sts#code-examples). 

```
// Load the AWS SDK for Node.js
const AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

var roleToAssume = {
  RoleArn: "arn:aws:iam::123456789012:role/RoleName",
  RoleSessionName: "session1",
  DurationSeconds: 900,
};
var roleCreds;

// Create the STS service object
var sts = new AWS.STS({ apiVersion: "2011-06-15" });

//Assume Role
sts.assumeRole(roleToAssume, function (err, data) {
  if (err) console.log(err, err.stack);
  else {
    roleCreds = {
      accessKeyId: data.Credentials.AccessKeyId,
      secretAccessKey: data.Credentials.SecretAccessKey,
      sessionToken: data.Credentials.SessionToken,
    };
    stsGetCallerIdentity(roleCreds);
  }
});

//Get Arn of current identity
function stsGetCallerIdentity(creds) {
  var stsParams = { credentials: creds };
  // Create STS service object
  var sts = new AWS.STS(stsParams);

  sts.getCallerIdentity({}, function (err, data) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log(data.Arn);
    }
  });
}
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/AWSJavaScriptSDK/sts-2011-06-15/AssumeRole) en la *Referencia de la API de AWS SDK para JavaScript*. 

------
#### [ PowerShell ]

**Herramientas para PowerShell V4**  
**Ejemplo 1: devuelve un conjunto de credenciales temporales (clave de acceso, clave secreta y token de sesión) que se pueden usar durante una hora para acceder a recursos de AWS a los que el usuario solicitante normalmente no tendría acceso. Las credenciales devueltas tienen los permisos permitidos por la política de acceso del rol que se está asumiendo y por la política proporcionada (no se puede usar la política proporcionada para conceder permisos superiores a los definidos en la política de acceso del rol que se está asumiendo).**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**Ejemplo 2: devuelve un conjunto de credenciales temporales, válidas durante una hora, que tienen los mismos permisos que se definen en la política de acceso del rol que se está asumiendo.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**Ejemplo 3: devuelve un conjunto de credenciales temporales que proporcionan el número de serie y el token generado a partir de una MFA asociada a las credenciales de usuario utilizadas para ejecutar el cmdlet.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**Ejemplo 4: devuelve un conjunto de credenciales temporales que han asumido un rol definido en la cuenta de un cliente. Para cada rol que el tercero pueda asumir, la cuenta del cliente debe crear un rol con un identificador que se debe pasar en el parámetro -ExternalId cada vez que se asuma el rol.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/powershell/v4/reference) en la *Referencia de Cmdlet de las Herramientas de AWS para PowerShell (V4)*. 

**Herramientas para PowerShell V5**  
**Ejemplo 1: devuelve un conjunto de credenciales temporales (clave de acceso, clave secreta y token de sesión) que se pueden usar durante una hora para acceder a recursos de AWS a los que el usuario solicitante normalmente no tendría acceso. Las credenciales devueltas tienen los permisos permitidos por la política de acceso del rol que se está asumiendo y por la política proporcionada (no se puede usar la política proporcionada para conceder permisos superiores a los definidos en la política de acceso del rol que se está asumiendo).**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**Ejemplo 2: devuelve un conjunto de credenciales temporales, válidas durante una hora, que tienen los mismos permisos que se definen en la política de acceso del rol que se está asumiendo.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**Ejemplo 3: devuelve un conjunto de credenciales temporales que proporcionan el número de serie y el token generado a partir de una MFA asociada a las credenciales de usuario utilizadas para ejecutar el cmdlet.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**Ejemplo 4: devuelve un conjunto de credenciales temporales que han asumido un rol definido en la cuenta de un cliente. Para cada rol que el tercero pueda asumir, la cuenta del cliente debe crear un rol con un identificador que se debe pasar en el parámetro -ExternalId cada vez que se asuma el rol.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/powershell/v5/reference) en la *Referencia de Cmdlet de las Herramientas de AWS para PowerShell (V5)*. 

------
#### [ Python ]

**SDK para Python (Boto3)**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples). 
Asuma un rol de IAM que requiera un token MFA y utilice credenciales temporales para enumerar los buckets de Amazon S3 para la cuenta.  

```
def list_buckets_from_assumed_role_with_mfa(
    assume_role_arn, session_name, mfa_serial_number, mfa_totp, sts_client
):
    """
    Assumes a role from another account and uses the temporary credentials from
    that role to list the Amazon S3 buckets that are owned by the other account.
    Requires an MFA device serial number and token.

    The assumed role must grant permission to list the buckets in the other account.

    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an ARN.
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    response = sts_client.assume_role(
        RoleArn=assume_role_arn,
        RoleSessionName=session_name,
        SerialNumber=mfa_serial_number,
        TokenCode=mfa_totp,
    )
    temp_credentials = response["Credentials"]
    print(f"Assumed role {assume_role_arn} and got temporary credentials.")

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Listing buckets for the assumed role's account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/AssumeRole) en la *Referencia de la API del AWS SDK para Python (Boto3)*. 

------
#### [ Ruby ]

**SDK para Ruby**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples). 

```
  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/sts-2011-06-15/AssumeRole) en la *Referencia de la API de AWS SDK para Ruby*. 

------
#### [ Rust ]

**SDK para Rust**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/sts/#code-examples). 

```
async fn assume_role(config: &SdkConfig, role_name: String, session_name: Option<String>) {
    let provider = aws_config::sts::AssumeRoleProvider::builder(role_name)
        .session_name(session_name.unwrap_or("rust_sdk_example_session".into()))
        .configure(config)
        .build()
        .await;

    let local_config = aws_config::from_env()
        .credentials_provider(provider)
        .load()
        .await;
    let client = Client::new(&local_config);
    let req = client.get_caller_identity();
    let resp = req.send().await;
    match resp {
        Ok(e) => {
            println!("UserID :               {}", e.user_id().unwrap_or_default());
            println!("Account:               {}", e.account().unwrap_or_default());
            println!("Arn    :               {}", e.arn().unwrap_or_default());
        }
        Err(e) => println!("{:?}", e),
    }
}
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://docs.rs/aws-sdk-sts/latest/aws_sdk_sts/client/struct.Client.html#method.assume_role) en la *Referencia de la API de AWS SDK para Rust*. 

------
#### [ Swift ]

**SDK para Swift**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/iam#code-examples). 

```
import AWSSTS

    public func assumeRole(role: IAMClientTypes.Role, sessionName: String)
        async throws -> STSClientTypes.Credentials
    {
        let input = AssumeRoleInput(
            roleArn: role.arn,
            roleSessionName: sessionName
        )
        do {
            let output = try await stsClient.assumeRole(input: input)

            guard let credentials = output.credentials else {
                throw ServiceHandlerError.authError
            }

            return credentials
        } catch {
            print("Error assuming role: ", dump(error))
            throw error
        }
    }
```
+  Para obtener información sobre la API, consulte [AssumeRole](https://sdk.amazonaws.com/swift/api/awssts/latest/documentation/awssts/stsclient/assumerole(input:)) en la *Referencia de la API de AWS SDK para Swift*. 

------

# Credenciales específicas del servicio para los usuarios de IAM
<a name="id_credentials_service-specific-creds"></a>

Las credenciales específicas del servicio son mecanismos de autenticación especializados que se han diseñados para servicios de AWS específicos. Estas credenciales proporcionan una autenticación simplificada en comparación con las credenciales de AWS estándar, y se adaptan a los requisitos de autenticación de los servicios de AWS individuales. A diferencia de las claves de acceso, que se pueden usar en varios servicios de AWS, las credenciales específicas del servicio están diseñadas para usarse únicamente con el servicio para el que se crearon. Este enfoque específico mejora la seguridad al limitar el alcance de las credenciales.

Las credenciales específicas del servicio suelen consistir en un nombre de usuario y una contraseña o en claves de API especializadas que se formatean de acuerdo con los requisitos del servicio específico. Cuando se crean credenciales específicas de un servicio, se activan de forma predeterminada y se pueden usar inmediatamente. Puede tener un máximo de dos conjuntos de credenciales específicas del servicio para cada servicio compatible por usuario de IAM. Este límite permite mantener un conjunto activo y, al mismo tiempo, cambiar a un conjunto nuevo cuando sea necesario. Actualmente, AWS admite credenciales específicas del servicio para los siguientes servicios:

## Cuándo usar credenciales específicas del servicio
<a name="id_credentials_service-specific-creds-usecase"></a>

Las credenciales específicas del servicio están diseñadas para ser compatibles con bibliotecas, SDK, herramientas o aplicaciones de terceros que no son compatibles nativamente con las credenciales de AWS, los SDK de AWS o las API de AWS. Dichos casos de uso incluyen la migración a servicios de AWS desde una infraestructura autohospedada o de servicios alojados por otros proveedores.

Al empezar desde cero, recomendamos, en lo posible, utilizar credenciales temporales de AWS, como las que entrega un rol de IAM, para autenticarse en un servicio de AWS mediante un SDK de AWS o una biblioteca que admita credenciales temporales de AWS.

## Rotación de credenciales específicas del servicio
<a name="id_credentials_service-specific-creds-rotation"></a>

Como práctica recomendada de seguridad, haga rotación de las credenciales específicas del servicio con regularidad. Para hacer una rotación de las credenciales sin interrumpir sus aplicaciones:

1. Cree un segundo conjunto de credenciales específicas de un servicio para un usuario de IAM.

1. Actualice todas las aplicaciones para que usen las nuevas credenciales y comprobar que funcionan correctamente.

1. Cambie el estado de las credenciales originales a "Inactivo".

1. Compruebe que todas las aplicaciones siguen funcionando correctamente.

1. Elimine las credenciales inactivas específicas del servicio cuando esté seguro de que ya no son necesarias.

## Monitoreo de las credenciales específicas del servicio
<a name="id_credentials_service-specific-creds-monitoring"></a>

Puede usar AWS CloudTrail para monitorear el uso de credenciales específicas del servicio en su cuenta de AWS. Para ver los eventos de CloudTrail relacionados con el uso de credenciales de un servicio específico, revise los registros de CloudTrail para ver los eventos del servicio en el que se utilizan las credenciales. Para obtener más información, consulte [Registro de llamadas a IAM y a la API de AWS STS con AWS CloudTrail](cloudtrail-integration.md).

Para mayor seguridad, piense en la posibilidad de configurar alarmas de CloudWatch para que notifiquen patrones de uso de credenciales específicos que puedan indicar un acceso no autorizado u otros problemas de seguridad. Para obtener más información, consulte [Monitoreo de archivos de registro de CloudTrail con Registros de Amazon CloudWatch](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html) en la *Guía del usuario de AWS CloudTrail*.

En los siguientes temas se proporciona información acerca de las credenciales específicas del servicio.

**Topics**
+ [

## Cuándo usar credenciales específicas del servicio
](#id_credentials_service-specific-creds-usecase)
+ [

## Rotación de credenciales específicas del servicio
](#id_credentials_service-specific-creds-rotation)
+ [

## Monitoreo de las credenciales específicas del servicio
](#id_credentials_service-specific-creds-monitoring)
+ [

# Claves de API para Amazon Bedrock y Registros de Amazon CloudWatch
](id_credentials_bedrock_cloudwatchlogs.md)
+ [

# Uso de IAM con Amazon Keyspaces (para Apache Cassandra)
](id_credentials_keyspaces.md)

# Claves de API para Amazon Bedrock y Registros de Amazon CloudWatch
<a name="id_credentials_bedrock_cloudwatchlogs"></a>

**nota**  
Las claves de API de Registros de Amazon CloudWatch están disponibles actualmente en versión preliminar y estarán disponibles de forma general en las próximas semanas. Las claves de API para Registros de Amazon CloudWatch son muy similares a las claves de API a largo plazo de Amazon Bedrock descritas en esta página. Para obtener más información sobre las claves de API a largo plazo de Registros de Amazon CloudWatch, consulte [Envío de registros a Registros de Amazon CloudWatch mediante el punto de conexión HLC](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HLC_Endpoint.html).

Amazon Bedrock es un servicio totalmente administrado que ofrece modelos fundacionales de empresas líderes en IA y de Amazon. Puede acceder a Amazon Bedrock a través de la Consola de administración de AWS y mediante programación con la AWS CLI o la API de AWS. Al realizar solicitudes programáticas a Amazon Bedrock, puede autenticarse mediante [credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) o claves de API de Amazon Bedrock. Amazon Bedrock admite dos tipos de claves de API:
+ **Claves de API a corto plazo**: una clave de API a corto plazo es una URL prefirmada que utiliza la versión 4 de AWS Signature. Las claves de API a corto plazo comparten los mismos permisos y caducidad que las credenciales de la identidad que genera la clave de API y son válidas durante un máximo de 12 horas o el tiempo restante de la sesión de consola, lo que sea más corto. Puede usar la consola Amazon Bedrock, el paquete `aws-bedrock-token-generator` de Python y los paquetes de otros lenguajes de programación a fin de generar claves de API a corto plazo. Para obtener más información, consulte [Generar claves de API de Amazon Bedrock para acceder fácilmente a la API de Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) en la *Guía del usuario de Amazon Bedrock*.
+ **Claves de API a largo plazo**: las claves de API a largo plazo se asocian a un usuario de IAM y se generan con [credenciales específicas del servicio](id_credentials_service-specific-creds.md) de IAM. Estas credenciales están diseñadas para usarse únicamente con Amazon Bedrock, lo que mejora la seguridad al limitar el alcance de las credenciales. Puede establecer una fecha de caducidad para el momento en que caduque la clave de API a largo plazo. Puede usar la consola de IAM o Amazon Bedrock, la CLI de AWS o la API de AWS para generar claves de API a largo plazo.

Un usuario de IAM puede tener hasta dos claves de API a largo plazo para Amazon Bedrock, que ayudan a implementar prácticas de rotación de claves seguras. 

Al generar una clave de API a largo plazo, la política administrada de AWS [AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockLimitedAccess) se adjunta automáticamente al usuario de IAM. Esta política otorga acceso a las principales operaciones de la API de Amazon Bedrock. Si necesita acceso adicional a Amazon Bedrock, puede modificar los permisos del usuario de IAM. Para obtener más información acerca de la modificación de permisos, consulte [Adición y eliminación de permisos de identidad de IAM](access_policies_manage-attach-detach.md). Para obtener más información sobre cómo usar una clave de Amazon Bedrock, consulte [Use an Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html) en la *Guía del usuario de Amazon Bedrock*.

**nota**  
Las claves de API a largo plazo presentan un mayor riesgo de seguridad en comparación con las claves de API a corto plazo. Cuando sea posible, le recomendamos que utilice claves de API a corto plazo o credenciales de seguridad temporales. Si utiliza claves de API a largo plazo, recomendamos la implementación de prácticas de rotación regular de claves.

## Requisitos previos
<a name="id_credentials_bedrock_prerequisites"></a>

Antes de que pueda generar una clave de API a largo plazo de Amazon Bedrock desde la consola de IAM, debe cumplir estos requisitos previos:
+ Un usuario de IAM para asociar con la clave de API a largo plazo. Para obtener instrucciones sobre la creación de un usuario de IAM, consulte [Creación de un usuario de IAM en su Cuenta de AWS](id_users_create.md).
+ Asegúrese de tener los siguientes permisos de política de IAM para administrar las credenciales específicas del servicio para un usuario de IAM. La política de ejemplo otorga permiso para crear, enumerar, actualizar, eliminar y restablecer las credenciales específicas del servicio. Reemplace el valor `username` del elemento Resource con el nombre del usuario de IAM para el que generará las claves de API de Amazon Bedrock:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ManageBedrockServiceSpecificCredentials",
              "Effect": "Allow",
              "Action": [
                  "iam:CreateServiceSpecificCredential",
                  "iam:ListServiceSpecificCredentials",
                  "iam:UpdateServiceSpecificCredential",
                  "iam:DeleteServiceSpecificCredential",
                  "iam:ResetServiceSpecificCredential"
              ],
              "Resource": "arn:aws:iam::*:user/username"
          }
      ]
  }
  ```

------

## Generación de una clave de API a largo plazo para Amazon Bedrock (consola)
<a name="id_credentials_bedrock_console_create"></a>

**Para generar una clave de API a largo plazo para Amazon Bedrock (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Usuarios**.

1. Seleccione el usuario de IAM para el que desea generar las claves de API a largo plazo de Amazon Bedrock.

1. Seleccione la pestaña de **credenciales de seguridad**.

1. En la sección **Claves de API para Amazon Bedrock**, seleccione **Generar clave de API**.

1. Para **Expiración de la clave de API**, realice una de las siguientes acciones:
   + Seleccione una duración de la expiración de la clave de API de **1**, **5** , **30**, **90** o **365** días.
   + Elija **Duración personalizada** para especificar una fecha de expiración personalizada de la clave de API.
   + Seleccione **Nunca caduca** (no se recomienda)

1. Seleccione **Generar clave de API**.

1. Copie o descargue su clave de API. Esta es la única vez que puede ver el valor de la clave de API.
**importante**  
Guarde su clave de API de forma segura. Después de cerrar el cuadro de diálogo, no podrá volver a recuperar esta clave de API. Si pierde u olvida la clave de acceso secreta, no podrá recuperarla. En su lugar, cree una nueva clave de acceso e inactive la antigua.

## Generación de una clave de API a largo plazo para Amazon Bedrock (AWS CLI)
<a name="id_credentials_bedrock_cli_create"></a>

Para generar una clave de API a largo plazo para Amazon Bedrock mediante la AWS CLI, siga los pasos a continuación:

1. Cree un usuario de IAM que se utilizará con Amazon Bedrock mediante el comando [create-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-user.html):

   ```
   aws iam create-user \
       --user-name BedrockAPIKey_1
   ```

1. Adjunte la política `AmazonBedrockLimitedAccess` administrada de AWS al usuario de IAM de Amazon Bedrock mediante el comando [attach-user-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-user-policy.html):

   ```
   aws iam attach-user-policy --user-name BedrockAPIKey_1 \
       --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. Genere la clave de API a largo plazo de Amazon Bedrock mediante el comando [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html). Para la antigüedad de la credencial, puede especificar un valor entre 1 y 36 600 días. Si no especifica una antigüedad de la credencial, la clave de API no caducará.

   Para generar una clave de API a largo plazo con una expiración de 30 días:

   ```
   aws iam create-service-specific-credential \
       --user-name BedrockAPIKey_1 \
       --service-name bedrock.amazonaws.com \
       --credential-age-days 30
   ```

La `ServiceApiKeyValue` devuelta en la respuesta es su clave de API de Amazon Bedrock a largo plazo. Guarde el valor `ServiceApiKeyValue` de forma segura, ya que no podrá recuperarlo más tarde.

### Enumeración de las claves de API a largo plazo (AWS CLI)
<a name="id_credentials_bedrock_cli_list"></a>

Para enumerar los metadatos de las claves de API a largo plazo de Amazon Bedrock para un usuario específico, utilice el comando [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) con el parámetro `--user-name`:

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --user-name BedrockAPIKey_1
```

Para enumerar todos los metadatos de las claves de API a largo plazo de Amazon Bedrock de la cuenta, utilice el comando [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) con el parámetro `--all-users`:

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --all-users
```

### Actualización del estado de la clave de API a largo plazo (AWS CLI)
<a name="id_credentials_bedrock_cli_update"></a>

Para actualizar el estado de una clave de API a largo plazo para Amazon Bedrock, utilice el comando [update-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-service-specific-credential.html):

```
aws iam update-service-specific-credential \
    --user-name "BedrockAPIKey_1" \
    --service-specific-credential-id "ACCA1234EXAMPLE1234" \
    --status Inactive|Active
```

## Generación de una clave de API a largo plazo para Amazon Bedrock (API de AWS)
<a name="id_credentials_bedrock_api"></a>

Puede utilizar las siguientes operaciones de API para generar y administrar claves de API a largo plazo para Amazon Bedrock:
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html) 

# Uso de IAM con Amazon Keyspaces (para Apache Cassandra)
<a name="id_credentials_keyspaces"></a>

El servicio Amazon Keyspaces (for Apache Cassandra) es un servicio de bases de datos administrado, de alta disponibilidad y escalable compatible con Apache Cassandra. Puede acceder a Amazon Keyspaces a través de la Consola de administración de AWS o mediante programación. Para acceder a Amazon Keyspaces mediante programación con credenciales específicas del servicio, puede utilizar `cqlsh` o los controladores Cassandra de código abierto. *Las credenciales específicas del servicio* incluyen un nombre de usuario y una contraseña como los que utiliza Cassandra para la autenticación y la administración del acceso. Puede tener un máximo de dos conjuntos de credenciales específicas del servicio para cada servicio compatible por usuario.

Para acceder a Amazon Keyspaces mediante programación con claves de acceso de AWS, puede utilizar el SDK de AWS, la AWS Command Line Interface (AWS CLI) o los controladores de código abierto de Cassandra con el plugin SigV4. Para obtener más información, consulte [Crear y configurar credenciales de AWS para Amazon Keyspaces](https://docs.aws.amazon.com//keyspaces/latest/devguide/access.credentials.html) en la *Guía para desarrolladores de Amazon Keyspaces (para Apache Cassandra)*.

**nota**  
Si tiene previsto interactuar con Amazon Keyspaces únicamente a través de la consola, no es necesario que genere credenciales específicas del servicio. Para obtener más información, consulte [Accessing Amazon Keyspaces using the console](https://docs.aws.amazon.com/keyspaces/latest/devguide/console_keyspaces.html) (Acceso a Amazon Keyspaces mediante la consola) en la *Amazon Keyspaces (for Apache Cassandra) Developer Guide* (Guía para desarrolladores de Amazon Keyspaces [para Apache Cassandra]).

Para obtener más información sobre los permisos necesarios para acceder a Amazon Keyspaces, consulte [ejemplos de políticas basadas en identidad de Amazon Keyspaces (for Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console) en la *Guía para desarrolladores de Amazon Keyspaces (for Apache Cassandra)*.

## Generar credenciales de Amazon Keyspaces (consola)
<a name="keyspaces_credentials_console"></a>

Puede utilizar la Consola de administración de AWS para generar credenciales de Amazon Keyspaces (for Apache Cassandra) para los usuarios de IAM.

**Para generar credenciales específicas del servicio de Amazon Keyspaces (consola)**

1. Inicie sesión en Consola de administración de AWS Management Console y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Users (Usuarios)** y, a continuación, el nombre del usuario que requiere las credenciales.

1. En la pestaña **Credenciales de seguridad** debajo de **Credenciales para el servicio Amazon Keyspaces (for Apache Cassandra)**, seleccione **Generar credenciales**.

1. Las credenciales específicas del servicio ya están disponibles. Esta es la única vez que se puede ver o descargar la contraseña. No puede recuperarla más adelante. Sin embargo, puede restablecerla en cualquier momento. Guarde el usuario y la contraseña en una ubicación segura, ya que los necesitará más adelante.

## Generación de credenciales de Amazon Keyspaces (AWS CLI)
<a name="keyspaces_credentials_cli"></a>

Puede utilizar la AWS CLI para generar credenciales de Amazon Keyspaces (for Apache Cassandra) para los usuarios de IAM.

**Para generar credenciales específicas del servicio de Amazon Keyspaces (AWS CLI)**
+ Para ello, utilice el siguiente comando:
  + [aws iam create-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-specific-credential.html)

## Generación de credenciales de Amazon Keyspaces (API de AWS)
<a name="keyspaces_credentials_api"></a>

Puede utilizar la API de AWS para generar credenciales de Amazon Keyspaces (for Apache Cassandra) para los usuarios de IAM.

**Para generar credenciales específicas del servicio de Amazon Keyspaces (API de AWS)**
+ Complete la siguiente operación:
  + [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 

# Búsqueda de credenciales AWS no utilizadas
<a name="id_credentials_finding-unused"></a>

Para aumentar la seguridad de su cuenta de Cuenta de AWS, elimine las credenciales de usuario de IAM (es decir, contraseñas y claves de acceso) que no sean necesarias. Por ejemplo, cuando los usuarios dejen su organización o ya no necesiten obtener acceso a AWS, busque las credenciales que utilizaron y asegúrese de que ya no sean operativas. Lo ideal es eliminar las credenciales si ya no son necesarias. Siempre puede volver a crearlas más tarde, en caso de que surja la necesidad. Como mínimo, debe cambiar la contraseña o desactivar las claves de acceso para que los antiguos usuarios ya no puedan obtener acceso.

Por supuesto, la definición de *sin utilizar* puede variar y normalmente significa una credencial que no se ha utilizado en un periodo de tiempo especificado.

## Búsqueda de contraseñas no utilizadas
<a name="finding-unused-passwords"></a>

Puede utilizar la Consola de administración de AWS para ver la información de uso de la contraseña por parte de sus usuarios. Si tiene una gran cantidad de usuarios, puede utilizar la consola para descargar un informe de credenciales que le indique cuándo cada usuario utilizó por última vez su contraseña de la consola. También puede obtener acceso a la información desde la AWS CLI o la API de IAM.

**Para encontrar contraseñas no utilizadas (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Users (Usuarios)**.

1. Si es necesario, añada la columna **Console last sign-in (Último inicio de sesión de la consola)** a la tabla de usuarios:

   1. Encima de la tabla, en el extremo derecho, elija el icono de configuración (![\[Settings icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. En **Seleccionar columnas visibles**, seleccione **Último inicio de sesión de la consola**.

   1. Elija **Confirmar** para volver a la lista de usuarios.

1. La columna **Console last sign-in (Último inicio de sesión de la consola)** muestra la fecha de la última vez que el usuario inició sesión en AWS a través de la consola. Puede utilizar esta información para encontrar usuarios que tengan contraseñas y que no hayan iniciado sesión en un periodo de tiempo superior al especificado. La columna muestra **Never (Nunca)** para los usuarios que tengan contraseñas y que nunca hayan iniciado sesión. **None (Ninguna)** indica los usuarios sin contraseñas. Las contraseñas que no se hayan utilizado recientemente probablemente deban eliminarse.
**importante**  
Debido a un problema de servicio, los datos de la última vez que se utilizó la contraseña no incluyen el uso de la contraseña desde el 3 de mayo de 2018 22:50 PDT al 23 de mayo de 2018 14:08 PDT. Esto afecta a las fechas del [último inicio de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) mostradas en la consola de IAM y las fechas de la última vez que se utilizó la contraseña en el [Informe de credenciales de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html) y devueltas mediante la [Operación de la API GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html). Si los usuarios han iniciado sesión durante el tiempo afectado, la fecha de la última vez que se utilizó la contraseña que se devuelve es la fecha en que el usuario inició sesión antes del 3 de mayo de 2018. Para los usuarios que iniciaron sesión después del 23 de mayo de 2018 14:08 PDT, la fecha devuelta de la última vez que se utilizó la contraseña es precisa.  
Si utiliza la información de la última vez que se utilizó la contraseña para identificar las credenciales de no utilizados para su eliminación, como, por ejemplo, eliminar los usuarios que no iniciaron sesión en AWS en los últimos 90 días, recomendamos ajustar la ventana de evaluación para incluir fechas después del 23 de mayo de 2018. De forma alternativa, si los usuarios utilizan claves de acceso para acceder a AWS mediante programación puede hacer referencia a la información de la última vez que se utilizó la clave de acceso ya que es precisa para todas las fechas. 

**Para encontrar contraseñas no utilizadas descargando el informe de credenciales (consola)**

1. Inicie sesión en Consola de administración de AWS Management Console y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En panel de navegación, elija **Credential report (Informe de credenciales)**.

1. Seleccione **Download Report (Descargar informe)** para descargar un archivo de valores separados por comas (CSV) denominado `status_reports_<date>T<time>.csv`. La quinta columna es la columna `password_last_used` con las fechas o uno de los títulos siguientes:
   + **N/A** - Usuarios que no tienen una contraseña asignada en absoluto.
   + **no\$1information (sin\$1información)** - Usuarios que no han utilizado la contraseña desde que IAM comenzó a hacer un seguimiento del tiempo de la contraseña, el 20 de octubre de 2014.

**Para encontrar contraseñas no utilizadas (AWS CLI)**  
Ejecute el siguiente comando para encontrar contraseñas no utilizadas:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)` devuelve una lista de usuarios, cada uno con un valor `PasswordLastUsed`. Si el valor no aparece significa que el usuario no tiene contraseña o no la ha utilizado desde que IAM comenzó a hacer un seguimiento de la antigüedad de las contraseñas, el 20 de octubre de 2014.

**Para encontrar contraseñas no utilizadas (API de AWS)**  
Llame a la siguiente operación para encontrar contraseñas no utilizadas:
+  ` [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` devuelve una colección de usuarios; cada uno con un valor `<PasswordLastUsed>`. Si el valor no aparece significa que el usuario no tiene contraseña o no la ha utilizado desde que IAM comenzó a hacer un seguimiento de la antigüedad de las contraseñas, el 20 de octubre de 2014.

Para obtener más información sobre los comandos de descarga del informe de credenciales, consulte [Obtención de informes de credenciales (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi).

## Búsqueda de claves de acceso no utilizadas
<a name="finding-unused-access-keys"></a>

Puede utilizar la Consola de administración de AWS para ver la información de uso de la clave de acceso de sus usuarios. Si tiene una gran cantidad de usuarios, puede utilizar la consola para descargar un informe de credenciales para saber cuándo cada usuario utilizó por última vez sus claves de acceso de la consola. También puede obtener acceso a la información desde la AWS CLI o la API de IAM.

**Para encontrar claves de acceso no utilizadas (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Users (Usuarios)**.

1. Si es necesario, añada la columna **Access key last used (Último uso de la clave de acceso)** a la tabla de usuarios:

   1. Encima de la tabla, en el extremo derecho, elija el icono de configuración (![\[Settings icon\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. En **Seleccionar columnas visibles**, seleccione **Último uso de la clave de acceso**.

   1. Elija **Confirmar** para volver a la lista de usuarios.

1. La columna **Access key last used (Último uso de la clave de acceso)** muestra el número de días que ha pasado desde que el usuario obtuvo acceso por última vez a AWS mediante programación. Puede utilizar esta información para encontrar usuarios con claves de acceso que no se han usado por más días que un periodo de tiempo especificado. La columna muestra **–** cuando los usuarios no tienen claves de acceso. Las claves de acceso que no se han utilizado recientemente probablemente deban eliminarse.

**Para encontrar claves de acceso no utilizadas descargando el informe de credenciales (consola)**

1. Inicie sesión en Consola de administración de AWS Management Console y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En panel de navegación, elija **Credential Report (Informe de credenciales)**.

1. Seleccione **Download Report (Descargar informe)** para descargar un archivo de valores separados por comas (CSV) denominado `status_reports_<date>T<time>.csv`. Las columnas 11 a 13 contienen la información sobre la fecha de última utilización, la región y el servicio de la clave de acceso 1. Las columnas 16 a 18 contienen la misma información sobre la clave de acceso 2. El valor es **N/A** si el usuario no tiene una clave de acceso o no ha utilizado la clave de acceso desde que IAM comenzó a realizar el seguimiento de la antigüedad de la clave de acceso, el 22 de abril de 2015.

**Para encontrar claves de acceso no utilizadas (AWS CLI)**  
Ejecute los siguientes comandos para encontrar claves de acceso no utilizadas:
+ `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` devuelve información sobre las claves de acceso de un usuario, incluido el `AccessKeyID`.
+ `[aws iam get-access-key-last-used](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)` toma un ID de clave de acceso y devuelve una salida que incluye la `LastUsedDate`, la `Region` en la que se utilizó la clave de acceso por última vez y el `ServiceName` del último servicio solicitado. Si `LastUsedDate` no existe, la clave de acceso no se ha utilizado desde que IAM comenzó a realizar el seguimiento de la clave de acceso, el 22 de abril de 2015.

**Para encontrar claves de acceso no utilizadas (API de AWS)**  
Llame a las siguientes operaciones para encontrar claves de acceso no utilizadas:
+ `[ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)` devuelve una lista de valores `AccessKeyID` de las claves de acceso que están asociadas al usuario especificado. 
+ `[GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)` toma un ID de clave de acceso y devuelve una colección de valores. Se incluyen la `LastUsedDate`, la `Region` en la que se utilizó por última vez la clave de acceso y el `ServiceName` del último servicio solicitado. Si el valor no aparece, el usuario no tiene una clave de acceso o no la ha utilizado desde que IAM comenzó a realizar el seguimiento de la antigüedad de la clave de acceso, el 22 de abril de 2015.

Para obtener más información sobre los comandos de descarga del informe de credenciales, consulte [Obtención de informes de credenciales (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi).

# Generación de informes de credenciales para su Cuenta de AWS
<a name="id_credentials_getting-report"></a>

Puede generar y descargar un *informe de credenciales* que contenga una lista de todos los usuarios de su cuenta y el estado de sus credenciales, tales como contraseñas, claves de acceso y dispositivos MFA. Puede obtener un informe de credenciales de la Consola de administración de AWS, los [SDK de AWS](https://aws.amazon.com/tools) y las [herramientas de línea de comandos](https://aws.amazon.com/tools/#Command_Line_Tools) o la API de IAM. 

**nota**  
El informe de credenciales de IAM solo incluye las siguientes credenciales administradas por IAM: contraseñas, las dos primeras claves de acceso por usuario, dispositivos de MFA y certificados de firma X.509. El informe no incluye credenciales específicas del servicio (como las contraseñas de CodeCommit o las claves de la API a largo plazo de Amazon Bedrock o Registros de Amazon CloudWatch) ni ninguna otra clave de acceso de usuario aparte de las dos primeras. Para obtener una visibilidad completa de las credenciales, use las API [ListServiceSpecificCredentials](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) y [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html).

Puede utilizar los informes de credenciales para fines de auditoría y conformidad. Puede utilizar el informe para auditar los efectos de los requisitos del ciclo de vida de la credencial, como las actualizaciones de contraseñas y claves de acceso. Puede proporcionar el informe a un auditor externo o conceder permisos a un auditor, para que pueda descargar el informe directamente.

Puede generar un informe de credenciales cada cuatro horas. Al solicitar un informe, IAM comprueba primero si se ha generado algún informe para la cuenta de Cuenta de AWS en las últimas cuatro horas. En caso afirmativo, se descarga el informe más reciente. Si el informe más reciente de la cuenta es de hace más de cuatro horas, o si no hay informes anteriores de la cuenta, IAM genera y descarga un nuevo informe. 

**Topics**
+ [

## Permisos necesarios
](#id_credentials_required_permissions)
+ [

## Descripción del formato del informe
](#id_credentials_understanding_the_report_format)
+ [

## Obtención de informes de credenciales (consola)
](#getting-credential-reports-console)
+ [

## Obtención de informes de credenciales (AWS CLI)
](#getting-credential-reports-cliapi)
+ [

## Obtención de informes de credenciales (API de AWS)
](#getting-credential-reports-api)

## Permisos necesarios
<a name="id_credentials_required_permissions"></a>

Se necesitan los siguientes permisos para crear y descargar informes:
+ Para crear un informe de credenciales: `iam:GenerateCredentialReport` 
+ Para descargar el informe: `iam:GetCredentialReport`

## Descripción del formato del informe
<a name="id_credentials_understanding_the_report_format"></a>

Los informes de credenciales tienen el formato de ficheros CSV (valores separados por comas). Puede abrir archivos CSV con software de hojas de cálculo comunes para analizar, o bien puede crear una aplicación que consuma los archivos CSV mediante programación y realice análisis personalizados. 

El archivo CSV contiene las siguientes columnas:

**usuario**  
Es el nombre fácil de recordar del usuario. 

**arn**  
Es el nombre de recurso de Amazon (ARN) del usuario. Para obtener más información sobre los ARN, consulte [ARN de IAM](reference_identifiers.md#identifiers-arns). 

**user\$1creation\$1time**  
Es la fecha y la hora en que se creó el usuario con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

**password\$1enabled**  
Cuando el usuario tiene una contraseña, el valor es `TRUE`. De lo contrario es `FALSE`. Este valor es `FALSE` para las nuevas cuentas miembros creadas como parte de su organización, ya que no tienen credenciales de usuario raíz de forma predeterminada.

**password\$1last\$1used**  
La fecha y la hora en que se utilizó por última vez la contraseña del Usuario raíz de la cuenta de AWS o de un usuario para iniciar sesión en un sitio web de AWS, con el [formato de fecha-hora ISO 8601](http://www.iso.org/iso/iso8601). Los sitios web de AWS que capturan el momento en que un usuario inició sesión por última vez son la Consola de administración de AWS, los foros de debate de AWS y AWS Marketplace. Cuando una contraseña se utiliza más de una vez en un periodo de 5 minutos, solo se registra el primer uso en este campo.   
+ El valor de este campo es `no_information` en los siguientes casos:
  + La contraseña del usuario no se ha utilizado nunca.
  + No hay datos de inicio de sesión asociados con la contraseña, como, por ejemplo, cuando la contraseña del usuario no se ha utilizado después de que IAM empezara a realizar el seguimiento de esta información a partir del 20 de octubre de 2014.
+ El valor en este campo es `N/A` (no aplicable) cuando el usuario no tiene ninguna contraseña.

**importante**  
Debido a un problema de servicio, los datos de la última vez que se utilizó la contraseña no incluyen el uso de la contraseña desde el 3 de mayo de 2018 22:50 PDT al 23 de mayo de 2018 14:08 PDT. Esto afecta a las fechas del [último inicio de sesión](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) mostradas en la consola de IAM y las fechas de la última vez que se utilizó la contraseña en el [Informe de credenciales de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html) y devueltas mediante la [Operación de la API GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html). Si los usuarios han iniciado sesión durante el tiempo afectado, la fecha de la última vez que se utilizó la contraseña que se devuelve es la fecha en que el usuario inició sesión antes del 3 de mayo de 2018. Para los usuarios que iniciaron sesión después del 23 de mayo de 2018 14:08 PDT, la fecha devuelta de la última vez que se utilizó la contraseña es precisa.  
Si utiliza la información de la última vez que se utilizó la contraseña para identificar las credenciales de no utilizados para su eliminación, como, por ejemplo, eliminar los usuarios que no iniciaron sesión en AWS en los últimos 90 días, recomendamos ajustar la ventana de evaluación para incluir fechas después del 23 de mayo de 2018. De forma alternativa, si los usuarios utilizan claves de acceso para acceder a AWS mediante programación puede hacer referencia a la información de la última vez que se utilizó la clave de acceso ya que es precisa para todas las fechas. 

**password\$1last\$1changed**  
Es la fecha y la hora en que se definió la contraseña del usuario por última vez con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Si el usuario no tiene ninguna contraseña, el valor en este campo es `N/A` (no aplicable).

**password\$1next\$1rotation**  
Si la cuenta tiene una [política de contraseñas](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html) que requiere la rotación de contraseñas, este campo contiene la fecha y la hora en [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), cuando el usuario debe definir una contraseña nueva. El valor de la cuenta de Cuenta de AWS (raíz) es siempre `not_supported`.

**mfa\$1active**  
Si se activa una [autenticación multifactor](id_credentials_mfa.md) (MFA) para el usuario, el valor será `TRUE`. De lo contrario es `FALSE`.

**access\$1key\$11\$1active**  
Si el usuario tiene una clave de acceso y el estado de la clave de acceso es `Active`, el valor será `TRUE`. De lo contrario es `FALSE`. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.

**access\$1key\$11\$1last\$1rotated**  
Es la fecha y la hora en que se creó o modificó por última vez la clave de acceso del usuario con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Si el usuario no tiene ninguna clave de acceso activa, el valor en este campo será `N/A` (no aplicable). Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.

**access\$1key\$11\$1last\$1used\$1date**  
Es la fecha y hora en que se utilizó la clave de acceso del usuario por última vez para iniciar sesión en una solicitud de la API de AWS con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Si una clave de acceso se utiliza más de una vez en un periodo de 15 minutos, solo se registra el primer uso en este campo. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.  
El valor de este campo es `N/A` (no aplicable) en los siguientes casos:  
+ El usuario no tiene ninguna clave de acceso.
+ La clave de acceso no se ha utilizado nunca.
+ La clave de acceso no se ha utilizado después de que IAM empezara a realizar el seguimiento de esta información a partir del 22 de abril de 2015.

**access\$1key\$11\$1last\$1used\$1region**  
Es la [región de AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) en la que se ha utilizado por última vez la clave de acceso. Si una clave de acceso se utiliza más de una vez en un periodo de 15 minutos, solo se registra el primer uso en este campo. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.  
El valor de este campo es `N/A` (no aplicable) en los siguientes casos:  
+ El usuario no tiene ninguna clave de acceso.
+ La clave de acceso no se ha utilizado nunca.
+ La clave de acceso se utilizó por última vez antes de que IAM empezara a realizar el seguimiento de esta información el 22 de abril de 2015.
+ El último servicio utilizado no es específico de una región, como Amazon S3.

**access\$1key\$11\$1last\$1used\$1service**  
Es el servicio de AWS al que se ha accedido más recientemente con la clave de acceso. El valor de este campo utiliza el espacio de nombres del servicio, por ejemplo, `s3` para Amazon S3 y `ec2` para Amazon EC2. Si una clave de acceso se utiliza más de una vez en un periodo de 15 minutos, solo se registra el primer uso en este campo. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.  
El valor de este campo es `N/A` (no aplicable) en los siguientes casos:  
+ El usuario no tiene ninguna clave de acceso.
+ La clave de acceso no se ha utilizado nunca.
+ La clave de acceso se utilizó por última vez antes de que IAM empezara a realizar el seguimiento de esta información el 22 de abril de 2015.

**access\$1key\$12\$1active**  
Si el usuario tiene una segunda clave de acceso y el estado de la segunda clave de acceso es `Active`, el valor será `TRUE`. De lo contrario es `FALSE`. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.  
Los usuarios pueden tener un máximo de dos claves de acceso para facilitar la rotación mediante la actualización de la clave en primer lugar y de la eliminación de la clave anterior en segundo lugar. Para obtener más información acerca de la actualización de las claves de acceso, consulte [Actualización de las claves de acceso](id-credentials-access-keys-update.md).

**access\$1key\$12\$1last\$1rotated**  
Fecha y hora, en [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), en las que se creó o modificó por última vez la segunda clave de acceso del usuario. Si el usuario no tiene ninguna segunda clave de acceso activa, el valor en este campo será `N/A` (no aplicable). Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.

**access\$1key\$12\$1last\$1used\$1date**  
Es la fecha y hora en que se utilizó la segunda clave de acceso del usuario por última vez para iniciar sesión en una solicitud de la API de AWS con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Si una clave de acceso se utiliza más de una vez en un periodo de 15 minutos, solo se registra el primer uso en este campo. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM.  
El valor de este campo es `N/A` (no aplicable) en los siguientes casos:  
+ El usuario no tiene ninguna segunda clave de acceso.
+ La segunda clave de acceso del usuario no se ha utilizado nunca.
+ La segunda clave de acceso del usuario se utilizó por última vez antes de que IAM empezara a realizar el seguimiento de esta información el 22 de abril de 2015.

**access\$1key\$12\$1last\$1used\$1region**  
Es la [región de AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) en la que se ha utilizado por última vez la segunda clave de acceso. Si una clave de acceso se utiliza más de una vez en un periodo de 15 minutos, solo se registra el primer uso en este campo. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM. El valor de este campo es `N/A` (no aplicable) en los siguientes casos:  
+ El usuario no tiene ninguna segunda clave de acceso.
+ La segunda clave de acceso del usuario no se ha utilizado nunca.
+ La segunda clave de acceso del usuario se utilizó por última vez antes de que IAM empezara a realizar el seguimiento de esta información el 22 de abril de 2015.
+ El último servicio utilizado no es específico de una región, como Amazon S3.

**access\$1key\$12\$1last\$1used\$1service**  
Es el servicio de AWS al que se ha accedido más recientemente con la segunda clave de acceso del usuario. El valor de este campo utiliza el espacio de nombres del servicio, por ejemplo, `s3` para Amazon S3 y `ec2` para Amazon EC2. Si una clave de acceso se utiliza más de una vez en un periodo de 15 minutos, solo se registra el primer uso en este campo. Se aplica tanto al usuario raíz de la cuenta como a los usuarios de IAM. El valor de este campo es `N/A` (no aplicable) en los siguientes casos:  
+ El usuario no tiene ninguna segunda clave de acceso.
+ La segunda clave de acceso del usuario no se ha utilizado nunca.
+ La segunda clave de acceso del usuario se utilizó por última vez antes de que IAM empezara a realizar el seguimiento de esta información el 22 de abril de 2015.

**cert\$11\$1active**  
Si el usuario dispone de un certificado de firma X.509 y el estado del certificado es `Active`, este valor es `TRUE`. De lo contrario es `FALSE`.

**cert\$11\$1last\$1rotated**  
Es la fecha y la hora en que se creó o modificó por última vez el certificado de firma del usuario con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Si el usuario no tiene ningún certificado de firma activo, el valor en este campo será `N/A` (no aplicable).

**cert\$12\$1active**  
Si el usuario dispone de un segundo certificado de firma X.509 y el estado del certificado es `Active`, este valor es `TRUE`. De lo contrario es `FALSE`.  
Los usuarios pueden tener hasta dos certificados de firma X.509, para facilitar la rotación de los certificados.

**cert\$12\$1last\$1rotated**  
Es la fecha y la hora en que se creó o modificó por última vez el segundo certificado de firma del usuario con el [formato de fecha y hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Si el usuario no tiene ningún segundo certificado de firma activo, el valor en este campo será `N/A` (no aplicable).

**additional\$1credentials\$1info**  
Cuando el usuario tiene más de dos claves de acceso o certificados, este valor es el número de claves de acceso o certificados adicionales y las acciones que puede utilizar para enumerar las claves de acceso o los certificados asociados al usuario.

## Obtención de informes de credenciales (consola)
<a name="getting-credential-reports-console"></a>

Puede utilizar la Consola de administración de AWS para descargar un informe de credenciales como archivo CSV (valores separados por comas).

**Para descargar un informe de credenciales mediante la (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En panel de navegación, elija **Credential report (Informe de credenciales)**.

1. Elija **Download Report (Descargar informe)**.

## Obtención de informes de credenciales (AWS CLI)
<a name="getting-credential-reports-cliapi"></a>

**Para descargar un informe de credenciales (AWS CLI)**

1. Genere un informe de credenciales. AWS almacena un único informe. Si existe un informe, cuando se genera un nuevo informe de credenciales, se sobrescribe el anterior. [https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html)

1. Ver el último informe que se generó: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html)

## Obtención de informes de credenciales (API de AWS)
<a name="getting-credential-reports-api"></a>

**Para descargar un informe de credenciales (API de AWS)**

1. Genere un informe de credenciales. AWS almacena un único informe. Si existe un informe, cuando se genera un nuevo informe de credenciales, se sobrescribe el anterior. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html)

1. Ver el último informe que se generó: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html)

# Credenciales de IAM para CodeCommit: credenciales Git, claves SSH y claves de acceso de AWS
<a name="id_credentials_ssh-keys"></a>

CodeCommit es un servicio de control de versiones administrado que aloja repositorios privados Git en la nube de AWS. Para utilizar CodeCommit, debe configurar su cliente de Git para comunicarse con los repositorios de CodeCommit. Como parte de esta configuración, debe proporcionar credenciales de IAM que CodeCommit puede utilizar para autenticarle. IAM admite CodeCommit con tres tipos de credenciales:
+ Credenciales de Git, un nombre de usuario y contraseña generados por IAM que puede utilizar para comunicarse con los repositorios de CodeCommit a través de HTTPS.
+ Claves SSH, un par de claves pública y privada generadas a nivel local que puede asociar a su usuario de IAM para comunicarse con los repositorios de CodeCommit a través de SSH.
+  [Claves de acceso de AWS](id_credentials_access-keys.md), que puede utilizar con el auxiliar de credenciales incluido con AWS CLI para comunicarse con los repositorios de CodeCommit a través de HTTPS.

**nota**  
No puede utilizar las claves SSH ni las credenciales de Git para obtener acceso a los repositorios de otra cuenta de AWS. Para obtener más información sobre cómo configurar el acceso a los repositorios de CodeCommit para los usuarios y grupos de IAM en otra Cuenta de AWS, consulte [Configurar el acceso entre cuentas a un repositorio de AWS CodeCommit mediante roles](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) en la *Guía del usuario de AWS CodeCommit*.

Consulte las siguientes secciones para obtener más información sobre cada opción. 

## Uso de las credenciales de Git y HTTPS con CodeCommit (recomendado)
<a name="git-credentials-code-commit"></a>

Con las credenciales de Git, puede generar un nombre de usuario y contraseña estáticos para su usuario de IAM y, a continuación, utilizar dichas credenciales para conexiones HTTPS. También puede utilizar estas credenciales con cualquier herramienta de terceros o entorno de desarrollo integrado (IDE) que admita credenciales de Git estáticas.

Dado que estas credenciales son universales para todos los sistemas operativos admitidos y compatibles con la mayoría de los sistemas de administración de credenciales, entornos de desarrollo y otras herramientas de desarrollo de software, este es el método recomendado. Puede restablecer la contraseña para las credenciales de Git en cualquier momento. También puede desactivarlas o eliminarlas si ya no las necesita.

**nota**  
No puede elegir su propio nombre de usuario o contraseña para las credenciales de Git. IAM genera estas credenciales para que pueda asegurarse de que cumplen los estándares de seguridad de AWS y protegen los repositorios de CodeCommit. Puede descargar las credenciales solo una vez, en el momento en que se generan. Asegúrese de guardarlas en un lugar seguro. Si es necesario, puede restablecer la contraseña en cualquier momento, pero si lo hace, anulará las conexiones configuradas con la antigua contraseña. Debe volver a configurar las conexiones para utilizar la nueva contraseña antes de poder conectarse.

Consulte los siguientes temas para obtener más información: 
+ Para crear un usuario de IAM, consulte [Creación de un usuario de IAM en su Cuenta de AWS](id_users_create.md). 
+ Para generar y utilizar las credenciales de Git, con CodeCommit, consulte [Para usuarios HTTPS mediante credenciales de Git](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) en la *Guía del usuario de AWS CodeCommit*. 

**nota**  
Cambiar el nombre de un usuario de IAM después de generar las credenciales de Git no cambia el nombre de usuario de las credenciales de Git. El nombre de usuario y la contraseña siguen siendo los mismos y siguen siendo válidos. 

**Para actualizar las credenciales específicas del servicio**

1. Cree un segundo conjunto de credenciales específicas de servicios, además del conjunto que se utiliza actualmente.

1. Actualice todas sus aplicaciones para utilizar el nuevo conjunto de credenciales y compruebe que las aplicaciones están funcionando.

1. Cambie el estado de las credenciales originales a "Inactive".

1. Asegúrese de que todas las aplicaciones siguen funcionando.

1. Elimine las credenciales específicas de servicios que no estén activas.

## Uso de las claves SSH y SSH con CodeCommit
<a name="ssh-keys-code-commit"></a>

Con conexiones SSH, debe crear archivos de claves públicas y privadas en su equipo local que Git y CodeCommit utilizarán para la autenticación SSH. Puede asociar la clave pública con el usuario de IAM y almacenar la clave privada en el equipo local. Consulte los siguientes temas para obtener más información: 
+ Para crear un usuario de IAM, consulte [Creación de un usuario de IAM en su Cuenta de AWS](id_users_create.md). 
+ Para crear una clave pública SSH y asociarla a un usuario IAM, consulte [Para conexiones SSH en Linux, macOS o Unix](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html) o consulte [Para conexiones SSH en Windows](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html) en la* Guía del usuario de AWS CodeCommit*. 

**nota**  
La clave pública debe estar codificada en formato ssh-rsa o PEM. La longitud mínima de bits de la clave pública es de 2 048 bits, y la longitud máxima es de 16 384 bits. Este valor es independiente del tamaño del archivo que se cargue. Por ejemplo, puede generar una clave de 2 048 bits y el archivo PEM resultante tiene una longitud de 1 679 bytes. Si proporciona la clave pública en otro formato o tamaño, aparecerá un mensaje de error que indica que el formato de clave no es válido.

## Uso de HTTPS con el auxiliar de credenciales de AWS CLI y CodeCommit
<a name="access-keys-code-commit"></a>

Además de las conexiones HTTPS con las credenciales de Git, puede permitir a Git utilizar una versión con firma criptográfica de sus credenciales de usuario de IAM o del rol de la instancia de Amazon EC2 cada vez que Git requiera autenticación en AWS para interactuar con los repositorios de CodeCommit. Este es el único método de conexión para repositorios de CodeCommit que no exige un usuario de IAM. Este también es el único método que funciona con acceso federado y credenciales temporales. Consulte los siguientes temas para obtener más información:
+ Para obtener más información sobre el acceso federado, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md) y [Acceder a usuarios autenticados externamente (federación de identidades)](id_roles_common-scenarios_federated-users.md). 
+ Para obtener más información sobre las credenciales temporales, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md) y [Acceso temporal a los repositorios de CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html). 

El auxiliar de credenciales de AWS CLI no es compatible con otros sistemas auxiliares de credenciales, como Keychain Access o Windows Credential Management. Existen otras consideraciones de configuración cuando establece conexiones HTTPS con el auxiliar de credenciales. Para más información, consulte [Para conexiones HTTPS en Linux, macOS o Unix con el Ayudante de credenciales de AWS CLI](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html) o [Conexiones HTTPS en Windows con el Ayudante de credenciales de AWS CLI](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html) en la *Guía del usuario de AWS CodeCommit*.

# Administración de certificados de servidor en IAM
<a name="id_credentials_server-certs"></a>

Para habilitar las conexiones HTTPS en su sitio web o aplicación en AWS, necesita un *certificado de servidor* SSL/TLS. Si se trata de una región compatible con AWS Certificate Manager (ACM), le recomendamos que utilice ACM para aprovisionar, administrar e implementar los certificados de servidor. En las regiones no compatibles, debe utilizar IAM como Certificate Manager. Para saber qué regiones admite , consulte [puntos finales y cuotas de AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) en la *Referencia general de AWS*.

**importante**  
ACM es la herramienta preferida para aprovisionar, administrar e implementar los certificados de servidor. Con ACM puede solicitar un certificado o implementar un certificado de ACM existente o un certificado externo en los recursos de AWS. Los certificados que proporciona ACM son gratuitos y se renuevan automáticamente. En las [regiones compatibles](https://docs.aws.amazon.com/general/latest/gr/acm.html), puede utilizar ACM para administrar los certificados de servidor desde la consola o mediante programación. Para obtener más información sobre ACM, consulte la [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). Para obtener más información sobre cómo solicitar un certificado de ACM, consulte [Solicitar un certificado público](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) o [Solicitar un certificado privado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html) en la *Guía del usuario de AWS Certificate Manager*. Para obtener más información sobre la importación de certificados de terceros en ACM, consulte [Importar certificados](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) en la *Guía del usuario de AWS Certificate Manager*.

Utilice IAM como Certificate Manager solo cuando tenga que admitir conexiones HTTPS en una región que no es [compatible con ACM](https://docs.aws.amazon.com/general/latest/gr/acm.html). IAM cifra de forma segura sus claves privadas y almacena la versión cifrada en el almacenamiento de certificados SSL de IAM. IAM admite la implementación de certificados de servidor en todas las regiones, pero debe obtener su certificado de un proveedor externo para utilizarlo con AWS. No puede cargar un certificado de ACM en IAM. Además, no puede administrar los certificados desde la consola de IAM.

Para obtener más información acerca de cómo cargar certificados de terceros en IAM, consulte los siguientes temas.

**Topics**
+ [

## Carga de un certificado de servidor (API de AWS)
](#upload-server-certificate)
+ [

## Operaciones de API de AWS para certificados de servidor
](#id_credentials_server-certs-api)
+ [

## Solución de problemas de certificados de servidor
](#server-certificate-troubleshooting)

## Carga de un certificado de servidor (API de AWS)
<a name="upload-server-certificate"></a>

Para cargar un certificado de servidor en IAM, debe proporcionar el certificado y la clave privada correspondiente. Si el certificado no está autofirmado, también debe proporcionar una cadena de certificados. (No necesita una cadena de certificados para cargar un certificado autofirmado). Antes de cargar un certificado, asegúrese de que dispone de todos estos elementos y de que cumplen los siguientes criterios:
+ El certificado debe ser válido en el momento de la carga. No puede cargar un certificado antes de que empiece su periodo de validez (la fecha `NotBefore` del certificado) o después de que expire (la fecha `NotAfter` del certificado).
+ La clave privada no debe estar cifrada. No puede cargar una clave privada que esté protegida por una contraseña o frase de contraseña. Para ayudar a descifrar una clave privada cifrada, consulte [Solución de problemas de certificados de servidor](#server-certificate-troubleshooting).
+ El certificado, la clave privada y la cadena de certificados deben tener todos codificación PEM. Para ayudar a convertir estos elementos al formato PEM, consulte [Solución de problemas de certificados de servidor](#server-certificate-troubleshooting).

Para utilizar la [API de IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/) para cargar un certificado, envíe una solicitud [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html). El siguiente ejemplo muestra cómo hacerlo con la [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/). El ejemplo supone lo siguiente:
+ El certificado codificado en PEM se guarda en un archivo llamado `Certificate.pem`.
+ La cadena de certificados codificados en PEM se guarda en un archivo llamado `CertificateChain.pem`.
+ La clave privada codificada en PEM sin cifrar se guarda en un archivo llamado `PrivateKey.pem`.
+ (Opcional) Debe etiquetar el certificado del servidor con un par de valor de clave. Por ejemplo, puede agregar la clave de etiqueta `Department` y el valor de la etiqueta `Engineering` para ayudarlo a identificar y organizar los certificados.

Para utilizar los siguientes comandos de ejemplo, sustituya estos nombres de archivo por los suyos. Reemplace *ExampleCertificate* por un nombre para el certificado cargado. Si desea etiquetar el certificado, reemplace el par clave-valor de la etiqueta *ExampleKey* y *ExampleValue* con sus propios valores. Escriba el comando en una línea continua. El siguiente ejemplo incluye saltos de línea y espacios adicionales para facilitar su lectura.

```
aws iam upload-server-certificate --server-certificate-name ExampleCertificate
                                    --certificate-body file://Certificate.pem
                                    --certificate-chain file://CertificateChain.pem
                                    --private-key file://PrivateKey.pem
                                    --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'
```

Si el comando anterior se ejecuta correctamente, devolverá los metadatos del certificado cargado, incluido su [Amazon Resource Name (ARN)](reference_identifiers.md#identifiers-arns), su nombre descriptivo, su identificador (ID), su fecha de vencimiento, etiquetas y otra información.

**nota**  
Si va a cargar un certificado de servidor para utilizarlo con Amazon CloudFront, debe especificar una ruta mediante la opción `--path`. La ruta debe empezar con `/cloudfront` y debe incluir una barra inclinada al final (por ejemplo, `/cloudfront/test/`).

Para utilizar las AWS Tools for Windows PowerShell para cargar un certificado, utilice [Publish-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate).

## Operaciones de API de AWS para certificados de servidor
<a name="id_credentials_server-certs-api"></a>

Utilice los siguientes comandos para ver, etiquetar, cambiar el nombre y eliminar los certificados de servidor.
+ Utilice [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) para recuperar un certificado. Esta solicitud devuelve el certificado, la cadena de certificados (si se ha cargado alguna) y los metadatos del certificado.
**nota**  
No puede descargar o recuperar una clave privada de IAM después de cargarla.
+ Utilice [Get-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate) para recuperar un certificado.
+ Utilice [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html) para hacer una lista de los certificados de servidor cargados. La solicitud devolverá una lista que contiene los metadatos de cada certificado.
+ Utilice [Get-IAMServerCertificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates) para hacer una lista de los certificados de servidor cargados.
+ Utilice [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html) para etiquetar un certificado de servidor existente. 
+ Utilice [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html) para quitar la etiqueta de un certificado de servidor.
+ Utilice [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html) para cambiar el nombre de un certificado de servidor o para actualizar su ruta.

   El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

  Para utilizar el siguiente comando de ejemplo, sustituya los nombres antiguo y nuevo del certificado y la ruta del certificado y escriba el comando en una línea continua. El siguiente ejemplo incluye saltos de línea y espacios adicionales para facilitar su lectura.

  ```
  aws iam update-server-certificate --server-certificate-name ExampleCertificate
                                      --new-server-certificate-name CloudFrontCertificate
                                      --new-path /cloudfront/
  ```

  Para utilizar las AWS Tools for Windows PowerShell para cambiar el nombre de un certificado de servidor o para actualizar su ruta, utilice [Update-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate).
+ Utilice [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html) para eliminar un certificado de servidor. 

  Para utilizar las AWS Tools for Windows PowerShell para eliminar un certificado de servidor, utilice [Remove-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate).

## Solución de problemas de certificados de servidor
<a name="server-certificate-troubleshooting"></a>

Antes de cargar un certificado en IAM, debe asegurarse de que el certificado, la clave privada y la cadena de certificados estén codificados en PEM. También debe asegurarse de que la clave privada no esté cifrada. Vea los siguientes ejemplos.

**Example Ejemplo de certificado codificado por PEM**  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

**Example Ejemplo de clave privada sin cifrar y codificada en PEM**  

```
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
```

**Example Ejemplo de cadena de certificados codificada en PEM**  
Una cadena de certificados contiene uno o más certificados. Puede utilizar un editor de texto, el comando copy de Windows o el comando cat de Linux para concatenar archivos de certificado en una cadena. Cuando incluye varios certificados, cada certificado debe certificar el certificado anterior. Puede hacerlo concatenando los certificados, incluyendo el certificado de CA raíz al final.  
El siguiente ejemplo contiene tres certificados, pero una cadena de certificados podría contener más o menos certificados.  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

Si estos elementos no tienen el formato adecuado para cargarlos en IAM, puede utilizar [OpenSSL](https://openssl.org/) para convertirlos al formato adecuado.

**Para convertir un certificado o cadena de certificados de DER a PEM**  
Utilice el comando [OpenSSL **x509**](https://openssl.org/docs/manmaster/man1/x509.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `Certificate.der` por el nombre del archivo que contiene el certificado con codificación DER. Sustituya `Certificate.pem` por el nombre preferido del archivo de salida que va a contener el certificado con codificación PEM.  

```
openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem
```
 

**Para convertir una clave privada de DER a PEM**  
Utilice el comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `PrivateKey.der` por el nombre del archivo que contiene la clave privada con codificación DER. Sustituya `PrivateKey.pem` por el nombre preferido del archivo de salida que va a contener la clave privada con codificación PEM.  

```
openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem
```
 

**Para descifrar una clave privada cifrada (eliminar la contraseña o frase de contraseña)**  
Utilice el comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html), como en el siguiente ejemplo. Para utilizar el siguiente comando de ejemplo, sustituya `EncryptedPrivateKey.pem` por el nombre del archivo que contiene la clave privada cifrada. Sustituya `PrivateKey.pem` por el nombre preferido del archivo de salida que va a contener la clave privada no cifrada con codificación PEM.  

```
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
```
 

**Para convertir un paquete de certificados de PKCS \$112 (PFX) a PEM**  
Utilice el comando [OpenSSL **pkcs12**](https://openssl.org/docs/manmaster/man1/pkcs12.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `CertificateBundle.p12` por el nombre del archivo que contiene el paquete de certificados con codificación PKCS\$112. Sustituya `CertificateBundle.pem` por el nombre preferido del archivo de salida que va a contener el paquete de certificado con codificación PEM.  

```
openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes
```
 

**Para convertir un paquete de certificados de PKCS\$17 a PEM**  
Utilice el comando [OpenSSL **pkcs7**](https://openssl.org/docs/manmaster/man1/pkcs7.html), como en el siguiente ejemplo. En el siguiente comando de ejemplo, sustituya `CertificateBundle.p7b` por el nombre del archivo que contiene el paquete de certificados con codificación PKCS\$17. Sustituya `CertificateBundle.pem` por el nombre preferido del archivo de salida que va a contener el paquete de certificado con codificación PEM.  

```
openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem
```

# Grupos de usuarios de IAM
<a name="id_groups"></a>

Un [*grupo de usuarios*](#id_groups) de IAM es un conjunto de usuarios de IAM. Los grupos de usuarios le permiten especificar permisos para varios usuarios, lo que puede facilitar la administración de los permisos para dichos usuarios. Por ejemplo, podría tener un grupo de usuarios denominado *Admins* (Administradores) y proporcionar a dicho grupo de los tipos de permisos que los administradores suelen necesitar. Cualquier usuario de ese grupo tiene automáticamente permisos del grupo *Admins* (Administradores). Si un nuevo usuario se une a su organización y necesita privilegios de administrador, puede asignar los permisos adecuados al agregar el usuario al grupo de usuarios *Admins* (Administradores). Si una persona cambia de trabajo en su organización, en lugar de editar los permisos de ese usuario puede eliminarlo de los antiguos grupos de IAM y agregarlo a los nuevos grupos de IAM correspondientes. 

Puede asociar una política basada en identidad a un grupo de usuarios para que todos los usuarios del grupo reciban los permisos de la política. No puede identificar un grupo de usuarios como `Principal` en una política (como una política basada en recursos) porque los grupos están relacionados con los permisos, no con la autenticación, y las entidades principales son entidades de IAM autenticadas. Para obtener más información acerca de los tipos de políticas, consulte [Políticas basadas en identidad y políticas basadas en recursos](access_policies_identity-vs-resource.md).

A continuación, algunas características importantes de los grupos de IAM:
+ Un grupo de usuarios puede incluir muchos usuarios y un usuario puede pertenecer a varios grupos de usuarios.
+ Los grupos de usuarios no pueden anidarse; solo pueden contener usuarios y no otros grupos de IAM.
+ No hay ningún grupo de usuarios predeterminado que incluya automáticamente todos los usuarios de la Cuenta de AWS. Si desea tener un grupo de usuarios de este tipo, debe crearlo y asignarle cada nuevo usuario.
+ El número y tamaño de recursos de IAM de un Cuenta de AWS, como el número de grupos y el número de grupos de los que un usuario puede ser miembro, son limitados. Para obtener más información, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md).

En el siguiente diagrama se muestra un ejemplo sencillo de un pequeño negocio. El propietario del negocio crea un grupo de usuarios `Admins` para que los usuarios creen otros usuarios y los administren a medida que crece el negocio. La `Admins` crea un grupo de usuarios `Developers` y un grupo de usuarios `Test`. Cada uno de estos grupos de IAM se compone de usuarios (personas y aplicaciones) que interactúan con AWS (Jim, Brad, DevApp1, etc.). Cada usuario tiene un conjunto individual de credenciales de seguridad. En este ejemplo, cada usuario pertenece a un solo grupo de usuarios. Sin embargo, los usuarios pueden pertenecer a varios grupos de IAM.

![\[Ejemplo de relación entre Cuentas de AWS, usuarios y grupos de IAM\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/Relationship_Between_Entities_Example.diagram.png)


# Creación de grupos de IAM
<a name="id_groups_create"></a>

**nota**  
Como [práctica recomendada](best-practices.md), le recomendamos que exija a los usuarios humanos que utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales. Si sigue las prácticas recomendadas, no estará administrando usuarios ni grupos de IAM. En cambio, sus usuarios y grupos se administran fuera de AWS y pueden acceder a los recursos de AWS como una *identidad federada*. Una identidad federada es un usuario del directorio de usuarios de su empresa, un proveedor de identidades web, AWS Directory Service, el directorio de Identity Center o cualquier usuario que acceda a los servicios de AWS con credenciales proporcionadas a través de una fuente de identidades. Las identidades federadas utilizan los grupos definidos por su proveedor de identidades. Si utiliza AWS IAM Identity Center, consulte [Manage identities in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) (Administración de identidades en IAM Identity Center) en la *Guía del usuario de AWS IAM Identity Center* para obtener información sobre la creación de usuarios y grupos en IAM Identity Center.

Puede crear grupos de IAM para administrar los permisos de acceso de varios usuarios con responsabilidades o roles similares. Al adjuntar políticas a estos grupos, puede conceder permisos a conjuntos completos de usuarios o revocarlos. Esto simplifica el mantenimiento de las políticas de seguridad, ya que los cambios que haga en los permisos de un grupo se aplican automáticamente a todos los miembros de ese grupo, lo que garantiza un control de acceso coherente. Después de crear el grupo, asigne los permisos del grupo en función del tipo de trabajo que espera que los usuarios de IAM hagan en el grupo y agregue usuarios de IAM al grupo.

Para obtener información sobre los permisos necesarios para crear un grupo de IAM, consulte [Permisos obligatorios para obtener acceso a recursos de IAM](access_permissions-required.md). 

## Creación de un grupo de IAM y adjuntar políticas
<a name="id_groups_create-section-1"></a>

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Grupos de usuarios** y, a continuación, elija **Crear nuevo grupo**.

1. En **Nombre de grupo de usuarios**, escriba el nombre del grupo.
**nota**  
El número y el tamaño de recursos de IAM en una cuenta de AWS son limitados. Para obtener más información, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md). Los nombres de grupo pueden ser una combinación de un máximo de 128 letras, dígitos y los siguientes caracteres: más (\$1), igual (=), coma (,), punto (.), arroba (@), guion bajo (\$1) y guion (-). Los nombres deben ser únicos dentro de una cuenta. No distinguen entre mayúsculas y minúsculas. Por ejemplo, no puede crear funciones denominados **ADMINS** ni **admins**.

1. En la lista de usuarios, seleccione la casilla de verificación de cada usuario que desee agregar al grupo.

1. En la lista de políticas, seleccione la casilla de verificación de cada política que desea aplicar a todos los miembros del grupo.

1. Elija **Crear grupo**.

------
#### [ AWS CLI ]

Ejecute el siguiente comando:
+ [aws iam create-group](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [CreateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html)

------

# Visualización de grupos de IAM
<a name="id_groups_manage_list"></a>

Puede enumerar todos los grupos de IAM de su cuenta, enumerar los usuarios de un grupo de usuarios y enumerar los grupos de IAM a los que pertenece un usuario. Si utiliza la CLI o la API, puede enumerar todos los grupos de IAM de un determinado prefijo de ruta de acceso.

------
#### [ Console ]

Para enumerar todos los grupos de IAM de su cuenta:
+ En el panel de navegación, elija **Grupos de usuarios**.

Para enumerar los usuarios de IAM de un grupo específico de usuarios:
+ En el panel de navegación, elija **User groups** (Grupos de usuarios). A continuación, elija el nombre del grupo para abrir la página de detalles del grupo. Revise la pestaña **Usuarios** para ver los miembros del grupo.

Para enumerar todos los grupos de IAM en los que se encuentra un usuario:
+ En el panel de navegación, seleccione **Usuarios**. A continuación, elija el nombre del usuario para abrir la página de detalles del usuario. Elija la pestaña **Grupos** para ver una lista de los grupos a los que pertenece el usuario.

------
#### [ AWS CLI ]

Para enumerar todos los grupos de IAM de su cuenta:
+ [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

Para obtener una lista de los usuarios de un grupo de IAM específico:
+ [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)

Para enumerar todos los grupos de IAM en los que se encuentra un usuario:
+ [aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)

------
#### [ API ]

Para enumerar todos los grupos de IAM de su cuenta:
+ [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

Para obtener una lista de los usuarios de un grupo de IAM específico:
+ [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)

Para enumerar todos los grupos de IAM en los que se encuentra un usuario:
+ [ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)

------

# Edición de usuarios de grupos de IAM
<a name="id_groups_manage_add-remove-users"></a>

Utilice los grupos de IAM para aplicar las mismas políticas de permisos en varios usuarios a la vez. Puede entonces agregar o eliminar usuarios de un grupo de IAM. Esto resulta útil, ya que los empleados van y vienen de su organización.

## Revisión del acceso a las políticas
<a name="groups-remove_prerequisites"></a>

Antes de eliminar un grupo, use la página de detalles del grupo para revisar los miembros (usuarios de IAM) del grupo y las políticas adjuntas al grupo en la pestaña **Permisos** y revise la actividad reciente por servicio en la pestaña **Último acceso**. Esto ayuda a evitar que se le quite el acceso de forma involuntaria a una entidad principal (persona o aplicación) que lo esté utilizando. Para obtener más información acerca de cómo ver la información de acceso reciente, consulte [Ajuste de permisos en AWS con información sobre los últimos accesos](access_policies_last-accessed.md).

## Adición de un usuario de IAM a un grupo de IAM
<a name="groups-add-remove-console"></a>

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Grupos de usuarios** y, a continuación, elija el nombre del grupo.

1. Elija la pestaña **Usuarios** y, a continuación, elija **Agregar usuarios**. Seleccione la casilla de verificación junto a los usuarios que desee agregar.

1. Elija **Agregar usuarios**.

------
#### [ AWS CLI ]

Ejecute el siguiente comando:
+ `[aws iam add-user-to-group](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html)`

------
#### [ API ]

Llame a la operación siguiente:
+ `[AddUserToGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html)`

------

## Eliminación de un usuario de IAM de un grupo de IAM
<a name="id_groups_manage_add-remove-users-section-1"></a>

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Grupos de usuarios** y, a continuación, elija el nombre del grupo.

1. Elija la pestaña **Users**. Seleccione la casilla de verificación junto a los usuarios que desee eliminar y, a continuación, elija **Eliminar usuarios**.

------
#### [ AWS CLI ]

Ejecute el siguiente comando:
+ `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)`

------
#### [ API ]

Llame a la operación siguiente:
+ `[RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html)`

------

# Adjunto de una política a un grupo de usuarios de IAM
<a name="id_groups_manage_attach-policy"></a>

Puede asociar una [política administrada de AWS](access_policies_managed-vs-inline.md#aws-managed-policies) es decir, una política escrita previamente proporcionada por AWS a un grupo de usuarios, tal como se explica en los pasos siguientes. Para asociar una política administrada por el cliente es decir, una política con los permisos personalizados que ha creado primero debe crear la política. Para obtener más información sobre la creación de políticas administradas por el cliente, consulte [Definición de permisos de IAM personalizados con políticas administradas por el cliente](access_policies_create.md). 

Para obtener más información sobre permisos y políticas, consulte [Recursos de AWS para administración de acceso](access.md). 

## Adjunción de una política a un grupo de IAM
<a name="id_groups_manage_attach-policy-section-1"></a>

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Grupos de usuarios** y, a continuación, elija el nombre del grupo.

1. Elija la pestaña **Permisos**.

1. Elija **Agregar permisos** y luego **Adjuntar políticas**.

1. Las políticas actuales adjuntas al grupo de usuarios se muestran en la lista de **Políticas de permisos actuales**. En la lista de **Otras políticas de permisos**, seleccione la casilla de verificación junto al nombre de las políticas que desea adjuntar. Puede utilizar el cuadro de búsqueda para filtrar la lista de políticas por tipo y nombre de política.

1. Seleccione la política que desee adjuntar a su grupo de IAM y elija **Adjuntar políticas**.

------
#### [ AWS CLI ]

Ejecute el siguiente comando:
+ `[aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)`

------
#### [ API ]

Llame a la operación siguiente:
+ `[AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)`

------

# Cambio del nombre de un grupo de usuarios de IAM
<a name="id_groups_manage_rename"></a>

Cuando cambia la ruta o el nombre de un grupo de usuarios, ocurre lo siguiente: 
+ Todas las políticas asociadas al grupo de usuarios permanecen en el grupo con el nuevo nombre.
+ El grupo de usuarios conserva todos sus usuarios bajo el nuevo nombre.
+ El ID único del grupo de usuarios sigue siendo el mismo. Para obtener más información sobre los ID únicos, consulte [Identificadores únicos](reference_identifiers.md#identifiers-unique-ids). 

IAM no actualiza automáticamente las políticas que hacen referencia al grupo como recurso para utilizar el nuevo nombre. Por lo tanto, debe tener cuidado al cambiar el nombre de un grupo de usuarios. Antes de hacerlo, deberá comprobar manualmente todas sus políticas para encontrar aquellas en las que se menciona el nombre del grupo de usuarios. Por ejemplo, supongamos que Bob es el administrador de la parte de pruebas de la organización. Bob tiene una política asociada a su entidad de usuario de IAM que le permite agregar y quitar usuarios del grupo de usuarios Test. Si un administrador cambia el nombre del grupo de usuarios (o cambia la ruta del grupo), también debe actualizar la política asociada para que Bob utilice el nuevo nombre o ruta. De lo contrario, Bob no podrá agregar ni quitar usuarios del grupo de usuarios. 

**Para buscar las políticas que hacen referencia a un grupo de IAM como recurso:**

1. En el panel de navegación de la consola de IAM, elija **Políticas**.

1. Ordena por la columna **Tipo** para buscar sus políticas personalizadas **Gestión por el cliente**.

1. Elija el nombre de la política para editarlo.

1. Seleccione la pestaña **Permisos** y, a continuación, **Resumen**.

1. Elija **IAM** en la lista de servicios, en caso de que exista.

1. Busque el nombre del grupo de usuarios en la columna **Recurso**.

1. Seleccione **Editar** para cambiar el nombre del grupo de usuarios en la política.

## Para cambiar el nombre de un grupo de usuarios de IAM
<a name="id_groups_manage_rename-section-1"></a>

------
#### [ Console ]

1. En el panel de navegación, seleccione **Grupos de usuarios** y, a continuación, seleccione el nombre del grupo.

1. Seleccione **Editar**. Escriba el nuevo nombre del grupo de usuarios y, a continuación, elija **Guardar los cambios**.

------
#### [ AWS CLI ]

Ejecute el siguiente comando:
+ [aws iam update-group](https://docs.aws.amazon.com/cli/latest/reference/iam/update-group.html)

------
#### [ API ]

Llame a la operación siguiente:
+ [UpdateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateGroup.html)

------

# Eliminación de un grupo de IAM
<a name="id_groups_manage_delete"></a>

Si elimina un grupo de IAM en la consola, esta eliminará automáticamente todos los miembros del grupo, desasociará todas las políticas administradas y eliminará todas las políticas insertadas. Sin embargo, dado que IAM no elimina automáticamente las políticas que hacen referencia al grupo como recurso, debe tener cuidado al eliminar un grupo de IAM. Antes de eliminar el grupo de IAM, revise manualmente las políticas para encontrar aquellas en las que se menciona el grupo por el nombre. Por ejemplo, John, el director del equipo de pruebas, tiene una política asociada a su entidad de usuario de IAM que le permite agregar y eliminar usuarios del grupo de usuarios de pruebas. Si un administrador elimina el grupo, también deberá eliminar la política asociada a John. De lo contrario, si el administrador vuelve a crear el grupo eliminado y le da el mismo nombre, los permisos de John seguirán vigentes, aunque haya abandonado el equipo de pruebas.

En cambio, si utiliza la CLI, el SDK o la API para eliminar un grupo de usuarios, antes debe eliminar los usuarios del grupo. A continuación, elimine cualquier política insertada que esté incrustada en el grupo de IAM. A continuación, desasocie cualquier política administrada que esté adjunta al grupo. Luego podrá eliminar el propio grupo de IAM.

------
#### [ Console ]

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **User groups** (Grupos de usuarios).

1. En la lista de grupos de IAM, seleccione la casilla de verificación junto al nombre del grupo de IAM que desea eliminar. Puede utilizar el cuadro de búsqueda para filtrar la lista de grupos de IAM por tipo, permisos y nombre de grupo.

1. Elija **Eliminar**.

1. En el cuadro de confirmación, si desea eliminar un solo grupo, escriba el nombre del grupo y elija **Eliminar**. Si desea eliminar varios grupos, escriba el número de grupos de IAM que desea eliminar seguido de **user groups** y elija **Eliminar**. Por ejemplo, si elimina tres grupos, escriba **3 **user groups****.

------
#### [ AWS CLI ]

1. Elimine todos los usuarios del grupo de IAM.
   + [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html) (para obtener la lista de usuarios del grupo de IAM) y [aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html) (para eliminar un usuario del grupo de IAM)

1. Elimine todas las políticas insertadas que estén incrustadas en el grupo de IAM.
   + [aws iam list-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-group-policies.html) (para obtener una lista de las políticas insertadas del grupo de IAM) y [aws iam delete-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group-policy.html) (para eliminar las políticas insertadas del grupo de IAM)

1. Desasocie todas las políticas administradas asociadas al grupo de IAM.
   + [aws iam list-attached-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-group-policies.html) (para obtener una lista de las políticas administradas asociadas al grupo de IAM) y [aws iam detach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-group-policy.html) (para desasociar una política administrada del grupo de IAM)

1. Elimine el grupo de IAM.
   + [aws iam delete-group](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group.html)

------
#### [ API ]

1. Elimine todos los usuarios del grupo de IAM.
   + [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html) (para obtener la lista de usuarios del grupo de IAM) y [RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html) (para eliminar un usuario del grupo de IAM)

1. Elimine todas las políticas insertadas que estén incrustadas en el grupo de IAM.
   + [ListGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html) (para obtener una lista de las políticas insertadas del grupo de IAM) y [DeleteGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html) (para eliminar las políticas insertadas del grupo de IAM)

1. Desasocie todas las políticas administradas asociadas al grupo de IAM.
   + [ListAttachedGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedGroupPolicies.html) (para obtener una lista de las políticas administradas asociadas al grupo de IAM) y [DetachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachGroupPolicy.html) (para desasociar una política administrada del grupo de IAM)

1. Elimine el grupo de IAM.
   + [DeleteGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroup.html)

------

# Roles de IAM
<a name="id_roles"></a>

Un *rol* de IAM es una identidad de IAM que puede crear en su cuenta y que tiene permisos específicos. Un rol de IAM es similar a un usuario de IAM en que se trata de una identidad de AWS con políticas de permisos que determinan lo que la identidad puede hacer y lo que no en AWS. No obstante, en lugar de asociarse exclusivamente a una persona, la intención es que cualquier usuario pueda asumir un rol que necesite. Además, un rol no tiene asociadas credenciales a largo plazo estándar, como una contraseña o claves de acceso. En su lugar, cuando se asume un rol, este proporciona credenciales de seguridad temporales para la sesión de rol.

Puede utilizar roles para delegar el acceso a usuarios, aplicaciones o servicios que normalmente no tendrían acceso a los recursos de AWS. Por ejemplo, es posible que desee conceder a los usuarios de la cuenta de AWS el acceso a los recursos que no suelen tener, o conceder a los usuarios de una Cuenta de AWS el acceso a los recursos de otra cuenta. O es posible que quiera permitir que una aplicación móvil utilice los recursos de AWS, pero no desea integrar las claves de AWS dentro la aplicación (donde puede ser difícil actualizarlas y donde es posible que los usuarios las extraigan). En ocasiones, es posible que quiera conceder acceso a AWS a los usuarios que ya tienen identidades definidas fuera de AWS, como en su directorio corporativo. O bien, es posible que quiera conceder acceso a su cuenta a terceros para que puedan realizar una auditoría en los recursos.

En estas situaciones, puede delegar el acceso a los recursos de AWS con un *rol de IAM*. En esta sección se presentan los roles y las distintas formas de utilizarlos, cuándo y cómo elegir entre enfoques y cómo crear, administrar, cambiar (o asumir) y eliminar roles.

**nota**  
Cuando crea su Cuenta de AWS por primera vez, no se crea ningún rol de forma predeterminada. A medida que agregue servicios a su cuenta, es posible que agreguen roles vinculados a servicios para respaldar sus casos de uso.  
 Un rol vinculado a servicios es un tipo de rol de servicio que está vinculado a un Servicio de AWS. El servicio puede asumir el rol para realizar una acción en su nombre. Los roles vinculados a servicios aparecen en la Cuenta de AWS y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos de los roles vinculados a servicios.   
Antes de eliminar los roles vinculados a servicios, debe borrar sus recursos relacionados. De esta forma, se protegen los recursos, ya que se evita que se puedan eliminar accidentalmente permisos de acceso a los recursos.  
Para obtener información sobre los servicios que admiten el uso de roles vinculados a servicios, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios que tengan **Yes **en la columna **Service-Linked Role**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión.

**Topics**
+ [

## Cuándo crear un usuario de IAM (en lugar de un rol)
](#id_which-to-choose)
+ [

## Términos y conceptos de roles
](#id_roles_terms-and-concepts)
+ [

## Recursos adicionales
](#id_roles_additional-resources)
+ [

# El problema del suplente confuso
](confused-deputy.md)
+ [

# Escenarios habituales en los roles de IAM
](id_roles_common-scenarios.md)
+ [

# Creación de roles de IAM
](id_roles_create.md)
+ [

# Administración de roles de IAM
](id_roles_manage.md)
+ [

# Métodos para asumir un rol
](id_roles_manage-assume.md)

## Cuándo crear un usuario de IAM (en lugar de un rol)
<a name="id_which-to-choose"></a>

Se recomienda usar usuarios de IAM únicamente para casos de uso que no sean compatibles con la federación de identidades. Estos son algunos de los casos de uso:
+ **Cargas de trabajo que no pueden utilizar roles de IAM**: puede ejecutar una carga de trabajo desde una ubicación que necesite acceder a AWS. En algunas situaciones, no se pueden utilizar roles de IAM para proporcionar credenciales temporales; por ejemplo, en el caso de los complementos de WordPress. En esas situaciones, utilice claves de acceso a largo plazo de usuarios de IAM para que la carga de trabajo se autentique en AWS.
+ **Clientes de externos de AWS**: si utiliza herramientas que no admiten el acceso con IAM Identity Center, como clientes externos de AWS o proveedores que no están alojados en AWS, utilice claves de acceso a largo plazo de usuarios de IAM.
+ **Acceso a AWS CodeCommit**: si utiliza CodeCommit para almacenar el código, puede emplea un usuario de IAM con claves SSH o credenciales específicas del servicio para que CodeCommit se autentique en los repositorios. Se recomienda hacer esto además de utilizar un usuario de IAM Identity Center para la autenticación normal. Los usuarios de IAM Identity Center son el personal que necesita acceso a sus Cuentas de AWS o a sus aplicaciones en la nube. Para dar acceso a los usuarios a los repositorios de CodeCommit sin configurar usuarios de IAM, puede configurar la utilidad **git-remote-codecommit**. Para obtener más información sobre IAM y CodeCommit, consulte [Credenciales de IAM para CodeCommit: credenciales Git, claves SSH y claves de acceso de AWS](id_credentials_ssh-keys.md). Para obtener más información sobre cómo configurar la utilidad **git-remote-codecommit**, consulte [Conexión a repositorios de AWS CodeCommit con credenciales rotativas](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html#temporary-access-configure-credentials) en la *Guía del usuario de AWS CodeCommit*.
+ **Acceso a Amazon Keyspaces (para Apache Cassandra)**: en una situación en la que no pueda utilizar usuarios de IAM Identity Center, como por ejemplo, para probar la compatibilidad con Cassandra, puede utilizar un usuario de IAM con credenciales específicas del servicio para realizar la autenticación en Amazon Keyspaces. Los usuarios de IAM Identity Center son el personal que necesita acceso a sus Cuentas de AWS o a sus aplicaciones en la nube. También puede conectarse a Amazon Keyspaces con credenciales temporales. Para obtener más información, consulte [Uso de credenciales temporales para conectarse a Amazon Keyspaces mediante un rol de IAM y el complemento SigV4](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#temporary.credentials.IAM) en la *Guía para desarrolladores de Amazon Keyspaces (para Apache Cassandra)*.
+ **Acceso de emergencia**: en caso de que no pueda acceder a su proveedor de identidad y deba realizar alguna acción en su Cuenta de AWS. Puede establecer usuarios de IAM de acceso de emergencia como parte de su plan de resiliencia. Recomendamos que las credenciales de usuario de emergencia estén estrictamente controladas y protegidas mediante autenticación multifactor (MFA).

## Términos y conceptos de roles
<a name="id_roles_terms-and-concepts"></a>

A continuación se muestran algunos términos básicos para ayudarle a comenzar con el uso de los roles.

****Rol****  
Una identidad de IAM que se puede crear en una cuenta y que tiene permisos específicos. Un rol de IAM tiene algunas similitudes con un usuario de IAM. Los roles y los usuarios son identidades de AWS con políticas de permisos que determinan lo que la identidad puede y no puede hacer en AWS. No obstante, en lugar de asociarse exclusivamente a una persona, la intención es que cualquier usuario pueda asumir un rol que necesite. Además, un rol no tiene asociadas credenciales a largo plazo estándar, como una contraseña o claves de acceso. En su lugar, cuando se asume un rol, este proporciona credenciales de seguridad temporales para la sesión de rol.  
Las siguientes opciones pueden utilizar los roles:  
+ Un usuario de IAM en la misma Cuenta de AWS o en otra Cuenta de AWS
+ Roles de IAM en la misma cuenta
+ Entidades principales de servicio, para su uso con servicios de AWS y características como:
  + Servicios que permiten ejecutar código en servicios de computación, como Amazon EC2 o AWS Lambda
  + Características que realizan acciones en sus recursos en su nombre, como la replicación de objetos en Amazon S3
  + Servicios que proporcionan credenciales de seguridad temporales a sus aplicaciones que se ejecutan fuera de AWS, como IAM Roles Anywhere o Amazon ECS Anywhere
+ Un usuario externo autenticado por un servicio de proveedor de identidades (IdP) externo que sea compatible con SAML 2.0 u OpenID Connect

****AWS Rol de servicio****  
 Un rol de servicio es un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que asume un servicio para realizar acciones en su nombre. Un administrador de IAM puede crear, modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte [Crear un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*. 

****AWS Rol vinculado al servicio de****  
 Un rol vinculado a servicios es un tipo de rol de servicio que está vinculado a un Servicio de AWS. El servicio puede asumir el rol para realizar una acción en su nombre. Los roles vinculados a servicios aparecen en la Cuenta de AWS y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos de los roles vinculados a servicios.   
Si ya está utilizando un servicio cuando comienza a admitir roles vinculados a servicios, es posible que reciba un mensaje de correo electrónico anunciándole la adición de un nuevo rol en su cuenta. En este caso, el servicio crea automáticamente el rol vinculado a sí mismo en su cuenta. No es necesario realizar ninguna acción para admitir este rol y no debe eliminarlo manualmente. Para obtener más información, consulte [Un nuevo rol ha aparecido en la cuenta de AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).
Para obtener información sobre los servicios que admiten el uso de roles vinculados a servicios, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios que tengan **Yes **en la columna **Service-Linked Role**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión. Para obtener más información, consulte [Creación de un rol vinculado al servicio](id_roles_create-service-linked-role.md).

****Encadenamiento de roles****  
El encadenamiento de roles se produce cuando se utiliza un rol para asumir un segundo rol. Esto puede realizarse a través de la Consola de administración de AWS cuando se cambian los roles, la AWS CLI o la API. Por ejemplo, `RoleA` tiene permiso para asumir `RoleB`. Puede permitir a User1 que asuma el `RoleA` al utilizar las credenciales de usuario a largo plazo en la operación de la API AssumeRole. Esto devuelve las credenciales a corto plazo de `RoleA`. Para utilizar el encadenamiento de roles, puede emplear las credenciales a corto plazo de `RoleA` para permitir a User1 que asuma el `RoleB`.  
Cuando asume un rol, puede pasar una etiqueta de sesión y establecer la etiqueta como transitiva. Las etiquetas de sesión transitivas se pasan a todas las sesiones posteriores de una cadena de roles. Para obtener más información sobre las etiquetas de sesión, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).  
El encadenamiento de roles limita la Consola de administración de AWS, la AWS CLI o la sesión de rol de la API de AWS a un máximo de una hora. Se aplica sin importar la duración máxima de sesión establecida para cada uno de los roles. Cuando utilice la operación API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para asumir un rol, puede especificar la duración de la sesión de su rol con el parámetro `DurationSeconds`. Puede especificar un valor de parámetro de hasta 43200 segundos (12 horas), en función del [valor de la duración máxima de la sesión](id_roles_update-role-settings.md#id_roles_update-session-duration) del rol. Sin embargo, si se asume un rol mediante el encadenamiento de roles y se proporciona un valor para el parámetro `DurationSeconds` superior a una hora, la operación produce un error.  
Para obtener más información acerca del cambio de rol en la Consola de administración de AWS, consulte [Cambiar de usuario a rol de IAM (consola)](id_roles_use_switch-role-console.md).

****Delegación****  
Es la concesión de permisos a alguien para que obtenga acceso a los recursos que estén bajo su control. La delegación implica establecer una relación de confianza entre dos cuentas. La primera es la cuenta que posee el recurso (la cuenta que confía). El segundo es la cuenta que contiene los usuarios que necesitan acceder al recurso (la cuenta de confianza). Las cuentas de confianza y que confía pueden ser cualquiera de las siguientes:  
+ La misma cuenta.
+ Dos cuentas distintas que están bajo el control de la organización.
+ Dos cuentas que son propiedad de diferentes organizaciones.
Para delegar el permiso para obtener acceso a un recurso, [cree un rol de IAM](id_roles_create_for-user.md) en la cuenta que confía que tiene dos políticas asociadas. La *política de permisos* concede al usuario del rol los permisos necesarios para realizar las tareas previstas en el recurso. La *política de confianza* especifica los miembros de la cuenta de confianza que pueden asumir el rol.  
Al crear una política de confianza, no puede especificar un comodín (\$1) como parte de un ARN en la entidad principal. La política de confianza se asocia al rol de la cuenta que confía, y supone la mitad de los permisos. La otra mitad es una política de permisos asociada al usuario de la cuenta de confianza que [permite a dicho usuario cambiar al rol o asumirlo](id_roles_use_permissions-to-switch.md). Un usuario que asume un rol renuncia temporalmente a sus permisos y, en su lugar, asume los permisos del rol. Si el usuario se desconecta o deja de utilizar el rol, los permisos originales del usuario se restablecerán. Un parámetro adicional denominado [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) garantiza el uso seguro de roles entre cuentas no controladas por la misma organización.

****Política de confianza****  
Un [documento de política JSON](reference_policies_grammar.md) en el que se definen las entidades principales en las que *confía* para asumir el rol. Una política de confianza de rol es una [política basada en recursos](access_policies.md#policies_resource-based) requerida que se adjunta a un rol en IAM. [Las entidades principales](reference_policies_elements_principal.md) que puede especificar en la política de confianza incluyen usuarios, roles, cuentas y servicios. Para obtener más información, consulte [“How to use trust policies in IAM roles”](https://aws.amazon.com/blogs//security/how-to-use-trust-policies-with-iam-roles/) en el *Blog de seguridad de AWS*.

****Rol para acceso entre cuentas****  
Un rol que concede acceso a los recursos de una cuenta a una entidad principal de confianza de otra cuenta. Los roles son la forma principal de conceder acceso entre cuentas. Sin embargo, algunos servicios de AWS permiten asociar una política directamente a un recurso (en lugar de utilizar un rol como proxy). Estas se denominan políticas basadas en recursos y puede utilizarlas para conceder a las entidades principales de otra Cuenta de AWS acceso al recurso. Algunos de estos recursos incluyen buckets de Amazon Simple Storage Service (S3), almacenes de Amazon Glacier, temas de Amazon Simple Notification Service (SNS) y colas de Amazon Simple Queue Service (Amazon SQS). Para saber qué servicios admiten políticas basadas en recursos, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md). Para obtener más información sobre las políticas basadas en recursos, consulte [Acceso a recursos entre cuentas en IAM](access_policies-cross-account-resource-access.md).

## Recursos adicionales
<a name="id_roles_additional-resources"></a>

Los siguientes recursos pueden ayudarle a obtener más información sobre la terminología de IAM en relación con las roles de IAM.
+ **Las entidades principales** son entidades de AWS que puede realizar acciones y obtener acceso a los recursos. Una entidad principal puede ser un Usuario raíz de la cuenta de AWS, un usuario de IAM o un rol. Una entidad principal que representa la identidad de un servicio de AWS es un [servicio de entidad principal](reference_policies_elements_principal.md#principal-services). Utilice el elemento de entidad principal en políticas de confianza de rol para definir las entidades principales en las que confía para asumir el rol.

   Para obtener más información y ejemplos de entidades principales a los que puede permitir que asuman un rol, consulte [AWS Elemento de la política de JSON de: Principal](reference_policies_elements_principal.md). 
+ **La federación de identidades** crea una relación de confianza entre un proveedor de identidad externo y AWS. Puede utilizar su proveedor de OpenID Connect (OIDC) o Security Assertion Markup Language (SAML) 2.0 para administrar quién puede acceder a los recursos de AWS. Cuando se utiliza OIDC y SAML 2.0 para configurar una relación de confianza entre estos proveedores de identidad externos y AWS, el usuario se asigna a un rol de IAM. El usuario también recibe credenciales temporales que le permiten tener acceso a los recursos de AWS.

  Para obtener más información sobre las entidades principales federadas, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md).
+ **Las entidades principales federadas** son identidades existentes de Directory Service, del directorio de usuarios de la empresa o de un proveedor OIDC. AWS asigna un rol a una entidad principal federada cuando se solicita acceso a través de un [proveedor de identidades](id_roles_providers.md).

  Para obtener más información sobre las entidades principales federadas de SAML y OIDC, consulte [Sesiones de usuario federado y roles](introduction_access-management.md#intro-access-roles).
+ **Las políticas de permisos** son políticas basadas en la identidad que definen qué acciones y recursos puede utilizar el rol. El documento se redacta según las reglas del lenguaje de la política de IAM. 

  Para obtener más información, consulte [Referencia de políticas JSON de IAM](reference_policies.md).
+ **Los límites de permisos** son una característica avanzada que permite utilizar políticas para limitar los permisos máximos que una política basada en identidad puede conceder a un rol. No se puede aplicar un límite de permisos a un rol vinculado a un servicio.

  Para obtener más información, consulte [Límites de permisos para las entidades de IAM](access_policies_boundaries.md).

# El problema del suplente confuso
<a name="confused-deputy"></a>

El problema del suplente confuso es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. Para evitarlo, AWS proporciona herramientas que le permiten proteger su cuenta si proporciona acceso a terceros (conocido como *entre cuentas*) u otros servicios de AWS (conocido como *entre servicios*) a los recursos de su cuenta.

A veces, es posible que deba otorgar acceso a terceros a sus recursos de AWS (delegar el acceso). Por ejemplo, supongamos que decide contratar a una empresa externa denominada Example Corp para supervisar su Cuenta de AWS y ayudarlo a optimizar los costos. A fin de realizar un seguimiento de su gasto diario, Example Corp necesita acceder a los recursos de AWS. Example Corp también monitoriza muchas otras cuentas de Cuentas de AWS para otros clientes. Puede utilizar un rol de IAM para establecer una relación de confianza entre su Cuenta de AWS y la cuenta de Example Corp. Un aspecto importante de esta situación es el *ID externo*, un identificador opcional que puede utilizar en una política de confianza del rol de IAM para señalar quién puede asumir el rol. La función principal del ID externo es abordar y prevenir el problema del suplente confuso.

Algunos servicios de AWS (servicios de llamadas) utilizan la entidad principal de su servicio de AWS para acceder a los recursos de AWS de otros servicios de AWS (servicios llamados). En algunas de estas interacciones de servicios, puede configurar los servicios de llamadas para que se comuniquen con los recursos de un servicio llamado en otra Cuenta de AWS. Por ejemplo, la configuración de AWS CloudTrail para escribir en un bucket central de Amazon S3 que se encuentra en otra Cuenta de AWS. Al servicio de llamadas, CloudTrail, se le concede acceso a su bucket S3 según la política del bucket S3 al agregar una declaración de permiso para `cloudtrail.amazonaws.com`.

Cuando la entidad principal de un servicio de llamadas de AWS accede a un recurso de un servicio llamado, la política de recursos del servicio llamado solo autoriza a la entidad principal del servicio de AWS, y no a la persona que configuró el servicio de llamadas. Por ejemplo, un bucket de S3 que confía sin condiciones en la entidad principal del servicio de CloudTrail podría recibir los registros de CloudTrail de las Cuentas de AWS que configure un administrador de confianza, pero también los registros de CloudTrail de una persona no autorizada en su Cuenta de AWS, si conoce el nombre del bucket de S3.

El problema del suplente confuso surge cuando una persona utiliza la confianza de la entidad principal de un servicio de AWS para obtener acceso a recursos a los que no debía tener acceso.

## Prevención del suplente confuso entre cuentas
<a name="mitigate-confused-deputy"></a>

En el diagrama siguiente se muestra el problema del suplente confuso entre cuentas.

![\[Descripción del problema de suplente confuso.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/confuseddeputyproblem2.png)


Este escenario presupone lo siguiente:
+ **AWS1** es su cuenta de Cuenta de AWS.
+ **AWS1:ExampleRole** es un rol de la cuenta. La política de confianza del rol confía en Example Corp especificando la cuenta de AWS de Example Corp como la que puede asumir el rol.

Y ocurre lo siguiente:

1. Al empezar a utilizar el servicio de Example Corp, usted proporciona el ARN de **AWS1:ExampleRole** a Example Corp.

1. Example Corp utiliza dicho ARN del rol para obtener credenciales de seguridad temporales para acceder a los recursos de la cuenta de Cuenta de AWS. De esta forma, confía en Example Corp como "suplente" que puede actuar en su nombre.

1. Otro cliente de AWS también ha empezado a utilizar los servicios de Example Corp y también ofrece el ARN de **AWS1: ExampleRole** para que lo utilice Example Corp. Probablemente el otro cliente ha averiguado o adivinado el **AWS1:ExampleRole**, que no es un secreto.

1. Cuando el otro cliente solicita a Example Corp obtener acceso a los recursos de AWS en (la que parece ser) su cuenta, Example Corp utiliza **AWS1:ExampleRole** para obtener acceso a los recursos de la cuenta.

Este es el modo en que el otro cliente podría acceder de nuevo sin autorización a sus recursos. Dado que este otro cliente ha engañado a Example Corp para actuar en los recursos de forma accidental, Example Corp se ha convertido en un "suplente confuso".

Example Corp puede abordar el problema del suplente confuso al solicitarle que incluya la verificación de la condición `ExternalId` en la política de confianza del rol. Example Corp genera un único valor de `ExternalId` para cada cliente y utiliza ese valor en su solicitud para asumir el rol. El valor de `ExternalId` debe ser único entre los clientes de Example Corp y tiene que estar controlado por Example Corp, no por sus clientes. Este es el motivo por el que lo recibe de Example Corp y que no crea el suyo propio. Esto evita que Example Corp sea un suplente confuso y conceda acceso a los recursos de AWS de otra cuenta.

En nuestro caso, imagine que el identificador único de Example Corp para usted es 12345, y su identificador para el otro cliente es 67890. Estos identificadores están simplificados para este ejemplo. Por lo general, estos identificadores son GUID. Suponiendo que estos identificadores son exclusivos para cada cliente de Example Corp, son valores confidenciales que deben utilizarse para el ID externo. 

Example Corp le proporciona el valor de ID externo 12345. A continuación, deberá añadir un elemento `Condition` a la política de confianza del rol que exige que el valor [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts) sea 12345, como a continuación:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "Example Corp's AWS Account ID"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": {
        "sts:ExternalId": "12345"
      }
    }
  }
}
```

------

El elemento Condition (Condición) de esta política permite a Example Corp asumir el rol solo cuando la llamada a la API AssumeRole incluye el valor de ID externo 12345. Example Corp se asegura de que cada vez que se asume un rol en nombre de un cliente, siempre incluye el valor de ID externo del cliente en la llamada a AssumeRole. Incluso aunque otro cliente suministre el ARN a Example Corp, no puede controlar el ID externo que Example Corp incluye en su solicitud a AWS. Esto ayuda a impedir que un cliente no autorizado acceda a los recursos.

El siguiente diagrama ilustra este ejemplo.

![\[Cómo mitigar un problema de suplente confuso.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/confuseddeputymitigation2.png)


1. Como anteriormente, al empezar a utilizar el servicio de Example Corp, usted proporciona el ARN de **AWS1:ExampleRole** a Example Corp.

1.  Cuando Example Corp usa ese ARN del rol para asumir el rol **AWS1:ExampleRole**, Example Corp incluye el ID externo (12345) en la llamada a la API AssumeRole. El ID externo coincide con la política de confianza del rol, por lo que la llamada AssumeRole a la API funciona y Example Corp obtiene las credenciales de seguridad temporales para acceder a los recursos de la cuenta de Cuenta de AWS.

1. Otro cliente de AWS también ha empezado a utilizar los servicios de Example Corp y, como antes, también proporciona el ARN de **AWS1: ExampleRole** para que lo utilice Example Corp. 

1. Sin embargo, ahora, cuando Example Corp intenta asumir el rol **AWS1:ExampleRole**, proporciona el ID externo asociado con el otro cliente (67890). El otro cliente no puede cambiarlo. Example Corp lo hace porque la solicitud para utilizar el rol procede de otro cliente, por lo que 67890 indica la circunstancia en la que actúa Example Corp. Dado que ha agregado una condición con su propio ID externo (12345) a la política de confianza de **AWS1:ExampleRole**, la llamada a la API AssumeRole provoca un error. Así se evita que el otro cliente obtenga un acceso no autorizado a los recursos de su cuenta (indicado por la "X" roja en el diagrama).

El ID externo ayuda a impedir que cualquier otro cliente engañe a Example Corp para que acceda a sus recursos.

## Prevención del suplente confuso entre servicios
<a name="cross-service-confused-deputy-prevention"></a>

En el siguiente diagrama, se muestra el problema del suplente confuso entre servicios mediante el ejemplo de interacción entre CloudTrail y Amazon S3, en el que una persona no autorizada escribe los registros de CloudTrail en un bucket de Amazon S3 al que no está autorizada a acceder.

![\[A una persona no autorizada se le concede acceso a un bucket de Amazon S3 de otra cuenta mediante la entidad principal del servicio de CloudTrail.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/cross-service-confused-deputy1.png)


Para evitar que una persona no autorizada utilice la confianza de una entidad principal de AWS para acceder a sus recursos, las entidades principales del servicio de AWS incluyen información sobre el recurso de AWS, la Cuenta de AWS y la organización de AWS en nombre de la que actúan.

Esta información está disponible en valores clave de condición global que se pueden utilizar en una política de recursos o en una política de control de recursos para las solicitudes realizadas por las entidades principales del servicio de AWS. Le recomendamos que utilice[aws:SourceArn](reference_policies_condition-keys.md#condition-keys-sourcearn), [aws:SourceAccount](reference_policies_condition-keys.md#condition-keys-sourceaccount), [aws:SourceOrgID](reference_policies_condition-keys.md#condition-keys-sourceorgid) o [aws:SourceOrgPaths](reference_policies_condition-keys.md#condition-keys-sourceorgpaths) en sus políticas de recursos siempre que se conceda permiso a una entidad principal del servicio de AWS para acceder a uno de sus recursos. Estas claves de condición le permiten comprobar en sus políticas de recursos o políticas de control de recursos que las entidades principales del servicio de AWS que acceden a sus recursos lo hacen en nombre de los recursos de AWS, las Cuentas de AWS o AWS Organizations previstos.
+ Use `aws:SourceArn` para permitir que una entidad principal del servicio de AWS acceda a sus recursos en nombre de un recurso específico, como una ruta de AWS CloudTrail específica o una flota de AppStream.
+ Use `aws:SourceAccount` para permitir que una entidad principal del servicio de AWS acceda a sus recursos en nombre de un usuario de Cuenta de AWS específico.
+ Use `aws:SourceOrgID` para permitir que una entidad principal del servicio de AWS acceda a sus recursos en nombre de un usuario de AWS Organizations específico.
+ Use `aws:SourceOrgPaths` para permitir que la entidad principal del servicio de AWS acceda a sus recursos en nombre de una ruta de AWS Organizations específica.

En el siguiente diagrama, se muestra el escenario del suplente confuso entre servicios cuando un recurso se configura con la clave contextual de condición global `aws:SourceAccount` y una persona no autorizada de otra cuenta intenta acceder a recursos de AWS a los que no debe tener acceso.

![\[A una persona no autorizada se le deniega acceso a un bucket de Amazon S3 de otra cuenta mediante la entidad principal del servicio de CloudTrail.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/cross-service-confused-deputy2.png)


El uso de las claves de condición global `aws:SourceArn`, `aws:SourceAccount`, `aws:SourceOrgID` y `aws:SourceOrgPaths` en una política le permite garantizar que las entidades principales del servicio accedan a sus recursos en su nombre. Recomendamos utilizar estas claves de condición siempre que se conceda acceso a uno de sus recursos a una entidad principal del servicio de AWS. 

**nota**  
Algunas interacciones de Servicio de AWS tienen controles adicionales para evitar problemas de suplente confuso entre servicios que ponen a prueba el acceso de los usuarios a un recurso. Por ejemplo, cuando se concede una clave de KMS a un Servicio de AWS, AWS KMS utiliza el contexto de cifrado asociado al recurso y la concesión de clave para evitar problemas de suplente confuso entre servicios.  
Consulte la documentación de los servicios que utiliza para obtener más información sobre los mecanismos específicos de cada servicio que pueden ayudar a evitar los riesgos de suplente confuso entre servicios y sobre si `aws:SourceArn`, `aws:SourceAccount`, `aws:SourceOrgID` y `aws:SourceOrgPaths` son compatibles.

## Protección del suplente confuso entre servicios con políticas basadas en recursos
<a name="cross-service-confused-deputy-prevention-resource"></a>

La siguiente política de ejemplo concede a la entidad principal del servicio de `cloudtrail.amazonaws.com` acceso al bucket de Amazon S3, arn:aws:s3:::amzn-s3-demo-bucket1, solo cuando la entidad principal del servicio actúa en nombre de Cuenta de AWS 111122223333.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CloudTrailAclCheck",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/[optionalPrefix]/Logs/myAccountID/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

Esta política de bucket de ejemplo concede a la entidad principal del servicio de `appstream.amazonaws.com` acceso al script de powershell examplefile.psh en s3://amzn-s3-demo-bucket2 solo cuando actúa en nombre de la flota de Amazon AppStream especificada, especificando el ARN de la flota con `aws:SourceArn`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket2/examplefile.psh",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:fleet/ExampleFleetName"
                } 
            }
        }
    ]
}
```

------

## Protección del suplente confuso entre servicios con políticas de control de recursos
<a name="cross-service-confused-deputy-prevention-resource-control"></a>

Puede utilizar las políticas de control de recursos (RCP) para aplicar controles de suplente confuso entre servicios a los recursos compatibles de Servicios de AWS. Las RCP le permiten aplicar de forma centralizada controles de suplente confuso entre servicios a sus recursos. Puede utilizar claves de condición como `aws:SourceOrgId` y `aws:SourceOrgPaths` con las RCP adjuntas a su AWS Organizations, unidades organizativas (OU) o Cuentas de AWS dentro de su organización sin agregar declaraciones a políticas basadas en recursos específicos. Para obtener más información acerca de las RCP y los servicios compatibles, consulte [Políticas de control de recursos (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) en la *Guía del usuario de AWS Organizations*.

En el siguiente ejemplo, la RCP deniega a las entidades principales del servicio de AWS el acceso a los buckets de Amazon S3 de sus cuentas miembro cuando `aws:SourceOrgID` no es igual a o-ExampleOrg. Debe haber un permiso correspondiente en la política basada en recursos del bucket de S3 para permitir que las entidades principales del Servicio de AWS tengan un `SourceOrgID` igual a o-ExampleOrg.

Esta política aplica el control solo a las solicitudes de las entidades principales del servicio (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) que tienen la clave `aws:SourceAccount` (`"Null": {"aws:SourceAccount": "false"}`), de modo que las integraciones de servicios que no requieren el uso de la clave de condición y las llamadas de las entidades principales no se ven afectadas. Si la clave de condición `aws:SourceAccount` está presente en el contexto de la solicitud, se evaluará la condición nula como verdadera, lo que provocará que se aplique `aws:SourceOrgID`. Utilizamos `aws:SourceAccount` en lugar de `aws:SourceOrgID` en el operador de condición nula para que el control siga siendo válido si la solicitud se origina en una cuenta que no pertenece a una organización.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtectionForS3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceOrgID": "o-ExampleOrg"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

# Escenarios habituales en los roles de IAM
<a name="id_roles_common-scenarios"></a>

Al igual que sucede con la mayoría de las características de AWS, hay dos formas de utilizar un rol: de forma interactiva en la consola de IAM o con programas, con la AWS CLI, Tools for Windows PowerShell o la API.
+ Los usuarios de IAM de su cuenta que usan la consola de IAM pueden *cambiar a* un rol para utilizar temporalmente los permisos del rol en la consola. Los usuarios renuncian a sus permisos originales y adoptan los permisos asignados al rol. Cuando el usuario deja de utilizar el rol, sus permisos originales se restablecen.
+ Una aplicación o un servicio que AWS ofrece (como Amazon EC2) puede *asumir* un rol solicitando credenciales de seguridad temporales para un rol con el que realizar solicitudes programadas a AWS. Un rol se utiliza de este modo para no tener que compartir ni mantener credenciales de seguridad a largo plazo (por ejemplo, mediante la creación de un usuario de IAM) para todas las entidades que requieran acceso a un recurso.

**nota**  
Esta guía utiliza las frases *cambiar a un rol* y *asumir un rol* indistintamente.

La forma más sencilla de utilizar roles consiste en conceder a los usuarios de IAM permisos para cambiar a los roles que usted crea dentro de su propia Cuenta de AWS o en otra. De esta forma, pueden cambiar de roles con facilidad utilizando la consola de IAM para utilizar permisos que usted no quiere que tengan normalmente y salir de los roles para renunciar a los permisos. Esto es útil para evitar el acceso *accidental* a recursos confidenciales o su modificación.

Para informarse de los usos de roles más complejos, como la concesión de acceso a aplicaciones y servicios, o a usuarios externos federados, puede llamar a la API `AssumeRole`. Esta llamada a la API devuelve un conjunto de credenciales temporales que la aplicación puede utilizar en las llamadas a la API posteriores. Las acciones que se intenten efectuar con las credenciales temporales solo tienen los permisos que el rol asociado les concede. Una aplicación no tiene que "salir" del rol de la misma forma que lo hace un usuario en la consola; en su lugar, la aplicación simplemente deja de utilizar las credenciales temporales y vuelve a realizar llamadas con las credenciales originales.

Los usuarios federados inician sesión con las credenciales de un proveedor de identidades (IdP). A continuación, AWS proporciona credenciales temporales al proveedor de identidades de confianza para que las transmita al usuario y que este las incluya en las solicitudes de recursos de AWS posteriores. Estas credenciales proporcionan los permisos concedidos al rol asignado.

En esta sección se proporciona información general sobre las situaciones siguientes:
+ [Proporcionar a un usuario de IAM de una Cuenta de AWS propia acceso a recursos de otra cuenta propia](id_roles_common-scenarios_aws-accounts.md)
+ [Proporcionar acceso a cargas de trabajo ajenas a AWS](id_roles_common-scenarios_non-aws.md)
+ [Proporcionar acceso a usuarios de IAM de Cuentas de AWS que le pertenezcan a terceros](id_roles_common-scenarios_third-party.md)
+ [Proporcionar acceso a servicios ofrecidos por AWS a recursos de AWS](id_roles_common-scenarios_services.md)
+ [Proporcionar acceso a usuarios autenticados externamente (identidad federada)](id_roles_common-scenarios_federated-users.md)

# Acceso para un usuario de IAM en otra Cuenta de AWS propia
<a name="id_roles_common-scenarios_aws-accounts"></a>

Puede conceder a los usuarios de IAM permiso para cambiar de roles en su Cuenta de AWS o a los roles definidos en otras Cuentas de AWS propias. 

**nota**  
Si desea conceder acceso a una cuenta de la que no es propietario o no tiene control, consulte [Acceder a las Cuentas de AWS que le pertenezcan a terceros](id_roles_common-scenarios_third-party.md) más adelante en este tema. 

Imagine que dispone de instancias de Amazon EC2 que son de vital importancia para su organización. En lugar de conceder directamente permiso a los usuarios para finalizar las instancias, puede crear un rol con estos privilegios. A continuación, permita que los administradores cambien de rol cuando necesiten terminar una instancia. Al hacer esto, se añaden las siguientes capas de protección a las instancias:
+ Debe conceder explícitamente permiso a los usuarios para asumir el rol.
+ Los usuarios deben cambiar de rol de forma activa con la Consola de administración de AWS o asumir el rol utilizando la AWS CLI o la API de AWS.
+ Puede añadir una protección Multi-Factor Authentication (MFA) al rol para que únicamente los usuarios que inicien sesión con un dispositivo MFA puedan asumir el rol. Para obtener información sobre cómo configurar un rol para que los usuarios que lo asuman deban primero autenticarse mediante la autenticación multifactor (MFA), consulte [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md).

Recomendamos utilizar este enfoque para aplicar el *principio de privilegio mínimo*. Esto significa limitar el uso de permisos elevados únicamente cuando sean necesarios para realizar tareas específicas. Con los roles puede ayudar a impedir cambios accidentales en entornos confidenciales, especialmente si los combina con un proceso de [auditoría](cloudtrail-integration.md) con el fin de garantizar que los roles solo se utilizan cuando sean necesarios.

Al crear un rol con este fin, debe especificar las cuentas mediante el ID cuyos usuarios necesitan obtener acceso en el elemento `Principal` de la política de confianza del rol. Puede conceder permisos a usuarios específicos de estas otras cuentas para cambiar de rol. Consulte [¿Qué es IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para saber si las entidades principales de las cuentas fuera de su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles.

Un usuario de una cuenta puede cambiar de rol en la misma cuenta o en una cuenta diferente. Al utilizar el rol, el usuario solo puede realizar las acciones y obtener acceso únicamente a los recursos permitidos por el rol; sus permisos originales de usuario se suspenden. Si el usuario deja de utilizar el rol, sus permisos originales se restablecen.

## Situación de ejemplo en la que se usan cuentas de desarrollo y producción separadas
<a name="id_roles_common-scenarios_aws-accounts-example"></a>

Imagine que la organización tiene varias Cuentas de AWS para aislar su entorno de desarrollo del de producción. Los usuarios de la cuenta de desarrollo podrían necesitar ocasionalmente acceder a los recursos en la cuenta de producción. Por ejemplo, es posible que necesite el acceso entre cuentas al promocionar una actualización desde el entorno de desarrollo al entorno de producción. Aunque podría crear identidades distintas (y contraseñas) para los usuarios que trabajan en las dos cuentas, la administración de credenciales de varias cuentas dificulta la administración de las identidades. En la siguiente figura, todos los usuarios se administran en la cuenta de desarrollo, pero algunos desarrolladores exigen acceso limitado a la cuenta de producción. La cuenta de desarrollo tiene dos grupos: Evaluadores y Desarrolladores, y cada grupo tiene su propia política.

![\[Utilice un rol para delegar permisos a un usuario en otra cuenta\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/roles-usingroletodelegate.png)


1. En la cuenta de producción un administrador utiliza IAM para crear el rol `UpdateApp` en dicha cuenta. En el rol, el administrador define una política de confianza que especifica la cuenta de desarrollo como `Principal`, lo que significa que los usuarios autorizados de la cuenta de desarrollo pueden utilizar el rol `UpdateApp`. El administrador también define una política de permisos para el rol que especifica los permisos de lectura y escritura del bucket de Amazon S3 denominado `productionapp`.

   El administrador comparte entonces la información pertinente con cualquier usuario que necesite asumir el rol. Dicha información es el número de cuenta y el nombre del rol (para usuarios de la consola de AWS) o el Nombre de recurso de Amazon (ARN) (para acceso de API de AWS CLI o AWS). El ARN del rol podría parecerse a `arn:aws:iam::123456789012:role/UpdateApp`, donde el rol se denomina `UpdateApp` y el rol se creó en el número de cuenta 123456789012.
**nota**  
El administrador puede configurar de forma opcional el rol para que los usuarios que lo asuman deban primero autenticarse mediante la opción Multi-Factor Authentication (MFA). Para obtener más información, consulte [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md). 

1. En la cuenta de desarrollo un administrador concede a los miembros del grupo Desarrolladores permiso para cambiar de rol. Esto se realiza mediante la concesión de permiso al grupo Desarrolladores para llamar a la API AWS Security Token Service de AWS STS (`AssumeRole`) para el rol `UpdateApp`. Cualquier usuario de IAM que pertenezca al grupo Desarrolladores de la cuenta de desarrollo ahora puede cambiar al rol `UpdateApp` en la cuenta de producción. Otros usuarios que no están en el grupo Desarrolladores no tienen permiso para cambiar de rol y, por lo tanto, no pueden obtener acceso al bucket de S3 en la cuenta de producción.

1. El usuario solicita cambios de rol:
   + Consola de AWS: el usuario selecciona el nombre de la cuenta en la barra de navegación y elige **Switch Role (Cambiar rol)**. El usuario especifica el ID de la cuenta (o alias) y el nombre del rol. O bien, el usuario puede hacer clic en un enlace enviado por correo electrónico enviado por el administrador. Este enlace redirigirá al usuario a la página **Switch Role (Cambiar rol)** con los detalles ya completados.
   + API de AWS/AWS CLI: un usuario del grupo Desarrolladores de la cuenta de desarrollo llama a la función `AssumeRole` para obtener las credenciales para el rol `UpdateApp`. El usuario especifica el ARN del rol `UpdateApp` como parte de la llamada. Si un usuario del grupo Evaluadores realiza la misma solicitud, esta no podrá llevarse a cabo, ya que los evaluadores no tienen permiso para llamar a `AssumeRole` para solicitar el ARN del rol `UpdateApp`.

1. AWS STS devuelve credenciales temporales:
   + Consola de AWS: AWS STS verifica la solicitud con la política de confianza del rol para garantizar que la solicitud procede de una entidad de confianza (es decir, la cuenta de desarrollo). Tras realizar la verificación, AWS STS devuelve [credenciales de seguridad temporales ](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) a la consola de AWS.
   + API/CLI: AWS STS verifica la solicitud con la política de confianza del rol para garantizar que la solicitud procede de una entidad de confianza (es decir, la cuenta de desarrollo). Tras realizar la verificación, AWS STS devuelve [credenciales de seguridad temporales](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) a la aplicación.

1. Las credenciales temporales permiten el acceso a los recursos de AWS:
   + Consola de AWS: la consola de AWS utiliza las credenciales temporales en nombre del usuario para todas las acciones de consola posteriores, en este caso, para leer y escribir en el bucket `productionapp`. La consola no puede obtener acceso a cualquier otro recurso en la cuenta de producción. Si el usuario deja de utilizar el rol, los permisos del usuario vuelven a los permisos originales antes de cambiar de rol.
   + API/CLI: la aplicación utiliza las credenciales de seguridad temporales para actualizar el bucket de `productionapp`. Con las credenciales de seguridad temporales, la aplicación solo puede leer y escribir en el bucket de `productionapp` y no puede obtener acceso a cualquier otro recurso en la cuenta de producción. La aplicación no tiene que dejar de utilizar el rol, sino que, en cambio, deja de utilizar las credenciales temporales y utiliza las credenciales originales en las llamadas API posteriores.

## Recursos adicionales
<a name="id_roles_common-scenarios_more-info"></a>

Para obtener más información, consulte los siguientes temas:
+ [Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM](tutorial_cross-account-with-roles.md)

# Acceso para cargas de trabajo que no sean de AWS
<a name="id_roles_common-scenarios_non-aws"></a>

Un [rol de IAM](id_roles.md) es un objeto de AWS Identity and Access Management (IAM) al que se le asignan [permisos](access_policies.md). Cuando se [asume ese rol](id_roles_manage-assume.md) mediante una identidad de IAM o una identidad externa a AWS, proporciona credenciales de seguridad temporales para la sesión de rol. Es posible que tenga cargas de trabajo ejecutándose en un centro de datos u otra infraestructura fuera de AWS que deban acceder a los recursos de AWS. En lugar de crear, distribuir y administrar claves de acceso de larga duración, puede utilizar AWS Identity and Access Management Roles Anywhere (IAM Roles Anywhere) para autenticar las cargas de trabajo ajenas a AWS. IAM Roles Anywhere utiliza certificados X.509 de la entidad de certificación (CA) para autenticar identidades y proporcionar acceso seguro a Servicios de AWS con las credenciales temporales proporcionadas por un rol de IAM.

**Para utilizar IAM Roles Anywhere**

1. Configure una CA mediante [AWS Private Certificate Authority](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html), o bien utilice una CA de su propia infraestructura de PKI.

1. Después de configurar una CA, debe crear un objeto en IAM Roles Anywhere denominado *anclaje de confianza*. Este anclaje establece la confianza entre IAM Roles Anywhere y su CA para la autenticación.

1. A continuación, puede configurar los roles de IAM existentes o crear otros nuevos que confíen en el servicio de IAM Roles Anywhere.

1. Autentique las cargas de trabajo que no sean de AWS con IAM Roles Anywhere mediante el anclaje de veracidad. AWS concede a la carga de trabajo que no es de AWS credenciales temporales para el rol de IAM que tiene acceso a sus recursos de AWS.

## Recursos adicionales
<a name="id_roles_non-aws_additional_resources"></a>

Los siguientes recursos pueden ayudarlo a obtener más información sobre cómo proporcionar acceso a las cargas de trabajo que no son de AWS.
+ Para obtener más información sobre cómo configurar IAM Roles Anywhere, consulte [Qué es AWS Identity and Access Management Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) en la *Guía del usuario de IAM Roles Anywhere*.
+ A fin de obtener información sobre cómo configurar una infraestructura de clave pública (PKI) para IAM Roles Anywhere, consulte [IAM Roles Anywhere with an external certificate authority](https://aws.amazon.com/blogs/) en el *Blog de seguridad de AWS*.

# Acceder a las Cuentas de AWS que le pertenezcan a terceros
<a name="id_roles_common-scenarios_third-party"></a>

Cuando terceros necesitan obtener acceso a recursos de AWS de su organización, puede utilizar roles para delegarles el acceso. Por ejemplo, puede que un tercero proporcione un servicio de administración de sus recursos de AWS. Con los roles de IAM, puede concederle acceso a sus recursos de AWS a terceros sin tener que compartir sus credenciales de seguridad de AWS. En vez de ello, el tercero puede obtener acceso a sus recursos de AWS asumiendo un rol que usted crea en su Cuenta de AWS. Consulte [¿Qué es IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para saber si las entidades principales de las cuentas fuera de su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles.

Los terceros deben proporcionarle la siguiente información para que pueda crear un rol que puedan asumir:
+ **El ID de Cuenta de AWS del tercero**. Especifique su ID de Cuenta de AWS como entidad principal cuando defina la política de confianza del rol.
+ **Un ID externo para la asociación exclusiva con el rol**. El ID externo puede ser cualquier identificador secreto que usted y el tercero conozcan. Por ejemplo, puede utilizar un ID de factura entre usted y el tercero, pero no utilice nada que pueda adivinarse, como el nombre o el número de teléfono del tercero. Debe especificar este ID cuando defina la política de confianza del rol. El tercero debe proporcionar este ID cuando asuma el rol.
+ **Los permisos que el tercero necesita para poder trabajar con sus recursos de AWS**. Debe especificar estos permisos cuando defina la política de permisos del rol. Esta política define qué acciones pueden ejecutar y a qué recursos pueden obtener acceso.

Después de crear el rol, debe proporcionar el nombre de recurso de Amazon (ARN) del rol al tercero. El ARN del rol es necesario para asumir el rol.

**importante**  
Cuando concede acceso a terceros a sus recursos de AWS, estos pueden obtener acceso a cualquier recurso que especifique en la política. El uso que efectúen de sus recursos se le facturará a usted. Asegúrese de que limita el uso de los recursos de forma adecuada.

## ID externos para el acceso de terceros
<a name="id_roles_third-party_external-id"></a>

Un ID externo permite al usuario que asume el rol afirmar las circunstancias en las que opera. También ofrece al propietario de la cuenta una forma de permitir asumir el rol únicamente en circunstancias específicas. La función principal del ID externo es abordar y prevenir [El problema del suplente confuso](confused-deputy.md).

**importante**  
AWS no trate el ID externo como un secreto. Después de crear un secreto como un par de claves de acceso o una contraseña en AWS, no puede verlos de nuevo. Cualquier usuario con permiso para ver el rol puede ver el ID externo de dicho rol. 

## ¿Cuándo debería utilizar un ID externo?
<a name="external-id-use"></a>

Utilice un ID externo en las siguientes situaciones:
+ Es un propietario de la Cuenta de AWS y ha configurado un rol para un tercero que obtiene acceso a otras Cuentas de AWS, además de la suya. Debe pedir a ese tercero un ID externo que incluye cuándo asume su rol. A continuación, busque el ID externo en la política de confianza de su rol. De este modo se garantiza que el tercero puede asumir su rol solo cuando actúa en su nombre.
+ Se encuentra en la posición de asumir roles en nombre de diferentes clientes como Example Corp en nuestra situación anterior. Debe asignar un ID externo único a cada cliente e indicarle que lo agregue a la política de confianza de su rol. A continuación, deberá asegurarse de incluir siempre el ID externo correcto en sus solicitudes para asumir roles.

  Es muy probable que ya tenga un identificador único para cada uno de sus clientes y que este ID único sea suficiente para su uso como ID externo. El ID externo no es un valor especial que deba crear de forma explícita o realizar un seguimiento por separado, solo para este fin.

  Siempre debe especificar el ID externo en las llamadas a la API `AssumeRole`. Además, cuando un cliente le ofrezca un ARN de rol, pruebe si puede asumir el rol tanto con como sin el ID externo correcto. Si puede asumir el rol sin el ID externo correcto, no almacene el ARN de rol del cliente en su sistema. Espere hasta que el cliente haya actualizado la política de confianza de rol para solicitar el ID externo correcto. De esta forma ayuda a sus clientes a hacer lo correcto, lo que ayuda a mantenerles a ambos protegidos frente al problema del suplente confuso.

## Escenario de ejemplo con un ID externo
<a name="id_roles_third-party_example"></a>

Por ejemplo, digamos que decide contratar a una empresa externa denominada Example Corp para supervisar su Cuenta de AWS y ayudarlo a optimizar los costos. A fin de realizar un seguimiento de su gasto diario, Example Corp necesita acceder a los recursos de AWS. Example Corp también monitoriza muchas otras cuentas de AWS para otros clientes.

No conceda a Example Corp acceso a un usuario de IAM y sus credenciales a largo plazo en su cuenta de AWS. En su lugar, utilice un rol de IAM y sus credenciales de seguridad temporales. Un rol de IAM proporciona un mecanismo para permitir que un tercero acceda a sus recursos de AWS sin necesidad de compartir credenciales a largo plazo (por ejemplo, una clave de acceso del usuario de IAM).

Puede utilizar un rol de IAM para establecer una relación de confianza entre su Cuenta de AWS y la cuenta de Example Corp. Después de que se establezca esta relación, un miembro de la cuenta de Example Corp puede llamar a la API de AWS Security Token Service [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para obtener credenciales de seguridad temporales. A continuación, los miembros de Example Corp pueden utilizar las credenciales para obtener acceso a los recursos de AWS en su cuenta. 

**nota**  
Para obtener más información acerca de AssumeRole y de otras operaciones de la API de AWS que puede llamar para obtener credenciales de seguridad temporales, consulte [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md).

A continuación presentamos un desglose más detallado de la situación:

1. Contrata a Example Corp para que cree un único identificador de cliente para usted. Te proporcionan este ID de cliente único y su número de Cuenta de AWS. Usted necesita esta información para crear un rol de IAM en el siguiente paso. 
**nota**  
Example Corp puede utilizar cualquier valor de cadena que desee para el ExternalId, siempre que sea exclusivo para cada cliente. Puede ser un número de cuenta de cliente o incluso una cadena de caracteres aleatoria, siempre que no haya dos clientes con el mismo valor. No pretende ser un "secreto". Example Corp debe proporcionar el valor ExternalId a cada cliente. Lo fundamental es que el valor lo debe generar Example Corp y ***no*** sus clientes, para garantizar que cada ID externo sea único.

1. Puede iniciar sesión en AWS y crear un rol de IAM que otorgue acceso a Example Corp a sus recursos. Como cualquier rol de IAM, el rol tiene dos políticas: una política de permisos y una política de confianza. La política de confianza del rol especifica quién puede asumir el rol. En nuestro caso, la política especifica el número de Cuenta de AWS de Example Corp como el `Principal`. Esto permite que las identidades de la cuenta asuman el rol. Además, se agrega un elemento `[Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)` a la política de confianza. Esta `Condition` prueba la clave de contexto `ExternalId` para garantizar que coincide con el ID de cliente único de Example Corp. Por ejemplo:

   ```
       "Principal": {"AWS": "Example Corp's Cuenta de AWS ID"},
       "Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}
   ```

1. La política de permisos del rol especifica qué permite realizar dicho rol. Por ejemplo, podría especificar que el rol permite administrar únicamente los recursos de Amazon EC2 y Amazon RDS, pero no los recursos de usuarios o grupos de IAM. En nuestro escenario de ejemplo, utiliza la política de permisos para ofrecer a Example Corp acceso de solo lectura a todos los recursos de la cuenta.

1. Después de crear el rol, debe proporcionar el nombre de recurso de Amazon (ARN) del rol a Example Corp.

1. Cuando Example Corp necesita acceder a los recursos de AWS, un miembro de la compañía llama a la API AWS de `sts:AssumeRole`. La llamada incluye el ARN de la función que se ha de asumir y el parámetro ExternalId que se corresponde con el ID de cliente.

Si la solicitud proviene de alguien que utiliza la Cuenta de AWS de Example Corp y si el ARN de rol y el ID externo son correctos, la solicitud se realiza correctamente. A continuación, proporciona credenciales de seguridad temporales que Example Corp puede utilizar para obtener acceso a los recursos de AWS que permite su rol.

En otras palabras, cuando una política de roles incluye un ID externo, cualquiera que desee asumir el rol debe ser principal en el rol y debe incluir el ID externo correcto.

## Puntos clave para los ID externos
<a name="id_roles_third-party_key-points"></a>
+ En un entorno de varios inquilinos en el que se admiten varios clientes con cuentas de AWS diferentes, recomendamos utilizar un ID externo por cada Cuenta de AWS. Este ID debe ser una cadena aleatoria generada por el tercero.
+ Para requerir que el tercero proporcione un ID externo al asumir un rol, actualice la política de confianza del rol con el ID externo de su elección.
+ Para proporcionar un ID externo cuando asuma un rol, utilice la AWS CLI o la API de AWS para asumir ese rol. Para obtener más información, consulte la operación de la API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) o la operación de la CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html).
+ El valor `ExternalId` debe tener 2 caracteres como mínimo y 1224 como máximo. El valor debe ser alfanumérico sin espacio en blanco. También puede incluir los símbolos siguientes: más (\$1), igual (=), coma (,), punto (.), arroba (@), dos puntos (:), barra inclinada (/) y guion (-).

## Recursos adicionales
<a name="id_roles_third-party_additional_resources"></a>

Los siguientes recursos pueden ayudarlo a obtener más información sobre cómo proporcionar acceso a las Cuentas de AWS que le pertenezcan a terceros.
+ Para obtener información sobre cómo permitir que otros realicen acciones en su Cuenta de AWS, consulte [Crear un rol mediante políticas de confianza personalizadas](id_roles_create_for-custom.md).
+ Para obtener información sobre cómo conceder permiso a fin de cambiar a un rol, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).
+ Para obtener información sobre cómo crear y proporcionar credenciales de seguridad temporales a usuarios confiables, consulte [Permisos para credenciales de seguridad temporales](id_credentials_temp_control-access.md).

# Acceso a un servicio de AWS
<a name="id_roles_common-scenarios_services"></a>

Muchos servicios de AWS exigen el uso de roles para controlar a qué tiene acceso dicho servicio. Un rol que asume un servicio para realizar acciones en su nombre se denomina [rol de servicio](id_roles.md#iam-term-service-role). Si un rol tiene un fin especializado para un servicio, puede categorizarse como [rol de servicio vinculado](id_roles.md#iam-term-service-linked-role). Consulte la [AWS documentación](https://docs.aws.amazon.com/) de cada servicio para ver si utiliza roles y para aprender a asignar un rol para que lo utilice el servicio.

Para obtener más información sobre cómo crear un rol para delegar el acceso a un servicio ofrecido por AWS, consulte [Crear un rol para delegar permisos a un servicio de AWS](id_roles_create_for-service.md).

# Acceder a usuarios autenticados externamente (federación de identidades)
<a name="id_roles_common-scenarios_federated-users"></a>

Es posible que los usuarios tengan ya identidades fuera de AWS, por ejemplo, en el directorio corporativo. Si estos usuarios necesitan trabajar con recursos de AWS (o con aplicaciones que necesiten acceso a dichos recursos), estos usuarios también necesitarán tener credenciales de seguridad de AWS. Puede utilizar un rol de IAM para especificar permisos para los usuarios con identidad federada de la organización o para un proveedor de identidad (IdP) externo.

**nota**  
Como práctica recomendada de seguridad, le recomendamos que administre el acceso de los usuarios en [IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html) mediante la federación de identidades en lugar de crear usuarios de IAM. Para obtener más información acerca de situaciones específicas en las que se requiere un usuario de IAM, consulte [Cuándo crear un usuario de IAM (en lugar de un rol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose).

## Federación de usuarios de una aplicación móvil o web con Amazon Cognito
<a name="id_roles_common-scenarios_federated-users-cognito"></a>

Si crea una aplicación móvil o web que tenga acceso a los recursos de AWS, esta aplicación necesita credenciales de seguridad para poder realizar solicitudes mediante programación en AWS. En la mayoría de escenarios de aplicaciones móviles, le recomendamos utilizar [Amazon Cognito](https://aws.amazon.com/cognito/). Puede utilizar este servicio con [AWS Mobile SDK para iOS](https://aws.amazon.com/sdkforios/) y [AWS Mobile SDK para Android y Fire OS](https://aws.amazon.com/sdkforandroid/) a fin de crear identidades exclusivas para usuarios y autenticarlos para proteger el acceso a sus recursos de AWS. Amazon Cognito es compatible con los mismos proveedores de identidad indicados en la sección siguiente, y también admite [identidades autenticadas por desarrollador](https://aws.amazon.com/blogs/mobile/amazon-cognito-announcing-developer-authenticated-identities) y acceso no autenticado (invitado). Amazon Cognito también ofrece operaciones de API para sincronizar los datos del usuario de modo que se preserven cuando cambia de un dispositivo a otro. Para obtener más información, consulte [Amazon Cognito para aplicaciones móviles](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito). 

## Federación de usuarios con proveedores de servicio de identidad pública u OpenID Connect
<a name="id_roles_common-scenarios_federated-users-openId"></a>

Siempre que sea posible, utilice Amazon Cognito para escenarios de aplicaciones móviles y web. Amazon Cognito realiza la mayoría del trabajo en segundo plano con los servicios del proveedor de identidad pública. Funciona con los mismos servicios de terceros y también admite inicios de sesión anónimos. Sin embargo, en los escenarios más avanzados, puede trabajar directamente con un servicio de terceros como Login with Amazon, Facebook, Google o cualquier proveedor (IdP) compatible con OpenID Connect (OIDC). Para obtener más información sobre el uso de la federación OIDC con uno de estos servicios, consulte [Federación OIDC](id_roles_providers_oidc.md).

## Federación de usuarios con SAML 2.0
<a name="id_roles_common-scenarios_federated-users-saml20"></a>

Si su organización ya utiliza un paquete de software de proveedor de identidad que admite SAML 2.0 (Security Assertion Markup Language 2.0), puede crear una relación de confianza entre su organización como proveedor de identidad (IdP) y AWS como proveedor del servicio. Entonces podrá utilizar SAML para proporcionar a los usuarios un inicio de sesión único (SSO) federado para el acceso a la Consola de administración de AWS o acceso federado a las llamadas a operaciones de API de AWS. Por ejemplo, si su compañía utiliza Microsoft Active Directory y Active Directory Federation Services, puede realizar la federación con SAML 2.0. Para obtener más información sobre cómo federar usuarios con SAML 2.0, consulte [Federación SAML 2.0](id_roles_providers_saml.md).

## Federación de usuarios mediante la creación de una aplicación personalizada de agente de identidades
<a name="id_roles_common-scenarios_federated-users-idbroker"></a>

Si su almacén de identidades no es compatible con SAML 2.0, puede crear una aplicación personalizada de agente de identidades para llevar a cabo una función similar. La aplicación de agente autentica a los usuarios, solicita credenciales temporales para los usuarios de AWS y les proporciona acceso a los recursos de AWS. 

Por ejemplo, Example Corp. tiene muchos empleados que necesitan ejecutar aplicaciones internas que obtengan acceso a los recursos de AWS de la compañía. Los empleados ya tienen identidades en el sistema de autenticación e identidad de la compañía y Example Corp. no quiere crear otro usuario de IAM para cada empleado de la compañía.

Bob es un desarrollador de Example Corp. Para permitir que las aplicaciones internas de la compañía obtengan acceso a los recursos de AWS, Bob desarrolla una aplicación personalizada de agente de identidades. La aplicación verifica que los empleados hayan iniciado sesión en el sistema existente de autenticación e identidad de Example Corp., que podría utilizar LDAP, Active Directory u otro sistema. La aplicación de agente de identidades obtiene credenciales de seguridad temporales para los empleados. Este escenario es similar al anterior (una aplicación móvil que utiliza un sistema personalizado de autenticación), salvo que todas las aplicaciones que necesitan acceso a los recursos de AWS se ejecutan en la red corporativa y la compañía tiene un sistema existente de autenticación.

Para obtener credenciales de seguridad temporales, la aplicación de agente de identidades llama a `AssumeRole` o `GetFederationToken` para obtener credenciales de seguridad temporales, en función del modo en que Bob quiere administrar las políticas para los usuarios y el momento en el que las credenciales temporales caduquen. (Para obtener información sobre las diferencias entre estas operaciones de API, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md) y [Permisos para credenciales de seguridad temporales](id_credentials_temp_control-access.md)). La llamada devuelve credenciales de seguridad temporales que incluyen un token de sesión, una clave de acceso secreta y un ID de clave de acceso de AWS. La aplicación de agente de identidades pone a disposición de la aplicación interna de la compañía estas credenciales de seguridad temporales. La aplicación puede utilizar las credenciales temporales para realizar llamadas a AWS directamente. La aplicación almacena en caché las credenciales hasta que caducan y solicita un nuevo conjunto de credenciales temporales. La siguiente figura ilustra este escenario.

![\[Ejemplo de flujo de trabajo mediante la utilización de una aplicación de agentes de identidades personalizada\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/enterprise-authentication-with-identity-broker-application.diagram.png)


Este escenario tiene los siguientes atributos:
+ La aplicación de agente de identidades tiene permisos para obtener acceso a la API de Security Token Service (STS) de IAM para crear credenciales de seguridad temporales.
+ La aplicación de agente de identidades puede verificar que los empleados estén autenticados en el sistema existente de autenticación.
+ Los usuarios pueden obtener una dirección URL temporal que les proporcione acceso a Management Console de AWS (lo que se denomina inicio de sesión único).

Para obtener información sobre la creación de credenciales de seguridad, consulte [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md). Para obtener más información sobre cómo las entidades principales federadas de SAML obtienen acceso a la Consola de administración de AWS, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md).

# Creación de roles de IAM
<a name="id_roles_create"></a>

Para crear un rol, puede utilizar Consola de administración de AWS, AWS CLI, Tools for Windows PowerShell o la API de IAM.

Si utiliza la Consola de administración de AWS, un asistente le guiará por los pasos de creación de un rol. El asistente varía ligeramente según si crea un rol para un servicio de AWS, una Cuenta de AWS o una entidad principal federada de SAML u OIDC.

**Roles para usuarios de IAM**  
Cree este rol para delegar permisos en su Cuenta de AWS o a roles definidos en otras Cuentas de AWS que posea. Un usuario de una cuenta puede cambiar de rol en la misma cuenta o en una cuenta diferente. Al utilizar el rol, el usuario solo puede realizar las acciones y obtener acceso únicamente a los recursos permitidos por el rol; sus permisos originales de usuario se suspenden. Si el usuario deja de utilizar el rol, sus permisos originales se restablecen.

Para obtener más información, consulte [Creación de un rol para delegar permisos a un usuario de IAM](id_roles_create_for-user.md).

A fin de obtener más información sobre la creación de roles para el acceso entre cuentas, consulte [Crear un rol mediante políticas de confianza personalizadas](id_roles_create_for-custom.md).

**Roles para servicios de AWS**  
Cree este rol para delegar permisos a un servicio que pueda realizar acciones en su nombre. El [rol de servicio](id_roles.md#iam-term-service-role) que transfiera a un servicio debe tener una política de IAM con los permisos que autoricen a ese servicio a realizar las acciones que tiene asociadas. Se requieren distintos permisos para cada servicio de AWS.

Para obtener más información sobre la creación de roles de servicio, consulte [Crear un rol para delegar permisos a un servicio de AWS](id_roles_create_for-service.md).

Para obtener más información sobre la creación de roles vinculados a servicios, consulte [Creación de un rol vinculado al servicio](id_roles_create-service-linked-role.md).

**Roles para la federación de identidades**  
Cree este rol para delegar permisos a los usuarios que ya tienen identidades fuera de AWS. Cuando se utiliza un proveedor de identidad, no es necesario crear un código de inicio de sesión personalizado ni administrar sus propias identidades de usuario. Sus usuarios externos inician sesión a través de un IdP, y usted puede conceder permisos a las identidades externas para utilizar los recursos de AWS en su cuenta. Los proveedores de identidades lo ayudan a proteger su cuenta de AWS, ya que no tiene que distribuir ni integrar en su aplicación credenciales de seguridad a largo plazo, como las claves de acceso.

Para obtener más información, consulte [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md).

# Creación de un rol para delegar permisos a un usuario de IAM
<a name="id_roles_create_for-user"></a>

Puede utilizar roles de IAM para proporcionar acceso a sus recursos de AWS. Con roles de IAM puede establecer relaciones de *confianza* entre la cuenta que confía y otras cuentas de *confianza* de AWS. La cuenta que confía posee el recurso al que se obtiene acceso y la cuenta de confianza incluye los usuarios que necesitan obtener acceso al recurso. Sin embargo, es posible que otra cuenta sea propietaria de un recurso de su cuenta. Por ejemplo, la cuenta que confía podría permitir a la cuenta de confianza crear recursos, como, por ejemplo, crea objetos en un bucket de Amazon S3. En ese caso, la cuenta que crea el recurso es la propietaria del recurso y controla quién pueden tener acceso a dicho recurso.

Después de crear la relación de confianza, un usuario de IAM o una aplicación de la cuenta de confianza pueden utilizar la operación AWS Security Token Service (AWS STS) [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) de la API. Esta operación proporciona credenciales de seguridad temporales que permiten el acceso a los recursos de AWS de su cuenta.

Usted puede controlar ambas cuentas o un tercero puede controlar la cuenta con los usuarios. Si la otra cuenta con los usuarios se encuentra en una Cuenta de AWS que usted no controla, puede utilizar el atributo `externalId`. El ID externo puede ser cualquier palabra o número acordados entre usted y el administrador de la cuenta de terceros. Esta opción agrega automáticamente una condición a la política de confianza que permite al usuario asumir el rol únicamente si la solicitud incluye el correcto `sts:ExternalID`. Para obtener más información, consulte [Acceder a las Cuentas de AWS que le pertenezcan a terceros](id_roles_common-scenarios_third-party.md).

Para obtener información sobre cómo utilizar los roles para delegar permisos, consulte [Términos y conceptos de roles](id_roles.md#id_roles_terms-and-concepts). Para obtener más información sobre el uso de un rol de servicio para permitir que los servicios obtengan acceso a los recursos de su cuenta, consulte [Crear un rol para delegar permisos a un servicio de AWS](id_roles_create_for-service.md).

## Creación de un rol de IAM (consola)
<a name="roles-creatingrole-user-console"></a>

Puede utilizar la Consola de administración de AWS para crear un rol que un usuario de IAM pueda asumir. Por ejemplo, suponga que su organización tiene varias Cuentas de AWS para aislar un entorno de desarrollo de uno de producción. Para información general sobre cómo crear un rol que permita a usuarios de la cuenta de desarrollo acceder a los recursos de la cuenta de producción, consulte [Situación de ejemplo en la que se usan cuentas de desarrollo y producción separadas](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Permisos mínimos**  
Para realizar los siguientes pasos, debe tener al menos los siguientes permisos IAM:  
`access-analyzer:ValidatePolicy`
`iam:AttachRolePolicy`
`iam:CreatePolicy`
`iam:CreateRole`
`iam:GetAccountSummary`
`iam:GetPolicy`
`iam:GetPolicyVersion`
`iam:GetRole`
`iam:ListAccountAliases`
`iam:ListAttachedRolePolicies`
`iam:ListOpenIDConnectProviders`
`iam:ListPolicies`
`iam:ListRolePolicies`
`iam:ListRoles`
`iam:ListRoleTags`
`iam:ListSAMLProviders`

------
#### [ Console ]

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Roles** y, a continuación, seleccione **Crear rol**.

1. Elija el tipo de rol de **Cuenta de AWS**.

1. Para crear un rol para la cuenta, elija **Esta cuenta**. Para crear un rol para otra cuenta, elija **Otra Cuenta de AWS** e ingrese el **ID de cuenta** al que desea conceder acceso a los recursos.

   El administrador de la cuenta especificada puede conceder permiso para asumir este rol a cualquier usuario de IAM en esa cuenta. Para ello, el administrador asocia una política al usuario o grupo que concede permiso para la acción `sts:AssumeRole`. Esta política debe especificar el ARN del rol como `Resource`. 

1. Si concede permisos a los usuarios desde una cuenta que no controla y los usuarios van a asumir este rol mediante programación, seleccione **Requerir ID externo**. El ID externo puede ser cualquier palabra o número acordados entre usted y el administrador de la cuenta de terceros. Esta opción agrega automáticamente una condición a la política de confianza que permite al usuario asumir el rol únicamente si la solicitud incluye el correcto `sts:ExternalID`. Para obtener más información, consulte [Acceder a las Cuentas de AWS que le pertenezcan a terceros](id_roles_common-scenarios_third-party.md).
**importante**  
Si elige esta opción, restringe el acceso al rol únicamente a través de la API de AWS CLI, Tools for Windows PowerShell o API de AWS. Esto se debe a que no puede utilizar la consola de AWS para cambiar a un rol que tiene una condición `externalId` en su política de confianza. Sin embargo, puede crear este tipo de acceso mediante programación si escribe un script o una aplicación con el correspondiente SDK. Para obtener más información y un script de muestra, consulte [Cómo habilitar el acceso entre cuentas a la Consola de administración de AWS](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) en el blog de seguridad de AWS.

1. Si desea restringir el rol a aquellos usuarios que inicien sesión con autenticación multifactor (MFA), seleccione **Requerir MFA**. De esta forma se agrega una condición a la política de confianza del rol que comprueba si se produce un inicio de sesión con MFA. Un usuario que desee asumir el rol debe iniciar sesión con una contraseña temporal de uso único desde un dispositivo MFA configurado. Los usuarios sin autenticación MFA no pueden asumir el rol. Para obtener más información acerca de MFA, consulte [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md)

1. Elija **Siguiente**.

1. IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente de cada cuenta. Seleccione la política que desea utilizar como política de permisos o elija **Crear política** para abrir una pestaña nueva del navegador y crear una política nueva desde cero. Para obtener más información, consulte [Crear políticas de IAM](access_policies_create-console.md#access_policies_create-start). Después de crear la política, cierre esa pestaña y vuelva a la pestaña original. Seleccione la casilla situada junto a las políticas de permisos que desea conceder a cualquier persona que asuma el rol. Si lo prefiere, puede optar por no seleccionar ninguna política en este momento y asociar las políticas al rol más adelante. De forma predeterminada, un rol no tiene permisos.

1. (Opcional) Configure un [límite de permisos](access_policies_boundaries.md). Esta es una característica avanzada. 

   Abra la sección **Configurar límite de permisos** y elija **Utilizar un límite de permisos para controlar los permisos que puede tener el rol como máximo**. Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Siguiente**.

1. Escriba un nombre para el rol en **Nombre de rol**. Los nombres de rol deben ser únicos en su Cuenta de AWS. Cuando se utiliza un nombre de rol en una política o como parte de un ARN, el nombre del rol distingue entre mayúsculas y minúsculas. Cuando los clientes ven un nombre de rol en la consola, por ejemplo, durante el proceso de inicio de sesión, el nombre del rol no distingue entre mayúsculas y minúsculas. Dado que varias entidades pueden hacer referencia al rol, no se puede editar el nombre del rol una vez que se crea.

1. (Opcional) En **Descripción**, ingrese una descripción para el nuevo rol.

1. Elija **Editar** en las secciones **Paso 1: seleccionar entidades de confianza** o **Paso 2: agregar permisos** para editar los casos de uso y los permisos del rol. Volverá a las páginas anteriores para realizar las modificaciones.

1. De manera opcional, agregue metadatos al rol asociando etiquetas como pares de clave-valor. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Revise el rol y, a continuación, seleccione **Crear rol**.
**importante**  
Recuerde que esto es solo la primera mitad de la configuración necesaria. También debe conceder permisos a determinados usuarios de la cuenta de confianza para cambiar al rol en la consola o para asumir el rol mediante programación. Para obtener más información acerca de este paso, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

------

## Creación de un rol de IAM (AWS CLI)
<a name="roles-creatingrole-user-cli"></a>

Para crear un rol desde la AWS CLI se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la AWS CLI deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si lo prefiere, también puede configurar el [límite de permisos](access_policies_boundaries.md) para el rol.

**Para crear un rol para el acceso entre cuentas (AWS CLI)**

1. Crear un rol: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. Asociar una política de permisos administrada al rol: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    o

   Crear una política de permisos insertada para el rol: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Opcional) Añadir los atributos personalizados al rol asociando etiquetas: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obtener más información, consulte [Administrar etiquetas en roles de IAM (AWS CLI o API de AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Configurar el [límite de permisos](access_policies_boundaries.md) para el rol: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

El siguiente ejemplo muestra los dos primeros pasos, que también son los más comunes, para crear un rol entre cuentas en un entorno sencillo. Este ejemplo permite a cualquier usuario de la cuenta `123456789012` asumir el rol y ver el bucket de `example_bucket` Amazon S3. Este ejemplo también supone que se está utilizando un equipo cliente con Windows y que ya se ha configurado la interfaz de línea de comandos con las credenciales de la cuenta y la región. Para obtener más información, consulte [Configuración de la interfaz de línea de comandos de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

En este ejemplo, incluya la siguiente política de confianza en el primer comando al crear el rol. Esta política de confianza permite a los usuarios de la cuenta `123456789012` asumir el rol utilizando la operación `AssumeRole`, pero solo si el usuario proporciona la autenticación MFA utilizando los parámetros `SerialNumber` y `TokenCode`. Para obtener más información acerca de MFA, consulte [Autenticación multifactor de AWS en IAM](id_credentials_mfa.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
          "Action": "sts:AssumeRole",
          "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }
      }
  ]
}
```

------

**importante**  
Si el elemento `Principal` incluye el ARN de un determinado usuario o rol de IAM, dicho ARN se transforma en un ID exclusivo de entidad principal cuando se guarda la política. Esto ayuda a mitigar el riesgo de que alguien aumente sus permisos eliminando o volviendo a crear el rol o usuario. Normalmente, este ID no se muestra en la consola porque también existe una transformación inversa al ARN cuando se muestra la política de confianza. Sin embargo, si se elimina el rol o el usuario, el ID de entidad principal aparece en la consola porque AWS ya no puede volver a asignarlo a un ARN. Por lo tanto, si elimina y vuelve a crear un usuario o rol al que se hace referencia en un elemento `Principal` de la política de confianza, debe editar el rol para sustituir el ARN.

Cuando utilice el segundo comando, debe asociar una política administrada existente al rol. La siguiente política de permisos permite a cualquiera que asuma el rol realizar únicamente la acción `ListBucket` en el bucket de Amazon S3 `example_bucket`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::example_bucket"
      }
  ]
}
```

------

Para crear este rol `Test-UserAccess-Role`, primero debe guardar la política de confianza anterior con el nombre `trustpolicyforacct123456789012.json` en la carpeta `policies` del disco duro local `C:`. A continuación, guarde el política de permisos anterior como una política administrada por el cliente en su Cuenta de AWS con el nombre `PolicyForRole`. A continuación, puede utilizar los comandos siguientes para crear el rol y asociarle la política administrada.

```
# Create the role and attach the trust policy file that allows users in the specified account to assume the role.
$ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json

# Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do.
$ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:policy/PolicyForRole
```

**importante**  
Recuerde que esto es solo la primera mitad de la configuración necesaria. También debe conceder permisos a los usuarios individuales de la cuenta de confianza para cambiar al rol. Para obtener más información acerca de este paso, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

Después de crear el rol y concederle permisos para realizar tareas de AWS u obtener acceso a los recursos de AWS, cualquier usuario de la cuenta `123456789012` puede asumir el rol. Para obtener más información, consulte [Cambiar a un rol de IAM (AWS CLI)](id_roles_use_switch-role-cli.md).

## Creación de un rol de IAM (API de AWS)
<a name="roles-creatingrole-user-api"></a>

Para crear un rol desde la API de AWS se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la API deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si lo prefiere, también puede configurar el [límite de permisos](access_policies_boundaries.md) para el rol.

**Para crear un rol en código (API de AWS)**

1. Creación de un rol: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Para la política de confianza del rol, puede especificar una ubicación de archivo.

1. Asociar una política de permisos administrada al rol: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

   o

   Crear una política de permisos insertada para el rol: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)
**importante**  
Recuerde que esto es solo la primera mitad de la configuración necesaria. También debe conceder permisos a los usuarios individuales de la cuenta de confianza para cambiar al rol. Para obtener más información acerca de este paso, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

1. (Opcional) Añadir los atributos personalizados al usuario asociando etiquetas: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obtener más información, consulte [Administrar etiquetas en usuarios de IAM (AWS CLI o API de AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Configuración del [límite de permisos](access_policies_boundaries.md) para el rol: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

Después de crear el rol y concederle permisos para realizar tareas de AWS u obtener acceso a los recursos de AWS, debe conceder permisos a los usuarios de la cuenta para que puedan asumir el rol. Para obtener más información sobre cómo asumir un rol, consulte [Cambiar a un rol de IAM (API de AWS)](id_roles_use_switch-role-api.md).

## Creación de un rol de IAM (AWS CloudFormation)
<a name="roles_creatingrole-user-cloudformation"></a>

Para obtener información acerca de cómo crear un rol de IAM en AWS CloudFormation, consulte la [referencia de recursos y propiedades](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) y los [ejemplos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#aws-resource-iam-role--examples) en la *Guía del usuario de AWS CloudFormation*.

Para obtener más información acerca de las plantillas de IAM en AWS CloudFormation, consulte [fragmentos de plantilla AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html) en la *Guía del usuario de AWS CloudFormation*.

# Crear un rol para delegar permisos a un servicio de AWS
<a name="id_roles_create_for-service"></a>

Muchos servicios de AWS requieren que utilice roles para permitir que el servicio obtenga acceso a los recursos de otros servicios en su nombre. Un rol que asume un servicio para realizar acciones en su nombre se denomina [rol de servicio](id_roles.md#iam-term-service-role). Si un rol tiene un fin especializado para un servicio, se categoriza como [rol de servicio vinculado](id_roles.md#iam-term-service-linked-role). Para ver qué servicios son compatibles con el uso de roles vinculados a servicios, o si un servicio admite algún tipo de credenciales temporales, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md). Para obtener información sobre cómo un servicio determinado utiliza los roles, elija el nombre del servicio en la tabla para ver la documentación correspondiente a dicho servicio.

Al configurar el permiso `PassRole`, debe asegurarse de que un usuario no pase un rol en el que el rol tenga más permisos de los que usted desea que tenga el usuario. Por ejemplo, es posible que a Alice no se le permita realizar ninguna acción de Amazon S3. Si Alice pudiera transferir un rol a un servicio que permita acciones de Amazon S3, el servicio podría realizar acciones de Amazon S3 en su nombre al ejecutar el trabajo.

Para obtener información sobre cómo los roles le pueden ayudar a delegar permisos, consulte [Términos y conceptos de roles](id_roles.md#id_roles_terms-and-concepts).

## Permisos del rol de servicio
<a name="id_roles_create_service-permissions"></a>

Debe configurar permisos para permitir a una entidad de IAM (como un usuario, grupo o rol) crear o editar una función de servicio.

**nota**  
El ARN de un rol vinculado a un servicio incluye una entidad principal del servicio, que se indica en las políticas siguientes como `SERVICE-NAME.amazonaws.com`. No intente adivinar la entidad principal del servicio, ya que distingue entre mayúsculas y minúsculas y su formato puede variar para los distintos servicios de AWS. Para ver el elemento principal de un servicio, consulte la documentación correspondiente su rol vinculado a servicio.

**Para permitir a una entidad de IAM cree un rol vinculado a un servicio específico**

Agregue la siguiente política a la entidad de IAM que necesite crear la función de servicio. Esta política le permite crear un rol de servicio para el servicio especificado y con un nombre específico. A continuación, puede asociar políticas administradas o insertadas al rol. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        }
    ]
}
```

------

**Cómo permitir a una entidad de IAM crear un rol de servicio**

AWS recomienda permitir solo a los administradores crear cualquier rol de servicio. Una persona con permisos para crear un rol y adjuntar cualquier política puede escalar sus propios permisos. En su lugar, cree una política que les permita crear solo los roles que necesitan o haga que un administrador cree el rol de servicio en su nombre.

Para adjuntar una política que permita a un administrador acceder a toda la Cuenta de AWS, utilice la política administrada [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) de AWS.

**Cómo permitir a una entidad de IAM editar un rol de servicio**

Agregue la siguiente política a la entidad de IAM que necesite editar la función de servicio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EditSpecificServiceRole",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:PutRolePolicy",
                "iam:UpdateRole",
                "iam:UpdateRoleDescription"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        },
        {
            "Sid": "ViewRolesAndPolicies",
            "Effect": "Allow",
            "Action": [
                "iam:GetPolicy",
                "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Para permitir a una entidad de IAM eliminar una función de servicio específico**

Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite eliminar la función de servicio especificado.

```
{
    "Effect": "Allow",
    "Action": "iam:DeleteRole",
    "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
}
```

**Cómo permitir a una entidad de IAM eliminar cualquier rol de servicio**

AWS recomienda permitir solo a los administradores eliminar cualquier rol de servicio. En su lugar, cree una política que les permita eliminar solo los roles que necesitan o haga que un administrador elimine el rol de servicio en su nombre.

Para adjuntar una política que permita a un administrador acceder a toda la Cuenta de AWS, utilice la política administrada [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) de AWS.

## Creación de un rol para un servicio de AWS (consola)
<a name="roles-creatingrole-service-console"></a>

Puede utilizar la Consola de administración de AWS para crear un rol para un servicio. Algunos servicios admiten más de un rol de servicio. Por lo tanto, recomendamos que consulte la [documentación de AWS](https://docs.aws.amazon.com/) relacionada con su servicio para ver qué caso de uso debe elegir. Puede obtener más información acerca de cómo asignar las políticas de confianza y de permisos necesarias para el rol, para que el servicio pueda asumir el rol en su nombre. Los pasos que puede utilizar para controlar los permisos para el rol pueden variar en función de cómo defina el servicio los casos de uso y de si se crea o no un rol vinculado al servicio.

------
#### [ Console ]

**Cómo crear un rol para un Servicio de AWS (consola de IAM)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, seleccione **Roles** y, a continuación, elija **Crear rol**.

1. En **Tipo de entidad de confianza**, elija **Servicio de AWS**.

1. En **Servicio o caso de uso**, seleccione un servicio y, a continuación, el caso de uso. Los casos de uso son definidos por el servicio de modo tal que ya incluyen la política de confianza que el servicio mismo requiere.

1. Elija **Siguiente**.

1. Para las **Políticas de permisos**, las opciones dependen del caso de uso que haya seleccionado:
   + Si el servicio define los permisos para el rol, no puede seleccionar políticas de permisos.
   + Seleccione entre un conjunto limitado de políticas de permisos.
   + Seleccione una de todas las políticas de permisos.
   + No seleccione políticas de permisos en este momento. Después de crear el rol, genere las políticas y luego asócielas al rol.

1. (Opcional) Configure un [límite de permisos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Se trata de una característica avanzada que está disponible para los roles de servicio, pero no para los roles vinculados a servicios.

   1. Abra la sección **Configurar límite de permisos** y, a continuación, elija **Utilizar un límite de permisos para controlar los permisos que puedes tener el rol como máximo**. 

      IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente de cada cuenta.

   1. Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Siguiente**.

1. Para **Nombre del rol**, las opciones varían según el servicio:
   + Si el servicio define el nombre del rol, no podrá editarlo.
   + Si el servicio define un prefijo para el nombre del rol, puede ingresar un sufijo opcional.
   + Si el servicio no define el nombre del rol, podrá nombrarlo usted mismo.
**importante**  
Cuando asigne un nombre a un rol, tenga en cuenta lo siguiente:  
Los nombres de rol deben ser únicos dentro de su Cuenta de AWS, y no se puedesn hacer únicos mediante mayúsculas y minúsculas.  
Por ejemplo, no puedes crear roles denominados tanto **PRODROLE** como **prodrole**. Cuando se utiliza un nombre de rol en una política o como parte de un ARN, el nombre de rol distingue entre mayúsculas y minúsculas, sin embargo, cuando un nombre de rol les aparece a los clientes en la consola, como por ejemplo durante el proceso de inicio de sesión, el nombre de rol no distingue entre mayúsculas y minúsculas.
Dado que otras entidades podrían hacer referencia al rol, no es posible editar el nombre del rol una vez creado.

1. (Opcional) **En Descripción**, ingrese una descripción para el rol.

1. (Opcional) Para editar los casos de uso y los permisos de la función, en las secciones **Paso 1: Seleccionar entidades confiables** o en **Paso 2: Agregar permisos**, elija **Editar**.

1. (Opcional) Para ayudar a identificar, organizar o buscar el rol, agregue etiquetas como pares clave-valor. Para obtener más información sobre el uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) en la *Guía del usuario de IAM*.

1. Revise el rol y, a continuación, elija **Crear rol**.

------

## Creación de un rol para un servicio (AWS CLI)
<a name="roles-creatingrole-service-cli"></a>

Para crear un rol desde la AWS CLI se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la AWS CLI deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si el servicio con el que está trabajando es Amazon EC2 también deberá crear un perfil de instancia y agregarle el rol. Si lo prefiere, también puede configurar el [límite de permisos](access_policies_boundaries.md) para el rol.

**Para crear un rol para un servicio de AWS desde la AWS CLI**

1. Los siguientes comandos `[create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)` crean un rol llamado *Test-Role* y le asigna una política de confianza:

   `aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json`

1. Asociar una política de permisos administrada al rol: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html).

   Por ejemplo, el siguiente comando `attach-role-policy` adjunta la política administrada AWS denominada `ReadOnlyAccess` en el rol de IAM denominado `ReadOnlyRole`:

   `aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole`

    o

   Crear una política de permisos insertada para el rol: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

   Para agregar una política de permisos insertada, consulte el siguiente ejemplo:

    `aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json`

1. (Opcional) Añadir los atributos personalizados al rol asociando etiquetas: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obtener más información, consulte [Administrar etiquetas en roles de IAM (AWS CLI o API de AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Configurar el [límite de permisos](access_policies_boundaries.md) para el rol: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

Si va a utilizar el rol con Amazon EC2 o con otro servicio de AWS que utiliza Amazon EC2, debe almacenar el rol en un perfil de instancias. Un perfil de instancias es un contenedor para un rol que se puede asociar a una instancia de Amazon EC2 cuando se lanza. Un perfil de instancia puede contener un único rol y dicho límite no se puede aumentar. Si crea el rol con la Consola de administración de AWS, el perfil de instancia se crea con el mismo nombre que el rol. Para obtener más información sobre los perfiles de instancia, consulte [Utilizar perfiles de instancia](id_roles_use_switch-role-ec2_instance-profiles.md). Para obtener información sobre cómo inicializar una instancia de EC2 con un rol, consulte [Control del acceso a los recursos de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) en la *Guía del usuario de Amazon EC2*.

**Para crear un perfil de instancia y almacenar el rol en él (AWS CLI)**

1. Crear un perfil de instancia: [aws iam create-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)

1. Añadir el rol al perfil de instancia: [aws iam add-role-to-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html)

En el siguiente ejemplo de conjunto de comandos de la AWS CLI, se muestran los dos primeros pasos para crear un rol y asociar permisos. También muestra los dos pasos para crear un perfil de instancia y añadir el rol al perfil. Esta política de confianza de ejemplo permite al servicio Amazon EC2 asumir el rol y ver el bucket de `example_bucket` Amazon S3. El ejemplo también supone que se está utilizando un equipo cliente con Windows y que ya se ha configurado la interfaz de línea de comandos con las credenciales y región de la cuenta. Para obtener más información, consulte [Configuración de la interfaz de línea de comandos de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

En este ejemplo, incluya la siguiente política de confianza en el primer comando al crear el rol. Esta política de confianza permite que el servicio Amazon EC2 asuma el rol. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}
```

------

Cuando utilice el segundo comando, debe asociar una política de permisos al rol. La siguiente política de permisos de ejemplo permite al rol realizar únicamente la acción `ListBucket` en el bucket de Amazon S3 `example_bucket`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

Para crear el rol `Test-Role-for-EC2`, primero debe guardar la política de confianza anterior con el nombre `trustpolicyforec2.json` y la política de permisos anterior con el nombre `permissionspolicyforec2.json` en el directorio `policies` del disco duro local `C:`. A continuación, puede utilizar los siguientes comandos para crear el rol, asociar la política, crear el perfil de instancia y añadir el rol al perfil de instancia.

```
# Create the role and attach the trust policy that allows EC2 to assume this role.
$ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json

# Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do.
$ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json

# Create the instance profile required by EC2 to contain the role
$ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3

# Finally, add the role to the instance profile
$ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2
```

Al lanzar la instancia EC2, especifique el nombre de perfil de instancia en la página **Configurar detalles de la instancia** si utiliza la consola de AWS. Si utiliza el comando de la CLI `aws ec2 run-instances`, especifique el parámetro `--iam-instance-profile`.

## Creación de un rol para un servicio (API de AWS)
<a name="roles-creatingrole-service-api"></a>

Para crear un rol desde la API de AWS se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la API deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si el servicio con el que está trabajando es Amazon EC2 también deberá crear un perfil de instancia y agregarle el rol. Si lo prefiere, también puede configurar el [límite de permisos](access_policies_boundaries.md) para el rol.

**Para crear un rol para un servicio de AWS (API de AWS)**

1. Creación de un rol: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Para la política de confianza del rol, puede especificar una ubicación de archivo.

1. Asociar una política de permisos administrada al rol: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

    o

   Crear una política de permisos insertada para el rol: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

1. (Opcional) Añadir los atributos personalizados al usuario asociando etiquetas: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obtener más información, consulte [Administrar etiquetas en usuarios de IAM (AWS CLI o API de AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Configuración del [límite de permisos](access_policies_boundaries.md) para el rol: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

Si va a utilizar el rol con Amazon EC2 o con otro servicio de AWS que utiliza Amazon EC2, debe almacenar el rol en un perfil de instancias. Un perfil de instancia es un contenedor para un rol. Cada perfil de instancia solo puede contener un único rol y dicho límite no se puede superar. Si crea el rol en la Consola de administración de AWS, el perfil de instancia se crea con el mismo nombre que el rol. Para obtener más información sobre los perfiles de instancia, consulte [Utilizar perfiles de instancia](id_roles_use_switch-role-ec2_instance-profiles.md). Para obtener información sobre cómo inicializar una instancia de Amazon EC2 con un rol, consulte [Control del acceso a los recursos de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) en la *Guía del usuario de Amazon EC2*. 

**Para crear un perfil de instancia y almacenar el rol en él (API de AWS)**

1. Crear un perfil de instancia: [CreateInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html)

1. Añadir el rol al perfil de instancia: [AddRoleToInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html)

# Creación de un rol vinculado al servicio
<a name="id_roles_create-service-linked-role"></a>

Un rol vinculado a un servicio es un tipo único de rol de IAM que está vinculado directamente a un servicio de AWS. Los roles vinculados a servicios son predefinidos por el servicio e incluyen todos los permisos que el servicio requiere para llamar a otros servicios de AWS en su nombre. El servicio vinculado también define cómo crear, modificar y eliminar un rol vinculado a un servicio. Un servicio podría crear el rol automáticamente o eliminarlo. Podría permitirle crear, modificar o eliminar el rol como parte de un asistente o proceso del servicio. También podría exigir que utilice IAM para crear o eliminar el rol. Independientemente del método, los roles vinculados a servicios simplifican la configuración de un servicio porque ya no tendrá que agregar manualmente los permisos necesarios para que el servicio complete acciones en su nombre.

**nota**  
Recuerde que los roles de servicio son diferentes a los roles vinculados a servicios. Un rol de servicio es un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que asume un servicio para realizar acciones en su nombre. Un administrador de IAM puede crear, modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte [Crear un rol para delegar permisos a un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*. Un rol vinculado a servicios es un tipo de rol de servicio que está vinculado a un Servicio de AWS. El servicio puede asumir el rol para realizar una acción en su nombre. Los roles vinculados a servicios aparecen en la Cuenta de AWS y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos de los roles vinculados a servicios. 

El servicio vinculado define los permisos de los roles vinculados con el servicio mismo y, a menos que esté definido de otra manera, solo ese servicio puede asumir los roles. Los permisos definidos incluyen las políticas de confianza y de permisos, y que la política de permisos no se pueda asociar a ninguna otra entidad de IAM.

Antes de eliminar las funciones, debe borrar antes sus recursos relacionados. Esto ayuda a impedir que elimine accidentalmente el permiso para acceder a los recursos. 

**sugerencia**  
Para obtener información sobre los servicios que admiten el uso de roles vinculados a servicios, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios que tengan **Yes **en la columna **Service-Linked Role**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión.

## Permisos de roles vinculados a servicios
<a name="service-linked-role-permissions"></a>

Debe configurar permisos para que una entidad de IAM (usuario, grupo o función) permita al usuario o rol crear o editar el rol vinculado al servicio.

**nota**  
El ARN de un rol vinculado a un servicio incluye una entidad principal del servicio, que se indica en las políticas siguientes como `SERVICE-NAME.amazonaws.com`. No intente adivinar la entidad principal del servicio, ya que distingue entre mayúsculas y minúsculas y su formato puede variar para los distintos servicios de AWS. Para ver el elemento principal de un servicio, consulte la documentación correspondiente su rol vinculado a servicio.

**Para permitir a una entidad de IAM que cree un rol vinculado a un servicio específico**

Agregue la siguiente política a la entidad de IAM que necesite crear el rol vinculado con un servicio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*",
            "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}}
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
        }
    ]
}
```

------

**Para permitir a una entidad de IAM crear un rol vinculado a cualquier servicio**

Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite crear un rol vinculado con un servicio o cualquier función de servicio que incluya las políticas necesarias. Esta instrucción de política no permite la entidad IAM adjunte una política al rol.

```
{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir a una entidad IAM editar la descripción de cualquier función de servicio de servicio**

Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite editar la descripción de un rol vinculado con un servicio o cualquier función de servicio.

```
{
    "Effect": "Allow",
    "Action": "iam:UpdateRoleDescription",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir a una entidad de IAM eliminar un rol vinculado a un servicio específico**

agregue la siguiente instrucción a la política de permisos de la entidad de IAM entidad que necesita eliminar el rol vinculado con el servicio.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
}
```

**Para permitir a una entidad de IAM eliminar un rol vinculado a cualquier servicio**

Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita eliminar un rol vinculado con un servicio pero no una función de servicio.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que una entidad de IAM pase un rol existente al servicio**

Algunos servicios de AWS le permiten pasar un rol existente en lugar de crear uno nuevo vinculado al servicio. Para ello, un usuario debe tener permisos para *pasar el rol* al servicio. Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite pasar el rol. Esta instrucción de la política también permite a la entidad ver la lista de roles entre los que elegir el que se debe pasar. Para obtener más información, consulte [Conceder permisos a un usuario para transferir un rol a un servicio de AWS](id_roles_use_passrole.md).

```
{
  "Sid": "PolicyStatementToAllowUserToListRoles",
  "Effect": "Allow",
  "Action": ["iam:ListRoles"],
  "Resource": "*"
},
{
  "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
  "Effect": "Allow",
  "Action": [ "iam:PassRole" ],
  "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ"
}
```

## Permisos indirectos con funciones vinculadas al servicio
<a name="create-service-linked-role-permissions-transfer"></a>

Los permisos concedidos por un rol vinculado a un servicio se pueden transferir indirectamente a otros usuarios y roles. Cuando un rol vinculado al servicio es utilizado por un servicio de AWS, ese rol puede usar sus propios permisos para llamar a otros servicios de AWS. Esto significa que los usuarios y los roles con permisos para llamar a un servicio que usa un rol vinculado al servicio pueden tener acceso indirecto a los servicios a los que puede acceder dicho rol vinculado al servicio.

Por ejemplo, al crear una instancia de base de datos de Amazon RDS, se crea automáticamente [un rol vinculado a un servicio para RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.ServiceLinkedRoles.html) si aún no existe ninguno. Este rol vinculado al servicio permite a RDS llamar a Amazon EC2, Amazon SNS, Amazon CloudWatch Logs y Amazon Kinesis en su nombre siempre que edite la instancia de base de datos. Si se permite que los usuarios y los roles de su cuenta modifiquen o creen bases de datos de RDS, es posible que puedan interactuar indirectamente con los registros de Amazon EC2, Amazon SNS, los registros de Amazon CloudWatch y los recursos de Amazon Kinesis llamando a RDS, ya que RDS utilizaría su función vinculada al servicio para acceder a esos recursos.

### Métodos para crear un rol vinculado a un servicio
<a name="create-service-linked-role"></a>

El método que se utiliza para crear roles vinculados a servicios depende del servicio. En algunos casos, no es necesario crear manualmente roles vinculados a servicios. Por ejemplo, al finalizar una acción específica (por ejemplo, la creación de un recurso) en el servicio, este puede crear el rol vinculado al servicio en su nombre. Si utilizaba un servicio antes de que comenzara a admitir roles vinculados a servicios, el servicio podría crear automáticamente el rol en la cuenta. Para obtener más información, consulte [Un nuevo rol ha aparecido en la cuenta de AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).

En otros casos, el servicio podría admitir la creación manual de un rol vinculado al servicio mismo mediante su consola, la API o la CLI. Para obtener información sobre los servicios que admiten el uso de roles vinculados a servicios, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios que tengan **Yes **en la columna **Service-Linked Role**. Para saber si el servicio admite la creación de roles vinculados al servicio mismo, haga clic en el enlace **Sí** para consultar la documentación relacionada con los roles vinculados a dicho servicio.

Si el servicio no admite la creación de roles, puede utilizar IAM para crear el rol vinculado al servicio.

**importante**  
Los roles vinculados a servicios se contabilizan como [roles de IAM en una Cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities) pero, si ha alcanzado el límite de servicio, igualmente puede crear roles vinculados a servicios en su cuenta. Los roles vinculados a servicios son los únicos que pueden superar el límite.

### Creación de un rol vinculado a un servicio (consola)
<a name="create-service-linked-role-iam-console"></a>

Antes de crear un rol vinculado a un servicio en IAM, averigüe primero si el servicio vinculado crea automáticamente roles vinculados a servicios, además aprenderá si es posible crearlo desde la consola del servicio, la API o la CLI.<a name="create-service-linked-role-iam-console"></a>

**Para crear un rol vinculado a un servicio (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Roles**. A continuación, elija **Create role** (Crear rol).

1. Elija el tipo de rol **Servicio de AWS**.

1. Elija el caso de uso para su servicio. Los casos de uso son definidos por el servicio de modo tal que ya incluyen la política de confianza exigida por el servicio mismo. A continuación, elija **Siguiente**.

1. Elija una o varias políticas de permisos para asociarlas al rol. En función del caso de uso seleccionado, el servicio podría realizar cualquiera de las siguientes acciones:
   + Definir los permisos que utiliza el rol.
   + Permitirle elegir permisos de un conjunto limitado.
   + Permitirle elegir cualquier permiso.
   + Permitirle no seleccionar ninguna política en ese momento, crear las políticas más adelante y, a continuación, asociarlas al rol.

   Seleccione la casilla situada junto a la política que asigna los permisos que desea que tenga el rol y, a continuación, elija **Siguiente**. 
**nota**  
Los permisos que especifique están disponibles para cualquier entidad que utilice el rol. De forma predeterminada, un rol no tiene permisos.

1. En **Role Name (Nombre del rol)**, el servicio define el grado de personalización del nombre del rol. Si el servicio define el nombre del rol, esta opción no es editable. En otros casos, el servicio puede definir un prefijo para el rol y permitirle ingresar un sufijo opcional.

   De ser posible, ingrese un sufijo de nombre de rol para agregarlo al nombre predeterminado. Este sufijo le permite identificar el propósito de este rol. Los nombres de rol deben ser únicos en su cuenta de AWS. No distinguen entre mayúsculas y minúsculas. Por ejemplo, no puede crear funciones denominado tanto **<service-linked-role-name>\$1SAMPLE** como **<service-linked-role-name>\$1sample**. Dado que varias entidades pueden hacer referencia al rol, no puede editar el nombre del rol después de crearlo.

1. (Opcional) En **Description** (Descripción), edite la descripción del nuevo rol vinculado al servicio.

1. No puede asociar etiquetas a roles vinculados a servicios durante la creación. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Revise el rol y, a continuación, seleccione **Crear rol**.

### Crear una función vinculada a un servicio (AWS CLI)
<a name="create-service-linked-role-iam-cli"></a>

Antes de crear un rol vinculado a un servicio en IAM, averigüe primero si el servicio vinculado crea automáticamente roles vinculados a servicios y si no es posible crearlo desde la CLI del servicio. Si la CLI del servicio no es compatible, puede utilizar comandos de IAM para crear un rol vinculado al servicio con la política de confianza y las políticas insertadas que el servicio necesita para asumir el rol.

**Para crear un rol vinculado a un servicio (AWS CLI)**

Use el siguiente comando:

```
aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name SERVICE-NAME.amazonaws.com
```

### Crear un rol vinculado a un servicio (API de AWS)
<a name="create-service-linked-role-iam-api"></a>

Antes de crear un rol vinculado a un servicio en IAM, averigüe primero si el servicio vinculado crea automáticamente roles vinculados a servicios y si no es posible crearlo desde la API del servicio. Si la API del servicio no es compatible, puede utilizar la API de AWS para crear un rol vinculado al servicio con la política de confianza y las políticas insertadas que el servicio necesita para asumir el rol.

**Para crear un rol vinculado a un servicio (API de AWS)**

Utilice la llamada a la API [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html). En la solicitud, especifique el nombre del servicio de `SERVICE_NAME_URL.amazonaws.com`. 

Por ejemplo, para crear el rol vinculado al servicio **Robots de Lex**, utilice `lex.amazonaws.com`.

# Creación de un rol para un proveedor de identidad externo
<a name="id_roles_create_for-idp"></a>

Puede utilizar proveedores de identidad en lugar de crear usuarios de IAM en una Cuenta de AWS. Con un proveedor de identidad (IdP), puede administrar las identidades de usuario fuera de AWS y conceder permisos a estas identidades de usuarios externos para que tengan acceso a los recursos de AWS de su cuenta. Para obtener más información acerca de la identidad federada y los proveedores de identidad, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md).

## Creación de un rol para entidades principales federadas de OIDC y SAML (consola)
<a name="roles-creatingrole-federated-users-console"></a>

Los procedimientos para crear un rol dependen del proveedor externo que elija.
+ Para conexiones OpenID Connect (OIDC), consulte [Creación de un rol para una federación de OpenID Connect (consola)](id_roles_create_for-idp_oidc.md).
+ Para SAML 2.0, consulte [Creación de un rol para una federación SAML 2.0 (consola)](id_roles_create_for-idp_saml.md).

## Creación de un rol para acceso federado (AWS CLI)
<a name="roles-creatingrole-identityprovider-cli"></a>

Los pasos que ha de seguir para crear un rol para los proveedores de identidad compatibles (OIDC o SAML) desde la AWS CLI son idénticos. La diferencia está en el contenido de la política de confianza que crea en los pasos de requisitos previos. Empiece siguiendo los pasos de la sección **Requisitos previos** para el tipo de proveedor que utilice:
+ Para un proveedor OIDC, consulte [Requisitos previos para crear un rol para OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Para un proveedor SAML, consulte [Requisitos previos para crear un rol para SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

Para crear un rol desde la AWS CLI se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la AWS CLI deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si lo prefiere, también puede configurar el [límite de permisos](access_policies_boundaries.md) para el rol.

**Para crear un rol (AWS CLI)**

1. Crear un rol: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. Asociar una política de permisos al rol: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    o

   Crear una política de permisos insertada para el rol: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Opcional) Añadir los atributos personalizados al rol asociando etiquetas: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obtener más información, consulte [Administrar etiquetas en roles de IAM (AWS CLI o API de AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Configurar el [límite de permisos](access_policies_boundaries.md) para el rol: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

El siguiente ejemplo muestra los dos primeros pasos, que también son los más comunes, para crear un rol de proveedor de identidad en un entorno sencillo. Este ejemplo permite a cualquier usuario de la cuenta `123456789012` asumir el rol y ver el bucket de `example_bucket` Amazon S3. En el ejemplo, también se presupone que está ejecutando la AWS CLI en un equipo con Windows y que ya ha configurado la AWS CLI con sus credenciales. Para obtener más información, consulte [Configuración de la AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

En el ejemplo siguiente, la política de confianza está diseñada para una aplicación móvil si el usuario inicia sesión mediante Amazon Cognito. En este ejemplo, *us-east:12345678-ffff-ffff-ffff-123456* representa el ID del grupo de identidades asignado por Amazon Cognito.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "RoleForCognito",
        "Effect": "Allow",
        "Principal": {"Federated": "cognito-identity.amazonaws.com"},
        "Action": "sts:AssumeRoleWithWebIdentity",
        "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
    }
}
```

------

La siguiente política de permisos permite a cualquiera que asuma el rol realizar únicamente la acción `ListBucket` en el bucket de Amazon S3 `example_bucket`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

Para crear el rol `Test-Cognito-Role`, primero debe guardar la política de confianza anterior con el nombre `trustpolicyforcognitofederation.json` y la política de permisos anterior con el nombre `permspolicyforcognitofederation.json` en la carpeta `policies` del disco duro local `C:`. A continuación, puede utilizar los comandos siguientes para crear el rol y asociarle la política insertada.

```
# Create the role and attach the trust policy that enables users in an account to assume the role.
$ aws iam create-role --role-name Test-Cognito-Role --assume-role-policy-document file://C:\policies\trustpolicyforcognitofederation.json

# Attach the permissions policy to the role to specify what it is allowed to do.
aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json
```

## Creación de un rol para acceso federado (API de AWS)
<a name="roles-creatingrole-identityprovider-api"></a>

Los pasos que ha de seguir para crear un rol para los proveedores de identidad compatibles (OIDC o SAML) desde la AWS CLI son idénticos. La diferencia está en el contenido de la política de confianza que crea en los pasos de requisitos previos. Empiece siguiendo los pasos de la sección **Requisitos previos** para el tipo de proveedor que utilice:
+ Para un proveedor OIDC, consulte [Requisitos previos para crear un rol para OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Para un proveedor SAML, consulte [Requisitos previos para crear un rol para SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

**Para crear un rol (API AWS)**

1. Creación de un rol: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

1. Asociar una política de permisos al rol: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

    o

   Crear una política de permisos insertada para el rol: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

1. (Opcional) Añadir los atributos personalizados al usuario asociando etiquetas: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obtener más información, consulte [Administrar etiquetas en usuarios de IAM (AWS CLI o API de AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Configuración del [límite de permisos](access_policies_boundaries.md) para el rol: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

# Creación de un rol para una federación de OpenID Connect (consola)
<a name="id_roles_create_for-idp_oidc"></a>

Puede utilizar proveedores de identidad federados de OpenID Connect (OIDC) en lugar de crear usuarios de AWS Identity and Access Management en la Cuenta de AWS. Con un proveedor de identidad (IdP), puede administrar las identidades de usuario fuera de AWS y conceder permisos a estas identidades de usuarios externos para que tengan acceso a los recursos de AWS de su cuenta. Para obtener más información acerca de la federación y los IdP, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md).

## Requisitos previos para crear un rol para OIDC
<a name="idp_oidc_Prerequisites"></a>

Para poder crear un rol para federación de OIDC, antes debe completar los siguientes pasos de los requisitos previos.<a name="oidc-prereqs"></a>

**Preparativos para crear un rol para la federación de OIDC**

1. Regístrese con uno o más servicios que ofrezcan identidad de OIDC federada. Si está creando una aplicación que necesita obtener acceso a los recursos de AWS, también deberá configurarla con la información del proveedor. Cuando lo haga, el proveedor le proporcionará un ID de aplicación o de público exclusivo de la aplicación. (Cada proveedor utiliza una terminología diferente para este proceso. En esta guía se utiliza el término *configurar* para el proceso de identificación de su aplicación con el proveedor). Puede configurar varias aplicaciones con cada proveedor o varios proveedores con una sola aplicación. Consulte la información sobre el uso de los proveedores de identidades de la siguiente manera:
   + [Registro con Amazon Developer Center](https://login.amazon.com/)
   + [Añada inicio de sesión con Facebook a su aplicación o sitio web](https://developers.facebook.com/docs/facebook-login/v2.1) en el sitio de desarrolladores de Facebook.
   + [Uso de OAuth 2.0 para iniciar sesión (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) en el sitio de desarrolladores de Google.

1. <a name="idpoidcstep2"></a>Después de recibir la información necesaria del IdP, cree un IdP en IAM. Para obtener más información, consulte [Crear un proveedor de identidad de IAM OpenID Connect (OIDC)](id_roles_providers_create_oidc.md).
**importante**  
Si utiliza un IdP de OIDC de Google, Facebook o Amazon Cognito, no cree un IdP de IAM independiente en el Consola de administración de AWS. Estos proveedores de identidades de OIDC ya están integrados en AWS y están disponibles para su uso. Omita este paso y cree nuevos roles con su IdP en el siguiente paso.

1. Prepare las políticas para el rol que asumirán los usuarios autenticados mediante el proveedor de identidades. Como sucede con cualquier otro rol, un rol para una aplicación móvil incluye dos políticas. Una es la política de confianza que especifica quién puede asumir el rol. La otra es la política de permisos que especifica las acciones y los recursos de AWS a los que la aplicación móvil puede obtener acceso o se le deniega.

   En el caso de IdP web, le recomendamos utilizar [Amazon Cognito](https://aws.amazon.com/cognito/) para administrar las identidades. En este caso, utilice una política de confianza similar a la de este ejemplo.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Federated": "cognito-identity.amazonaws.com"},
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east-2:12345678-abcd-abcd-abcd-123456"},
               "ForAnyValue:StringLike": {"cognito-identity.amazonaws.com:amr": "unauthenticated"}
           }
       }
   }
   ```

------

   Reemplace `us-east-2:12345678-abcd-abcd-abcd-123456` por el ID del grupo de identidades que Amazon Cognito le ha asignado.

   Si configura de manera manual un proveedor de identidad OIDC (IdP), al crear la política de confianza debe utilizar tres valores que garanticen que únicamente su aplicación puede asumir el rol:
   + En el elemento `Action`, utilice la acción `sts:AssumeRoleWithWebIdentity`.
   + En el elemento `Principal`, utilice la cadena `{"Federated":providerUrl/providerArn}`.
     + En el caso de algunos IdP de OIDC conocidos, el `providerUrl` es una URL. En los siguientes ejemplos se incluyen métodos que permiten especificar la entidad principal para algunos de estos proveedores de identidad:

       `"Principal":{"Federated":"cognito-identity.amazonaws.com"}`

       `"Principal":{"Federated":"www.amazon.com"}`

       `"Principal":{"Federated":"graph.facebook.com"}`

       `"Principal":{"Federated":"accounts.google.com"}`
     + Para los demás proveedores de OIDC, utilice el nombre de recurso de Amazon (ARN) del proveedor de identidades de OIDC que ha creado en [Step 2](#idpoidcstep2), como se muestra en el siguiente ejemplo:

       `"Principal":{"Federated":"arn:aws:iam::123456789012:oidc-provider/server.example.com"}`
   + En el elemento `Condition`, utilice una condición `StringEquals` para limitar los permisos. Pruebe el ID del grupo de identidades (para Amazon Cognito) o el ID de aplicación (para otros proveedores). El ID del grupo de identidades debe coincidir con el ID de la aplicación que ha recibido al configurarla con el IdP. Esta coincidencia entre los ID asegura que la solicitud provenga de su aplicación.
**nota**  
Los roles de IAM para los grupos de identidades de Amazon Cognito confían en que la entidad principal `cognito-identity.amazonaws.com` del servicio asuma el rol. Los roles de este tipo deben contener al menos una clave de condición para limitar el número de entidades principales que pueden asumir el rol.  
Se aplican consideraciones adicionales a los grupos de identidades de Amazon Cognito que asumen [roles de IAM entre cuentas](access_policies-cross-account-resource-access.md). Las políticas de confianza de estos roles deben aceptar la entidad principal del servicio `cognito-identity.amazonaws.com` y deben contener la clave de condición `aud` para restringir la asunción de roles a los usuarios de los grupos de identidades previstos. Una política que confíe en los grupos de identidades de Amazon Cognito sin esta condición crea el riesgo de que un usuario de un grupo de identidades no deseado asuma el rol. Para obtener más información, consulte [Políticas de confianza para roles de IAM en la autenticación básica (clásica)](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#trust-policies) en la *Guía para desarrolladores de Amazon Cognito*.

     Cree un elemento de condición similar a uno de los siguientes ejemplos, en función del IdP que esté utilizando: 

     `"Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}`

     `"Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}`

     `"Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}`

     `"Condition": {"StringEquals": {"accounts.google.com:aud": "66677788899900pro0"}}`

     En el caso de los proveedores OIDC, utilice la dirección URL completa del proveedor de identidad OIDC con la clave de contexto `aud`, como se muestra en el siguiente ejemplo: 

     `"Condition": {"StringEquals": {"server.example.com:aud": "appid_from_oidc_idp"}}`
**nota**  
Observe que los valores de la entidad principal de la política de confianza del rol son específicos de un IdP. Un rol para OIDC puede especificar solo una entidad principal. Por lo tanto, si la aplicación móvil permite a los usuarios iniciar sesión desde varios IdP, debe crear un rol independiente para cada IdP que desee admitir. Cree políticas de confianza independientes para cada IdP.

   Si un usuario utiliza una aplicación móvil para iniciar sesión desde Inicio de sesión con Amazon, se aplicará el siguiente ejemplo de política de confianza. En el ejemplo, *amzn1.application-oa2-123456* representa el ID de la aplicación que Amazon asignó cuando configuró la aplicación con Login with Amazon.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForLoginWithAmazon",
             "Effect": "Allow",
             "Principal": {"Federated": "www.amazon.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}
         }]
     }
   ```

------

   Si un usuario utiliza una aplicación móvil para iniciar sesión desde Facebook, se aplicará el siguiente ejemplo de política de confianza. En este ejemplo, *111222333444555* representa el ID de la aplicación asignado por Facebook.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForFacebook",
             "Effect": "Allow",
             "Principal": {"Federated": "graph.facebook.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}
         }]
     }
   ```

------

   Si un usuario utiliza una aplicación móvil para iniciar sesión desde Google, se aplicará el siguiente ejemplo de política de confianza. En este ejemplo, *666777888999000* representa el ID de la aplicación asignado por Google.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForGoogle",
             "Effect": "Allow",
             "Principal": {"Federated": "accounts.google.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"accounts.google.com:aud": "666777888999000"}}
         }]
     }
   ```

------

   Si un usuario utiliza una aplicación móvil para iniciar sesión desde Amazon Cognito, se aplicará el siguiente ejemplo de política de confianza. En este ejemplo, *us-east:12345678-ffff-ffff-ffff-123456* representa el ID del grupo de identidades asignado por Amazon Cognito.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForCognito",
             "Effect": "Allow",
             "Principal": {"Federated": "cognito-identity.amazonaws.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
         }]
     }
   ```

------

## Creación de un rol para OIDC
<a name="idp_oidc_Create"></a>

Después de completar los requisitos previos, puede crear el rol en IAM. Para los proveedores de identidades compartidos de OpenID Connect (OIDC) reconocidos, IAM exige la evaluación explícita de ciertas declaraciones en los JSON Web Tokens (JWT), lo que se conoce como *controles del proveedor de identidades*. Para obtener más información sobre qué proveedores de identidades OIDC tienen *controles de proveedor de identidades*, consulte [Controles del proveedor de identidad para proveedores compartidos de OIDC](id_roles_providers_oidc_secure-by-default.md).

En el siguiente procedimiento se describe cómo crear el rol de federación de OIDC en la Consola de administración de AWS. Para crear un rol desde la AWS CLI o la API de AWS, consulte los procedimientos en [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md).

**importante**  
Si utiliza Amazon Cognito, debe utilizar la consola de Amazon Cognito para configurar los roles. De lo contrario, utilice la consola de IAM para crear un rol para la federación de OIDC.

**Cómo crear un rol de IAM para una federación de OIDC**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Roles** y, a continuación, seleccione **Crear rol**.

1. Elija **Identidad web** como tipo de entidad de confianza y seleccione **Siguiente**.

1. En **Proveedor de identidad**, elija el IdP para el rol: 
   + Si está creando un rol para un IdP web individual, elija **Inicio de sesión con Amazon**, **Facebook** o **Google**. 
**nota**  
Debe crear un rol independiente para cada IdP al que desee admitir.
   + Si está creando un rol de situación avanzada para Amazon Cognito, elija **Amazon Cognito**. 
**nota**  
Solo deberá crear manualmente un rol para utilizarlo con Amazon Cognito si está trabajando en una situación avanzada. En caso contrario, Amazon Cognito puede crear roles de forma automática. Para obtener más información sobre Amazon Cognito, consulte [Proveedores de identidades externos de grupos de identidad (identidades federadas)](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) en la *Guía para desarrolladores de Amazon Cognito*. 
   + Si quiere crear un rol para GitHub Actions, primero debe agregar el proveedor OIDC de GitHub a IAM. Después de agregar el proveedor OIDC de GitHub a IAM, elija **token.actions.githubusercontent.com**. 
**nota**  
Para obtener información acerca de cómo configurar AWS para confiar en el proveedor de OIDC de GitHub como una identidad federada, consulte [GitHub Docs - Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services). Para obtener información sobre las mejores prácticas para limitar el acceso a los roles asociados al IdP de IAM para GitHub, consulte [Configuración de un rol para el proveedor de identidades de OIDC de GitHub](#idp_oidc_Create_GitHub) en esta página.
   + Si quiere crear un rol para HashiCorp Cloud Platform (HCP) Terraform, primero debe añadir el proveedor de OIDC de Terraform a IAM. Después de añadir el proveedor de OIDC de Terraform a IAM, elija **app.terraform.io**. 
**importante**  
Los roles de IAM para el proveedor de OIDC de HashiCorp Cloud Platform (HCP) Terraform debe evaluar la clave de condición de IAM, `app.terraform.io:sub`, en la política de confianza de funciones. Esta clave de condición limita los roles que las organizaciones, los proyectos, los espacios de trabajo o las fases de ejecución de Terraform de HCP pueden asumir. Sin esta clave de condición, su política de confianza permite que personas ajenas a la organización accedan a su rol y a sus recursos de AWS, lo que no se ajusta al principio del privilegio mínimo.   
Si establece o modifica una política de confianza de roles para un rol asociado al proveedor de OIDC de HCP Terraform en su cuenta de AWS, pero no evalúa la clave de condición de IAM `app.terraform.io:sub`, recibirá un error. Además, AWS STS denegará las solicitudes de autorización si su política de confianza de roles no evalúa esta clave de condición.

1. La información solicitada varía según el proveedor OIDC que elija.
   + Ingrese el identificador de su aplicación. La etiqueta del identificador cambia en función del proveedor que elija:
     + Si está creando un rol para Inicio de sesión con Amazon, ingrese el ID de la aplicación en el cuadro **ID de aplicación**.
     + Si está creando un rol para Facebook, ingrese el ID de la aplicación en el cuadro **ID de aplicación**.
     + Si está creando un rol para Google, ingrese el nombre de los destinatarios en el cuadro **Público**.
     + Si está creando un rol para Amazon Cognito, ingrese el ID del grupo de identidades que ha creado para sus aplicaciones de Amazon Cognito en el campo **ID de grupo de identidades**.
   + Si quiere crear un rol para GitHub Actions, introduzca los siguientes detalles:
     + En **Público**, elija `sts.amazonaws.com`.
     + Para **Organización de GitHub**, introduzca el nombre de la organización de GitHub. El nombre de la organización de GitHub es obligatorio y debe ser alfanumérico, incluyendo guiones (-). No se pueden usar caracteres comodín (\$1 y ?) en el nombre de la organización de GitHub.
     + (Opcional) Para el **repositorio GitHub**, introduzca el nombre del repositorio GitHub. Si no especifica un valor, se utilizará por defecto un comodín (`*`).
     + (Opcional) Para la **ramificación GitHub**, introduzca el nombre de la ramificación GitHub. Si no especifica un valor, se utilizará por defecto un comodín (`*`).
   + Si quiere crear un rol para HashiCorp Cloud Platform (HCP) Terraform, introduzca los siguientes detalles:
     + En **Público**, elija `aws.workload.identity`.
     + En **Organización**, introduzca el nombre de la organización. Puede especificar un carácter comodín (`*`) para todas las organizaciones.
     + En **Proyecto**, introduzca el nombre del proyecto. Puede especificar un carácter comodín (`*`) para todos los proyectos.
     + En **Espacio de trabajo**, introduzca un nombre del espacio de trabajo. Puede especificar un carácter comodín (`*`) para todos los espacios de trabajo.
     + En **Fase de ejecución**, introduzca el nombre de la fase de ejecución. Puede especificar un carácter comodín (`*`) para todas las fases de ejecución.

1. (Opcional) Para **Condición (opcional)**, elija **Añadir condición** para crear condiciones adicionales que deben cumplirse antes de que los usuarios de su aplicación puedan utilizar los permisos que el rol les concede. Por ejemplo, puede agregar una condición que conceda acceso a recursos de AWS únicamente a un ID de usuario de IAM concreto. También puede añadir condiciones a la política de confianza después de crear el rol. Para obtener más información, consulte [Actualizar una política de confianza de rol](id_roles_update-role-trust-policy.md).

1. Revise la información de OIDC y, a continuación, seleccione **Siguiente**.

1. IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente en su cuenta. Seleccione la política que desea utilizar como política de permisos o elija **Crear Política** para abrir una pestaña nueva del navegador y crear una política nueva desde cero. Para obtener más información, consulte [Crear políticas de IAM](access_policies_create-console.md#access_policies_create-start). Después de crear la política, cierre esa pestaña y vuelva a la pestaña original. Seleccione la casilla de verificación situada junto a las políticas de permisos que desea conceder a los usuarios de OIDC. Si lo prefiere, puede optar por no seleccionar ninguna política en este momento y asociar las políticas al rol más adelante. De forma predeterminada, un rol no tiene permisos.

1. (Opcional) Configure un [límite de permisos](access_policies_boundaries.md). Esta es una característica avanzada.

   Abra la sección **Limites de permisos** y elija **Utilizar un límite de permisos para controlar los permisos que puede tener el rol como máximo).** Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Siguiente**.

1. En **Nombre de rol**, ingrese un nombre de rol. Los nombres de rol deben ser únicos en su Cuenta de AWS. No dependen de los casos. Por ejemplo, no puede crear funciones denominadas tanto **PRODROLE** como **prodrole**. Dado que es posible que otros recursos de AWS hagan referencia al rol, no se puede editar el nombre del rol después de crearlo.

1. (Opcional) En **Descripción**, ingrese una descripción para el nuevo rol.

1. Para editar los casos de uso y los permisos del rol, elija **Editar** en las secciones **(Paso 1: seleccionar entidades de confianza)** o **(Paso 2: agregar permisos).** 

1. (Opcional) Para agregar metadatos al rol, asocie etiquetas como pares clave-valor. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Revise el rol y, a continuación, seleccione **Crear rol**.

## Configuración de un rol para el proveedor de identidades de OIDC de GitHub
<a name="idp_oidc_Create_GitHub"></a>

Si usa GitHub como un proveedor de identidades (IdP) de OIDC, la práctica recomendada es limitar las entidades que pueden asumir el rol asociado con el IdP de IAM. Cuando incluye una declaración de condición en la política de confianza, puede limitar el rol a una organización, un repositorio o una rama de GitHub específica. Puede usar la clave de condición `token.actions.githubusercontent.com:sub` con operadores de condición de cadena para limitar el acceso. Recomendamos limitar la condición a un conjunto específico de repositorios o ramas dentro de la organización GitHub. Para obtener información acerca de cómo configurar AWS para confiar en el OIDC de GitHub como una identidad federada, consulte [GitHub Docs: configuración de OpenID Connect en Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services). 

Si utiliza los entornos de GitHub en los flujos de trabajo de acción o en las políticas de OIDC, recomendamos agregar reglas de protección al entorno para una mayor seguridad. Utilice las ramas y las etiquetas de implementación para restringir qué ramas y etiquetas se pueden implementar en el entorno. Para más información sobre la configuración de entornos con reglas de protección, consulte [Ramas y etiquetas de implementación](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-branches-and-tags) en el artículo *Uso de entornos para la implementación* de GitHub.

Cuando el IdP OIDC de GitHub es la entidad principal de confianza para su rol, IAM comprueba la condición de la política de confianza del rol para verificar que la clave de condición `token.actions.githubusercontent.com:sub` está presente y su valor no es únicamente un carácter comodín (\$1 y ?) o nulo. IAM realiza esta comprobación cuando se crea o actualiza la política de confianza. Si la clave de condición `token.actions.githubusercontent.com:sub` no está presente o el valor de la clave no cumple los criterios de valor mencionados, la solicitud fallará y devolverá un error.

**importante**  
Si no limita la clave de condición `token.actions.githubusercontent.com:sub` a una organización o repositorio específicos, GitHub Actions de organizaciones o repositorios fuera de su control pueden asumir roles asociados con el IdP de IAM de GitHub en su cuenta de AWS.

En el siguiente ejemplo de política de confianza se limita el acceso a la organización, el repositorio y la rama de GitHub definidos. El valor de la clave de condición `token.actions.githubusercontent.com:sub` del siguiente ejemplo es el formato de valor del asunto predeterminado documentado por GitHub.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::012345678910:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:ref:refs/heads/GitHubBranch"
        }
      }
    }
  ]
}
```

------

La siguiente condición de ejemplo limita el acceso a la organización y el repositorio de GitHub definidos, pero otorga acceso a cualquier rama del repositorio.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:*"
  }
}
```

La siguiente condición de ejemplo limita el acceso a cualquier rama o repositorio de la organización de GitHub definida. Recomendamos limitar la clave de condición `token.actions.githubusercontent.com:sub` a un valor específico que limite el acceso a GitHub Actions desde dentro de la organización de GitHub.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/*"
  }
}
```

Para obtener más información sobre las claves de federación de OIDC disponibles para verificaciones de condición en las políticas, consulte [Claves disponibles para las federaciones de identidades AWS de OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Creación de un rol para una federación SAML 2.0 (consola)
<a name="id_roles_create_for-idp_saml"></a>

 Puede utilizar la federación SAML 2.0 en lugar de crear usuarios de IAM en una Cuenta de AWS. Con un proveedor de identidad (IdP), puede administrar las identidades de usuario fuera de AWS y conceder permisos a estas identidades de usuarios externos para que tengan acceso a los recursos de AWS de su cuenta. Para obtener más información acerca de la identidad federada y los proveedores de identidad, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md).

**nota**  
Para mejorar la resiliencia de la federación, le recomendamos que configure su IdP y su federación de AWS para que admitan varios puntos de conexión de inicio de sesión de SAML. Para obtener más información, consulte el artículo del blog sobre seguridad de AWS, [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

## Requisitos previos para crear un rol para SAML
<a name="idp_saml_Prerequisites"></a>

Para poder crear un rol de federación de SAML 2.0, antes debe completar los siguientes pasos de requisitos previos.<a name="saml-prereqs"></a>

**Preparativos para crear un rol para la federación SAML 2.0**

1. <a name="idpsamlstep1"></a>Para poder crear un rol para una federación basada en SAML, debe crear un proveedor de SAML en IAM. Para obtener más información, consulte [Crear un proveedor de identidades de SAML en IAM](id_roles_providers_create_saml.md).

1. Prepare las políticas del rol que los usuarios autenticados por SAML 2.0 asumirán. Al igual que ocurre con cualquier otro rol, un rol para la federación SAML incluye dos políticas. Una es la política de confianza de rol que especifica quién puede asumir el rol. La otra es la política de permisos de IAM que define las acciones de AWS y los recursos a los que la entidad principal federada mediante SAML puede acceder o tiene denegado el acceso.

   Al crear la política de confianza para el rol, debe utilizar tres valores que garantizan que solo la aplicación pueda asumir el rol:
   + En el elemento `Action`, utilice la acción `sts:AssumeRoleWithSAML`.
   + En el elemento `Principal`, utilice la cadena `{"Federated":ARNofIdentityProvider}`. Sustituya `ARNofIdentityProvider` por el ARN del [proveedor de identidad SAML](id_roles_providers_saml.md) que ha creado en [Step 1](#idpsamlstep1).
   + En el elemento `Condition`, utilice una condición `StringEquals` para probar que el atributo `saml:aud` de la respuesta de SAML coincida con la URL que muestra el navegador al iniciar sesión en la consola. Esta URL de punto de conexión de inicio de sesión es el atributo del destinatario de SAML del proveedor de identidades. Puede incluir URL de inicio de sesión en determinadas regiones. AWS recomienda usar los puntos de conexión regionales en lugar del punto de conexión global para mejorar la resiliencia de la federación. Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

     Si se requiere el cifrado de SAML, la URL de inicio de sesión debe incluir el identificador único que AWS asigna al proveedor de SAML. Para ver el identificador único, seleccione el proveedor de identidades en la consola de IAM para que aparezca la página de detalles.

     `https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

   La política de confianza del ejemplo siguiente está diseñada para un usuario federado de SAML:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRoleWithSAML",
           "Principal": {
               "Federated": "arn:aws:iam::111122223333:saml-provider/PROVIDER-NAME"
           },
           "Condition": {
               "StringEquals": {
                   "SAML:aud": "https://region-code.signin.aws.amazon.com/saml"
               }
           }
       }
   }
   ```

------

   Sustituya el ARN de la entidad principal por el ARN real del proveedor SAML que ha creado en IAM. Tendrá su ID de cuenta y su nombre de proveedor. 

## Creación de un rol para SAML
<a name="idp_saml_Create"></a>

Después de completar los pasos de los requisitos previos, puede a crear el rol para la federación basada en SAML. 

**Para crear un rol para la federación basada en SAML**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Roles** y, a continuación, elija **Crear rol**.

1. Elija el tipo de rol **SAML 2.0 federation**.

1. En **Select a SAML provider** (Seleccionar un proveedor de SAML), elija el proveedor para el rol. 

1. Elija el método de nivel de acceso SAML 2.0. 
   + Elija **Allow programmatic access only (Permitir solo acceso mediante programación)** para crear un rol que se pueda asumir mediante programación desde la API o la AWS CLI de AWS.
   + Elija **Permitir el acceso Consola de administración de AWS mediante la consola y mediante programación** para crear un rol que pueda ser asumido mediante programación y desde la Consola de administración de AWS.

   Los roles creados con ambas opciones son similares, pero el rol que puede ser asumido desde la consola incluye una política de confianza con una condición particular. Dicha condición garantiza explícitamente que el público de SAML (atributo `SAML:aud`) esté establecido en el punto de conexión de inicio de sesión de AWS para el proveedor de SAML.

1. El procedimiento para definir los atributos varía según el tipo de acceso.
   + Si está creando un rol para el acceso mediante programación, elija un atributo en la lista **Attribute (Atributo)**. A continuación, en el cuadro **Value** (Valor), ingrese un valor para incluirlo en el rol. Esto restringe el acceso del rol a los usuarios del proveedor de identidad cuya respuesta de autenticación SAML (aserción) incluya los atributos que especifique. Debe especificar al menos un atributo para garantiza que el rol esté limitado a un subconjunto de usuarios de su organización. 
   + Si está creando un rol para el acceso mediante programación y a la Consola de administración de AWS, la sección **Puntos de conexión de inicio de sesión** define la URL que muestra el navegador al iniciar sesión en la consola. Este punto de conexión es el atributo de destinatario de SAML del proveedor de identidades, que se asigna a la clave de contexto [`saml:aud`](reference_policies_iam-condition-keys.md#condition-keys-saml). Para obtener más información, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md).

     1. Elija **Puntos de conexión regionales** o **Puntos de conexión no regionales**. Recomendamos utilizar varios puntos de conexión de inicio de sesión de SAML regionales para mejorar la resiliencia de la federación.

     1. En **Regiones**, elija las regiones que admita el proveedor de SAML para el inicio de sesión de AWS.

     1.  En **URL de inicio de sesión para incluir identificadores únicos**, seleccione si los puntos de conexión de inicio de sesión incluyen identificadores únicos que AWS asigna al proveedor de identidades de SAML. Esta opción es obligatoria para las aserciones de SAML cifradas. Para obtener más información, consulte [Federación SAML 2.0](id_roles_providers_saml.md).

1. Para agregar más condiciones relacionadas con el atributo a la política de confianza, elija **Condition (optional)** (Condición [opcional]), seleccione la condición adicional y especifique un valor. 
**nota**  
La lista incluye los atributos SAML utilizados con más frecuencia. IAM admite atributos adicionales que puede utilizar para crear condiciones. Para ver una lista de los atributos admitidos, consulte [Claves disponibles para federaciones SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-saml). Si necesita una condición para un atributo SAML admitido que no se muestra en la lista, puede añadir manualmente dicha condición. Para ello, edite la política de confianza después de crear el rol.

1.  Revise la información de confianza de SAML 2.0 y, a continuación, elija **Next** (Siguiente). 

1. IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente en su cuenta. Seleccione la política que desea utilizar como política de permisos o elija **Crear Política** para abrir una pestaña nueva del navegador y crear una política nueva desde cero. Para obtener más información, consulte [Crear políticas de IAM](access_policies_create-console.md#access_policies_create-start). Después de crear la política, cierre esa pestaña y vuelva a la pestaña original. Seleccione la casilla situada junto a las políticas de permisos que desea otorgar a los usuarios federados de SAML. Si lo prefiere, puede optar por no seleccionar ninguna política en este momento y asociar las políticas al rol más adelante. De forma predeterminada, un rol no tiene permisos.

1. (Opcional) Configure un [límite de permisos](access_policies_boundaries.md). Esta es una característica avanzada.

   Abra la sección **Limites de permisos** y elija **Utilizar un límite de permisos para controlar los permisos que puede tener el rol como máximo).** Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Siguiente**.

1. Elija **Siguiente: Revisar**.

1. En **Nombre de rol**, ingrese un nombre de rol. Los nombres de rol deben ser únicos en su Cuenta de AWS. No distinguen entre mayúsculas y minúsculas. Por ejemplo, no puede crear funciones denominado tanto **PRODROLE** como **prodrole**. Dado que es posible que otros recursos de AWS hagan referencia al rol, no se puede editar el nombre del rol después de crearlo. 

1. (Opcional) En **Description** (Descripción), ingrese una descripción para el nuevo rol.

1. Elija **Edit** (Editar) en las secciones **Step 1: Select trusted entities** (Paso 1: seleccionar entidades de confianza) o **Step 2: Add permissions** (Paso 2: agregar permisos) para editar los casos de uso y los permisos del rol. 

1. De manera opcional, agregue metadatos al rol asociando etiquetas como pares de clave-valor. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Revise el rol y, a continuación, seleccione **Crear rol**.

Después de crear el rol, complete la relación de confianza de SAML configurando su software de proveedor de identidad con información sobre AWS. Esta información incluye los roles que desea que utilicen los usuarios federados de SAML. Esto se denomina configuración de la relación de confianza entre su proveedor de identidad y AWS. Para obtener más información, consulte [Configuración su SAML 2.0 IdP con una relación de confianza para usuario autenticado y agregando reclamos](id_roles_providers_create_saml_relying-party.md). 

# Crear un rol mediante políticas de confianza personalizadas
<a name="id_roles_create_for-custom"></a>

Puede crear una política de confianza personalizada para delegar el acceso y permitir que otros realicen acciones en su Cuenta de AWS. Para obtener más información, consulte [Crear políticas de IAM](access_policies_create-console.md#access_policies_create-start).

Para obtener información sobre cómo utilizar los roles para delegar permisos, consulte [Términos y conceptos de roles](id_roles.md#id_roles_terms-and-concepts).

## Creación de un rol de IAM mediante políticas de confianza personalizadas (consola)
<a name="roles-creatingrole-custom-trust-policy-console"></a>

Puede utilizar la Consola de administración de AWS para crear un rol que un usuario de IAM pueda asumir. Por ejemplo, suponga que su organización tiene varias Cuentas de AWS para aislar un entorno de desarrollo de uno de producción. Para información general sobre cómo crear un rol que permita a usuarios de la cuenta de desarrollo acceder a los recursos de la cuenta de producción, consulte [Situación de ejemplo en la que se usan cuentas de desarrollo y producción separadas](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Para crear un rol mediante políticas de confianza personalizadas (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Roles** y, a continuación, seleccione **Crear rol**.

1. Elija el tipo de rol **Custom trust policy** (Política de confianza personalizada).

1. En la sección **Custom trust policy** (Política de confianza personalizada), ingrese o pegue la política de confianza personalizada para el rol. Para obtener más información, consulte [Crear políticas de IAM](access_policies_create-console.md#access_policies_create-start).

1. Resuelva las advertencias de seguridad, errores o advertencias generales generadas durante la [validación de política](access_policies_policy-validator.md) y luego elija **Next**.

1. (Opcional) Configure un [límite de permisos](access_policies_boundaries.md). Se trata de una característica avanzada que está disponible para los roles de servicio, pero no para los roles vinculados a servicios.

   Abra la sección **Permissions boundary** (Límite de permisos) y elija **Use a permissions boundary to control the maximum role permissions** (Utilizar un límite de permisos para controlar los permisos que puede tener el rol como máximo). IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente en su cuenta. Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Siguiente**.

1. En **Role Name (Nombre del rol)**, el servicio define el grado de personalización del nombre del rol. Si el servicio define el nombre del rol, esta opción no es editable. En otros casos, el servicio puede definir un prefijo para el rol y permitirle escribir un sufijo opcional. Algunos servicios le permiten especificar el nombre completo de su rol.

   Si es posible, ingrese un nombre de rol o un sufijo de nombre de rol. Los nombres de rol deben ser únicos en su Cuenta de AWS. No distinguen entre mayúsculas y minúsculas. Por ejemplo, no puede crear funciones denominado tanto **PRODROLE** como **prodrole**. Dado que es posible que otros recursos de AWS hagan referencia al rol, no se puede editar el nombre del rol después de crearlo.

1. (Opcional) En **Description** (Descripción), ingrese una descripción para el nuevo rol.

1. (Opcional) Seleccione **Editar** en las secciones **Paso 1: seleccionar entidades de confianza** o **Paso 2: agregar permisos** para modificar la política personalizada y los permisos del rol. 

1. De manera opcional, agregue metadatos al rol asociando etiquetas como pares de clave-valor. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Revise el rol y, a continuación, seleccione **Crear rol**.

# Ejemplos de políticas para delegar el acceso
<a name="id_roles_create_policy-examples"></a>

En los siguientes ejemplos se muestra cómo puede permitir o conceder acceso a una Cuenta de AWS a los recursos de otra Cuenta de AWS. Para obtener información sobre cómo crear una política de IAM mediante estos documentos de políticas JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

**Topics**
+ [

## Uso de roles para delegar el acceso a otros recursos de la Cuenta de AWS
](#example-delegate-xaccount-rolesapi)
+ [

## Uso de una política para delegar el acceso a los servicios
](#id_roles_create_policy-examples-access-to-services)
+ [

## Uso de una política basada en recursos para delegar el acceso a un bucket de Amazon S3 de otra cuenta
](#example-delegate-xaccount-S3)
+ [

## Uso de una política basada en recursos para delegar el acceso a una cola de Amazon SQS de otra cuenta
](#example-delegate-xaccount-SQS)
+ [

## No se puede delegar el acceso cuando la cuenta tiene el acceso denegado
](#example-delegate-xaccount-SQS-denied)

## Uso de roles para delegar el acceso a otros recursos de la Cuenta de AWS
<a name="example-delegate-xaccount-rolesapi"></a>

 Para ver un tutorial que muestra cómo utilizar los roles de IAM para conceder a los usuarios de una cuenta acceso a los recursos de AWS que se encuentran en otra cuenta, consulte [Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM](tutorial_cross-account-with-roles.md). 

**importante**  
Puede incluir el ARN de un rol o usuario específico en el elemento `Principal` de una política de confianza de rol. Al guardar la política, AWS transforma el ARN a un ID exclusivo de entidad principal. Esto ayuda a mitigar el riesgo de que alguien aumente sus privilegios eliminando o volviendo a crear el rol o usuario. Normalmente este ID no se muestra en la consola, ya que también existe una transformación inversa al ARN cuando se muestra la política de confianza. Sin embargo, si elimina el rol o el usuario, la relación se desvincula. La política ya no se aplica, incluso si vuelva a crear el usuario o rol, ya que no coincide con el ID principal almacenado en la política de confianza. Cuando esto sucede, el ID principal se muestra en la consola, ya que AWS no puede volver a asignarlo a un ARN. El resultado es que si elimina y vuelve a crear un usuario o rol al que se hace referencia en un elemento `Principal` de la política de confianza, debe editar el rol para sustituir el ARN. Se transforma en el nuevo ID de entidad principal al guardar la política.

## Uso de una política para delegar el acceso a los servicios
<a name="id_roles_create_policy-examples-access-to-services"></a>

En el siguiente ejemplo se muestra una política que puede asociarse a un rol. La política permite que dos servicios, Amazon EMR y AWS Data Pipeline asuman el rol. Los servicios pueden realizar las tareas concedidas por la política de permisos asignada al rol (no se muestra). Para especificar varios elementos principales del servicio, no debe especificar dos elementos `Service`; solo puede tener uno. En cambio, utilice una gama de varios elementos principales del servicio como el valor de un único elemento `Service`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "elasticmapreduce.amazonaws.com",
          "datapipeline.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## Uso de una política basada en recursos para delegar el acceso a un bucket de Amazon S3 de otra cuenta
<a name="example-delegate-xaccount-S3"></a>

En este ejemplo, la cuenta A utiliza una política basada en recursos (una [política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucketPolicies.html) de Amazon S3) para conceder a la cuenta B acceso completo al bucket de S3 de la cuenta A. A continuación, la cuenta B crea una política de usuario de IAM para delegar el acceso del bucket de la cuenta A a uno de los usuarios de la cuenta B. 

La política de bucket de S3 de la cuenta A podría ser como la siguiente política. En este ejemplo, el bucket de S3 de la cuenta A se llama *amzn-s3-demo-bucket*, mientras que el número de cuenta de la cuenta B es 111122223333. No se especifica los usuarios individuales ni grupos de la cuenta B, solo la cuenta.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBAccess1",
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

De forma alternativa, la cuenta A puede utilizar las [Listas de control de acceso (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3_ACLs_UsingACLs.html) de Amazon S3 para conceder a la cuenta B acceso a un bucket de S3 o a un único objeto de un bucket. En tal caso, lo único que cambia es cómo la cuenta A concede acceso a la cuenta B. La cuenta B todavía utiliza una política para delegar el acceso a un grupo de IAM de la cuenta B, tal y como se describe en la próxima sección de este ejemplo. Para obtener más información sobre el control del acceso a los buckets y objetos de S3, vaya a [Control de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

El administrador de la cuenta B puede crear la siguiente muestra de política. La política permite el acceso de lectura a un grupo o usuario de la cuenta B. La política anterior concede acceso a la cuenta B. Sin embargo, los grupos y usuarios individuales de la cuenta B no pueden obtener acceso al recurso hasta que una política de grupo o usuario conceda de forma explícita los permisos al recurso. Los permisos de esta política solo pueden ser un subconjunto de los de la anterior política entre cuentas. La cuenta B no puede conceder más permisos a sus grupos y usuarios que los que la cuenta A concedió a la cuenta B en la primera política. En esta política, el elemento `Action` se define de forma explícita para permitir únicamente acciones `List` y el elemento `Resource` de esta política coincide con `Resource` para la política de bucket implementada por la cuenta A.

Para aplicar esta política, la cuenta B utiliza IAM para asociarla al usuario adecuado (o grupo) de la cuenta B. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:List*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

## Uso de una política basada en recursos para delegar el acceso a una cola de Amazon SQS de otra cuenta
<a name="example-delegate-xaccount-SQS"></a>

En el siguiente ejemplo, la cuenta A tiene una cola de Amazon SQS que utiliza una política basada en recursos asociados a la cola para conceder acceso a la cola a la cuenta B. A continuación, la cuenta B utiliza una política de grupo de IAM para delegar el acceso a un grupo de la cuenta B. 

En el siguiente ejemplo una política de cola concede permiso a la cuenta B para realizar las acciones `SendMessage` y `ReceiveMessage` en la cola de la cuenta A denominada *queue1*, pero solo entre las 12:00 h y las 15:00 h del 30 de noviembre de 2014. El número de la cuenta B es 1111-2222-3333. La cuenta A utiliza Amazon SQS para implementar esta política. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": [
      "sqs:SendMessage",
      "sqs:ReceiveMessage"
    ],
    "Resource": ["arn:aws:sqs:*:123456789012:queue1"],
    "Condition": {
      "DateGreaterThan": {"aws:CurrentTime": "2014-11-30T12:00Z"},
      "DateLessThan": {"aws:CurrentTime": "2014-11-30T15:00Z"}
    }
  }
}
```

------

La política de la cuenta B para delegar el acceso a un grupo de la cuenta B podría ser como el siguiente ejemplo. La cuenta B utiliza IAM para asociar esta política a un grupo (o usuario). 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "sqs:*",
    "Resource": "arn:aws:sqs:*:123456789012:queue1"
  }
}
```

------

En el ejemplo anterior de la política de usuario de IAM, la cuenta B utiliza un carácter comodín para conceder acceso a su usuario a todas las acciones de Amazon SQS en la cola de la cuenta A. Sin embargo, la cuenta B puede delegar el acceso únicamente en la medida en que se haya concedido acceso a dicha cuenta. El grupo de la cuenta B que tenga la segunda política solo puede obtener acceso a la cola entre las 12:00 y las 3:00 el 30 de noviembre de 2014. El usuario solo puede realizar las acciones `SendMessage` y `ReceiveMessage`, según se define en la política de cola de Amazon SQS de la cuenta A. 

## No se puede delegar el acceso cuando la cuenta tiene el acceso denegado
<a name="example-delegate-xaccount-SQS-denied"></a>

Una Cuenta de AWS no puede delegar el acceso a los recursos de otra cuenta si la otra cuenta ha denegado de forma explícita el acceso a la cuenta principal del usuario. La denegación se propaga a los usuarios de dicha cuenta independientemente de que tengan políticas que les conceda acceso.

Por ejemplo, la cuenta A escribe una política de bucket en el bucket de S3 de la cuenta A que deniega de forma explícita el acceso de la cuenta B al bucket de la cuenta A. Pero la cuenta B escribe una política de usuario de IAM que concede a un usuario de la cuenta B acceso a un bucket de la cuenta A. La denegación explícita aplicada al bucket de S3 de la cuenta A se propaga a los usuarios de la cuenta B. Anula la política de usuario de IAM que concede acceso al usuario de la cuenta B (para obtener más información sobre se evalúan cómo los permisos, consulte [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md).) 

La política de bucket de la cuenta A podría ser como la siguiente política. En este ejemplo, el bucket de S3 de la cuenta A se llama *amzn-s3-demo-bucket*, mientras que el número de cuenta de la cuenta B es 1111-2222-3333. La cuenta A utiliza Amazon S3 para implementar esta política. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBDeny",
    "Effect": "Deny",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
  }
}
```

------

Esta denegación explícita anula cualquier políticas de la cuenta B que proporcione permiso para obtener acceso al bucket de S3 en la cuenta A. 

# Administración de roles de IAM
<a name="id_roles_manage"></a>

Para que un usuario, una aplicación o un servicio pueda utilizar un rol creado por usted, debe conceder permisos para cambiar al rol. Puede utilizar cualquier política asociada a grupos o usuarios para otorgar los permisos necesarios. En esta sección se describe cómo se puede conceder a los usuarios el permiso para utilizar un rol. También explica cómo el usuario puede cambiar a un rol desde el Consola de administración de AWS, Tools for Windows PowerShell, AWS Command Line Interface (AWS CLI) y el API de [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html).

**importante**  
Cuando crea un rol mediante programación en lugar de hacerlo en la consola de IAM, tiene la opción de agregar un `Path` de 512 caracteres como máximo además del `RoleName`, que puede tener un máximo de 64 caracteres. Sin embargo, si desea utilizar un rol con la característica **Cambiar rol** en la consola de Consola de administración de AWS, la combinación de `Path` y `RoleName` no puede superar los 64 caracteres.

**Topics**
+ [

## Ver Acceso de roles
](#roles-modify_prerequisites)
+ [

## Generar una política basada en información de acceso
](#roles-modify_gen-policy)
+ [

# Conceder a un usuario permisos para cambiar de rol
](id_roles_use_permissions-to-switch.md)
+ [

# Conceder permisos a un usuario para transferir un rol a un servicio de AWS
](id_roles_use_passrole.md)
+ [

# Revocación de las credenciales de seguridad temporales de un rol de IAM
](id_roles_use_revoke-sessions.md)
+ [

# Actualizar un rol vinculado a servicios
](id_roles_update-service-linked-role.md)
+ [

# Actualizar una política de confianza de rol
](id_roles_update-role-trust-policy.md)
+ [

# Actualización de los permisos de un rol
](id_roles_update-role-permissions.md)
+ [

# Actualización de la configuración de un rol
](id_roles_update-role-settings.md)
+ [

# Eliminar roles o perfiles de instancia
](id_roles_manage_delete.md)

## Ver Acceso de roles
<a name="roles-modify_prerequisites"></a>

Antes de cambiar los permisos para un rol, debe revisar su actividad de nivel de servicio reciente. Esto es importante porque no desea eliminar el acceso de un principal (persona o aplicación) que está utilizándolo. Para obtener más información acerca de cómo ver la información de acceso reciente, consulte [Ajuste de permisos en AWS con información sobre los últimos accesos](access_policies_last-accessed.md).

## Generar una política basada en información de acceso
<a name="roles-modify_gen-policy"></a>

A veces puede conceder permisos a una entidad de IAM (usuario o rol) de más allá de lo que requieren. Para ayudarle a refinar los permisos que concede, puede generar una política de IAM que esté basada en la actividad de acceso de una entidad. El analizador de acceso de IAM revisa los registros de AWS CloudTrail y genera una plantilla de política que contiene los permisos que ha utilizado la entidad en el intervalo de fechas especificado. Puede utilizar la plantilla para crear una política administrada con permisos detallados y, a continuación, adjuntarla a la entidad de IAM. De esta forma, solo concede los permisos que el usuario o rol necesita para interactuar con los recursos de AWS para su caso de uso específico. Para obtener más información, consulte [Generación de políticas del Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

# Conceder a un usuario permisos para cambiar de rol
<a name="id_roles_use_permissions-to-switch"></a>

Cuando un administrador [crea un rol para el acceso entre cuentas](id_roles_create_for-user.md), establece la confianza entre la cuenta propietaria del rol, los recursos (cuenta de confianza) y la cuenta que contiene a los usuarios (cuenta de confianza). Para ello, el administrador de la cuenta de confianza especifica el número de la cuenta de confianza como `Principal` en la política de confianza del rol. Esto permite que *potencialmente* cualquier usuario de la cuenta de confianza asuma el rol. Para finalizar la configuración, el administrador de la cuenta de confianza debe conceder permiso a usuarios o grupos específicos de dicha cuenta para cambiar al rol.

**Para conceder permiso para cambiar a un rol**

1. Como administrador de la cuenta de confianza, cree una política nueva para el usuario o edite una política existente para agregar los elementos necesarios. Para obtener más información, consulte [Creación o edición de la política](#roles-usingrole-createpolicy).

1. A continuación, elija cómo desea compartir la información del rol: 
   + **Enlace de rol**: envíe a los usuarios un enlace que los lleve a la página **Switch Role** (Cambiar el rol) con todos los detalles ya completados. 
   + **ID de cuenta o alias**: proporcione a cada usuario el nombre de la función junto con el número de ID de cuenta o alias de cuenta. El usuario se dirige a la página **Switch Role (Cambiar rol)** y agrega los detalles manualmente. 

   Para obtener más información, consulte [Proporcionar información al usuario](#roles-usingrole-giveuser).

Tenga en cuenta que solo puede cambiar de rol cuando inicia sesión como usuario de IAM, como rol federado de SAML o como un rol federado de identidad web. No puede cambiar de rol si inicia sesión como usuario Usuario raíz de la cuenta de AWS.

**importante**  
No puede cambiar roles en la Consola de administración de AWS a un rol que requiera un valor [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id). Solo puede cambiar a dicho rol si llama a la API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) que admite el parámetro `ExternalId`.

**Notas**  
En este tema se explican las políticas para un *usuario*, ya que, en última instancia, concedemos permisos a un usuario para llevar a cabo una tarea. Sin embargo, no es recomendable conceder permisos a un usuario en particular. Cuando un usuario asume un rol, se le asignan los permisos asociados a ese rol.
Al cambiar de rol en la Consola de administración de AWS, la consola utiliza siempre sus credenciales originales para autorizar el cambio. Esto se aplica tanto si inicia sesión como usuario de IAM, como rol federado SAML o como un rol federado de identidad web. Por ejemplo, si cambia a RoleA, IAM utiliza las credenciales originales del usuario o del rol federado para determinar si está autorizado para asumir RoleA. Si trata de cambiar a RoleB *mientras utiliza RoleA*, las credenciales **originales** del usuario o del rol federado se utilizan para autorizar su intento. Las credenciales de RoleA no se utilizan para esta acción.

**Topics**
+ [

## Creación o edición de la política
](#roles-usingrole-createpolicy)
+ [

## Proporcionar información al usuario
](#roles-usingrole-giveuser)

## Creación o edición de la política
<a name="roles-usingrole-createpolicy"></a>

Una política que concede a un usuario permiso para asumir un rol debe incluir una instrucción con el efecto `Allow` en lo siguiente: 
+ Acción `sts:AssumeRole`
+ El nombre de recurso de Amazon (ARN) de un rol en un elemento `Resource`

A los usuarios que obtienen la política se les permite cambiar de rol en el recurso enumerado (ya sea a través de la pertenencia a un grupo o directamente conectado).

**nota**  
Si `Resource` está configurado en `*`, el usuario puede asumir cualquier rol en cualquier cuenta que tenga una relación de confianza con la cuenta del usuario. (En otras palabras, la política de confianza del rol especifica la cuenta del usuario como `Principal`). Le recomendamos que siga el [principio de mínimo privilegio](http://en.wikipedia.org/wiki/Principle_of_least_privilege) y especifique el ARN completo únicamente para los roles que necesite el usuario.

En el siguiente ejemplo se muestra una política que permite al usuario asumir roles solo en una cuenta. Además, la política utiliza un asterisco (\$1) para especificar que el usuario puede cambiar a un rol solo si el nombre del rol comienza por las letras `Test`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/Test*"
    }
}
```

------

**nota**  
Los permisos que el rol concede al usuario no se agregan a los permisos que se le han concedido anteriormente. Si un usuario cambia a un rol, el usuario temporalmente renuncia a sus permisos originales a cambio de los concedidos por el rol. Si el usuario deja de utilizar el rol, sus permisos originales se restablecerán automáticamente. Por ejemplo, supongamos que los permisos del usuario dejan trabajar con instancias Amazon EC2, pero la política de permisos del rol no concede esos permisos. En ese caso, al utilizar el rol, el usuario no puede trabajar con instancias Amazon EC2 en la consola. Además, las credenciales temporales obtenidas a través de `AssumeRole` no funcionarán con instancias Amazon EC2 mediante programación.

## Proporcionar información al usuario
<a name="roles-usingrole-giveuser"></a>

Después de crear un rol y conceder al usuario permisos para cambiar a dicho rol, debe proporcionar al usuario lo siguiente:
+ El nombre del rol
+ El ID o alias de la cuenta que contiene el rol

Para agilizar el acceso de sus usuarios, puede enviarles un enlace preconfigurado con el ID de la cuenta y el nombre de la función. Puede ver el enlace del rol después de completar el asistente de creación **Crear rol** si selecciona el banner **Ver rol**, o en la página **Resumen del rol** para cualquier rol habilitado para varias cuentas.

También puede utilizar el siguiente formato para crear manualmente el enlace. Sustituya el alias o ID de la cuenta y el nombre del rol por los dos parámetros en el siguiente ejemplo.

`https://signin.aws.amazon.com/switchrole?account=your_account_ID_or_alias&roleName=optional_path/role_name`

Le recomendamos que dirija a los usuarios a [Cambiar de usuario a rol de IAM (consola)](id_roles_use_switch-role-console.md) para guiarles durante el proceso. Para solucionar problemas comunes que se pueden encontrar al asumir un rol, consulte [No puedo asumir un rol](troubleshoot_roles.md#troubleshoot_roles_cant-assume-role).

**Consideraciones**
+ Si crea el rol mediante programación, puede crear el rol con una ruta y un nombre. Si lo hace, debe proporcionar la ruta de acceso completa y el nombre del rol a los usuarios para que puedan ingresarlos en la página **Cambiar rol** de la Consola de administración de AWS. Por ejemplo: `division_abc/subdivision_efg/role_XYZ`.
+ Si crea el rol mediante programación, puede agregar un `Path` de hasta 512 caracteres y un `RoleName`. El nombre del rol puede tener una longitud de hasta 64 caracteres. Sin embargo, si desea utilizar un rol con la característica **Cambiar rol** en Consola de administración de AWS, la combinación de `Path` y `RoleName` no puede superar los 64 caracteres.
+ Por motivos de seguridad, puede [revisar los registros de AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quién realizó una acción en AWS. Puede utilizar la clave de condición de `sts:SourceIdentity` en la política de confianza de rol para exigir a los usuarios que especifiquen una identidad cuando asuman un rol. Por ejemplo, puede requerir que los usuarios de IAM especifiquen su propio nombre de usuario como su identidad de origen. Esto puede permitirle determinar qué usuario hizo una acción específica en AWS. Para obtener más información, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity). También puede utilizar [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname) para exigir a los usuarios que especifiquen un nombre de sesión cuando asuman un rol. Esto puede permitirle diferenciar entre sesiones de rol cuando diferentes entidades utilizan un rol.

# Conceder permisos a un usuario para transferir un rol a un servicio de AWS
<a name="id_roles_use_passrole"></a>

Para configurar muchos servicios de AWS, es necesario *transferir* un rol de IAM al servicio. Esto permite al servicio asumir posteriormente el rol y ejecutar acciones en su nombre. Para muchos servicios, solo tiene que transferir el rol al servicio una vez durante la configuración y no cada vez que el servicio asume el rol. Por ejemplo, suponga que tiene una aplicación que se ejecuta en una instancia de Amazon EC2. Dicha aplicación requiere credenciales temporales para la autenticación, así como permisos para realizar acciones en AWS. Cuando configure la aplicación, debe transferir un rol a Amazon EC2 para que lo utilice con la instancia que proporciona dichas credenciales. Puede definir los permisos de las aplicaciones que se ejecutan en la instancia asociando una política de IAM al rol. La aplicación asume el rol cada vez que necesita realizar las acciones que este permite.

Para transferir un rol (y sus permisos) a un servicio de AWS, un usuario debe tener permisos para *transferir el rol* al servicio. Esto ayuda a los administradores a garantizar que solo los usuarios autorizados puedan configurar un servicio con un rol que concede permisos. Para permitir a un usuario transferir un rol a un servicio de AWS, debe conceder el permiso `PassRole` al usuario, rol o grupo de IAM del usuario.

**aviso**  
Solo puede usar el permiso `PassRole` para transferir un rol de IAM a un servicio que comparte la misma cuenta de AWS. Para transferir una función de la cuenta A a un servicio de la cuenta B, primero debe crear un rol de IAM en la cuenta B que pueda asumir la función desde la cuenta A y, a continuación, la función de la cuenta B se puede transferir al servicio. Para obtener más información, consulte [Acceso a recursos entre cuentas en IAM](access_policies-cross-account-resource-access.md).
No intente controlar quién puede pasar un rol etiquetando el rol y, a continuación, utilizando la clave de condición `ResourceTag` en una política con la acción `iam:PassRole`. Este planteamiento no da resultados fiables.

Al configurar el permiso `PassRole`, debe asegurarse de que un usuario no pase un rol en el que el rol tenga más permisos de los que usted desea que tenga el usuario. Por ejemplo, es posible que a Alice no se le permita realizar ninguna acción de Amazon S3. Si Alice pudiera transferir un rol a un servicio que permita acciones de Amazon S3, el servicio podría realizar acciones de Amazon S3 en su nombre al ejecutar el trabajo.

Si especifica un rol vinculado a un servicio, debe disponer también de permiso para transferir ese rol al servicio. Algunos servicios crean automáticamente un rol vinculado a un servicio en su cuenta al realizar una acción en dicho servicio. Por ejemplo, Amazon EC2 Auto Scaling crea el rol vinculado a un servicio `AWSServiceRoleForAutoScaling` automáticamente la primera vez que se crea un grupo de Auto Scaling. Si intenta especificar el rol vinculado a un servicio al crear un grupo de escalado automático y no posee el permiso `iam:PassRole`, recibirá un error. Si no especifica el rol de manera explícita, el permiso `iam:PassRole` no es necesario y la acción predeterminada es usar el rol `AWSServiceRoleForAutoScaling` para todas las operaciones que se realicen en ese grupo. Para saber qué servicios admiten roles vinculados a servicios, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md). Para saber qué servicios crean automáticamente un rol vinculado a un servicio al realizar una acción en ellos, elija el enlace **Sí** y consulte la documentación relacionada con los roles vinculados a dicho servicio.

Un usuario puede pasar un ARN de rol como parámetro en cualquier operación de API que utilice el rol para asignar permisos al servicio. A continuación, el servicio comprueba si ese usuario tiene el permiso `iam:PassRole`. Para que el usuario transfiera únicamente los roles autorizados, puede filtrar el permiso `iam:PassRole` con el elemento `Resources` de la instrucción de política de IAM. 

Puede utilizar el elemento `Condition` en una política JSON para probar el valor de las claves incluidas en el contexto de solicitud de todas las solicitudes de AWS. Para obtener más información acerca del uso de las claves de condición en una política, consulte [Elementos de política JSON de IAM: Condition](reference_policies_elements_condition.md). La clave de condición `iam:PassedToService` se puede utilizar para especificar la entidad principal del servicio al que se puede pasar un rol. Para obtener más información acerca del uso de la clave de condición `iam:PassedToService` en una política, consulte [iam:PassedToService](reference_policies_iam-condition-keys.md#ck_PassedToService).

**Ejemplo 1**  
Supongamos que desea conceder a un usuario la capacidad de transferir cualquier conjunto de roles al servicio de Amazon EC2 cuando se lanza una instancia. Necesita tres elementos:
+ Una *política de permisos* de IAM asociada al rol que determina lo que puede hacer dicho rol. Limite los permisos a únicamente las acciones que deba llevar a cabo el rol y únicamente los recursos que el rol necesite para dichas acciones. Puede utilizar una política de permisos de IAM creada por el cliente o administrada por AWS.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Effect": "Allow",
          "Action": [ "A list of the permissions the role is allowed to use" ],
          "Resource": [ "A list of the resources the role is allowed to access" ]
      }
  }
  ```

------
+ Una* política de confianza* para el rol que permita al servicio asumir dicho rol. Por ejemplo, puede adjuntar la siguiente política de confianza al rol con la acción `UpdateAssumeRolePolicy`. Esta política de confianza permite a Amazon EC2 utilizar el rol y los permisos asociados al rol.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole",
          "Effect": "Allow",
          "Principal": { "Service": "ec2.amazonaws.com" },
         "Action": "sts:AssumeRole"
      }
  }
  ```

------
+ Una *política de permisos* de IAM asociada al usuario de IAM que le permite especificar únicamente los roles aprobados. Normalmente agrega `iam:GetRole` a `iam:PassRole`, de modo que el usuario pueda obtener los detalles del rol que se transfiere. En este ejemplo, el usuario puede pasar únicamente los roles que existen en la cuenta especificada con nombres que empiezan por `EC2-roles-for-XYZ-`:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/EC2-roles-for-XYZ-*"
          }
      ]
  }
  ```

------

Ahora el usuario puede iniciar una instancia de Amazon EC2 con un rol asignado. Las aplicaciones que se ejecutan en la instancia pueden acceder a credenciales temporales para el rol a través de los metadatos del perfil de instancia. Las políticas de permisos asociadas al rol determinan lo que puede hacer la instancia. 

**Ejemplo 2**  
Amazon Relational Database Service (Amazon RDS) admite una característica denominada **Monitoreo mejorado**. Esta característica permite a Amazon RDS monitorear una instancia de base de datos mediante un agente. También permite a Amazon RDS registrar métricas en Amazon CloudWatch Logs. Para habilitar esta característica, debe crear una función de servicio para otorgar a Amazon RDS permisos para monitorear y escribir métricas en los registros. 

**Para crear un rol para el monitoreo mejorado de Amazon RDS**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Elija **Roles** y después **Crear rol**.

1. Elija el tipo de rol de **Servicio de AWS** y, a continuación, en **Casos de uso para otros Servicios de AWS**, elija el servicio **RDS**. Elija **RDS - Supervisión mejorada** y, a continuación, elija **Siguiente**.

1. Elija la política de permisos **AmazonRDSEnhancedMonitoringRole**.

1. Elija **Siguiente**.

1. En **Nombre del rol**, ingrese un nombre de rol que le sea útil para identificar su propósito. Los nombres de rol deben ser únicos en su Cuenta de AWS. Cuando se utiliza un nombre de rol en una política o como parte de un ARN, el nombre del rol distingue entre mayúsculas y minúsculas. Cuando los clientes ven un nombre de rol en la consola, por ejemplo, durante el proceso de inicio de sesión, el nombre del rol no distingue entre mayúsculas y minúsculas. Dado que varias entidades pueden hacer referencia al rol, no se puede editar el nombre del rol una vez que se crea.

1. (Opcional) En **Description** (Descripción), ingrese una descripción para el nuevo rol.

1. (Opcional) Adjunte etiquetas como pares de clave-valor para agregar metadatos al rol. Para obtener más información acerca del uso de etiquetas en IAM, consulte [Etiquetas para recursos de AWS Identity and Access Management](id_tags.md).

1. Revise el rol y, a continuación, seleccione **Crear rol**.

Automáticamente, el rol recibe una política de confianza que otorga los permisos de servicio `monitoring.rds.amazonaws.com` para asumir el rol. Después, Amazon RDS podrá realizar todas las acciones que permite la política `AmazonRDSEnhancedMonitoringRole`.

El usuario para el que desea habilitar la supervisión mejorada necesita una política que incluya una declaración que permita al usuario enumerar los roles de RDS y una declaración que le permita transferir el rol, como la siguiente. Utilice el número de cuenta y sustituya el nombre del rol por el nombre que ha facilitado en el paso 6.

```
    {
      "Sid": "PolicyStatementToAllowUserToListRoles",
      "Effect": "Allow",
      "Action": ["iam:ListRoles"],
      "Resource": "*"
    },
    {
        "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
        "Effect": "Allow",
        "Action": [ "iam:PassRole" ],
        "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role"
    }
```

Puede combinar esta instrucción con instrucciones de otra política o colocarla en su propia política. En lugar de especificar que el usuario pueda transferir cualquier rol que empieza por `RDS-`, puede sustituir el nombre del rol en el ARN del recurso por un comodín, de la siguiente manera.

```
        "Resource": "arn:aws:iam::account-id:role/RDS-*"
```

## Acciones `iam:PassRole` en registros de AWS CloudTrail
<a name="id_roles_use_passrole_logs"></a>

 `PassRole` no es una llamada a la API. `PassRole` es un permiso, lo que significa que no se generan registros de CloudTrail para `PassRole` de IAM. Para revisar qué roles se pasan a qué Servicios de AWS en CloudTrail, debe revisar el registro de CloudTrail que creó o modificó el recurso de AWS que recibe el rol. Por ejemplo, un rol se pasa a una función de AWS Lambda cuando se crea. El registro de la acción `CreateFunction` muestra un registro del rol que se pasó a la función. 

# Revocación de las credenciales de seguridad temporales de un rol de IAM
<a name="id_roles_use_revoke-sessions"></a>

**aviso**  
Si sigue los pasos que se indican en esta página, se denegará el acceso a todas las acciones y recursos de AWS a todos los usuarios con sesiones actuales que se hayan creado adoptando el rol. Esto puede hacer que los usuarios pierdan el trabajo que no hayan guardado.

Cuando habilita a los usuarios para obtener acceso a la Consola de administración de AWS en una sesión de larga duración (como, por ejemplo, 12 horas), sus credenciales temporales no caducan tan rápidamente. Si los usuarios revelan accidentalmente sus credenciales a un tercero no autorizado, ese tercero podrá obtener acceso mientras dure la sesión. Sin embargo, si es preciso, puede revocar inmediatamente todos los permisos de las credenciales del rol emitidas antes de un momento dado. Todas las credenciales temporales de dicho rol que se hayan emitido antes de ese momento dado dejarán de ser válidas. Esto obliga a todos los usuarios a volver a autenticarse y a solicitar credenciales nuevas.

 

**nota**  
No se puede revocar la sesión de un *[rol vinculado a un servicio](id_roles.md#iam-term-service-linked-role)*.

Cuando revoca los permisos de un rol ejecutando el procedimiento indicado en este tema, AWS asocia una política insertada nueva al rol que deniega todos los permisos para todas las acciones. Incluye una condición que aplica las restricciones solo si el usuario asumió el rol *antes* del momento en que usted revocó los permisos. Si el usuario asume el rol *después* de que usted revocara los permisos, la política de denegación no se aplica a ese usuario.

Para obtener más información sobre cómo denegar el acceso, consulte [Deshabilitar permisos para credenciales de seguridad temporales](id_credentials_temp_control-access_disable-perms.md).

**importante**  
Esta política de denegación se aplica a todos los usuarios del rol especificado y no solo a las sesiones de la consola de más larga duración.

## Permisos mínimos para revocar permisos de sesión de un rol.
<a name="revoke-session-permissions"></a>

Para poder revocar efectivamente los permisos de sesión de un rol, debe tener el permiso `PutRolePolicy` para el rol. Esto le permite asociar la política insertada `AWSRevokeOlderSessions` al rol.

## Revocación de permisos de sesión.
<a name="revoke-session"></a>

Puede revocar los permisos de sesión de un rol para denegar todos los permisos a cualquier usuario que haya asumido el rol.

**nota**  
No puede editar los roles en IAM que se hayan creado a partir de conjuntos de permisos del IAM Identity Center. Debe revocar la sesión del conjunto de permisos activo para un usuario en el IAM Identity Center. Para obtener más información, consulte [Revocar sesiones de rol de IAM creadas por conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions) en la *Guía del usuario de IAM Identity Center*.

**Para denegar inmediatamente todos los permisos a cualquier usuario de credenciales de rol**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, seleccione **Roles** y, a continuación, elija el nombre (no la casilla de verificación) del rol cuyos permisos desee revocar.

1. En la página **Summary (Resumen)** del rol seleccionado, elija la pestaña **Revoke sessions (Revocar sesiones)**.

1. En la pestaña **Revoke sessions (Revocar sesiones)**, seleccione **Revoke active sessions (Revocar sesiones activas)**.

1. AWS le solicitará que confirme la acción. Seleccione la casilla **Confirmo que voy a revocar todas las sesiones activas de este rol** y elija **Revocar sesiones activas** en el cuadro de diálogo.

   IAM asociará inmediatamente una política llamada `AWSRevokeOlderSessions` al rol. Al elegir **Revocar sesiones activas**, la política denegará el acceso a los usuarios que asumieron el rol en el pasado y en aproximadamente 30 segundos en el futuro. Esta elección de hora futura tiene en cuenta el retraso de propagación de la política para tratar una nueva sesión que se adquirió o renovó antes de que la política actualizada entre en vigor en una región determinada. Ningún usuario que haya asumido el rol aproximadamente 30 segundos después de que usted haya elegido Revocar sesiones activas no resultará afectado. Para saber por qué los cambios no siempre son visibles inmediatamente, consulte [Los cambios que realizo no están siempre visibles inmediatamente](troubleshoot.md#troubleshoot_general_eventual-consistency). 

**nota**  
Si más tarde vuelve a elegir **Revocar sesiones**, la fecha y la marca temporal de la política se actualizarán y la política volverá a denegar todos los permisos a todos los usuarios que asumieron el rol antes de la nueva hora especificada.

Los usuarios válidos cuyas sesiones se revocan de esta forma deben obtener credenciales temporales para una nueva sesión para poder seguir trabajando. Las credenciales de caché de la AWS CLI hasta que caducan. Para obligar a la CLI a eliminar y actualizar las credenciales en caché que ya no son válidas, ejecute uno de los comandos siguientes:

**Linux, macOS o Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

## Revocación de los permisos de sesión antes de un tiempo específico
<a name="revoke-session-policy"></a>

 También puede revocar los permisos de sesión en el momento que elija mediante el AWS CLI o el SDK para especificar un valor para la `aws:TokenIssueTime` clave en el elemento Condición de una política. 

Esta política deniega todos los permisos cuando el valor de `aws:TokenIssueTime` es anterior a la fecha y la hora especificadas. El valor de `aws:TokenIssueTime` corresponde al intervalo de tiempo exacto en el que se han creado las credenciales de seguridad temporales. El valor de `aws:TokenIssueTime` solo está presente en el contexto de las solicitudes de AWS que se firman con credenciales de seguridad temporales, de modo que la instrucción de denegación de la política no afecta a las solicitudes que se firman con las credenciales a largo plazo del usuario de IAM.

Esta política también puede asociarse a un rol. En tal caso, la política solo afecta a las credenciales de seguridad temporales que el rol ha creado antes de la fecha y la hora especificadas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}
    }
  }
}
```

------

Los usuarios válidos cuyas sesiones se revocan de esta forma deben obtener credenciales temporales para una nueva sesión para poder seguir trabajando. Las credenciales de caché de la AWS CLI hasta que caducan. Para obligar a la CLI a eliminar y actualizar las credenciales en caché que ya no son válidas, ejecute uno de los comandos siguientes:

**Linux, macOS o Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# Actualizar un rol vinculado a servicios
<a name="id_roles_update-service-linked-role"></a>

El método que utilice para editar roles vinculados a servicios depende del servicio. Algunos servicios le permiten editar los permisos de un rol vinculado a un servicio desde la consola, la API o la CLI. Sin embargo, después de crear un rol vinculado a un servicio, no puede cambiarle el nombre, ya que que varias entidades pueden hacer referencia al rol. Puede editar la descripción de cualquier rol desde la consola, la API o la CLI de IAM.

Para obtener información sobre los servicios que admiten el uso de roles vinculados a servicios, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios que tengan **Yes **en la columna **Service-Linked Role**. Para saber si el servicio admite la edición de roles vinculados al servicio mismo, haga clic en el enlace **Yes (Sí)** para consultar la documentación relacionada con los roles vinculados a dicho servicio.

## Editar la descripción de un rol vinculado a un servicio (consola)
<a name="edit-service-linked-role-iam-console"></a>

Puede utilizar la consola de IAM para editar la descripción de un rol vinculado a un servicio.

**Para editar la descripción de un rol vinculado a un servicio (consola)**

1. En el panel de navegación de la consola de IAM, elija **Roles**.

1. Seleccione el nombre del rol que desea modificar.

1. En el extremo derecho de **Role description**, seleccione **Edit**. 

1. Ingrese una descripción nueva en el cuadro **Save** (Guardar).

## Edición de la descripción de un rol vinculado a servicio (AWS CLI)
<a name="edit-service-linked-role-iam-cli"></a>

Puede utilizar comandos de IAM desde la AWS CLI para editar la descripción de un rol vinculado a un servicio.

**Para cambiar la descripción de un rol vinculado a un servicio (AWS CLI)**

1. (Opcional) Para ver la descripción actual de un rol, ejecute los siguientes comandos:

   ```
   aws iam [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html) --role-name ROLE-NAME
   ```

   Utilice el nombre del rol, no el ARN, para hacer referencia a los roles con los comandos de CLI. Por ejemplo, si un rol tiene el ARN `arn:aws:iam::123456789012:role/myrole`, debe referirse a él como **myrole**.

1. Para actualizar la descripción de un rol vinculado a un servicio, ejecute el siguiente comando:

   ```
   aws iam [update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html) --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION
   ```

## Edición de la descripción de una función vinculada a servicio (API de AWS)
<a name="edit-service-linked-role-iam-api"></a>

Puede utilizar la API de AWS para editar la descripción de un rol vinculado a un servicio.

**Para cambiar la descripción de un rol vinculado a un servicio (API de AWS)**

1. (Opcional) Para ver la descripción actual de un rol, llame a la siguiente operación y especifique el nombre del rol:

   API de AWS: [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Para actualizar la descripción de un rol, llame a la siguiente operación y especifique el nombre (y opcionalmente, una descripción) del rol: 

   API de AWS: [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html) 

# Actualizar una política de confianza de rol
<a name="id_roles_update-role-trust-policy"></a>

Para cambiar quién puede asumir un rol, debe modificar la política de confianza del rol. No se puede modificar la política de confianza de un *[rol vinculado a un servicio](id_roles.md#iam-term-service-linked-role)*.

**Notas**  
Si un usuario identificado como entidad principal de una política de confianza de un rol no puede asumir ese rol, compruebe el [límite de permisos](access_policies_boundaries.md) del usuario. Si hay definido un límite de permisos para el usuario, el límite deberá permitir la acción `sts:AssumeRole`.
Para permitir que los usuarios vuelvan a asumir el rol actual dentro de una sesión de rol, especifique el ARN del rol o el ARN de la Cuenta de AWS como entidad principal en la política de confianza de rol. Los Servicios de AWS que proporcionan recursos de computación, como Amazon EC2, Amazon ECS, Amazon EKS y Lambda, brindan credenciales temporales y las actualizan automáticamente. Esto garantiza que siempre disponga de un conjunto de credenciales válido. Para estos servicios, no es necesario volver a asumir el rol actual a fin de obtener credenciales temporales. Sin embargo, si tiene la intención de aprobar [etiquetas de sesión](id_session-tags.md) o una [política de sesión](access_policies.md#policies_session), tendrá que volver a asumir el rol actual.


## Actualización de una política de confianza de rol (consola)
<a name="id_roles_update-trust-policy-console"></a>

**Cambio de una política de confianza de rol en la Consola de administración de AWS**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Roles**.

1. En la lista de roles de su cuenta, elija el nombre del rol que desee modificar.

1. Elija la pestaña **Relaciones de confianza** y, a continuación, **Editar política de confianza**.

1. Edite la política de confianza según sea necesario. Para añadir entidades principales adicionales que puedan asumir el rol, especifíquelas en el elemento `Principal`. Por ejemplo, el siguiente fragmento de política muestra cómo hacer referencia a dos Cuentas de AWS en el elemento `Principal`:

   ```
   "Principal": {
     "AWS": [
       "arn:aws:iam::111122223333:root",
       "arn:aws:iam::444455556666:root"
     ]
   },
   ```

   Si especifica una entidad principal de otra cuenta, el hecho de añadir una cuenta a la política de confianza de un rol solo es una parte del establecimiento de una relación de confianza entre cuentas. De forma predeterminada, ningún usuario de las cuentas de confianza puede asumir el rol. El administrador de la cuenta en la que se acaba de establecer la relación de confianza debe conceder a los usuarios permiso para asumir el rol. Para ello, el administrador debe crear o editar una política que esté asociada al usuario para permitirle a este el acceso a la acción `sts:AssumeRole`. Para obtener más información, consulte el siguiente procedimiento o [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

   El siguiente fragmento de política muestra cómo hacer referencia a dos servicios de AWS en el elemento `Principal`:

   ```
   "Principal": {
     "Service": [
       "opsworks.amazonaws.com",
       "ec2.amazonaws.com"
     ]
   },
   ```

1. Cuando haya terminado de editar la política de confianza, elija **Update policy** (Actualizar política) para guardar los cambios.

   Para obtener más información sobre la estructura y la sintaxis de la política, consulte las secciones [Políticas y permisos en AWS Identity and Access Management](access_policies.md) y [Referencia de los elementos de la política de JSON de IAM](reference_policies_elements.md).

**Para permitir que los usuarios de una cuenta externa de confianza utilicen el rol (consola)**

Para obtener más información y detalles sobre este procedimiento, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

1. Inicie sesión en la Cuenta de AWS externa de confianza. 

1. Decida si desea asociar los permisos a un usuario o a un grupo. En el panel de navegación de la consola de IAM, elija **Users** (Usuarios) o **User groups** (Grupos de usuarios) según corresponda.

1. Elija el nombre del usuario o el grupo al que desea conceder acceso y, a continuación, elija la pestaña **Permissions (Permisos)**.

1. Realice una de las siguientes acciones:
   + Para editar una política administrada por el cliente, elija el nombre de la política, elija **Edit policy (Editar política)** y, a continuación, elija la pestaña **JSON**. No se puede editar una política administrada por AWS. Las políticas administradas de AWS aparecen con el icono AWS (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/policy_icon.png)). Para obtener más información acerca de la diferencia entre las políticas administradas por AWS y las políticas administradas por el cliente, consulte [Políticas administradas y políticas insertadas](access_policies_managed-vs-inline.md).
   + Para editar una política insertada, seleccione la flecha que aparece junto al nombre de la política y elija **Edit Policy (Editar política)**.

1. En el editor de políticas, añada un elemento `Statement` nuevo que especifique lo siguiente:

   ```
   {
     "Effect": "Allow",
     "Action": "sts:AssumeRole",
     "Resource": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME"
   }
   ```

   Reemplace el ARN de la instrucción por el ARN del rol que el usuario puede asumir.

1. Siga las indicaciones que aparecen en pantalla para terminar de editar la política. 

## Actualización de una política de confianza de rol (AWS CLI)
<a name="id_roles-update-trust-policy-cli"></a>

Puede utilizar la AWS CLI para cambiar quién puede asumir un rol.

**Para modificar una política de confianza de rol (AWS CLI)**

1. (Opcional) Si no conoce el nombre del rol que desea modificar, ejecute el siguiente comando para ver una lista de los roles de la cuenta:
   + [aws iam list-roles](https://docs.aws.amazon.com/cli/latest/reference/iam/list-roles.html)

1. (Opcional) Para ver la política de confianza actual de un rol, ejecute el siguiente comando:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para modificar las entidades principales de confianza que pueden obtener acceso al rol, cree un archivo de texto con la política de confianza actualizada. Puede utilizar cualquier editor de texto para crear la política.

   Por ejemplo, la política de confianza siguiente muestra cómo hacer referencia a dos Cuentas de AWS en el elemento `Principal`. Esto permite a los usuarios de dos Cuentas de AWS independientes asumir este rol.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   Si especifica una entidad principal de otra cuenta, el hecho de añadir una cuenta a la política de confianza de un rol solo es una parte del establecimiento de una relación de confianza entre cuentas. De forma predeterminada, ningún usuario de las cuentas de confianza puede asumir el rol. El administrador de la cuenta en la que se acaba de establecer la relación de confianza debe conceder a los usuarios permiso para asumir el rol. Para ello, el administrador debe crear o editar una política que esté asociada al usuario para permitirle a este el acceso a la acción `sts:AssumeRole`. Para obtener más información, consulte el siguiente procedimiento o [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

1. Si desea utilizar el archivo que acaba de crear para actualizar la política de confianza, ejecute el siguiente comando:
   + [aws iam update-assume-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-assume-role-policy.html)

**Para permitir que los usuarios de una cuenta externa de confianza utilicen el rol (AWS CLI)**

Para obtener más información y detalles sobre este procedimiento, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

1. Cree un archivo JSON que contenga una política de permisos que conceda permisos para asumir el rol. Por ejemplo, la política siguiente contiene los permisos mínimos necesarios:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   Reemplace el ARN de la instrucción por el ARN del rol que el usuario puede asumir.

1. Ejecute el siguiente comando para cargar el archivo JSON que contiene la política de confianza en IAM:
   + [aws iam create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html)

   La salida de este comando incluye el ARN de la política. Anote este ARN, ya que tendrá que utilizarlo en un paso posterior. 

1. Decida a qué usuario o grupo asociará la política. Si no conoce el nombre del usuario o el grupo en cuestión, ejecute uno de los comandos siguientes para mostrar una lista de los usuarios o grupos de la cuenta:
   + [aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)
   + [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

1. Ejecute uno de los siguientes comandos para asociar la política que ha creado en el paso anterior al usuario o al grupo:
   + [aws iam attach-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html)
   + [aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)

## Actualización de una política de confianza de rol (API de AWS)
<a name="id_roles-update-trust-policy-api"></a>

Puede utilizar la API de AWS para cambiar quién puede asumir un rol.

**Para modificar una política de confianza de rol (API de AWS)**

1. (Opcional) Si no conoce el nombre del rol que desea modificar, llame a la siguiente operación para ver una lista de los roles de la cuenta:
   + [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

1. (Opcional) Para ver la política de confianza actual de un rol, llame a la siguiente operación:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. Para modificar las entidades principales de confianza que pueden obtener acceso al rol, cree un archivo de texto con la política de confianza actualizada. Puede utilizar cualquier editor de texto para crear la política.

   Por ejemplo, la política de confianza siguiente muestra cómo hacer referencia a dos Cuentas de AWS en el elemento `Principal`. Esto permite a los usuarios de dos Cuentas de AWS independientes asumir este rol.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   Si especifica una entidad principal de otra cuenta, el hecho de añadir una cuenta a la política de confianza de un rol solo es una parte del establecimiento de una relación de confianza entre cuentas. De forma predeterminada, ningún usuario de las cuentas de confianza puede asumir el rol. El administrador de la cuenta en la que se acaba de establecer la relación de confianza debe conceder a los usuarios permiso para asumir el rol. Para ello, el administrador debe crear o editar una política que esté asociada al usuario para permitirle a este el acceso a la acción `sts:AssumeRole`. Para obtener más información, consulte el siguiente procedimiento o [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

1. Si desea utilizar el archivo que acaba de crear para actualizar la política de confianza, llame a la operación siguiente:
   + [UpdateAssumeRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html)

**Para permitir que los usuarios de una cuenta externa de confianza utilicen el rol (API de AWS)**

Para obtener más información y detalles sobre este procedimiento, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).

1. Cree un archivo JSON que contenga una política de permisos que conceda permisos para asumir el rol. Por ejemplo, la política siguiente contiene los permisos mínimos necesarios:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   Reemplace el ARN de la instrucción por el ARN del rol que el usuario puede asumir.

1. Llame a la operación siguiente para cargar el archivo JSON que contiene la política de confianza en IAM:
   + [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)

   La salida de esta operación incluye el ARN de la política. Anote este ARN, ya que tendrá que utilizarlo en un paso posterior. 

1. Decida a qué usuario o grupo asociará la política. Si no conoce el nombre del usuario o el grupo en cuestión, llame a una de las operaciones siguientes para mostrar una lista de los usuarios o grupos de la cuenta:
   + [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)
   + [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

1. Llame a una de las operaciones siguientes para asociar la política que ha creado en el paso anterior al usuario o al grupo:
   +  API: [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html)
   + [AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)

# Actualización de los permisos de un rol
<a name="id_roles_update-role-permissions"></a>

Utilice los siguientes procedimientos para actualizar las políticas y los límites de permisos de un rol.

## Requisito previo: ver el acceso del rol
<a name="roles-modify_prerequisites"></a>

Antes de cambiar los permisos para un rol, debe revisar su actividad de nivel de servicio reciente. Esto es importante porque no desea eliminar el acceso de un principal (persona o aplicación) que está utilizándolo. Para obtener más información acerca de cómo ver la información de acceso reciente, consulte [Ajuste de permisos en AWS con información sobre los últimos accesos](access_policies_last-accessed.md).

## Actualizar la política de permisos para un rol
<a name="id_roles_update-role-permissions-policy"></a>

Para cambiar los permisos permitidos por el rol, modifique la política (o políticas) de permisos del rol. No se puede modificar la política de permisos de un *[rol vinculado a un servicio](id_roles.md#iam-term-service-linked-role)* en IAM. Se podría modificar la política de permisos en el servicio que depende del rol. Para comprobar si un servicio admite esta característica, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios con **Sí **en la columna **Roles vinculados a servicios**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión.

### Actualización de una política de permisos de rol (consola)
<a name="id_roles_update-role-permissions-policy-console"></a>

**Para cambiar los permisos de un rol (consola)**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Roles**.

1. Elija el nombre del rol que desea modificar y, a continuación, la pestaña **Permissions (Permisos)**.

1. Realice una de las siguientes acciones:
   + Para editar una política administrada por el cliente ya existente, elija el nombre de la política y seleccione **Edit policy (Editar política)**.
**nota**  
No se puede editar una política administrada por AWS. Las políticas administradas de AWS aparecen con el icono AWS (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/policy_icon.png)). Para obtener más información acerca de la diferencia entre las políticas administradas por AWS y las políticas administradas por el cliente, consulte [Políticas administradas y políticas insertadas](access_policies_managed-vs-inline.md). 
   + Para asociar una política administrada existente al rol, elija **Add permissions** (Agregar permisos) y luego **Attach policies** (Asociar políticas).
   + Para editar una política insertada existente, expándala y elija **Edit** (Editar).
   + Para integrar una nueva política insertada, elija **Add permissions** (Agregar permisos) y luego **Create inline policy** (Crear política insertada). 
   + Para eliminar una política existente del rol, seleccione la casilla de verificación que se encuentra junto al nombre de la política y, a continuación, elija **Eliminar**.

### Actualización de una política de permisos de rol (AWS CLI)
<a name="id_roles_update_permissions-policy-cli"></a>

Para cambiar los permisos permitidos por el rol, modifique la política (o políticas) de permisos del rol. No se puede modificar la política de permisos de un *[rol vinculado a un servicio](id_roles.md#iam-term-service-linked-role)* en IAM. Se podría modificar la política de permisos en el servicio que depende del rol. Para comprobar si un servicio admite esta característica, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios con **Sí **en la columna **Roles vinculados a servicios**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión.

**Para cambiar los permisos que permite un rol (AWS CLI)**

1. (Opcional) Para ver los permisos actuales asociados a un rol, ejecute los siguientes comandos:

   1. [aws iam list-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-policies.html) para obtener una lista de políticas insertadas

   1. [aws iam list-attached-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-role-policies.html) para obtener una lista de políticas administradas

1. El comando para actualizar los permisos del rol varía en función de si se está actualizando una política administrada o una política insertada.

   Para actualizar una política administrada, ejecute el siguiente comando para crear una nueva versión de la política administrada:
   + [aws iam create-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy-version.html)

   Para actualizar una política insertada, ejecute el siguiente comando:
   + [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

### Actualización de una política de permisos de rol (API de AWS)
<a name="id_roles_update_permissions-policy-api"></a>

Para cambiar los permisos permitidos por el rol, modifique la política (o políticas) de permisos del rol. No se puede modificar la política de permisos de un *[rol vinculado a un servicio](id_roles.md#iam-term-service-linked-role)* en IAM. Se podría modificar la política de permisos en el servicio que depende del rol. Para comprobar si un servicio admite esta característica, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y busque los servicios con **Sí **en la columna **Roles vinculados a servicios**. Elija una opción **Sí** con un enlace para ver la documentación acerca del rol vinculado al servicio en cuestión.

**Para cambiar los permisos que permite un rol (API de AWS)**

1. (Opcional) Para ver los permisos actuales asociados a un rol, llame a las siguientes operaciones:

   1. [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html) para obtener una lista de políticas insertadas

   1. [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html) para obtener una lista de políticas administradas

1. La operación para actualizar los permisos del rol varía en función de si se está actualizando una política administrada o una política insertada.

   Para actualizar una política administrada, llame a la siguiente operación para crear una nueva versión de la política administrada:
   + [CreatePolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html)

   Para actualizar una política insertada, llame a la siguiente operación:
   + [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

## Actualizar el límite de permisos para un rol
<a name="id_roles_update-role-permissions-boundary"></a>

Para cambiar los permisos máximos permitidos para un rol, modifique el [límite de permisos](access_policies_boundaries.md) del rol.

### Actualización de un límite de permisos de rol (consola)
<a name="id_roles_update-permissions-boundary-console"></a>

**Para cambiar la política que se utiliza para establecer el límite de permisos de un rol**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Seleccione **Roles** en el panel de navegación.

1. Elija el nombre del rol con el [límite de permisos](access_policies_boundaries.md) que desea modificar. 

1. Elija la pestaña **Permisos**. Si es necesario, abra la sección **Permissions boundary (Límite de permisos)** y, a continuación, elija **Change boundary (Cambiar límite)**.

1. Seleccione la política que desea utilizar para el límite de permisos.

1. Elija **Change boundary (Cambiar límite)**.

   Los cambios no entrarán en vigor hasta la próxima vez que alguien asuma este rol.

### Actualización de un límite de permisos de rol (AWS CLI)
<a name="id_roles_update_permissions-boundary-cli"></a>

**Para cambiar la política administrada que se utiliza para establecer el límite de permisos de un rol (AWS CLI)**

1. (Opcional) Para ver el [límite de permisos](access_policies_boundaries.md) actual de un rol, ejecute el comando siguiente: 
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Si desea utilizar una política administrada diferente para actualizar el límite de permisos de un rol, ejecute el comando siguiente: 
   + [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Un rol solo puede tener una política administrada configurada como límite de permisos. Si cambia el límite de permisos, también cambiará los permisos que puede tener un rol como máximo.

### Actualización de un límite de permisos de rol (API de AWS)
<a name="id_roles_update-permissions-boundary-api"></a>

**Para cambiar la política administrada que se utiliza para establecer el límite de permisos de un rol (API de AWS)**

1. (Opcional) Para ver el [límite de permisos](access_policies_boundaries.md) actual de un rol, llame a la operación siguiente: 
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. Si desea utilizar una política administrada diferente para actualizar el límite de permisos de un rol, llame a la operación siguiente: 
   + [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Un rol solo puede tener una política administrada configurada como límite de permisos. Si cambia el límite de permisos, también cambiará los permisos que puede tener un rol como máximo.

# Actualización de la configuración de un rol
<a name="id_roles_update-role-settings"></a>

Utilice los siguientes procedimientos para actualizar la descripción de un rol o cambiar la duración máxima de la sesión para un rol.

## Actualizar una descripción de rol
<a name="id_roles_update-description"></a>

Para cambiar la descripción del rol, modifique el texto de descripción.

### Actualización de una descripción de rol (consola)
<a name="id_roles_update-description-console"></a>

**Para cambiar la descripción del rol (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Roles**.

1. Seleccione el nombre del rol que desea modificar.

1. En la sección **Summary** (Resumen), elija **Edit** (Editar).

1. Ingrese una descripción nueva en el cuadro y elija **Save changes** (Guardar cambios).

### Actualización de una descripción de rol (AWS CLI)
<a name="id_roles_update-description-cli"></a>

**Para cambiar la descripción de un rol (AWS CLI)**

1. (Opcional) Para ver la descripción actual de un rol, ejecute el siguiente comando:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para actualizar la descripción de un rol, ejecute el siguiente comando con el parámetro de descripción:
   + [aws iam update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)

### Actualización de una descripción de rol (API de AWS)
<a name="id_roles_update-description-api"></a>

**Para cambiar la descripción de un rol (API de AWS)**

1. (Opcional) Para ver la descripción actual de un rol, llame a la siguiente operación:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Para actualizar la descripción de un rol, llame a la siguiente operación con el parámetro de descripción:
   + [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)

## Actualizar la duración máxima de la sesión para un rol
<a name="id_roles_update-session-duration"></a>

Para especificar la duración máxima de la sesión para los roles que se asumen mediante la consola, AWS CLI o la API de AWS, modifique el valor del ajuste de duración máxima de la sesión. Esta opción puede tener un valor comprendido entre 1 y 12 horas. Si no especifica un valor, se aplicará el valor máximo predeterminado de 1 hora. Esta configuración no limita las sesiones asumidas por los servicios de AWS.

### Actualización de la duración máxima de la sesión de un rol (consola)
<a name="id_roles_update-session-duration-console"></a><a name="id_roles_modify_max-session"></a>

**Para cambiar el valor de la duración máxima de la sesión para los roles que se asumen mediante la consola, AWS CLI o la API de AWS (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, elija **Roles**.

1. Seleccione el nombre del rol que desea modificar.

1. En la sección **Summary** (Resumen), elija **Edit** (Editar).

1. En **Maximum session duration** (Duración máxima de la sesión), elija un valor. Como alternativa, puede elegir **Custom duration** (Duración personalizada) e ingresar un valor (en segundos).

1. Seleccione **Save changes (Guardar cambios)**.

   Los cambios no entrarán en vigor hasta la próxima vez que alguien asuma este rol. Para obtener información sobre cómo revocar sesiones existentes para este rol, consulte [Revocación de las credenciales de seguridad temporales de un rol de IAM](id_roles_use_revoke-sessions.md).

En Consola de administración de AWS, las sesiones de usuario de IAM son de 12 horas de forma predeterminada. A los usuarios de IAM que cambian de rol en la consola se les concede la duración máxima de la sesión del rol, o el tiempo restante de la sesión del usuario, lo que sea menor.

Cualquier persona que asuma el rol desde el AWS CLI o la API de AWS puede solicitar una sesión más larga, hasta este máximo. El ajuste de la `MaxSessionDuration` determina la duración máxima de la sesión de rol que se puede solicitar.
+ Para especificar una duración de sesión utilizando el AWS CLI utilice el parámetro `duration-seconds`. Para obtener más información, consulte [Cambiar a un rol de IAM (AWS CLI)](id_roles_use_switch-role-cli.md).
+ Para especificar una duración de sesión mediante la API de AWS, utilice el parámetro `DurationSeconds`. Para obtener más información, consulte [Cambiar a un rol de IAM (API de AWS)](id_roles_use_switch-role-api.md). 

### Actualización de la duración máxima de la sesión de un rol (AWS CLI)
<a name="id_roles_update-session-duration-cli"></a>

**nota**  
Cualquiera que asuma el rol desde la API o la AWS CLI puede utilizar el `duration-seconds` parámetro de la CLI o el `DurationSeconds` parámetro de la API para solicitar una sesión más larga. El ajuste `MaxSessionDuration` determina la duración máxima de la sesión de rol que se puede solicitar mediante el parámetro `DurationSeconds`. Si los usuarios no especifican un valor para el parámetro `DurationSeconds`, sus credenciales de seguridad serán válidas durante una hora.

**Para cambiar el valor de la duración máxima de la sesión para los roles que se asumen mediante AWS CLI (AWS CLI)**

1. (Opcional) Para ver el valor actual de la duración máxima de la sesión de un rol, ejecute el siguiente comando:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para actualizar el valor de la duración máxima de la sesión de un rol, ejecute el siguiente comando con el parámetro `max-session-duration` de la CLI o el parámetro `MaxSessionDuration` de la API:
   + [aws iam update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)

   Los cambios no entrarán en vigor hasta la próxima vez que alguien asuma este rol. Para obtener información sobre cómo revocar sesiones existentes para este rol, consulte [Revocación de las credenciales de seguridad temporales de un rol de IAM](id_roles_use_revoke-sessions.md).

### Actualización de la duración máxima de la sesión de un rol (API de AWS)
<a name="id_roles_update-session-duration-api"></a>

**nota**  
Cualquiera que asuma el rol desde la API o la AWS CLI puede utilizar el `duration-seconds` parámetro de la CLI o el `DurationSeconds` parámetro de la API para solicitar una sesión más larga. El ajuste `MaxSessionDuration` determina la duración máxima de la sesión de rol que se puede solicitar mediante el parámetro `DurationSeconds`. Si los usuarios no especifican un valor para el parámetro `DurationSeconds`, sus credenciales de seguridad serán válidas durante una hora.

**Para cambiar el valor de la duración máxima de la sesión para los roles que se asumen mediante la API (API de AWS)**

1. (Opcional) Para ver el valor actual de la duración máxima de la sesión de un rol, llame a la siguiente operación:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Para actualizar el valor de la duración máxima de la sesión de un rol, llame a la siguiente operación con el parámetro `max-sessionduration` de la CLI o el parámetro `MaxSessionDuration` de la API:
   + [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)

   Los cambios no entrarán en vigor hasta la próxima vez que alguien asuma este rol. Para obtener información sobre cómo revocar sesiones existentes para este rol, consulte [Revocación de las credenciales de seguridad temporales de un rol de IAM](id_roles_use_revoke-sessions.md).

# Eliminar roles o perfiles de instancia
<a name="id_roles_manage_delete"></a>

Si ya no necesita un rol, le recomendamos que elimine el rol y sus permisos asociados. De esta forma no tiene una entidad no utilizada que no se monitoree ni mantenga de forma activa. 

Si el rol se asoció a una instancia EC2, puede también eliminarlo del perfil de instancia y, a continuación, eliminar dicho perfil.

**aviso**  
Asegúrese de que no tiene ninguna instancia de Amazon EC2 ejecutándose con el rol o el perfil de instancias que va a eliminar. Al eliminar un perfil de instancias o rol asociado a una instancia en ejecución se romperá cualquier aplicación que se esté ejecutando en la instancia.

Si prefiere no eliminar permanentemente un rol, puede deshabilitarlo. Para ello, cambie las políticas del rol y, a continuación, revoque todas las sesiones actuales. Por ejemplo, podría añadir una política al rol que denegó el acceso a todos de AWS. También puede editar la política de confianza para denegar el acceso a cualquier persona que intente asumir el rol. Para obtener más información acerca de cómo revocar sesiones, consulte [Revocación de las credenciales de seguridad temporales de un rol de IAM](id_roles_use_revoke-sessions.md).

**Topics**
+ [

## Visualización del acceso a los roles
](#roles-delete_prerequisites)
+ [

## Eliminar un rol vinculado a un servicio
](#id_roles_manage_delete_slr)
+ [

## Eliminar un rol de IAM (consola)
](#roles-managingrole-deleting-console)
+ [

## Eliminar un rol de IAM (AWS CLI)
](#roles-managingrole-deleting-cli)
+ [

## Eliminar un rol de IAM (API de AWS)
](#roles-managingrole-deleting-api)
+ [

## Información relacionada
](#roles-managingrole-deleting-related-info)

## Visualización del acceso a los roles
<a name="roles-delete_prerequisites"></a>

Antes de eliminar un rol, le recomendamos que revise la fecha en que se usó el rol por última vez. Para ello, utilice la Consola de administración de AWS, la AWS CLI o la API de AWS. Debe ver esta información porque no debería eliminar el acceso de alguien que utilice el rol. 

Es posible que la fecha de la última actividad del rol no coincida con la última fecha notificada en la pestaña de **Último acceso**. La pestaña de [**Último acceso**](access_policies_last-accessed-view-data.md) informa la actividad solo para los servicios permitidos por las políticas de permisos del rol. La fecha de la última actividad del rol incluye el último intento de acceder a cualquier servicio de AWS.

**nota**  
El periodo de seguimiento de la última actividad de un rol y los datos del Último acceso es para los últimos 400 días. Este período puede ser más corto si su Región comenzó a admitir estas características en el último año. El rol podría haberse utilizado hace más de 400 días. Para obtener más información sobre el período de seguimiento, consulte [Dónde AWS se hace un seguimiento de la información de acceso reciente](access_policies_last-accessed.md#last-accessed_tracking-period).

**Para ver cuándo se utilizó un rol por última vez (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Seleccione **Roles** en el panel de navegación.

1. Busque la fila del rol con la actividad que desee ver. Puede utilizar el campo de búsqueda para filtrar los resultados. Vea la columna **Última actividad** para ver el número de días transcurridos desde la última vez que se utilizó el rol. Si el rol no se ha utilizado dentro del período de seguimiento, la tabla muestra **Ninguno**. 

1. Elija el nombre del rol para ver más información. La página **Resumen** del rol también incluye **Última actividad**, que muestra la fecha en que se utilizó el rol por última vez. Si el rol no se ha utilizado en los últimos 400 días, **Última actividad** muestra **No se ha accedido en el período de seguimiento**.

**Para ver cuándo se utilizó un rol por última vez (AWS CLI)**  
`[aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)` - Ejecute este comando para devolver información sobre un rol, incluido el objeto `RoleLastUsed`. Este objeto contiene el `LastUsedDate` y el `Region` en el que se utilizó el rol por última vez. Si `RoleLastUsed` está presente pero no contiene un valor, el rol no se ha utilizado dentro del período de seguimiento.

**Para ver cuándo se usó un rol por última vez (AWS API)**  
`[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/GetRole.html)` - Llame a esta operación para devolver información sobre un rol, incluido el objeto `RoleLastUsed`. Este objeto contiene el `LastUsedDate` y el `Region` en el que se utilizó el rol por última vez. Si `RoleLastUsed` está presente pero no contiene un valor, el rol no se ha utilizado dentro del período de seguimiento.

## Eliminar un rol vinculado a un servicio
<a name="id_roles_manage_delete_slr"></a>

El método que utilice para eliminar roles vinculados a servicios depende del servicio. En algunos casos, no es necesario eliminar manualmente roles vinculados a servicios. Por ejemplo, al finalizar una acción específica (por ejemplo, retirar un recurso) en el servicio, este puede eliminar el rol vinculado al servicio en su nombre. En otros casos, el servicio podría admitir la eliminación manual de un rol vinculado al servicio mismo desde su consola, la API o la AWS CLI. 

Revise la documentación del *[rol vinculado a servicios](id_roles.md#iam-term-service-linked-role)* en el servicio vinculado para obtener información sobre cómo eliminar el rol. Puede consultar los roles vinculados a servicios en su cuenta en cualquier momento a través de la página de IAM **Roles** de la consola. Los roles vinculados con servicios aparecen con el texto **(Service-linked role (Función vinculada al servicio))** en la columna **Trusted entities (Entidades de confianza)** de la tabla. Un banner en la página **Resumen** del rol también indica que es un tipo de rol vinculado a un servicio.

Si el servicio no incluye documentación acerca de cómo eliminar el rol vinculado al servicio, puede utilizar la consola de IAM, la AWS CLI o la API para eliminarlo.

## Eliminar un rol de IAM (consola)
<a name="roles-managingrole-deleting-console"></a>

Cuando se utiliza la Consola de administración de AWS para eliminar un rol, IAM elimina automáticamente las políticas administradas asociadas al rol. También elimina automáticamente cualquier política en línea asociada con el rol y cualquier perfil de instancia de Amazon EC2 que contenga el rol. 

**importante**  
En algunos casos, un rol podría estar asociado a un perfil de instancias de Amazon EC2 y tanto el rolo como el perfil de instancias podrían tener el mismo nombre. En ese caso, puede utilizar la Consola de administración de AWS para eliminar el rol y el perfil de instancia. Este vínculo se produce de forma automática para roles y perfiles de instancia que crea en la consola. Si creó el rol desde la API de AWS CLI, Tools for Windows PowerShell o API de AWS, el rol y el perfil de instancias podrían tener distintos nombres. En ese caso no puede utilizar la consola para eliminarlos. En cambio, debe utilizar la API de AWS CLI, Tools for Windows PowerShell o API de AWS para primero eliminar el rol del perfil de instancias. A continuación, debe realizar un paso independiente para eliminar el rol.

**Para eliminar un rol (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Roles** y, a continuación, seleccione la casilla de verificación junto al nombre del rol que desee eliminar. 

1. En la parte superior de la página, elija **Eliminar**.

1. En el cuadro de diálogo de confirmación, revise la información de acceso reciente, donde se indica cuándo accedió cada uno de los roles seleccionados a un servicio de AWS por última vez. Esto le ayuda a confirmar si el rol está actualmente activo. Si desea continuar, escriba el nombre del rol en el campo de entrada de texto y elija **Eliminar**. Si está seguro, puede continuar con la eliminación, aunque la información de acceso reciente siga cargándose.

**nota**  
No puede utilizar la consola para eliminar un perfil de instancia, a no ser que tenga el mismo nombre que el rol. El perfil de instancias se elimina como parte del proceso de eliminación de un rol, tal y como se describe en el procedimiento anterior. Para eliminar un perfil de instancia sin eliminar también el rol, debe utilizar la AWS CLI o la API de AWS. Para obtener más información, consulte las siguientes secciones.

## Eliminar un rol de IAM (AWS CLI)
<a name="roles-managingrole-deleting-cli"></a>

Cuando utiliza la AWS CLI para eliminar un rol, antes debe eliminar las políticas insertadas asociadas al rol. También debe desvincular las políticas administradas asociadas al rol. Si desea eliminar el perfil de instancia asociado que incluye el rol, debe eliminarlo por separado.

**Para eliminar un rol (AWS CLI)**

1. Si no conoce el nombre del rol que desea eliminar, escriba el siguiente comando para enumerar los roles de su cuenta:

   ```
   aws iam list-roles
   ```

   La lista incluye el Nombre de recurso de Amazon (ARN) de cada rol. Utilice el nombre del rol, no el ARN, para hacer referencia a los roles con los comandos de CLI. Por ejemplo, si un rol tiene el ARN `arn:aws:iam::123456789012:role/myrole`, debe referirse a él como **myrole**.

1. Elimine el rol de todos los perfiles de instancia en los que está asociado.

   1. Para enumerar todos los perfiles de instancia con los que se asocia el rol, escriba el siguiente comando:

      ```
      aws iam list-instance-profiles-for-role --role-name role-name
      ```

   1. Para eliminar el rol de un perfil de instancia, escriba el siguiente comando para cada perfil de instancia:

      ```
      aws iam remove-role-from-instance-profile --instance-profile-name instance-profile-name --role-name role-name
      ```

1. Elimine todas las políticas asociadas al rol.

   1. Para enumerar todas las políticas insertadas que están en el rol, ingrese el siguiente comando:

      ```
      aws iam list-role-policies --role-name role-name
      ```

   1. Para eliminar cada política insertada del rol, ingrese el siguiente comando para cada política: 

      ```
      aws iam delete-role-policy --role-name role-name --policy-name policy-name
      ```

   1. Para enumerar todas las políticas administradas que están asociadas al rol, ingrese el siguiente comando:

      ```
      aws iam list-attached-role-policies --role-name role-name
      ```

   1. Para desvincular cada política administrada del rol, ingrese el siguiente comando para cada política: 

      ```
      aws iam detach-role-policy --role-name role-name --policy-arn policy-arn
      ```

1. Escriba el comando siguiente para eliminar el rol:

   ```
   aws iam delete-role --role-name role-name
   ```

1. Si no tiene pensado reutilizar los perfiles de instancia que se asociaron al rol, puede escribir el siguiente comando para eliminarlos:

   ```
   aws iam delete-instance-profile --instance-profile-name instance-profile-name
   ```

## Eliminar un rol de IAM (API de AWS)
<a name="roles-managingrole-deleting-api"></a>

Si utiliza la API de IAM para eliminar un rol, antes debe eliminar las políticas insertadas asociadas al rol. También debe desvincular las políticas administradas asociadas al rol. Si desea eliminar el perfil de instancia asociado que incluye el rol, debe eliminarlo por separado.

**Para eliminar un rol (API de AWS)**

1. Para enumerar todos los perfiles de instancia asociados a un rol, llame a [ListInstanceProfilesForRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html).

   Para eliminar el rol de un perfil de instancia, llame a [RemoveRoleFromInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html). Debe transmitir el nombre del rol y el nombre del perfil de instancia. 

   Si no va a volver a utilizar un perfil de instancia que estaba asociado al rol, llame a [DeleteInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html) para eliminarlo.

1. Para enumerar todas las políticas insertadas de un rol, llame a [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html).

   Para eliminar todas las políticas insertadas asociadas al rol, llame a [DeleteRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRolePolicy.html). Debe pasar el nombre del rol y el nombre de la política insertada. 

1. Para enumerar todas las políticas administradas que se encuentran asociadas a un rol, llame a [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html). 

   Para desvincular políticas administradas que se encuentran asociadas al rol, llame a [DetachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachRolePolicy.html). Debe pasar el nombre del rol y el ARN de la política administrada. 

1. Llame a [DeleteRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRole.html) para eliminar el rol.

## Información relacionada
<a name="roles-managingrole-deleting-related-info"></a>

Para obtener información general sobre los perfiles de instancia, consulte [Utilizar perfiles de instancia](id_roles_use_switch-role-ec2_instance-profiles.md).

Para obtener información general acerca de los roles vinculados a servicios, consulte [Creación de un rol vinculado al servicio](id_roles_create-service-linked-role.md).

# Métodos para asumir un rol
<a name="id_roles_manage-assume"></a>

Para que un usuario, una aplicación o un servicio pueda utilizar un rol creado por usted, debe [conceder permisos para cambiar](id_roles_use_permissions-to-switch.md) al rol. Puede utilizar cualquier política asociada a grupos o usuarios para otorgar los permisos necesarios. Una vez concedidos los permisos, el usuario puede asumir un rol desde la Consola de administración de AWS, las herramientas para Windows PowerShell, la AWS Command Line Interface (AWS CLI) y la API de [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html).

**importante**  
Cuando crea un rol mediante programación en lugar de hacerlo en la consola de IAM, tiene la opción de agregar un `Path` de 512 caracteres como máximo además del `RoleName`, que puede tener un máximo de 64 caracteres. Sin embargo, si desea utilizar un rol con la característica **Cambiar rol** en la consola de Consola de administración de AWS, la combinación de `Path` y `RoleName` no puede superar los 64 caracteres.

El método que utilice para asumir el rol determinará quién puede asumir el rol y cuánto tiempo puede durar la sesión de ese rol. Cuando se utilizan operaciones de la API `AssumeRole*`, el rol de IAM que se asume es el recurso. El usuario o rol que llama a las operaciones de la API `AssumeRole*` es la entidad principal.

En la siguiente tabla, se comparan los métodos para asumir roles.


|  Método para asumir el papel |  **¿Quién puede asumir el rol?**  | **Método para especificar la duración de las credenciales** |  **Duración de las credenciales (mín \$1 máx \$1 predeterminada)**  | 
| --- | --- | --- | --- | 
| Consola de administración de AWS | Usuario o roles¹ (al [cambiar roles](id_roles_use_switch-role-console.md)) | Duración máxima de la sesión en la página de resumen del Rol | 15 min \$1 configuración de la duración máxima de la sesión² \$1 1 h | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) de la API |  Usuario o rol¹ | Parámetro duration-seconds de la CLI o parámetro DurationSeconds de la API | 15 min \$1 configuración de la duración máxima de la sesión² \$1 1 h  | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) de la API | Cualquier usuario autenticado mediante SAML | Parámetro duration-seconds de la CLI o parámetro DurationSeconds de la API | 15 min \$1 configuración de la duración máxima de la sesión² \$1 1 h  | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) de la API | Cualquier usuario autenticado con OIDC | Parámetro duration-seconds de la CLI o parámetro DurationSeconds de la API | 15 min \$1 configuración de la duración máxima de la sesión² \$1 1 h  | 
| [URL de la consola](id_roles_providers_enable-console-custom-url.md) construida con AssumeRole  | Usuario o rol | Parámetro HTMLSessionDuration en la URL | 15 min \$1 12 h \$1 1 h  | 
| [URL de la consola](id_roles_providers_enable-console-custom-url.md) construida con AssumeRoleWithSAML  | Cualquier usuario autenticado mediante SAML | Parámetro HTMLSessionDuration en la URL | 15 min \$1 12 h \$1 1 h | 
| [URL de la consola](id_roles_providers_enable-console-custom-url.md) construida con AssumeRoleWithWebIdentity  | Cualquier usuario autenticado con OIDC | Parámetro HTMLSessionDuration en la URL | 15 min \$1 12 h \$1 1 h  | 

¹ El uso de las credenciales de un rol para asumir un rol se denomina [encadenamiento de roles](id_roles.md#iam-term-role-chaining). Cuando se utiliza el encadenamiento de roles, la sesión del rol tiene una duración máxima de una hora. Esto se aplica al cambio de roles de la Consola de administración de AWS, la AWS CLI y las operaciones de la API. Esta limitación no se aplica a la suposición inicial de un rol mediante las credenciales de usuario ni a las aplicaciones que se ejecutan en las instancias de Amazon EC2 con el uso de los perfiles de instancia.

² Esta opción puede tener un valor comprendido entre 1 y 12 horas. Para obtener información detallada sobre modificar la configuración de la duración máxima de la sesión, consulte [Administración de roles de IAM](id_roles_manage.md). Este ajuste determina la duración máxima de la sesión que se puede solicitar al obtener las credenciales del rol. Por ejemplo, cuando utilice las operaciones [AssumeRole\$1](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) de la API para asumir un rol, puede utilizar el parámetro `DurationSeconds` para especificar la duración de la sesión. Use este parámetro para especificar la duración de la sesión de rol, que puede oscilar entre 900 segundos (15 minutos) y el valor de la duración máxima de la sesión especificado para el rol. A los usuarios de IAM que cambian de rol en la consola se les concede la duración máxima de la sesión, o el tiempo restante de la sesión del usuario, lo que sea menor. Supongamos que establece una duración máxima de 5 horas en un rol. Un usuario de IAM que ha iniciado sesión en la consola durante 10 horas (fuera del máximo predeterminado de 12) cambia al rol. La duración de la sesión de rol disponible es de 2 horas. Para obtener información sobre cómo ver el valor máximo para el rol, consulte [Actualizar la duración máxima de la sesión para un rol](id_roles_update-role-settings.md#id_roles_update-session-duration) más adelante en esta misma página.

**Notas**  
La configuración de duración máxima de sesión no limita las sesiones asumidas por los servicios de AWS.
Las credenciales del rol de IAM de Amazon EC2 no están sujetas a la duración máxima de sesión configurada en el rol.
Para permitir que los usuarios vuelvan a asumir el rol actual dentro de una sesión de rol, especifique el ARN del rol o el ARN de la Cuenta de AWS como entidad principal en la política de confianza de rol. Los Servicios de AWS que proporcionan recursos de computación, como Amazon EC2, Amazon ECS, Amazon EKS y Lambda, brindan credenciales temporales y las actualizan automáticamente. Esto garantiza que siempre disponga de un conjunto de credenciales válido. Para estos servicios, no es necesario volver a asumir el rol actual a fin de obtener credenciales temporales. Sin embargo, si tiene la intención de aprobar [etiquetas de sesión](id_session-tags.md) o una [política de sesión](access_policies.md#policies_session), tendrá que volver a asumir el rol actual. Para obtener información sobre cómo modificar una política de confianza de roles a fin de agregar el ARN del rol o el ARN de la Cuenta de AWS para la entidad principal, consulte [Actualizar una política de confianza de rol](id_roles_update-role-trust-policy.md).

**Topics**
+ [

# Cambiar de usuario a rol de IAM (consola)
](id_roles_use_switch-role-console.md)
+ [

# Cambiar a un rol de IAM (AWS CLI)
](id_roles_use_switch-role-cli.md)
+ [

# Cambiar a un rol de IAM (Herramientas para Windows PowerShell)
](id_roles_use_switch-role-twp.md)
+ [

# Cambiar a un rol de IAM (API de AWS)
](id_roles_use_switch-role-api.md)
+ [

# Utilizar un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias de Amazon EC2
](id_roles_use_switch-role-ec2.md)
+ [

# Utilizar perfiles de instancia
](id_roles_use_switch-role-ec2_instance-profiles.md)

# Cambiar de usuario a rol de IAM (consola)
<a name="id_roles_use_switch-role-console"></a>

Solo puede cambiar de rol cuando inicia sesión como usuario de IAM, un usuario en el Centro de Identidades IAM, como rol federado de SAML o como un rol federado de identidad web. Un *rol* especifica un conjunto de permisos que puede utilizar para acceder a los recursos de AWS que necesita. Sin embargo, no inicia sesión en un rol, pero una vez que inicie sesión como un usuario de IAM podrá cambiar a un rol de IAM. Esto anula temporalmente los permisos de usuario originales y, en su lugar, le otorga los permisos asignados al rol. El rol puede estar en su propia cuenta o en cualquier otra Cuenta de AWS. Para obtener más información acerca de los roles, sus ventajas y cómo crearlos, consulte [Roles de IAM](id_roles.md) y [Creación de roles de IAM](id_roles_create.md).

Los permisos de sus usuarios y de cualquier rol al que cambie no se acumulan. Solo hay un conjunto de permisos activo a la vez. Cuando se cambia a un rol, se abandonan temporalmente los permisos de usuario y se trabaja con los permisos que el rol tenga asignados. Al salir del rol, los permisos de usuario se restablecen de forma automática.

Al cambiar de rol en la Consola de administración de AWS, la consola utiliza siempre sus credenciales originales para autorizar el cambio. Por ejemplo, si cambia a RolA, IAM utiliza sus credenciales originales para determinar si puede asumir el RolA. Si luego cambia a RolB, *mientras utiliza el RolA*, AWS seguirá utilizando sus credenciales **originales**, y no las credenciales del RolA, para autorizar el cambio.

**nota**  
Usted asume un rol de IAM cuando inicia sesión como usuario en el IAM Identity Center, como rol federado de SAML o como rol federado de identidades web. Por ejemplo, cuando un usuario del IAM Identity Center inicia sesión en el portal de acceso de AWS, debe elegir un conjunto de permisos que se correlacionen con un rol antes de poder acceder a los recursos de AWS.

## Sesiones de rol
<a name="id_roles_iam_user-switch-role-sessions"></a>

Cuando cambia de rol, de forma predeterminada su sesión en la Consola de administración de AWS dura 1 hora. Las sesiones de usuario de IAM duran 12 horas de forma predeterminada. Es posible que otros usuarios tengan definidas diferentes duraciones de sesión. Cuando cambia de rol en la consola, se le concede una duración máxima de sesión o el tiempo restante de su sesión de usuario (lo que sea menor). Asumir un rol no significa que se extenderá la duración de su sesión.

Por ejemplo, suponga que se establece una duración máxima de sesión de 10 horas para un rol. Su sesión en la consola lleva 8 horas de duración cuando decide cambiar al rol. Quedan 4 horas de su sesión de usuario, por lo que la duración de la sesión permitida para su rol es de 4 horas y no la duración máxima de sesión de 10 horas. En la tabla siguiente se muestra cómo determinar la duración de la sesión para un usuario de IAM al cambiar roles en la consola.


| El tiempo restante de sesión de usuario de IAM es... | La duración de la sesión de rol es… | 
| --- | --- | 
| Duración máxima de la sesión inferior al rol | Tiempo restante en la sesión del usuario | 
| Duración máxima de la sesión mayor al rol | Valor de la duración máxima de la sesión | 
| Igual a la duración máxima de la sesión del rol | Valor de la duración máxima de la sesión (aproximado) | 

Utilizar las credenciales de un rol para asumir otro rol se denomina [encadenamiento de roles](id_roles.md#iam-term-role-chaining). Cuando se utiliza el encadenamiento de roles, se limita la sesión de duración a una hora, sin importar la duración máxima de sesión establecida para cada uno de los roles. Esto se aplica al cambio de roles de la Consola de administración de AWS, la AWS CLI y las operaciones de la API.

**nota**  
Algunas de servicio AWS pueden reiniciar automáticamente su sesión de rol cuando caduque sin que realice ninguna acción. Algunos pueden pedirle que vuelva a cargar la página del navegador para volver a autenticar su sesión.

## Consideraciones
<a name="id_roles_iam_user-switch-role-considerations"></a>
+ Si inicia sesión como Usuario raíz de la cuenta de AWS, no puede cambiar de rol. 
+ Los usuarios deben tener permisos concedidos para cambiar de rol, de acuerdo con la política. Para obtener instrucciones, consulte [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md).
+ En la Consola de administración de AWS, no puede cambiar a un rol que requiera un valor [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id). Solo puede cambiar a dicho rol si llama a la API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) que admite el parámetro `ExternalId`.

## Para cambiar de rol
<a name="id_roles_iam_user-switch-role-console-procedure"></a>

1. Siga el procedimiento de inicio de sesión apropiado para su tipo de usuario como se describe en [Cómo iniciar sesión en Consola de administración de AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) en la *Guía del usuario de AWS Sign-In*.

1. En la Consola de administración de AWS, elija su nombre de usuario en la barra de navegación que aparece en la parte superior derecha. Normalmente tiene el siguiente aspecto: ***nombre\$1usuario*@*número\$1ID\$1cuenta\$1o\$1alias***.

1. Elija uno de los siguientes métodos para especificar los detalles de la aplicación:
   + Elija **Cambiar rol**.
   + Si optó por el soporte multisesión, elija **Agregar sesión** y seleccione **Cambiar rol**.
**nota**  
Puede iniciar sesión en hasta cinco identidades diferentes al mismo tiempo en un solo navegador web en la Consola de administración de AWS. Para obtener más información, consulte [Cómo iniciar sesión en varias cuentas](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html) en la *Guía de introducción a Consola de administración de AWS*.

1. En la página **Switch Role (Cambiar rol)**, escriba el número del ID de la cuenta o el alias de la cuenta y el nombre del rol que le proporcionó el administrador.
**nota**  
Si su administrador creó el rol con una ruta como, por ejemplo, `division_abc/subdivision_efg/roleToDoX`, deberá escribir dicha ruta y el nombre completos en el recuadro **Role (Rol)**. Si escribe solamente el nombre del rol, o si la longitud combinada de `Path` y `RoleName` sobrepasa los 64 caracteres, el cambio de rol producirá un error. Se trata de un límite de las cookies del navegador que almacenan el nombre del rol. Si esto ocurre, póngase en contacto con el administrador y pídale que reduzca el tamaño de la ruta y del nombre del rol.

1. (Opcional) Puede introducir un nombre para mostrar y elegir un color de visualización que resalte el rol en la barra de navegación de la consola.
   + En **Nombre de visualización**, escriba el texto que quiere que aparezca en la barra de navegación, en lugar de su nombre de usuario, cuando este rol esté activo. El sistema le sugiere un nombre en función de la información de la cuenta y del rol, pero puede cambiarlo si lo desea. 
   + En **Color de visualización**, elija un color para resaltar el nombre de visualización.

   El nombre y el color pueden ayudarle a saber cuándo está activo el rol, lo que modificará sus permisos. Por ejemplo, en el caso de un rol que le ofrece acceso al entorno de prueba, puede especificar un **Nombre que mostrar** de **Test** y seleccionar el **Color** verde. En el caso de un rol que le ofrece acceso al entorno de producción, puede especificar un **Nombre de visualización** de **Production** y seleccionar el **Color** rojo.

1. Elija **Switch Role**. El nombre y el color de visualización sustituyen su nombre de usuario en la barra de navegación y, a partir de ese momento, puede empezar a utilizar los permisos que le concede dicho rol.

1. Una vez que haya completado las tareas que requieren el rol de IAM, puede volver a su sesión original. De este modo, se eliminarán los permisos adicionales proporcionados por el rol y se devolverán los permisos estándar.

   1. En la consola de IAM, elija el **Nombre de visualización** del rol en la parte superior derecha de la barra de navegación.

   1. Elija **Volver**.

      Por ejemplo, supongamos que ha iniciado sesión en el número de cuenta `123456789012` con el nombre de usuario `Richard`. Después de utilizar el rol `admin-role`, desea dejar de utilizarlo y volver a los permisos originales. Para dejar de utilizar el rol, elija **admin-role @ 123456789012** y luego elija **Volver**.  
![\[Gráfico que muestra la función Volver para dejar de utilizar un rol de IAM y volver al usuario original.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/role-stop-using.png)

**sugerencia**  
Los últimos roles que utilizó aparecen en el menú . La próxima vez que necesite cambiar a uno de estos roles, solo debe elegir el rol que prefiera. Si el rol no se muestra en el menú, solo tiene que escribir la información de la cuenta y del rol manualmente.

## Recursos adicionales
<a name="id_roles_use_switch-role-console_additional_resources"></a>
+ [Conceder a un usuario permisos para cambiar de rol](id_roles_use_permissions-to-switch.md)
+ [Conceder permisos a un usuario para transferir un rol a un servicio de AWS](id_roles_use_passrole.md)
+ [Creación de un rol para delegar permisos a un usuario de IAM](id_roles_create_for-user.md)
+ [Crear un rol para delegar permisos a un servicio de AWS](id_roles_create_for-service.md)
+ [Solucionar problemas de roles de IAM](troubleshoot_roles.md)

# Cambiar a un rol de IAM (AWS CLI)
<a name="id_roles_use_switch-role-cli"></a>

Un *rol* especifica un conjunto de permisos que puede utilizar para acceder a los recursos de AWS que necesita. En este sentido, es similar a un [usuario de IAM en AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html). Al iniciar sesión como usuario, obtendrá un conjunto específico de permisos. Sin embargo, no inicia sesión en una función, sino que después de iniciar sesión como usuario, puede cambiar a una función. Esto anula temporalmente los permisos de usuario originales y, en su lugar, le otorga los permisos asignados al rol. El rol puede estar en su propia cuenta o en cualquier otra Cuenta de AWS. Para obtener más información acerca de los roles, sus beneficios y cómo crearlos y configurarlos, consulte [Roles de IAM](id_roles.md) y [Creación de roles de IAM](id_roles_create.md). Para obtener más información sobre los distintos métodos que puede utilizar para asumir un rol, consulte [Métodos para asumir un rol](id_roles_manage-assume.md).

**importante**  
Los permisos del usuario de IAM y de cualquier rol que asuma no se acumulan. Solo hay un conjunto de permisos activo a la vez. Cuando se asume un rol, se abandonan temporalmente los permisos de usuario o del rol anteriores y se trabaja con los permisos que el rol tenga asignados. Al salir del rol, los permisos de usuario se restablecen de forma automática.

Puede utilizar un rol para ejecutar un comando de la AWS CLI si ha iniciado sesión como usuario de IAM. También puede utilizar un rol para ejecutar un comando AWS CLI de la cuando haya iniciado sesión como [usuario autenticado externamente](id_roles_providers.md) ([SAML](id_roles_providers_saml.md) o [OIDC](id_roles_providers_oidc.md)) que ya utiliza un rol. Además, puede utilizar un rol para ejecutar un comando de la AWS CLI desde una instancia de Amazon EC2 que esté asociada a un rol a través de su perfil de instancias. No puede asumir un rol si ha iniciado sesión como usuario Usuario raíz de la cuenta de AWS.

[**Encadenamiento de roles**](id_roles.md#iam-term-role-chaining)— También puede utilizar el encadenamiento de roles, que consiste en utilizar permisos de un rol para tener acceso a otro.

De forma predeterminada, la sesión de rol dura una hora. Cuando se asume este rol utilizando las operaciones de la CLI `assume-role*`, se puede especificar un valor para el parámetro `duration-seconds`. 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. Si cambia de rol en la consola, la duración de la sesión se limita a un máximo de una hora. Para obtener información sobre cómo ver el valor máximo para el rol, consulte [Actualizar la duración máxima de la sesión para un rol](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Si utiliza el encadenamiento de roles, la sesión tiene una duración máxima de una hora. Si utiliza a continuación el parámetro `duration-seconds` para proporcionar un valor superior a una hora, la operación generará un error.

## Escenario de ejemplo: cambio a un rol de producción
<a name="switch-role-cli-scenario-prod-env"></a>

Imagine que es un usuario de IAM para trabajar en el entorno de desarrollo. En esta situación, ocasionalmente necesita trabajar con el entorno de producción en la línea de comandos con la [AWS CLI](https://aws.amazon.com/cli/). Ya tiene una credencial de clave de acceso a su disposición. Este puede ser el par de claves de acceso asignado a su usuario de IAM estándar. O bien, si inició sesión como una entidad principal federada de SAML u OIDC, pueden ser el par de claves de acceso del rol que se le asignó inicialmente. Si sus permisos actuales le permiten asumir un rol IAM específico, puede identificar dicho rol en un "perfil" de los archivos de configuración de AWS CLI. Este comando se ejecuta con los permisos de la función de IAM especificada, no con la identidad original. Tenga en cuenta que al especificar dicho perfil en un comando de la AWS CLI, está utilizando el nuevo rol. En esta situación, no puede hacer uso de sus permisos originales en la cuenta de desarrollo al mismo tiempo. La razón es que no puede haber más de un conjunto de permisos en vigor a la vez.

**nota**  
Por motivos de seguridad, los administradores pueden [revisar los registros de AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quién realizó una acción en AWS. Es posible que el administrador requiera que especifique una identidad de origen o un nombre de la sesión de rol cuando asuma el rol. Para obtener más información, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) y [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

**Para cambiar a una función de producción (AWS CLI)**

1. <a name="step-configure-default"></a>En caso de que nunca haya utilizado AWS CLI, primero debe configurar su perfil de CLI predeterminado. Abra un símbolo del sistema y configure la instalación de AWS CLI para utilizar la clave de acceso de su usuario de IAM o de su rol federado. Para obtener más información, consulte [Configuración de la AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) en la *Guía del usuario de AWS Command Line Interface*.

   Ejecute el comando [aws configure](https://docs.aws.amazon.com/cli/latest/reference/configure/) de la siguiente manera:

   ```
   aws configure
   ```

   Cuando se le pida, proporcione la siguiente información:

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-2
   Default output format [None]: json
   ```

1. Cree un nuevo perfil para la función del archivo `.aws/config` en Unix o Linux, o el archivo `C:\Users\USERNAME\.aws\config` en Windows. El siguiente ejemplo crea un perfil denominado `prodaccess` que cambia a la función `ProductionAccessRole` en la cuenta `123456789012`. Obtendrá el ARN del rol del administrador de la cuenta que creó el rol. Si este perfil se invoca, AWS CLI utiliza las credenciales de `source_profile` para solicitar credenciales para el rol. Por esta razón, la identidad a la que se hace referencia como `source_profile` debe tener permisos de `sts:AssumeRole` para la función especificada en `role_arn`.

   ```
   [profile prodaccess]
       role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole
       source_profile = default
   ```

1. Después de crear el nuevo perfil, cualquier comando de AWS CLI que especifique el parámetro `--profile prodaccess` se ejecuta bajo los permisos asociados al rol de IAM `ProductionAccessRole` en lugar de hacerlo en el usuario predeterminado.

   ```
   aws iam list-users --profile prodaccess
   ```

   Este comando funciona si los permisos asignados a `ProductionAccessRole` permiten enumerar los usuarios de la cuenta actual de AWS.

1. Para volver a los permisos concedidos por sus credenciales originales, ejecute comandos sin el parámetro `--profile`. La AWS CLI vuelve a utilizar las credenciales de su perfil predeterminado, que configuró en [Step 1](#step-configure-default).

Para obtener más información, consulte [Asumir un rol](https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html) en la *Guía del usuario de AWS Command Line Interface*.

## Escenario de ejemplo: Permitir que una función de perfil de instancias cambie una función en otra cuenta
<a name="switch-role-cli-scenario-ec2-instance"></a>

Imagine que está utilizando dos Cuentas de AWS y desea permitir que una aplicación se ejecute en una instancia de Amazon EC2 para ejecutar comandos [AWS CLI](https://aws.amazon.com/cli/) en ambas cuentas. Supongamos que la instancia EC2 existe en la cuenta `111111111111`. Dicha instancia incluye la función de perfil de instancias `abcd` que permite que la aplicación realice tareas de solo lectura de Amazon S3 en el bucket `amzn-s3-demo-bucket1` dentro de la misma cuenta `111111111111`. Sin embargo, la aplicación también debe tener permitido asumir la función entre cuentas `efgh` para realizar tareas de la cuenta `222222222222`. Para ello, la función del perfil de instancia EC2 `abcd` debe tener la siguiente política de permisos:

***Política de permisos del rol de la cuenta 111111111111 `abcd`***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        },
        {
            "Sid": "AllowIPToAssumeCrossAccountRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::222222222222:role/efgh"
        }
    ]
}
```

------

Supongamos que la función entre cuentas `efgh` permite tareas de solo lectura de Amazon S3 en el bucket `amzn-s3-demo-bucket2` dentro de la misma cuenta `222222222222`. Para ello, la función entre cuentas `efgh` debe tener la siguiente política de permisos:

***Política de permisos del rol de la cuenta 222222222222 `efgh`***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

La función `efgh` debe permitir la función de perfil de instancia `abcd` para asumirla. Para ello, la función `efgh` debe tener la siguiente política de confianza:

***Política de confianza de rol `efgh` de la cuenta 222222222222 ***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "efghTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"}
        }
    ]
}
```

------

Para ejecutar los comandos de la AWS CLI en la cuenta `222222222222`, debe actualizar el archivo de configuración de la CLI. Identifique la función `efgh` como el "perfil" y la función del perfil de instancia EC2 `abcd` como la "fuente de credenciales" en el archivo de configuración de la AWS CLI. A continuación, los comandos de la CLI se ejecutan con los permisos de la función `efgh`, no la función `abcd` original.

**nota**  
Por motivos de seguridad, puede utilizar AWS CloudTrail para auditar el uso de roles en la cuenta. Para diferenciar entre sesiones de rol cuando diferentes entidades principales utilizan un rol en los logs de CloudTrail, puede utilizar el nombre de sesión de rol. Si la AWS CLI asume un rol en nombre de un usuario, tal y como se describe en este tema, se crea automáticamente un nombre de sesión de rol con el formato `AWS-CLI-session-nnnnnnnn`. Aquí *nnnnnnnn* es un número entero que representa la hora en [formato de tiempo Unix](http://wikipedia.org/wiki/Unix_time) (el número de segundos desde la medianoche UTC del 1 de enero de 1970). Para obtener más información, consulte [Referencia de eventos de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) en la *Guía del usuario de AWS CloudTrail*.

**Para permitir que un perfil de instancia de EC2 cambie a una función entre cuentas (AWS CLI)**

1. No tiene que configurar un perfil de CLI predeterminado. En su lugar, puede cargar las credenciales de los metadatos del perfil de instancia EC2. Cree un nuevo perfil para el rol en el archivo `.aws/config`. En el siguiente ejemplo, se crea un perfil `instancecrossaccount` que cambia a la función `efgh` en la cuenta `222222222222`. Si este perfil se invoca, la AWS CLI utiliza las credenciales de los metadatos del perfil de instancia EC2 para solicitar credenciales para la función. Por esta razón, la función del perfil de instancia EC2 debe tener permisos de `sts:AssumeRole` para la función especificada en `role_arn`.

   ```
   [profile instancecrossaccount]
   role_arn = arn:aws:iam::222222222222:role/efgh
   credential_source = Ec2InstanceMetadata
   ```

1. Después de crear el nuevo perfil, cualquier comando de AWS CLI que especifique el parámetro `--profile instancecrossaccount` se ejecuta bajo los permisos asociados a la función de `efgh` en la cuenta `222222222222`.

   ```
   aws s3 ls amzn-s3-demo-bucket2 --profile instancecrossaccount
   ```

   Este comando funciona si los permisos asignados a la función `efgh` permiten enumerar los usuarios de la Cuenta de AWS actual.

1. Para volver a los permisos del perfil de instancia EC2 original de la cuenta `111111111111`, ejecute los comandos de la CLI sin el parámetro `--profile`.

Para obtener más información, consulte [Asumir un rol](https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html) en la *Guía del usuario de AWS Command Line Interface*.

# Cambiar a un rol de IAM (Herramientas para Windows PowerShell)
<a name="id_roles_use_switch-role-twp"></a>

Un *rol* especifica un conjunto de permisos que puede utilizar para acceder a los recursos de AWS que necesita. En este sentido, es similar a un [usuario de IAM en AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html). Al iniciar sesión como usuario, obtendrá un conjunto específico de permisos. Sin embargo, no inicia sesión en un rol propiamente, si no que al iniciar sesión puede cambiar a un rol. Esto anula temporalmente los permisos de usuario originales y, en su lugar, le otorga los permisos asignados al rol. El rol puede estar en su propia cuenta o en cualquier otra Cuenta de AWS. Para obtener más información acerca de los roles, sus beneficios y cómo crearlos y configurarlos, consulte [Roles de IAM](id_roles.md) y [Creación de roles de IAM](id_roles_create.md).

**importante**  
Los permisos de sus usuarios de IAM y de cualquier rol al que cambie no se acumulan. Solo hay un conjunto de permisos activo a la vez. Cuando se cambia a un rol, se abandonan temporalmente los permisos de usuario y se trabaja con los permisos que el rol tenga asignados. Al salir del rol, los permisos de usuario se restablecen de forma automática.

En esta sección se describe cómo cambiar de rol cuando trabaja en la línea de comando con la AWS Tools for Windows PowerShell.

Supongamos que dispone de una cuenta para trabajar en el entorno de desarrollo y que de vez en cuando tiene que trabajar en el entorno de producción en la línea de comandos con [Tools for Windows PowerShell](https://aws.amazon.com/powershell/). Ya tiene una credencial de clave de acceso a su disposición. Puede ser un par de claves de acceso asignado a su usuario de IAM estándar. O bien, si inició sesión como una entidad principal federada de SAML u OIDC, dichas credenciales pueden corresponder al par de claves de acceso del rol que se le asignó inicialmente. Puede utilizar estas credenciales para ejecutar el cmdlet `Use-STSRole` que transfiere el ARN de un rol nuevo como parámetro. El comando devuelve credenciales de seguridad temporales para el rol solicitado. Puede utilizar estas credenciales en comandos de PowerShell posteriores con los permisos del rol para obtener acceso a los recursos de producción. Mientras utiliza el rol, no puede utilizar sus permisos de usuario de la cuenta Development ya que solo puede haber un conjunto de permisos en vigor a la vez.

**nota**  
Por motivos de seguridad, los administradores pueden [revisar los registros de AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quién realizó una acción en AWS. Es posible que el administrador requiera que especifique una identidad de origen o un nombre de la sesión de rol cuando asuma el rol. Para obtener más información, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) y [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Tenga en cuenta que todas las claves de acceso y tokens solo son ejemplos y no se pueden utilizar tal y como se muestran. Tiene que sustituirlos por los valores adecuados de su entorno real.

**Para cambiar a un rol (Tools for Windows PowerShell)**

1. Abra un símbolo del sistema de PowerShell y configure el perfil predeterminado para utilizar la clave de acceso de su usuario de IAM actual o de su rol federado. Si ya ha utilizado anteriormente Tools for Windows PowerShell, probablemente esta tarea ya esté completada. Tenga en cuenta que solo puede cambiar de rol si inicia sesión como un usuario de IAM y no como el Usuario raíz de la cuenta de AWS.

   ```
   PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7EXAMPLE -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -StoreAs MyMainUserProfile
   PS C:\> Initialize-AWSDefaults -ProfileName MyMainUserProfile -Region us-east-2
   ```

   Para obtener más información, consulte la [especificación de credenciales AWS](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) en la *Guía del usuario de Herramientas de AWS para PowerShell*.

1. Para recuperar credenciales para el nuevo rol, ejecute el siguiente comando para cambiar al rol `RoleName` de la cuenta 123456789012. Obtendrá el ARN del rol del administrador de la cuenta que creó el rol. El comando requiere que indique también un nombre de sesión. Puede elegir cualquier texto para ello. El comando siguiente solicita las credenciales y después captura el objeto de propiedad `Credentials` del objeto de los resultados devueltos y lo almacena en la variable `$Creds`.

   ```
   PS C:\> $Creds = (Use-STSRole -RoleArn "arn:aws:iam::123456789012:role/RoleName" -RoleSessionName "MyRoleSessionName").Credentials
   ```

   `$Creds` es un objeto que ahora contiene los elementos `AccessKeyId`, `SecretAccessKey` y `SessionToken` que necesita en los pasos siguientes. Los siguientes comandos de ejemplo ilustran valores típicos:

   ```
   PS C:\> $Creds.AccessKeyId
   AKIAIOSFODNN7EXAMPLE
   
   PS C:\> $Creds.SecretAccessKey
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   
   PS C:\> $Creds.SessionToken
   AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvSRyh0FW7jEXAMPLEW+vE/7s1HRp
   XviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPy
   Oj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UuysgsKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/C
   s8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87eNhyDHq6ikBQ==
   
   PS C:\> $Creds.Expiration
   Thursday, June 18, 2018 2:28:31 PM
   ```

1. Para utilizar estas credenciales para cualquier comando posterior, inclúyalas en el parámetro `-Credential`. Por ejemplo, el comando siguiente utiliza las credenciales del rol y trabaja únicamente si se concede al rol el permiso `iam:ListRoles` y, por lo tanto, puede ejecutar el cmdlet `Get-IAMRoles`:

   ```
           PS C:\> get-iamroles -Credential $Creds
   ```

1. Para volver a tener sus credenciales originales, solo tiene que dejar de utilizar el parámetro `-Credentials $Creds` y permitir que PowerShell revierta a las credenciales que están almacenadas en el perfil predeterminado.

# Cambiar a un rol de IAM (API de AWS)
<a name="id_roles_use_switch-role-api"></a>

Un *rol* especifica un conjunto de permisos que puede utilizar para el acceso a los recursos de AWS. En este sentido, es similar a un [usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html). Una entidad principal (persona o aplicación) asume un rol para recibir permisos temporales con los que realizar las tareas necesarias e interactuar con los recursos de AWS. El rol puede estar en su propia cuenta o en cualquier otra Cuenta de AWS. Para obtener más información acerca de los roles, sus beneficios y cómo crearlos y configurarlos, consulte [Roles de IAM](id_roles.md) y [Creación de roles de IAM](id_roles_create.md). Para obtener más información sobre los distintos métodos que puede utilizar para asumir un rol, consulte [Métodos para asumir un rol](id_roles_manage-assume.md).

**importante**  
Los permisos del usuario de IAM y de cualquier rol que asuma no se acumulan. Solo hay un conjunto de permisos activo a la vez. Cuando se asume un rol, se abandonan temporalmente los permisos de usuario o del rol anteriores y se trabaja con los permisos que el rol tenga asignados. Al salir del rol, los permisos originales se restablecen de forma automática.

Para asumir un rol, una aplicación llama a la operación de la API de AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) y transfiere el ARN del rol que se utilizará. La operación crea una nueva sesión con credenciales temporales. Esta sesión tiene los mismos permisos que las políticas basadas en identidad aplicables al rol. 

Cuando se llama a [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), también se puede pasar opcionalmente una [política de sesión](access_policies.md#policies_session) gestionada o insertada. Las políticas de sesión son políticas avanzadas que se transfieren como parámetro al crear mediante programación una sesión de credenciales temporales para un rol o una sesión de usuario federado. Puede transferir un único documento de política de sesión insertada JSON utilizando el parámetro `Policy`. Puede utilizar el parámetro `PolicyArns` para especificar hasta 10 políticas de sesión administrada. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades de la entidad y las políticas de la sesión. Las políticas de sesión son útiles cuando es necesario proporcionar las credenciales temporales del rol a otra persona. Pueden utilizar las credenciales temporales del rol en las llamadas posteriores a la API de AWS para tener acceso a los recursos de la cuenta propietaria del rol. Las políticas de sesión no se pueden utilizar para conceder más permisos que los permitidos por la política basada en identidades. Para obtener más información sobre cómo determina AWS los permisos efectivos de un rol, consulte [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md). 

![\[PermissionsWhenPassingRoles_Diagram\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


Puede llamar a `AssumeRole` cuando haya iniciado sesión como usuario de IAM, o como usuario [autenticado externamente](id_roles_providers.md) ([SAML](id_roles_providers_saml.md) o [OIDC](id_roles_providers_oidc.md)) que ya utiliza un rol. También puede utilizar el [*encadenamiento de roles*](id_roles.md#iam-term-role-chaining), que consiste en utilizar un rol para asumir otro. No puede asumir un rol si ha iniciado sesión como usuario Usuario raíz de la cuenta de AWS.

De forma predeterminada, la sesión de rol dura una hora. Cuando se asume este rol utilizando las operaciones de la API de AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), se puede especificar un valor para el parámetro `DurationSeconds`. 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. Para obtener información sobre cómo ver el valor máximo para el rol, consulte [Actualizar la duración máxima de la sesión para un rol](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Si utiliza el encadenamiento de roles, la sesión tiene una duración máxima de una hora. Si utiliza a continuación el parámetro `DurationSeconds` para proporcionar un valor superior a una hora, la operación generará un error.

**nota**  
Por motivos de seguridad, los administradores pueden [revisar los registros de AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quién realizó una acción en AWS. Es posible que el administrador requiera que especifique una identidad de origen o un nombre de la sesión de rol cuando asuma el rol. Para obtener más información, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) y [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Los siguientes ejemplos de código muestran cómo crear un usuario y asumir un rol.

**aviso**  
Para evitar riesgos de seguridad, no utilice a los usuarios de IAM para la autenticación cuando desarrolle software especialmente diseñado o trabaje con datos reales. En cambio, utilice la federación con un proveedor de identidades como [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).
+ Crear un usuario que no tenga permisos.
+ Crear un rol que conceda permiso para enumerar los buckets de Amazon S3 para la cuenta.
+ Agregar una política para que el usuario asuma el rol.
+ Asumir el rol y enumerar los buckets de S3 con credenciales temporales, y después limpiar los recursos.

------
#### [ .NET ]

**SDK para .NET**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/IAM#code-examples). 

```
global using Amazon.IdentityManagement;
global using Amazon.S3;
global using Amazon.SecurityToken;
global using IAMActions;
global using IamScenariosCommon;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
global using Microsoft.Extensions.Logging.Console;
global using Microsoft.Extensions.Logging.Debug;


namespace IAMActions;

public class IAMWrapper
{
    private readonly IAmazonIdentityManagementService _IAMService;

    /// <summary>
    /// Constructor for the IAMWrapper class.
    /// </summary>
    /// <param name="IAMService">An IAM client object.</param>
    public IAMWrapper(IAmazonIdentityManagementService IAMService)
    {
        _IAMService = IAMService;
    }

    /// <summary>
    /// Attach an IAM policy to a role.
    /// </summary>
    /// <param name="policyArn">The policy to attach.</param>
    /// <param name="roleName">The role that the policy will be attached to.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> AttachRolePolicyAsync(string policyArn, string roleName)
    {
        var response = await _IAMService.AttachRolePolicyAsync(new AttachRolePolicyRequest
        {
            PolicyArn = policyArn,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Create an IAM access key for a user.
    /// </summary>
    /// <param name="userName">The username for which to create the IAM access
    /// key.</param>
    /// <returns>The AccessKey.</returns>
    public async Task<AccessKey> CreateAccessKeyAsync(string userName)
    {
        var response = await _IAMService.CreateAccessKeyAsync(new CreateAccessKeyRequest
        {
            UserName = userName,
        });

        return response.AccessKey;

    }


    /// <summary>
    /// Create an IAM policy.
    /// </summary>
    /// <param name="policyName">The name to give the new IAM policy.</param>
    /// <param name="policyDocument">The policy document for the new policy.</param>
    /// <returns>The new IAM policy object.</returns>
    public async Task<ManagedPolicy> CreatePolicyAsync(string policyName, string policyDocument)
    {
        var response = await _IAMService.CreatePolicyAsync(new CreatePolicyRequest
        {
            PolicyDocument = policyDocument,
            PolicyName = policyName,
        });

        return response.Policy;
    }


    /// <summary>
    /// Create a new IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <param name="rolePolicyDocument">The name of the IAM policy document
    /// for the new role.</param>
    /// <returns>The Amazon Resource Name (ARN) of the role.</returns>
    public async Task<string> CreateRoleAsync(string roleName, string rolePolicyDocument)
    {
        var request = new CreateRoleRequest
        {
            RoleName = roleName,
            AssumeRolePolicyDocument = rolePolicyDocument,
        };

        var response = await _IAMService.CreateRoleAsync(request);
        return response.Role.Arn;
    }


    /// <summary>
    /// Create an IAM service-linked role.
    /// </summary>
    /// <param name="serviceName">The name of the AWS Service.</param>
    /// <param name="description">A description of the IAM service-linked role.</param>
    /// <returns>The IAM role that was created.</returns>
    public async Task<Role> CreateServiceLinkedRoleAsync(string serviceName, string description)
    {
        var request = new CreateServiceLinkedRoleRequest
        {
            AWSServiceName = serviceName,
            Description = description
        };

        var response = await _IAMService.CreateServiceLinkedRoleAsync(request);
        return response.Role;
    }


    /// <summary>
    /// Create an IAM user.
    /// </summary>
    /// <param name="userName">The username for the new IAM user.</param>
    /// <returns>The IAM user that was created.</returns>
    public async Task<User> CreateUserAsync(string userName)
    {
        var response = await _IAMService.CreateUserAsync(new CreateUserRequest { UserName = userName });
        return response.User;
    }


    /// <summary>
    /// Delete an IAM user's access key.
    /// </summary>
    /// <param name="accessKeyId">The Id for the IAM access key.</param>
    /// <param name="userName">The username of the user that owns the IAM
    /// access key.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteAccessKeyAsync(string accessKeyId, string userName)
    {
        var response = await _IAMService.DeleteAccessKeyAsync(new DeleteAccessKeyRequest
        {
            AccessKeyId = accessKeyId,
            UserName = userName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM policy.
    /// </summary>
    /// <param name="policyArn">The Amazon Resource Name (ARN) of the policy to
    /// delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeletePolicyAsync(string policyArn)
    {
        var response = await _IAMService.DeletePolicyAsync(new DeletePolicyRequest { PolicyArn = policyArn });
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteRoleAsync(string roleName)
    {
        var response = await _IAMService.DeleteRoleAsync(new DeleteRoleRequest { RoleName = roleName });
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM role policy.
    /// </summary>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <param name="policyName">The name of the IAM role policy to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteRolePolicyAsync(string roleName, string policyName)
    {
        var response = await _IAMService.DeleteRolePolicyAsync(new DeleteRolePolicyRequest
        {
            PolicyName = policyName,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM user.
    /// </summary>
    /// <param name="userName">The username of the IAM user to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteUserAsync(string userName)
    {
        var response = await _IAMService.DeleteUserAsync(new DeleteUserRequest { UserName = userName });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM user policy.
    /// </summary>
    /// <param name="policyName">The name of the IAM policy to delete.</param>
    /// <param name="userName">The username of the IAM user.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteUserPolicyAsync(string policyName, string userName)
    {
        var response = await _IAMService.DeleteUserPolicyAsync(new DeleteUserPolicyRequest { PolicyName = policyName, UserName = userName });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Detach an IAM policy from an IAM role.
    /// </summary>
    /// <param name="policyArn">The Amazon Resource Name (ARN) of the IAM policy.</param>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DetachRolePolicyAsync(string policyArn, string roleName)
    {
        var response = await _IAMService.DetachRolePolicyAsync(new DetachRolePolicyRequest
        {
            PolicyArn = policyArn,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Gets the IAM password policy for an AWS account.
    /// </summary>
    /// <returns>The PasswordPolicy for the AWS account.</returns>
    public async Task<PasswordPolicy> GetAccountPasswordPolicyAsync()
    {
        var response = await _IAMService.GetAccountPasswordPolicyAsync(new GetAccountPasswordPolicyRequest());
        return response.PasswordPolicy;
    }


    /// <summary>
    /// Get information about an IAM policy.
    /// </summary>
    /// <param name="policyArn">The IAM policy to retrieve information for.</param>
    /// <returns>The IAM policy.</returns>
    public async Task<ManagedPolicy> GetPolicyAsync(string policyArn)
    {

        var response = await _IAMService.GetPolicyAsync(new GetPolicyRequest { PolicyArn = policyArn });
        return response.Policy;
    }


    /// <summary>
    /// Get information about an IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role to retrieve information
    /// for.</param>
    /// <returns>The IAM role that was retrieved.</returns>
    public async Task<Role> GetRoleAsync(string roleName)
    {
        var response = await _IAMService.GetRoleAsync(new GetRoleRequest
        {
            RoleName = roleName,
        });

        return response.Role;
    }


    /// <summary>
    /// Get information about an IAM user.
    /// </summary>
    /// <param name="userName">The username of the user.</param>
    /// <returns>An IAM user object.</returns>
    public async Task<User> GetUserAsync(string userName)
    {
        var response = await _IAMService.GetUserAsync(new GetUserRequest { UserName = userName });
        return response.User;
    }


    /// <summary>
    /// List the IAM role policies that are attached to an IAM role.
    /// </summary>
    /// <param name="roleName">The IAM role to list IAM policies for.</param>
    /// <returns>A list of the IAM policies attached to the IAM role.</returns>
    public async Task<List<AttachedPolicyType>> ListAttachedRolePoliciesAsync(string roleName)
    {
        var attachedPolicies = new List<AttachedPolicyType>();
        var attachedRolePoliciesPaginator = _IAMService.Paginators.ListAttachedRolePolicies(new ListAttachedRolePoliciesRequest { RoleName = roleName });

        await foreach (var response in attachedRolePoliciesPaginator.Responses)
        {
            attachedPolicies.AddRange(response.AttachedPolicies);
        }

        return attachedPolicies;
    }


    /// <summary>
    /// List IAM groups.
    /// </summary>
    /// <returns>A list of IAM groups.</returns>
    public async Task<List<Group>> ListGroupsAsync()
    {
        var groupsPaginator = _IAMService.Paginators.ListGroups(new ListGroupsRequest());
        var groups = new List<Group>();

        await foreach (var response in groupsPaginator.Responses)
        {
            groups.AddRange(response.Groups);
        }

        return groups;
    }


    /// <summary>
    /// List IAM policies.
    /// </summary>
    /// <returns>A list of the IAM policies.</returns>
    public async Task<List<ManagedPolicy>> ListPoliciesAsync()
    {
        var listPoliciesPaginator = _IAMService.Paginators.ListPolicies(new ListPoliciesRequest());
        var policies = new List<ManagedPolicy>();

        await foreach (var response in listPoliciesPaginator.Responses)
        {
            policies.AddRange(response.Policies);
        }

        return policies;
    }


    /// <summary>
    /// List IAM role policies.
    /// </summary>
    /// <param name="roleName">The IAM role for which to list IAM policies.</param>
    /// <returns>A list of IAM policy names.</returns>
    public async Task<List<string>> ListRolePoliciesAsync(string roleName)
    {
        var listRolePoliciesPaginator = _IAMService.Paginators.ListRolePolicies(new ListRolePoliciesRequest { RoleName = roleName });
        var policyNames = new List<string>();

        await foreach (var response in listRolePoliciesPaginator.Responses)
        {
            policyNames.AddRange(response.PolicyNames);
        }

        return policyNames;
    }


    /// <summary>
    /// List IAM roles.
    /// </summary>
    /// <returns>A list of IAM roles.</returns>
    public async Task<List<Role>> ListRolesAsync()
    {
        var listRolesPaginator = _IAMService.Paginators.ListRoles(new ListRolesRequest());
        var roles = new List<Role>();

        await foreach (var response in listRolesPaginator.Responses)
        {
            roles.AddRange(response.Roles);
        }

        return roles;
    }


    /// <summary>
    /// List SAML authentication providers.
    /// </summary>
    /// <returns>A list of SAML providers.</returns>
    public async Task<List<SAMLProviderListEntry>> ListSAMLProvidersAsync()
    {
        var response = await _IAMService.ListSAMLProvidersAsync(new ListSAMLProvidersRequest());
        return response.SAMLProviderList;
    }


    /// <summary>
    /// List IAM users.
    /// </summary>
    /// <returns>A list of IAM users.</returns>
    public async Task<List<User>> ListUsersAsync()
    {
        var listUsersPaginator = _IAMService.Paginators.ListUsers(new ListUsersRequest());
        var users = new List<User>();

        await foreach (var response in listUsersPaginator.Responses)
        {
            users.AddRange(response.Users);
        }

        return users;
    }


    /// <summary>
    /// Update the inline policy document embedded in a role.
    /// </summary>
    /// <param name="policyName">The name of the policy to embed.</param>
    /// <param name="roleName">The name of the role to update.</param>
    /// <param name="policyDocument">The policy document that defines the role.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> PutRolePolicyAsync(string policyName, string roleName, string policyDocument)
    {
        var request = new PutRolePolicyRequest
        {
            PolicyName = policyName,
            RoleName = roleName,
            PolicyDocument = policyDocument
        };

        var response = await _IAMService.PutRolePolicyAsync(request);
        return response.HttpStatusCode == HttpStatusCode.OK;
    }


    /// <summary>
    /// Add or update an inline policy document that is embedded in an IAM user.
    /// </summary>
    /// <param name="userName">The name of the IAM user.</param>
    /// <param name="policyName">The name of the IAM policy.</param>
    /// <param name="policyDocument">The policy document defining the IAM policy.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> PutUserPolicyAsync(string userName, string policyName, string policyDocument)
    {
        var request = new PutUserPolicyRequest
        {
            UserName = userName,
            PolicyName = policyName,
            PolicyDocument = policyDocument
        };

        var response = await _IAMService.PutUserPolicyAsync(request);
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }

    /// <summary>
    /// Wait for a new access key to be ready to use.
    /// </summary>
    /// <param name="accessKeyId">The Id of the access key.</param>
    /// <returns>A boolean value indicating the success of the action.</returns>
    public async Task<bool> WaitUntilAccessKeyIsReady(string accessKeyId)
    {
        var keyReady = false;

        do
        {
            try
            {
                var response = await _IAMService.GetAccessKeyLastUsedAsync(
                    new GetAccessKeyLastUsedRequest { AccessKeyId = accessKeyId });
                if (response.UserName is not null)
                {
                    keyReady = true;
                }
            }
            catch (NoSuchEntityException)
            {
                keyReady = false;
            }
        } while (!keyReady);

        return keyReady;
    }
}



using Microsoft.Extensions.Configuration;

namespace IAMBasics;

public class IAMBasics
{
    private static ILogger logger = null!;

    static async Task Main(string[] args)
    {
        // Set up dependency injection for the AWS service.
        using var host = Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logging =>
                logging.AddFilter("System", LogLevel.Debug)
                    .AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Information)
                    .AddFilter<ConsoleLoggerProvider>("Microsoft", LogLevel.Trace))
            .ConfigureServices((_, services) =>
            services.AddAWSService<IAmazonIdentityManagementService>()
            .AddTransient<IAMWrapper>()
            .AddTransient<UIWrapper>()
            )
            .Build();

        logger = LoggerFactory.Create(builder => { builder.AddConsole(); })
            .CreateLogger<IAMBasics>();


        IConfiguration configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("settings.json") // Load test settings from .json file.
            .AddJsonFile("settings.local.json",
                true) // Optionally load local settings.
            .Build();

        // Values needed for user, role, and policies.
        string userName = configuration["UserName"]!;
        string s3PolicyName = configuration["S3PolicyName"]!;
        string roleName = configuration["RoleName"]!;


        var iamWrapper = host.Services.GetRequiredService<IAMWrapper>();
        var uiWrapper = host.Services.GetRequiredService<UIWrapper>();

        uiWrapper.DisplayBasicsOverview();
        uiWrapper.PressEnter();

        // First create a user. By default, the new user has
        // no permissions.
        uiWrapper.DisplayTitle("Create User");
        Console.WriteLine($"Creating a new user with user name: {userName}.");
        var user = await iamWrapper.CreateUserAsync(userName);
        var userArn = user.Arn;

        Console.WriteLine($"Successfully created user: {userName} with ARN: {userArn}.");
        uiWrapper.WaitABit(15, "Now let's wait for the user to be ready for use.");

        // Define a role policy document that allows the new user
        // to assume the role.
        string assumeRolePolicyDocument = "{" +
          "\"Version\": \"2012-10-17\"," +
          "\"Statement\": [{" +
              "\"Effect\": \"Allow\"," +
              "\"Principal\": {" +
              $"	\"AWS\": \"{userArn}\"" +
              "}," +
              "\"Action\": \"sts:AssumeRole\"" +
          "}]" +
        "}";

        // Permissions to list all buckets.
        string policyDocument = "{" +
            "\"Version\": \"2012-10-17\"," +
            "	\"Statement\" : [{" +
                "	\"Action\" : [\"s3:ListAllMyBuckets\"]," +
                "	\"Effect\" : \"Allow\"," +
                "	\"Resource\" : \"*\"" +
            "}]" +
        "}";

        // Create an AccessKey for the user.
        uiWrapper.DisplayTitle("Create access key");
        Console.WriteLine("Now let's create an access key for the new user.");
        var accessKey = await iamWrapper.CreateAccessKeyAsync(userName);

        var accessKeyId = accessKey.AccessKeyId;
        var secretAccessKey = accessKey.SecretAccessKey;

        Console.WriteLine($"We have created the access key with Access key id: {accessKeyId}.");

        Console.WriteLine("Now let's wait until the IAM access key is ready to use.");
        var keyReady = await iamWrapper.WaitUntilAccessKeyIsReady(accessKeyId);

        // Now try listing the Amazon Simple Storage Service (Amazon S3)
        // buckets. This should fail at this point because the user doesn't
        // have permissions to perform this task.
        uiWrapper.DisplayTitle("Try to display Amazon S3 buckets");
        Console.WriteLine("Now let's try to display a list of the user's Amazon S3 buckets.");
        var s3Client1 = new AmazonS3Client(accessKeyId, secretAccessKey);
        var stsClient1 = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKey);

        var s3Wrapper = new S3Wrapper(s3Client1, stsClient1);
        var buckets = await s3Wrapper.ListMyBucketsAsync();

        Console.WriteLine(buckets is null
            ? "As expected, the call to list the buckets has returned a null list."
            : "Something went wrong. This shouldn't have worked.");

        uiWrapper.PressEnter();

        uiWrapper.DisplayTitle("Create IAM role");
        Console.WriteLine($"Creating the role: {roleName}");

        // Creating an IAM role to allow listing the S3 buckets. A role name
        // is not case sensitive and must be unique to the account for which it
        // is created.
        var roleArn = await iamWrapper.CreateRoleAsync(roleName, assumeRolePolicyDocument);

        uiWrapper.PressEnter();

        // Create a policy with permissions to list S3 buckets.
        uiWrapper.DisplayTitle("Create IAM policy");
        Console.WriteLine($"Creating the policy: {s3PolicyName}");
        Console.WriteLine("with permissions to list the Amazon S3 buckets for the account.");
        var policy = await iamWrapper.CreatePolicyAsync(s3PolicyName, policyDocument);

        // Wait 15 seconds for the IAM policy to be available.
        uiWrapper.WaitABit(15, "Waiting for the policy to be available.");

        // Attach the policy to the role you created earlier.
        uiWrapper.DisplayTitle("Attach new IAM policy");
        Console.WriteLine("Now let's attach the policy to the role.");
        await iamWrapper.AttachRolePolicyAsync(policy.Arn, roleName);

        // Wait 15 seconds for the role to be updated.
        Console.WriteLine();
        uiWrapper.WaitABit(15, "Waiting for the policy to be attached.");

        // Use the AWS Security Token Service (AWS STS) to have the user
        // assume the role we created.
        var stsClient2 = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKey);

        // Wait for the new credentials to become valid.
        uiWrapper.WaitABit(10, "Waiting for the credentials to be valid.");

        var assumedRoleCredentials = await s3Wrapper.AssumeS3RoleAsync("temporary-session", roleArn);

        // Try again to list the buckets using the client created with
        // the new user's credentials. This time, it should work.
        var s3Client2 = new AmazonS3Client(assumedRoleCredentials);

        s3Wrapper.UpdateClients(s3Client2, stsClient2);

        buckets = await s3Wrapper.ListMyBucketsAsync();

        uiWrapper.DisplayTitle("List Amazon S3 buckets");
        Console.WriteLine("This time we should have buckets to list.");
        if (buckets is not null)
        {
            buckets.ForEach(bucket =>
            {
                Console.WriteLine($"{bucket.BucketName} created: {bucket.CreationDate}");
            });
        }

        uiWrapper.PressEnter();

        // Now clean up all the resources used in the example.
        uiWrapper.DisplayTitle("Clean up resources");
        Console.WriteLine("Thank you for watching. The IAM Basics demo is complete.");
        Console.WriteLine("Please wait while we clean up the resources we created.");

        await iamWrapper.DetachRolePolicyAsync(policy.Arn, roleName);

        await iamWrapper.DeletePolicyAsync(policy.Arn);

        await iamWrapper.DeleteRoleAsync(roleName);

        await iamWrapper.DeleteAccessKeyAsync(accessKeyId, userName);

        await iamWrapper.DeleteUserAsync(userName);

        uiWrapper.PressEnter();

        Console.WriteLine("All done cleaning up our resources. Thank you for your patience.");
    }
}


namespace IamScenariosCommon;

using System.Net;

/// <summary>
/// A class to perform Amazon Simple Storage Service (Amazon S3) actions for
/// the IAM Basics scenario.
/// </summary>
public class S3Wrapper
{
    private IAmazonS3 _s3Service;
    private IAmazonSecurityTokenService _stsService;

    /// <summary>
    /// Constructor for the S3Wrapper class.
    /// </summary>
    /// <param name="s3Service">An Amazon S3 client object.</param>
    /// <param name="stsService">An AWS Security Token Service (AWS STS)
    /// client object.</param>
    public S3Wrapper(IAmazonS3 s3Service, IAmazonSecurityTokenService stsService)
    {
        _s3Service = s3Service;
        _stsService = stsService;
    }

    /// <summary>
    /// Assumes an AWS Identity and Access Management (IAM) role that allows
    /// Amazon S3 access for the current session.
    /// </summary>
    /// <param name="roleSession">A string representing the current session.</param>
    /// <param name="roleToAssume">The name of the IAM role to assume.</param>
    /// <returns>Credentials for the newly assumed IAM role.</returns>
    public async Task<Credentials> AssumeS3RoleAsync(string roleSession, string roleToAssume)
    {
        // Create the request to use with the AssumeRoleAsync call.
        var request = new AssumeRoleRequest()
        {
            RoleSessionName = roleSession,
            RoleArn = roleToAssume,
        };

        var response = await _stsService.AssumeRoleAsync(request);

        return response.Credentials;
    }


    /// <summary>
    /// Delete an S3 bucket.
    /// </summary>
    /// <param name="bucketName">Name of the S3 bucket to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteBucketAsync(string bucketName)
    {
        var result = await _s3Service.DeleteBucketAsync(new DeleteBucketRequest { BucketName = bucketName });
        return result.HttpStatusCode == HttpStatusCode.OK;
    }

    /// <summary>
    /// List the buckets that are owned by the user's account.
    /// </summary>
    /// <returns>Async Task.</returns>
    public async Task<List<S3Bucket>?> ListMyBucketsAsync()
    {
        try
        {
            // Get the list of buckets accessible by the new user.
            var response = await _s3Service.ListBucketsAsync();

            return response.Buckets;
        }
        catch (AmazonS3Exception ex)
        {
            // Something else went wrong. Display the error message.
            Console.WriteLine($"Error: {ex.Message}");
            return null;
        }
    }

    /// <summary>
    /// Create a new S3 bucket.
    /// </summary>
    /// <param name="bucketName">The name for the new bucket.</param>
    /// <returns>A Boolean value indicating whether the action completed
    /// successfully.</returns>
    public async Task<bool> PutBucketAsync(string bucketName)
    {
        var response = await _s3Service.PutBucketAsync(new PutBucketRequest { BucketName = bucketName });
        return response.HttpStatusCode == HttpStatusCode.OK;
    }

    /// <summary>
    /// Update the client objects with new client objects. This is available
    /// because the scenario uses the methods of this class without and then
    /// with the proper permissions to list S3 buckets.
    /// </summary>
    /// <param name="s3Service">The Amazon S3 client object.</param>
    /// <param name="stsService">The AWS STS client object.</param>
    public void UpdateClients(IAmazonS3 s3Service, IAmazonSecurityTokenService stsService)
    {
        _s3Service = s3Service;
        _stsService = stsService;
    }
}


namespace IamScenariosCommon;

public class UIWrapper
{
    public readonly string SepBar = new('-', Console.WindowWidth);

    /// <summary>
    /// Show information about the IAM Groups scenario.
    /// </summary>
    public void DisplayGroupsOverview()
    {
        Console.Clear();

        DisplayTitle("Welcome to the IAM Groups Demo");
        Console.WriteLine("This example application does the following:");
        Console.WriteLine("\t1. Creates an Amazon Identity and Access Management (IAM) group.");
        Console.WriteLine("\t2. Adds an IAM policy to the IAM group giving it full access to Amazon S3.");
        Console.WriteLine("\t3. Creates a new IAM user.");
        Console.WriteLine("\t4. Creates an IAM access key for the user.");
        Console.WriteLine("\t5. Adds the user to the IAM group.");
        Console.WriteLine("\t6. Lists the buckets on the account.");
        Console.WriteLine("\t7. Proves that the user has full Amazon S3 access by creating a bucket.");
        Console.WriteLine("\t8. List the buckets again to show the new bucket.");
        Console.WriteLine("\t9. Cleans up all the resources created.");
    }

    /// <summary>
    /// Show information about the IAM Basics scenario.
    /// </summary>
    public void DisplayBasicsOverview()
    {
        Console.Clear();

        DisplayTitle("Welcome to IAM Basics");
        Console.WriteLine("This example application does the following:");
        Console.WriteLine("\t1. Creates a user with no permissions.");
        Console.WriteLine("\t2. Creates a role and policy that grant s3:ListAllMyBuckets permission.");
        Console.WriteLine("\t3. Grants the user permission to assume the role.");
        Console.WriteLine("\t4. Creates an S3 client object as the user and tries to list buckets (this will fail).");
        Console.WriteLine("\t5. Gets temporary credentials by assuming the role.");
        Console.WriteLine("\t6. Creates a new S3 client object with the temporary credentials and lists the buckets (this will succeed).");
        Console.WriteLine("\t7. Deletes all the resources.");
    }

    /// <summary>
    /// Display a message and wait until the user presses enter.
    /// </summary>
    public void PressEnter()
    {
        Console.Write("\nPress <Enter> to continue. ");
        _ = Console.ReadLine();
        Console.WriteLine();
    }

    /// <summary>
    /// Pad a string with spaces to center it on the console display.
    /// </summary>
    /// <param name="strToCenter">The string to be centered.</param>
    /// <returns>The padded string.</returns>
    public string CenterString(string strToCenter)
    {
        var padAmount = (Console.WindowWidth - strToCenter.Length) / 2;
        var leftPad = new string(' ', padAmount);
        return $"{leftPad}{strToCenter}";
    }

    /// <summary>
    /// Display a line of hyphens, the centered text of the title, and another
    /// line of hyphens.
    /// </summary>
    /// <param name="strTitle">The string to be displayed.</param>
    public void DisplayTitle(string strTitle)
    {
        Console.WriteLine(SepBar);
        Console.WriteLine(CenterString(strTitle));
        Console.WriteLine(SepBar);
    }

    /// <summary>
    /// Display a countdown and wait for a number of seconds.
    /// </summary>
    /// <param name="numSeconds">The number of seconds to wait.</param>
    public void WaitABit(int numSeconds, string msg)
    {
        Console.WriteLine(msg);

        // Wait for the requested number of seconds.
        for (int i = numSeconds; i > 0; i--)
        {
            System.Threading.Thread.Sleep(1000);
            Console.Write($"{i}...");
        }

        PressEnter();
    }
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK para .NET*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Bash ]

**AWS CLI con Bash script**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples). 

```
###############################################################################
# function iam_create_user_assume_role
#
# Scenario to create an IAM user, create an IAM role, and apply the role to the user.
#
#     "IAM access" permissions are needed to run this code.
#     "STS assume role" permissions are needed to run this code. (Note: It might be necessary to
#           create a custom policy).
#
# Returns:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function iam_create_user_assume_role() {
  {
    if [ "$IAM_OPERATIONS_SOURCED" != "True" ]; then

      source ./iam_operations.sh
    fi
  }

  echo_repeat "*" 88
  echo "Welcome to the IAM create user and assume role demo."
  echo
  echo "This demo will create an IAM user, create an IAM role, and apply the role to the user."
  echo_repeat "*" 88
  echo

  echo -n "Enter a name for a new IAM user: "
  get_input
  user_name=$get_input_result

  local user_arn
  user_arn=$(iam_create_user -u "$user_name")

  # shellcheck disable=SC2181
  if [[ ${?} == 0 ]]; then
    echo "Created demo IAM user named $user_name"
  else
    errecho "$user_arn"
    errecho "The user failed to create. This demo will exit."
    return 1
  fi

  local access_key_response
  access_key_response=$(iam_create_user_access_key -u "$user_name")
  # shellcheck disable=SC2181
  if [[ ${?} != 0 ]]; then
    errecho "The access key failed to create. This demo will exit."
    clean_up "$user_name"
    return 1
  fi

  IFS=$'\t ' read -r -a access_key_values <<<"$access_key_response"
  local key_name=${access_key_values[0]}
  local key_secret=${access_key_values[1]}

  echo "Created access key named $key_name"

  echo "Wait 10 seconds for the user to be ready."
  sleep 10
  echo_repeat "*" 88
  echo

  local iam_role_name
  iam_role_name=$(generate_random_name "test-role")
  echo "Creating a role named $iam_role_name with user $user_name as the principal."

  local assume_role_policy_document="{
    \"Version\": \"2012-10-17\",
    \"Statement\": [{
        \"Effect\": \"Allow\",
        \"Principal\": {\"AWS\": \"$user_arn\"},
        \"Action\": \"sts:AssumeRole\"
        }]
    }"

  local role_arn
  role_arn=$(iam_create_role -n "$iam_role_name" -p "$assume_role_policy_document")

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Created IAM role named $iam_role_name"
  else
    errecho "The role failed to create. This demo will exit."
    clean_up "$user_name" "$key_name"
    return 1
  fi

  local policy_name
  policy_name=$(generate_random_name "test-policy")
  local policy_document="{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]}"

  local policy_arn
  policy_arn=$(iam_create_policy -n "$policy_name" -p "$policy_document")
  # shellcheck disable=SC2181
  if [[ ${?} == 0 ]]; then
    echo "Created  IAM policy named $policy_name"
  else
    errecho "The policy failed to create."
    clean_up "$user_name" "$key_name" "$iam_role_name"
    return 1
  fi

  if (iam_attach_role_policy -n "$iam_role_name" -p "$policy_arn"); then
    echo "Attached policy $policy_arn to role $iam_role_name"
  else
    errecho "The policy failed to attach."
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn"
    return 1
  fi

  local assume_role_policy_document="{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"$role_arn\"}]}"

  local assume_role_policy_name
  assume_role_policy_name=$(generate_random_name "test-assume-role-")

  # shellcheck disable=SC2181
  local assume_role_policy_arn
  assume_role_policy_arn=$(iam_create_policy -n "$assume_role_policy_name" -p "$assume_role_policy_document")
  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Created  IAM policy named $assume_role_policy_name for sts assume role"
  else
    errecho "The policy failed to create."
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn"
    return 1
  fi

  echo "Wait 10 seconds to give AWS time to propagate these new resources and connections."
  sleep 10
  echo_repeat "*" 88
  echo

  echo "Try to list buckets without the new user assuming the role."
  echo_repeat "*" 88
  echo

  # Set the environment variables for the created user.
  # bashsupport disable=BP2001
  export AWS_ACCESS_KEY_ID=$key_name
  # bashsupport disable=BP2001
  export AWS_SECRET_ACCESS_KEY=$key_secret

  local buckets
  buckets=$(s3_list_buckets)

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    local bucket_count
    bucket_count=$(echo "$buckets" | wc -w | xargs)
    echo "There are $bucket_count buckets in the account. This should not have happened."
  else
    errecho "Because the role with permissions has not been assumed, listing buckets failed."
  fi

  echo
  echo_repeat "*" 88
  echo "Now assume the role $iam_role_name and list the buckets."
  echo_repeat "*" 88
  echo

  local credentials

  credentials=$(sts_assume_role -r "$role_arn" -n "AssumeRoleDemoSession")
  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Assumed role $iam_role_name"
  else
    errecho "Failed to assume role."
    export AWS_ACCESS_KEY_ID=""
    export AWS_SECRET_ACCESS_KEY=""
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"
    return 1
  fi

  IFS=$'\t ' read -r -a credentials <<<"$credentials"

  export AWS_ACCESS_KEY_ID=${credentials[0]}
  export AWS_SECRET_ACCESS_KEY=${credentials[1]}
  # bashsupport disable=BP2001
  export AWS_SESSION_TOKEN=${credentials[2]}

  buckets=$(s3_list_buckets)

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    local bucket_count
    bucket_count=$(echo "$buckets" | wc -w | xargs)
    echo "There are $bucket_count buckets in the account. Listing buckets succeeded because of "
    echo "the assumed role."
  else
    errecho "Failed to list buckets. This should not happen."
    export AWS_ACCESS_KEY_ID=""
    export AWS_SECRET_ACCESS_KEY=""
    export AWS_SESSION_TOKEN=""
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"
    return 1
  fi

  local result=0
  export AWS_ACCESS_KEY_ID=""
  export AWS_SECRET_ACCESS_KEY=""

  echo
  echo_repeat "*" 88
  echo "The created resources will now be deleted."
  echo_repeat "*" 88
  echo

  clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"

  # shellcheck disable=SC2181
  if [[ ${?} -ne 0 ]]; then
    result=1
  fi

  return $result
}
```
Las funciones de IAM que se usan en este escenario.  

```
###############################################################################
# function iam_user_exists
#
# This function checks to see if the specified AWS Identity and Access Management (IAM) user already exists.
#
# Parameters:
#       $1 - The name of the IAM user to check.
#
# Returns:
#       0 - If the user already exists.
#       1 - If the user doesn't exist.
###############################################################################
function iam_user_exists() {
  local user_name
  user_name=$1

  # Check whether the IAM user already exists.
  # We suppress all output - we're interested only in the return code.

  local errors
  errors=$(aws iam get-user \
    --user-name "$user_name" 2>&1 >/dev/null)

  local error_code=${?}

  if [[ $error_code -eq 0 ]]; then
    return 0 # 0 in Bash script means true.
  else
    if [[ $errors != *"error"*"(NoSuchEntity)"* ]]; then
      aws_cli_error_log $error_code
      errecho "Error calling iam get-user $errors"
    fi

    return 1 # 1 in Bash script means false.
  fi
}

###############################################################################
# function iam_create_user
#
# This function creates the specified IAM user, unless
# it already exists.
#
# Parameters:
#       -u user_name  -- The name of the user to create.
#
# Returns:
#       The ARN of the user.
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_user() {
  local user_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user"
    echo "Creates an AWS Identity and Access Management (IAM) user. You must supply a username:"
    echo "  -u user_name    The name of the user. It must be unique within the account."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    User name:   $user_name"
  iecho ""

  # If the user already exists, we don't want to try to create it.
  if (iam_user_exists "$user_name"); then
    errecho "ERROR: A user with that name already exists in the account."
    return 1
  fi

  response=$(aws iam create-user --user-name "$user_name" \
    --output text \
    --query 'User.Arn')

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-user operation failed.$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_create_user_access_key
#
# This function creates an IAM access key for the specified user.
#
# Parameters:
#       -u user_name -- The name of the IAM user.
#       [-f file_name] -- The optional file name for the access key output.
#
# Returns:
#       [access_key_id access_key_secret]
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_user_access_key() {
  local user_name file_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user_access_key"
    echo "Creates an AWS Identity and Access Management (IAM) key pair."
    echo "  -u user_name   The name of the IAM user."
    echo "  [-f file_name]   Optional file name for the access key output."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:f:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      f) file_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  response=$(aws iam create-access-key \
    --user-name "$user_name" \
    --output text)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-access-key operation failed.$response"
    return 1
  fi

  if [[ -n "$file_name" ]]; then
    echo "$response" >"$file_name"
  fi

  local key_id key_secret
  # shellcheck disable=SC2086
  key_id=$(echo $response | cut -f 2 -d ' ')
  # shellcheck disable=SC2086
  key_secret=$(echo $response | cut -f 4 -d ' ')

  echo "$key_id $key_secret"

  return 0
}

###############################################################################
# function iam_create_role
#
# This function creates an IAM role.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_json -- The assume role policy document.
#
# Returns:
#       The ARN of the role.
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_role() {
  local role_name policy_document response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user_access_key"
    echo "Creates an AWS Identity and Access Management (IAM) role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_json -- The assume role policy document."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_document="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_document" ]]; then
    errecho "ERROR: You must provide a policy document with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam create-role \
    --role-name "$role_name" \
    --assume-role-policy-document "$policy_document" \
    --output text \
    --query Role.Arn)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_create_policy
#
# This function creates an IAM policy.
#
# Parameters:
#       -n policy_name -- The name of the IAM policy.
#       -p policy_json -- The policy document.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_policy() {
  local policy_name policy_document response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_policy"
    echo "Creates an AWS Identity and Access Management (IAM) policy."
    echo "  -n policy_name   The name of the IAM policy."
    echo "  -p policy_json -- The policy document."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) policy_name="${OPTARG}" ;;
      p) policy_document="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$policy_name" ]]; then
    errecho "ERROR: You must provide a policy name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_document" ]]; then
    errecho "ERROR: You must provide a policy document with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam create-policy \
    --policy-name "$policy_name" \
    --policy-document "$policy_document" \
    --output text \
    --query Policy.Arn)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"
}

###############################################################################
# function iam_attach_role_policy
#
# This function attaches an IAM policy to a tole.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_ARN -- The IAM policy document ARN..
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_attach_role_policy() {
  local role_name policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_attach_role_policy"
    echo "Attaches an AWS Identity and Access Management (IAM) policy to an IAM role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_ARN -- The IAM policy document ARN."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy ARN with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam attach-role-policy \
    --role-name "$role_name" \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports attach-role-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_detach_role_policy
#
# This function detaches an IAM policy to a tole.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_ARN -- The IAM policy document ARN..
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_detach_role_policy() {
  local role_name policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_detach_role_policy"
    echo "Detaches an AWS Identity and Access Management (IAM) policy to an IAM role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_ARN -- The IAM policy document ARN."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy ARN with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam detach-role-policy \
    --role-name "$role_name" \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports detach-role-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_delete_policy
#
# This function deletes an IAM policy.
#
# Parameters:
#       -n policy_arn -- The name of the IAM policy arn.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_policy() {
  local policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_policy"
    echo "Deletes an AWS Identity and Access Management (IAM) policy"
    echo "  -n policy_arn -- The name of the IAM policy arn."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:h" option; do
    case "${option}" in
      n) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy arn with the -n parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Policy arn:  $policy_arn"
  iecho ""

  response=$(aws iam delete-policy \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-policy operation failed.\n$response"
    return 1
  fi

  iecho "delete-policy response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_role
#
# This function deletes an IAM role.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_role() {
  local role_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_role"
    echo "Deletes an AWS Identity and Access Management (IAM) role"
    echo "  -n role_name -- The name of the IAM role."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  echo "role_name:$role_name"
  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Role name:  $role_name"
  iecho ""

  response=$(aws iam delete-role \
    --role-name "$role_name")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-role operation failed.\n$response"
    return 1
  fi

  iecho "delete-role response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_access_key
#
# This function deletes an IAM access key for the specified IAM user.
#
# Parameters:
#       -u user_name  -- The name of the user.
#       -k access_key -- The access key to delete.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_access_key() {
  local user_name access_key response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_access_key"
    echo "Deletes an AWS Identity and Access Management (IAM) access key for the specified IAM user"
    echo "  -u user_name    The name of the user."
    echo "  -k access_key   The access key to delete."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:k:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      k) access_key="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  if [[ -z "$access_key" ]]; then
    errecho "ERROR: You must provide an access key with the -k parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Username:   $user_name"
  iecho "    Access key:   $access_key"
  iecho ""

  response=$(aws iam delete-access-key \
    --user-name "$user_name" \
    --access-key-id "$access_key")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-access-key operation failed.\n$response"
    return 1
  fi

  iecho "delete-access-key response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_user
#
# This function deletes the specified IAM user.
#
# Parameters:
#       -u user_name  -- The name of the user to create.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_user() {
  local user_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_user"
    echo "Deletes an AWS Identity and Access Management (IAM) user. You must supply a username:"
    echo "  -u user_name    The name of the user."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    User name:   $user_name"
  iecho ""

  # If the user does not exist, we don't want to try to delete it.
  if (! iam_user_exists "$user_name"); then
    errecho "ERROR: A user with that name does not exist in the account."
    return 1
  fi

  response=$(aws iam delete-user \
    --user-name "$user_name")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-user operation failed.$response"
    return 1
  fi

  iecho "delete-user response:$response"
  iecho

  return 0
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *Referencia de comandos de AWS CLI*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/PutUserPolicy)

------
#### [ C\$1\$1 ]

**SDK para C\$1\$1**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/iam#code-examples). 

```
namespace AwsDoc {
    namespace IAM {
  
        //! Cleanup by deleting created entities.
        /*!
          \sa DeleteCreatedEntities
          \param client: IAM client.
          \param role: IAM role.
          \param user: IAM user.
          \param policy: IAM policy.
        */
        static bool DeleteCreatedEntities(const Aws::IAM::IAMClient &client,
                                          const Aws::IAM::Model::Role &role,
                                          const Aws::IAM::Model::User &user,
                                          const Aws::IAM::Model::Policy &policy);
    }

    static const int LIST_BUCKETS_WAIT_SEC = 20;

    static const char ALLOCATION_TAG[] = "example_code";
}

//! Scenario to create an IAM user, create an IAM role, and apply the role to the user.
// "IAM access" permissions are needed to run this code.
// "STS assume role" permissions are needed to run this code. (Note: It might be necessary to
//    create a custom policy).
/*!
  \sa iamCreateUserAssumeRoleScenario
  \param clientConfig: Aws client configuration.
  \return bool: Successful completion.
*/
bool AwsDoc::IAM::iamCreateUserAssumeRoleScenario(
        const Aws::Client::ClientConfiguration &clientConfig) {

    Aws::IAM::IAMClient client(clientConfig);
    Aws::IAM::Model::User user;
    Aws::IAM::Model::Role role;
    Aws::IAM::Model::Policy policy;

    // 1. Create a user.
    {
        Aws::IAM::Model::CreateUserRequest request;
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String userName = "iam-demo-user-" +
                               Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetUserName(userName);

        Aws::IAM::Model::CreateUserOutcome outcome = client.CreateUser(request);
        if (!outcome.IsSuccess()) {
            std::cout << "Error creating IAM user " << userName << ":" <<
                      outcome.GetError().GetMessage() << std::endl;
            return false;
        }
        else {
            std::cout << "Successfully created IAM user " << userName << std::endl;
        }

        user = outcome.GetResult().GetUser();
    }

    // 2. Create a role.
    {
        // Get the IAM user for the current client in order to access its ARN.
        Aws::String iamUserArn;
        {
            Aws::IAM::Model::GetUserRequest request;
            Aws::IAM::Model::GetUserOutcome outcome = client.GetUser(request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error getting Iam user. " <<
                          outcome.GetError().GetMessage() << std::endl;

                DeleteCreatedEntities(client, role, user, policy);
                return false;
            }
            else {
                std::cout << "Successfully retrieved Iam user "
                          << outcome.GetResult().GetUser().GetUserName()
                          << std::endl;
            }

            iamUserArn = outcome.GetResult().GetUser().GetArn();
        }

        Aws::IAM::Model::CreateRoleRequest request;

        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String roleName = "iam-demo-role-" +
                               Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetRoleName(roleName);

        // Build policy document for role.
        Aws::Utils::Document jsonStatement;
        jsonStatement.WithString("Effect", "Allow");

        Aws::Utils::Document jsonPrincipal;
        jsonPrincipal.WithString("AWS", iamUserArn);
        jsonStatement.WithObject("Principal", jsonPrincipal);
        jsonStatement.WithString("Action", "sts:AssumeRole");
        jsonStatement.WithObject("Condition", Aws::Utils::Document());

        Aws::Utils::Document policyDocument;
        policyDocument.WithString("Version", "2012-10-17");

        Aws::Utils::Array<Aws::Utils::Document> statements(1);
        statements[0] = jsonStatement;
        policyDocument.WithArray("Statement", statements);

        std::cout << "Setting policy for role\n   "
                  << policyDocument.View().WriteCompact() << std::endl;

        // Set role policy document as JSON string.
        request.SetAssumeRolePolicyDocument(policyDocument.View().WriteCompact());

        Aws::IAM::Model::CreateRoleOutcome outcome = client.CreateRole(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating role. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully created a role with name " << roleName
                      << std::endl;
        }

        role = outcome.GetResult().GetRole();
    }

    // 3. Create an IAM policy.
    {
        Aws::IAM::Model::CreatePolicyRequest request;
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String policyName = "iam-demo-policy-" +
                                 Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetPolicyName(policyName);

        // Build IAM policy document.
        Aws::Utils::Document jsonStatement;
        jsonStatement.WithString("Effect", "Allow");
        jsonStatement.WithString("Action", "s3:ListAllMyBuckets");
        jsonStatement.WithString("Resource", "arn:aws:s3:::*");

        Aws::Utils::Document policyDocument;
        policyDocument.WithString("Version", "2012-10-17");

        Aws::Utils::Array<Aws::Utils::Document> statements(1);
        statements[0] = jsonStatement;
        policyDocument.WithArray("Statement", statements);

        std::cout << "Creating a policy.\n   " << policyDocument.View().WriteCompact()
                  << std::endl;

        // Set IAM policy document as JSON string.
        request.SetPolicyDocument(policyDocument.View().WriteCompact());

        Aws::IAM::Model::CreatePolicyOutcome outcome = client.CreatePolicy(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating policy. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully created a policy with name, " << policyName <<
                      "." << std::endl;
        }

        policy = outcome.GetResult().GetPolicy();
    }

    // 4. Assume the new role using the AWS Security Token Service (STS).
    Aws::STS::Model::Credentials credentials;
    {
        Aws::STS::STSClient stsClient(clientConfig);

        Aws::STS::Model::AssumeRoleRequest request;
        request.SetRoleArn(role.GetArn());
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String roleSessionName = "iam-demo-role-session-" +
                                      Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetRoleSessionName(roleSessionName);

        Aws::STS::Model::AssumeRoleOutcome assumeRoleOutcome;

        // Repeatedly call AssumeRole, because there is often a delay
        // before the role is available to be assumed.
        // Repeat at most 20 times when access is denied.
        int count = 0;
        while (true) {
            assumeRoleOutcome = stsClient.AssumeRole(request);
            if (!assumeRoleOutcome.IsSuccess()) {
                if (count > 20 ||
                    assumeRoleOutcome.GetError().GetErrorType() !=
                    Aws::STS::STSErrors::ACCESS_DENIED) {
                    std::cerr << "Error assuming role after 20 tries. " <<
                              assumeRoleOutcome.GetError().GetMessage() << std::endl;

                    DeleteCreatedEntities(client, role, user, policy);
                    return false;
                }
                std::this_thread::sleep_for(std::chrono::seconds(1));
            }
            else {
                std::cout << "Successfully assumed the role after " << count
                          << " seconds." << std::endl;
                break;
            }
            count++;
        }

        credentials = assumeRoleOutcome.GetResult().GetCredentials();
    }


    // 5. List objects in the bucket (This should fail).
    {
        Aws::S3::S3Client s3Client(
                Aws::Auth::AWSCredentials(credentials.GetAccessKeyId(),
                                          credentials.GetSecretAccessKey(),
                                          credentials.GetSessionToken()),
                Aws::MakeShared<Aws::S3::S3EndpointProvider>(ALLOCATION_TAG),
                clientConfig);
        Aws::S3::Model::ListBucketsOutcome listBucketsOutcome = s3Client.ListBuckets();
        if (!listBucketsOutcome.IsSuccess()) {
            if (listBucketsOutcome.GetError().GetErrorType() !=
                Aws::S3::S3Errors::ACCESS_DENIED) {
                std::cerr << "Could not lists buckets. " <<
                          listBucketsOutcome.GetError().GetMessage() << std::endl;
            }
            else {
                std::cout
                        << "Access to list buckets denied because privileges have not been applied."
                        << std::endl;
            }
        }
        else {
            std::cerr
                    << "Successfully retrieved bucket lists when this should not happen."
                    << std::endl;
        }
    }

    // 6. Attach the policy to the role.
    {
        Aws::IAM::Model::AttachRolePolicyRequest request;
        request.SetRoleName(role.GetRoleName());
        request.WithPolicyArn(policy.GetArn());

        Aws::IAM::Model::AttachRolePolicyOutcome outcome = client.AttachRolePolicy(
                request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating policy. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully attached the policy with name, "
                      << policy.GetPolicyName() <<
                      ", to the role, " << role.GetRoleName() << "." << std::endl;
        }
    }

    int count = 0;
    // 7. List objects in the bucket (this should succeed).
    // Repeatedly call ListBuckets, because there is often a delay
    // before the policy with ListBucket permissions has been applied to the role.
    // Repeat at most LIST_BUCKETS_WAIT_SEC times when access is denied.
    while (true) {
        Aws::S3::S3Client s3Client(
                Aws::Auth::AWSCredentials(credentials.GetAccessKeyId(),
                                          credentials.GetSecretAccessKey(),
                                          credentials.GetSessionToken()),
                Aws::MakeShared<Aws::S3::S3EndpointProvider>(ALLOCATION_TAG),
                clientConfig);
        Aws::S3::Model::ListBucketsOutcome listBucketsOutcome = s3Client.ListBuckets();
        if (!listBucketsOutcome.IsSuccess()) {
            if ((count > LIST_BUCKETS_WAIT_SEC) ||
                listBucketsOutcome.GetError().GetErrorType() !=
                Aws::S3::S3Errors::ACCESS_DENIED) {
                std::cerr << "Could not lists buckets after " << LIST_BUCKETS_WAIT_SEC << " seconds. " <<
                          listBucketsOutcome.GetError().GetMessage() << std::endl;
                DeleteCreatedEntities(client, role, user, policy);
                return false;
            }

            std::this_thread::sleep_for(std::chrono::seconds(1));
        }
        else {

            std::cout << "Successfully retrieved bucket lists after " << count
                      << " seconds." << std::endl;
            break;
        }
        count++;
    }

    // 8. Delete all the created resources.
    return DeleteCreatedEntities(client, role, user, policy);
}

bool AwsDoc::IAM::DeleteCreatedEntities(const Aws::IAM::IAMClient &client,
                                        const Aws::IAM::Model::Role &role,
                                        const Aws::IAM::Model::User &user,
                                        const Aws::IAM::Model::Policy &policy) {
    bool result = true;
    if (policy.ArnHasBeenSet()) {
        // Detach the policy from the role.
        {
            Aws::IAM::Model::DetachRolePolicyRequest request;
            request.SetPolicyArn(policy.GetArn());
            request.SetRoleName(role.GetRoleName());

            Aws::IAM::Model::DetachRolePolicyOutcome outcome = client.DetachRolePolicy(
                    request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error Detaching policy from roles. " <<
                          outcome.GetError().GetMessage() << std::endl;
                result = false;
            }
            else {
                std::cout << "Successfully detached the policy with arn "
                          << policy.GetArn()
                          << " from role " << role.GetRoleName() << "." << std::endl;
            }
        }

        // Delete the policy.
        {
            Aws::IAM::Model::DeletePolicyRequest request;
            request.WithPolicyArn(policy.GetArn());

            Aws::IAM::Model::DeletePolicyOutcome outcome = client.DeletePolicy(request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error deleting policy. " <<
                          outcome.GetError().GetMessage() << std::endl;
                result = false;
            }
            else {
                std::cout << "Successfully deleted the policy with arn "
                          << policy.GetArn() << std::endl;
            }
        }

    }

    if (role.RoleIdHasBeenSet()) {
        // Delete the role.
        Aws::IAM::Model::DeleteRoleRequest request;
        request.SetRoleName(role.GetRoleName());

        Aws::IAM::Model::DeleteRoleOutcome outcome = client.DeleteRole(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error deleting role. " <<
                      outcome.GetError().GetMessage() << std::endl;
            result = false;
        }
        else {
            std::cout << "Successfully deleted the role with name "
                      << role.GetRoleName() << std::endl;
        }
    }

    if (user.ArnHasBeenSet()) {
        // Delete the user.
        Aws::IAM::Model::DeleteUserRequest request;
        request.WithUserName(user.GetUserName());

        Aws::IAM::Model::DeleteUserOutcome outcome = client.DeleteUser(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error deleting user. " <<
                      outcome.GetError().GetMessage() << std::endl;
            result = false;
        }
        else {
            std::cout << "Successfully deleted the user with name "
                      << user.GetUserName() << std::endl;
        }
    }

    return result;
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK para C\$1\$1*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/PutUserPolicy)

------
#### [ Go ]

**SDK para Go V2**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2/iam#code-examples). 
Ejecute un escenario interactivo en un símbolo del sistema.  

```
import (
	"context"
	"errors"
	"fmt"
	"log"
	"math/rand"
	"strings"
	"time"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/credentials"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/aws/aws-sdk-go-v2/service/sts"
	"github.com/aws/smithy-go"
	"github.com/awsdocs/aws-doc-sdk-examples/gov2/demotools"
	"github.com/awsdocs/aws-doc-sdk-examples/gov2/iam/actions"
)

// AssumeRoleScenario shows you how to use the AWS Identity and Access Management (IAM)
// service to perform the following actions:
//
//  1. Create a user who has no permissions.
//  2. Create a role that grants permission to list Amazon Simple Storage Service
//     (Amazon S3) buckets for the account.
//  3. Add a policy to let the user assume the role.
//  4. Try and fail to list buckets without permissions.
//  5. Assume the role and list S3 buckets using temporary credentials.
//  6. Delete the policy, role, and user.
type AssumeRoleScenario struct {
	sdkConfig      aws.Config
	accountWrapper actions.AccountWrapper
	policyWrapper  actions.PolicyWrapper
	roleWrapper    actions.RoleWrapper
	userWrapper    actions.UserWrapper
	questioner     demotools.IQuestioner
	helper         IScenarioHelper
	isTestRun      bool
}

// NewAssumeRoleScenario constructs an AssumeRoleScenario instance from a configuration.
// It uses the specified config to get an IAM client and create wrappers for the actions
// used in the scenario.
func NewAssumeRoleScenario(sdkConfig aws.Config, questioner demotools.IQuestioner,
	helper IScenarioHelper) AssumeRoleScenario {
	iamClient := iam.NewFromConfig(sdkConfig)
	return AssumeRoleScenario{
		sdkConfig:      sdkConfig,
		accountWrapper: actions.AccountWrapper{IamClient: iamClient},
		policyWrapper:  actions.PolicyWrapper{IamClient: iamClient},
		roleWrapper:    actions.RoleWrapper{IamClient: iamClient},
		userWrapper:    actions.UserWrapper{IamClient: iamClient},
		questioner:     questioner,
		helper:         helper,
	}
}

// addTestOptions appends the API options specified in the original configuration to
// another configuration. This is used to attach the middleware stubber to clients
// that are constructed during the scenario, which is needed for unit testing.
func (scenario AssumeRoleScenario) addTestOptions(scenarioConfig *aws.Config) {
	if scenario.isTestRun {
		scenarioConfig.APIOptions = append(scenarioConfig.APIOptions, scenario.sdkConfig.APIOptions...)
	}
}

// Run runs the interactive scenario.
func (scenario AssumeRoleScenario) Run(ctx context.Context) {
	defer func() {
		if r := recover(); r != nil {
			log.Printf("Something went wrong with the demo.\n")
			log.Println(r)
		}
	}()

	log.Println(strings.Repeat("-", 88))
	log.Println("Welcome to the AWS Identity and Access Management (IAM) assume role demo.")
	log.Println(strings.Repeat("-", 88))

	user := scenario.CreateUser(ctx)
	accessKey := scenario.CreateAccessKey(ctx, user)
	role := scenario.CreateRoleAndPolicies(ctx, user)
	noPermsConfig := scenario.ListBucketsWithoutPermissions(ctx, accessKey)
	scenario.ListBucketsWithAssumedRole(ctx, noPermsConfig, role)
	scenario.Cleanup(ctx, user, role)

	log.Println(strings.Repeat("-", 88))
	log.Println("Thanks for watching!")
	log.Println(strings.Repeat("-", 88))
}

// CreateUser creates a new IAM user. This user has no permissions.
func (scenario AssumeRoleScenario) CreateUser(ctx context.Context) *types.User {
	log.Println("Let's create an example user with no permissions.")
	userName := scenario.questioner.Ask("Enter a name for the example user:", demotools.NotEmpty{})
	user, err := scenario.userWrapper.GetUser(ctx, userName)
	if err != nil {
		panic(err)
	}
	if user == nil {
		user, err = scenario.userWrapper.CreateUser(ctx, userName)
		if err != nil {
			panic(err)
		}
		log.Printf("Created user %v.\n", *user.UserName)
	} else {
		log.Printf("User %v already exists.\n", *user.UserName)
	}
	log.Println(strings.Repeat("-", 88))
	return user
}

// CreateAccessKey creates an access key for the user.
func (scenario AssumeRoleScenario) CreateAccessKey(ctx context.Context, user *types.User) *types.AccessKey {
	accessKey, err := scenario.userWrapper.CreateAccessKeyPair(ctx, *user.UserName)
	if err != nil {
		panic(err)
	}
	log.Printf("Created access key %v for your user.", *accessKey.AccessKeyId)
	log.Println("Waiting a few seconds for your user to be ready...")
	scenario.helper.Pause(10)
	log.Println(strings.Repeat("-", 88))
	return accessKey
}

// CreateRoleAndPolicies creates a policy that grants permission to list S3 buckets for
// the current account and attaches the policy to a newly created role. It also adds an
// inline policy to the specified user that grants the user permission to assume the role.
func (scenario AssumeRoleScenario) CreateRoleAndPolicies(ctx context.Context, user *types.User) *types.Role {
	log.Println("Let's create a role and policy that grant permission to list S3 buckets.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	listBucketsRole, err := scenario.roleWrapper.CreateRole(ctx, scenario.helper.GetName(), *user.Arn)
	if err != nil {
		panic(err)
	}
	log.Printf("Created role %v.\n", *listBucketsRole.RoleName)
	listBucketsPolicy, err := scenario.policyWrapper.CreatePolicy(
		ctx, scenario.helper.GetName(), []string{"s3:ListAllMyBuckets"}, "arn:aws:s3:::*")
	if err != nil {
		panic(err)
	}
	log.Printf("Created policy %v.\n", *listBucketsPolicy.PolicyName)
	err = scenario.roleWrapper.AttachRolePolicy(ctx, *listBucketsPolicy.Arn, *listBucketsRole.RoleName)
	if err != nil {
		panic(err)
	}
	log.Printf("Attached policy %v to role %v.\n", *listBucketsPolicy.PolicyName,
		*listBucketsRole.RoleName)
	err = scenario.userWrapper.CreateUserPolicy(ctx, *user.UserName, scenario.helper.GetName(),
		[]string{"sts:AssumeRole"}, *listBucketsRole.Arn)
	if err != nil {
		panic(err)
	}
	log.Printf("Created an inline policy for user %v that lets the user assume the role.\n",
		*user.UserName)
	log.Println("Let's give AWS a few seconds to propagate these new resources and connections...")
	scenario.helper.Pause(10)
	log.Println(strings.Repeat("-", 88))
	return listBucketsRole
}

// ListBucketsWithoutPermissions creates an Amazon S3 client from the user's access key
// credentials and tries to list buckets for the account. Because the user does not have
// permission to perform this action, the action fails.
func (scenario AssumeRoleScenario) ListBucketsWithoutPermissions(ctx context.Context, accessKey *types.AccessKey) *aws.Config {
	log.Println("Let's try to list buckets without permissions. This should return an AccessDenied error.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	noPermsConfig, err := config.LoadDefaultConfig(ctx,
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
			*accessKey.AccessKeyId, *accessKey.SecretAccessKey, ""),
		))
	if err != nil {
		panic(err)
	}

	// Add test options if this is a test run. This is needed only for testing purposes.
	scenario.addTestOptions(&noPermsConfig)

	s3Client := s3.NewFromConfig(noPermsConfig)
	_, err = s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		// The SDK for Go does not model the AccessDenied error, so check ErrorCode directly.
		var ae smithy.APIError
		if errors.As(err, &ae) {
			switch ae.ErrorCode() {
			case "AccessDenied":
				log.Println("Got AccessDenied error, which is the expected result because\n" +
					"the ListBuckets call was made without permissions.")
			default:
				log.Println("Expected AccessDenied, got something else.")
				panic(err)
			}
		}
	} else {
		log.Println("Expected AccessDenied error when calling ListBuckets without permissions,\n" +
			"but the call succeeded. Continuing the example anyway...")
	}
	log.Println(strings.Repeat("-", 88))
	return &noPermsConfig
}

// ListBucketsWithAssumedRole performs the following actions:
//
//  1. Creates an AWS Security Token Service (AWS STS) client from the config created from
//     the user's access key credentials.
//  2. Gets temporary credentials by assuming the role that grants permission to list the
//     buckets.
//  3. Creates an Amazon S3 client from the temporary credentials.
//  4. Lists buckets for the account. Because the temporary credentials are generated by
//     assuming the role that grants permission, the action succeeds.
func (scenario AssumeRoleScenario) ListBucketsWithAssumedRole(ctx context.Context, noPermsConfig *aws.Config, role *types.Role) {
	log.Println("Let's assume the role that grants permission to list buckets and try again.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	stsClient := sts.NewFromConfig(*noPermsConfig)
	tempCredentials, err := stsClient.AssumeRole(ctx, &sts.AssumeRoleInput{
		RoleArn:         role.Arn,
		RoleSessionName: aws.String("AssumeRoleExampleSession"),
		DurationSeconds: aws.Int32(900),
	})
	if err != nil {
		log.Printf("Couldn't assume role %v.\n", *role.RoleName)
		panic(err)
	}
	log.Printf("Assumed role %v, got temporary credentials.\n", *role.RoleName)
	assumeRoleConfig, err := config.LoadDefaultConfig(ctx,
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
			*tempCredentials.Credentials.AccessKeyId,
			*tempCredentials.Credentials.SecretAccessKey,
			*tempCredentials.Credentials.SessionToken),
		),
	)
	if err != nil {
		panic(err)
	}

	// Add test options if this is a test run. This is needed only for testing purposes.
	scenario.addTestOptions(&assumeRoleConfig)

	s3Client := s3.NewFromConfig(assumeRoleConfig)
	result, err := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		log.Println("Couldn't list buckets with assumed role credentials.")
		panic(err)
	}
	log.Println("Successfully called ListBuckets with assumed role credentials, \n" +
		"here are some of them:")
	for i := 0; i < len(result.Buckets) && i < 5; i++ {
		log.Printf("\t%v\n", *result.Buckets[i].Name)
	}
	log.Println(strings.Repeat("-", 88))
}

// Cleanup deletes all resources created for the scenario.
func (scenario AssumeRoleScenario) Cleanup(ctx context.Context, user *types.User, role *types.Role) {
	if scenario.questioner.AskBool(
		"Do you want to delete the resources created for this example? (y/n)", "y",
	) {
		policies, err := scenario.roleWrapper.ListAttachedRolePolicies(ctx, *role.RoleName)
		if err != nil {
			panic(err)
		}
		for _, policy := range policies {
			err = scenario.roleWrapper.DetachRolePolicy(ctx, *role.RoleName, *policy.PolicyArn)
			if err != nil {
				panic(err)
			}
			err = scenario.policyWrapper.DeletePolicy(ctx, *policy.PolicyArn)
			if err != nil {
				panic(err)
			}
			log.Printf("Detached policy %v from role %v and deleted the policy.\n",
				*policy.PolicyName, *role.RoleName)
		}
		err = scenario.roleWrapper.DeleteRole(ctx, *role.RoleName)
		if err != nil {
			panic(err)
		}
		log.Printf("Deleted role %v.\n", *role.RoleName)

		userPols, err := scenario.userWrapper.ListUserPolicies(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		for _, userPol := range userPols {
			err = scenario.userWrapper.DeleteUserPolicy(ctx, *user.UserName, userPol)
			if err != nil {
				panic(err)
			}
			log.Printf("Deleted policy %v from user %v.\n", userPol, *user.UserName)
		}
		keys, err := scenario.userWrapper.ListAccessKeys(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		for _, key := range keys {
			err = scenario.userWrapper.DeleteAccessKey(ctx, *user.UserName, *key.AccessKeyId)
			if err != nil {
				panic(err)
			}
			log.Printf("Deleted access key %v from user %v.\n", *key.AccessKeyId, *user.UserName)
		}
		err = scenario.userWrapper.DeleteUser(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		log.Printf("Deleted user %v.\n", *user.UserName)
		log.Println(strings.Repeat("-", 88))
	}

}

// IScenarioHelper abstracts input and wait functions from a scenario so that they
// can be mocked for unit testing.
type IScenarioHelper interface {
	GetName() string
	Pause(secs int)
}

const rMax = 100000

type ScenarioHelper struct {
	Prefix string
	Random *rand.Rand
}

// GetName returns a unique name formed of a prefix and a random number.
func (helper *ScenarioHelper) GetName() string {
	return fmt.Sprintf("%v%v", helper.Prefix, helper.Random.Intn(rMax))
}

// Pause waits for the specified number of seconds.
func (helper ScenarioHelper) Pause(secs int) {
	time.Sleep(time.Duration(secs) * time.Second)
}
```
Defina una estructura que incluya las acciones de la cuenta.  

```
import (
	"context"
	"log"

	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// AccountWrapper encapsulates AWS Identity and Access Management (IAM) account actions
// used in the examples.
// It contains an IAM service client that is used to perform account actions.
type AccountWrapper struct {
	IamClient *iam.Client
}



// GetAccountPasswordPolicy gets the account password policy for the current account.
// If no policy has been set, a NoSuchEntityException is error is returned.
func (wrapper AccountWrapper) GetAccountPasswordPolicy(ctx context.Context) (*types.PasswordPolicy, error) {
	var pwPolicy *types.PasswordPolicy
	result, err := wrapper.IamClient.GetAccountPasswordPolicy(ctx,
		&iam.GetAccountPasswordPolicyInput{})
	if err != nil {
		log.Printf("Couldn't get account password policy. Here's why: %v\n", err)
	} else {
		pwPolicy = result.PasswordPolicy
	}
	return pwPolicy, err
}



// ListSAMLProviders gets the SAML providers for the account.
func (wrapper AccountWrapper) ListSAMLProviders(ctx context.Context) ([]types.SAMLProviderListEntry, error) {
	var providers []types.SAMLProviderListEntry
	result, err := wrapper.IamClient.ListSAMLProviders(ctx, &iam.ListSAMLProvidersInput{})
	if err != nil {
		log.Printf("Couldn't list SAML providers. Here's why: %v\n", err)
	} else {
		providers = result.SAMLProviderList
	}
	return providers, err
}
```
Defina una estructura que incluya las acciones de la política.  

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// PolicyWrapper encapsulates AWS Identity and Access Management (IAM) policy actions
// used in the examples.
// It contains an IAM service client that is used to perform policy actions.
type PolicyWrapper struct {
	IamClient *iam.Client
}



// ListPolicies gets up to maxPolicies policies.
func (wrapper PolicyWrapper) ListPolicies(ctx context.Context, maxPolicies int32) ([]types.Policy, error) {
	var policies []types.Policy
	result, err := wrapper.IamClient.ListPolicies(ctx, &iam.ListPoliciesInput{
		MaxItems: aws.Int32(maxPolicies),
	})
	if err != nil {
		log.Printf("Couldn't list policies. Here's why: %v\n", err)
	} else {
		policies = result.Policies
	}
	return policies, err
}



// PolicyDocument defines a policy document as a Go struct that can be serialized
// to JSON.
type PolicyDocument struct {
	Version   string
	Statement []PolicyStatement
}

// PolicyStatement defines a statement in a policy document.
type PolicyStatement struct {
	Effect    string
	Action    []string
	Principal map[string]string `json:",omitempty"`
	Resource  *string           `json:",omitempty"`
}

// CreatePolicy creates a policy that grants a list of actions to the specified resource.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper PolicyWrapper) CreatePolicy(ctx context.Context, policyName string, actions []string,
	resourceArn string) (*types.Policy, error) {
	var policy *types.Policy
	policyDoc := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:   "Allow",
			Action:   actions,
			Resource: aws.String(resourceArn),
		}},
	}
	policyBytes, err := json.Marshal(policyDoc)
	if err != nil {
		log.Printf("Couldn't create policy document for %v. Here's why: %v\n", resourceArn, err)
		return nil, err
	}
	result, err := wrapper.IamClient.CreatePolicy(ctx, &iam.CreatePolicyInput{
		PolicyDocument: aws.String(string(policyBytes)),
		PolicyName:     aws.String(policyName),
	})
	if err != nil {
		log.Printf("Couldn't create policy %v. Here's why: %v\n", policyName, err)
	} else {
		policy = result.Policy
	}
	return policy, err
}



// GetPolicy gets data about a policy.
func (wrapper PolicyWrapper) GetPolicy(ctx context.Context, policyArn string) (*types.Policy, error) {
	var policy *types.Policy
	result, err := wrapper.IamClient.GetPolicy(ctx, &iam.GetPolicyInput{
		PolicyArn: aws.String(policyArn),
	})
	if err != nil {
		log.Printf("Couldn't get policy %v. Here's why: %v\n", policyArn, err)
	} else {
		policy = result.Policy
	}
	return policy, err
}



// DeletePolicy deletes a policy.
func (wrapper PolicyWrapper) DeletePolicy(ctx context.Context, policyArn string) error {
	_, err := wrapper.IamClient.DeletePolicy(ctx, &iam.DeletePolicyInput{
		PolicyArn: aws.String(policyArn),
	})
	if err != nil {
		log.Printf("Couldn't delete policy %v. Here's why: %v\n", policyArn, err)
	}
	return err
}
```
Defina una estructura que incluya las acciones de rol.  

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// RoleWrapper encapsulates AWS Identity and Access Management (IAM) role actions
// used in the examples.
// It contains an IAM service client that is used to perform role actions.
type RoleWrapper struct {
	IamClient *iam.Client
}



// ListRoles gets up to maxRoles roles.
func (wrapper RoleWrapper) ListRoles(ctx context.Context, maxRoles int32) ([]types.Role, error) {
	var roles []types.Role
	result, err := wrapper.IamClient.ListRoles(ctx,
		&iam.ListRolesInput{MaxItems: aws.Int32(maxRoles)},
	)
	if err != nil {
		log.Printf("Couldn't list roles. Here's why: %v\n", err)
	} else {
		roles = result.Roles
	}
	return roles, err
}



// CreateRole creates a role that trusts a specified user. The trusted user can assume
// the role to acquire its permissions.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper RoleWrapper) CreateRole(ctx context.Context, roleName string, trustedUserArn string) (*types.Role, error) {
	var role *types.Role
	trustPolicy := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:    "Allow",
			Principal: map[string]string{"AWS": trustedUserArn},
			Action:    []string{"sts:AssumeRole"},
		}},
	}
	policyBytes, err := json.Marshal(trustPolicy)
	if err != nil {
		log.Printf("Couldn't create trust policy for %v. Here's why: %v\n", trustedUserArn, err)
		return nil, err
	}
	result, err := wrapper.IamClient.CreateRole(ctx, &iam.CreateRoleInput{
		AssumeRolePolicyDocument: aws.String(string(policyBytes)),
		RoleName:                 aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't create role %v. Here's why: %v\n", roleName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// GetRole gets data about a role.
func (wrapper RoleWrapper) GetRole(ctx context.Context, roleName string) (*types.Role, error) {
	var role *types.Role
	result, err := wrapper.IamClient.GetRole(ctx,
		&iam.GetRoleInput{RoleName: aws.String(roleName)})
	if err != nil {
		log.Printf("Couldn't get role %v. Here's why: %v\n", roleName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// CreateServiceLinkedRole creates a service-linked role that is owned by the specified service.
func (wrapper RoleWrapper) CreateServiceLinkedRole(ctx context.Context, serviceName string, description string) (
	*types.Role, error) {
	var role *types.Role
	result, err := wrapper.IamClient.CreateServiceLinkedRole(ctx, &iam.CreateServiceLinkedRoleInput{
		AWSServiceName: aws.String(serviceName),
		Description:    aws.String(description),
	})
	if err != nil {
		log.Printf("Couldn't create service-linked role %v. Here's why: %v\n", serviceName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// DeleteServiceLinkedRole deletes a service-linked role.
func (wrapper RoleWrapper) DeleteServiceLinkedRole(ctx context.Context, roleName string) error {
	_, err := wrapper.IamClient.DeleteServiceLinkedRole(ctx, &iam.DeleteServiceLinkedRoleInput{
		RoleName: aws.String(roleName)},
	)
	if err != nil {
		log.Printf("Couldn't delete service-linked role %v. Here's why: %v\n", roleName, err)
	}
	return err
}



// AttachRolePolicy attaches a policy to a role.
func (wrapper RoleWrapper) AttachRolePolicy(ctx context.Context, policyArn string, roleName string) error {
	_, err := wrapper.IamClient.AttachRolePolicy(ctx, &iam.AttachRolePolicyInput{
		PolicyArn: aws.String(policyArn),
		RoleName:  aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't attach policy %v to role %v. Here's why: %v\n", policyArn, roleName, err)
	}
	return err
}



// ListAttachedRolePolicies lists the policies that are attached to the specified role.
func (wrapper RoleWrapper) ListAttachedRolePolicies(ctx context.Context, roleName string) ([]types.AttachedPolicy, error) {
	var policies []types.AttachedPolicy
	result, err := wrapper.IamClient.ListAttachedRolePolicies(ctx, &iam.ListAttachedRolePoliciesInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't list attached policies for role %v. Here's why: %v\n", roleName, err)
	} else {
		policies = result.AttachedPolicies
	}
	return policies, err
}



// DetachRolePolicy detaches a policy from a role.
func (wrapper RoleWrapper) DetachRolePolicy(ctx context.Context, roleName string, policyArn string) error {
	_, err := wrapper.IamClient.DetachRolePolicy(ctx, &iam.DetachRolePolicyInput{
		PolicyArn: aws.String(policyArn),
		RoleName:  aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't detach policy from role %v. Here's why: %v\n", roleName, err)
	}
	return err
}



// ListRolePolicies lists the inline policies for a role.
func (wrapper RoleWrapper) ListRolePolicies(ctx context.Context, roleName string) ([]string, error) {
	var policies []string
	result, err := wrapper.IamClient.ListRolePolicies(ctx, &iam.ListRolePoliciesInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't list policies for role %v. Here's why: %v\n", roleName, err)
	} else {
		policies = result.PolicyNames
	}
	return policies, err
}



// DeleteRole deletes a role. All attached policies must be detached before a
// role can be deleted.
func (wrapper RoleWrapper) DeleteRole(ctx context.Context, roleName string) error {
	_, err := wrapper.IamClient.DeleteRole(ctx, &iam.DeleteRoleInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't delete role %v. Here's why: %v\n", roleName, err)
	}
	return err
}
```
Defina una estructura que incluya las acciones del usuario.  

```
import (
	"context"
	"encoding/json"
	"errors"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
	"github.com/aws/smithy-go"
)

// UserWrapper encapsulates user actions used in the examples.
// It contains an IAM service client that is used to perform user actions.
type UserWrapper struct {
	IamClient *iam.Client
}



// ListUsers gets up to maxUsers number of users.
func (wrapper UserWrapper) ListUsers(ctx context.Context, maxUsers int32) ([]types.User, error) {
	var users []types.User
	result, err := wrapper.IamClient.ListUsers(ctx, &iam.ListUsersInput{
		MaxItems: aws.Int32(maxUsers),
	})
	if err != nil {
		log.Printf("Couldn't list users. Here's why: %v\n", err)
	} else {
		users = result.Users
	}
	return users, err
}



// GetUser gets data about a user.
func (wrapper UserWrapper) GetUser(ctx context.Context, userName string) (*types.User, error) {
	var user *types.User
	result, err := wrapper.IamClient.GetUser(ctx, &iam.GetUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		var apiError smithy.APIError
		if errors.As(err, &apiError) {
			switch apiError.(type) {
			case *types.NoSuchEntityException:
				log.Printf("User %v does not exist.\n", userName)
				err = nil
			default:
				log.Printf("Couldn't get user %v. Here's why: %v\n", userName, err)
			}
		}
	} else {
		user = result.User
	}
	return user, err
}



// CreateUser creates a new user with the specified name.
func (wrapper UserWrapper) CreateUser(ctx context.Context, userName string) (*types.User, error) {
	var user *types.User
	result, err := wrapper.IamClient.CreateUser(ctx, &iam.CreateUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't create user %v. Here's why: %v\n", userName, err)
	} else {
		user = result.User
	}
	return user, err
}



// CreateUserPolicy adds an inline policy to a user. This example creates a policy that
// grants a list of actions on a specified role.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper UserWrapper) CreateUserPolicy(ctx context.Context, userName string, policyName string, actions []string,
	roleArn string) error {
	policyDoc := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:   "Allow",
			Action:   actions,
			Resource: aws.String(roleArn),
		}},
	}
	policyBytes, err := json.Marshal(policyDoc)
	if err != nil {
		log.Printf("Couldn't create policy document for %v. Here's why: %v\n", roleArn, err)
		return err
	}
	_, err = wrapper.IamClient.PutUserPolicy(ctx, &iam.PutUserPolicyInput{
		PolicyDocument: aws.String(string(policyBytes)),
		PolicyName:     aws.String(policyName),
		UserName:       aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't create policy for user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// ListUserPolicies lists the inline policies for the specified user.
func (wrapper UserWrapper) ListUserPolicies(ctx context.Context, userName string) ([]string, error) {
	var policies []string
	result, err := wrapper.IamClient.ListUserPolicies(ctx, &iam.ListUserPoliciesInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't list policies for user %v. Here's why: %v\n", userName, err)
	} else {
		policies = result.PolicyNames
	}
	return policies, err
}



// DeleteUserPolicy deletes an inline policy from a user.
func (wrapper UserWrapper) DeleteUserPolicy(ctx context.Context, userName string, policyName string) error {
	_, err := wrapper.IamClient.DeleteUserPolicy(ctx, &iam.DeleteUserPolicyInput{
		PolicyName: aws.String(policyName),
		UserName:   aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete policy from user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// DeleteUser deletes a user.
func (wrapper UserWrapper) DeleteUser(ctx context.Context, userName string) error {
	_, err := wrapper.IamClient.DeleteUser(ctx, &iam.DeleteUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// CreateAccessKeyPair creates an access key for a user. The returned access key contains
// the ID and secret credentials needed to use the key.
func (wrapper UserWrapper) CreateAccessKeyPair(ctx context.Context, userName string) (*types.AccessKey, error) {
	var key *types.AccessKey
	result, err := wrapper.IamClient.CreateAccessKey(ctx, &iam.CreateAccessKeyInput{
		UserName: aws.String(userName)})
	if err != nil {
		log.Printf("Couldn't create access key pair for user %v. Here's why: %v\n", userName, err)
	} else {
		key = result.AccessKey
	}
	return key, err
}



// DeleteAccessKey deletes an access key from a user.
func (wrapper UserWrapper) DeleteAccessKey(ctx context.Context, userName string, keyId string) error {
	_, err := wrapper.IamClient.DeleteAccessKey(ctx, &iam.DeleteAccessKeyInput{
		AccessKeyId: aws.String(keyId),
		UserName:    aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete access key %v. Here's why: %v\n", keyId, err)
	}
	return err
}



// ListAccessKeys lists the access keys for the specified user.
func (wrapper UserWrapper) ListAccessKeys(ctx context.Context, userName string) ([]types.AccessKeyMetadata, error) {
	var keys []types.AccessKeyMetadata
	result, err := wrapper.IamClient.ListAccessKeys(ctx, &iam.ListAccessKeysInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't list access keys for user %v. Here's why: %v\n", userName, err)
	} else {
		keys = result.AccessKeyMetadata
	}
	return keys, err
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK para Go*.
  + [AttachRolePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.AttachRolePolicy)
  + [CreateAccessKey](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateAccessKey)
  + [CreatePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreatePolicy)
  + [CreateRole](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateRole)
  + [CreateUser](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateUser)
  + [DeleteAccessKey](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteAccessKey)
  + [DeletePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeletePolicy)
  + [DeleteRole](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteRole)
  + [DeleteUser](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteUser)
  + [DeleteUserPolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteUserPolicy)
  + [DetachRolePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DetachRolePolicy)
  + [PutUserPolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.PutUserPolicy)

------
#### [ Java ]

**SDK para Java 2.x**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/iam#code-examples). 
Cree funciones que encapsulen las acciones del usuario de IAM.  

```
/*
  To run this Java V2 code example, set up your development environment, including your credentials.

  For information, see this documentation topic:

  https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html

  This example performs these operations:

  1. Creates a user that has no permissions.
  2. Creates a role and policy that grants Amazon S3 permissions.
  3. Creates a role.
  4. Grants the user permissions.
  5. Gets temporary credentials by assuming the role.  Creates an Amazon S3 Service client object with the temporary credentials.
  6. Deletes the resources.
 */

public class IAMScenario {
    public static final String DASHES = new String(new char[80]).replace("\0", "-");
    public static final String PolicyDocument = "{" +
            "  \"Version\": \"2012-10-17\"," +
            "  \"Statement\": [" +
            "    {" +
            "        \"Effect\": \"Allow\"," +
            "        \"Action\": [" +
            "            \"s3:*\"" +
            "       ]," +
            "       \"Resource\": \"*\"" +
            "    }" +
            "   ]" +
            "}";

    public static String userArn;

    public static void main(String[] args) throws Exception {

        final String usage = """

                Usage:
                    <username> <policyName> <roleName> <roleSessionName> <bucketName>\s

                Where:
                    username - The name of the IAM user to create.\s
                    policyName - The name of the policy to create.\s
                    roleName - The name of the role to create.\s
                    roleSessionName - The name of the session required for the assumeRole operation.\s
                    bucketName - The name of the Amazon S3 bucket from which objects are read.\s
                """;

        if (args.length != 5) {
            System.out.println(usage);
            System.exit(1);
        }

        String userName = args[0];
        String policyName = args[1];
        String roleName = args[2];
        String roleSessionName = args[3];
        String bucketName = args[4];

        Region region = Region.AWS_GLOBAL;
        IamClient iam = IamClient.builder()
                .region(region)
                .build();

        System.out.println(DASHES);
        System.out.println("Welcome to the AWS IAM example scenario.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println(" 1. Create the IAM user.");
        User createUser = createIAMUser(iam, userName);

        System.out.println(DASHES);
        userArn = createUser.arn();

        AccessKey myKey = createIAMAccessKey(iam, userName);
        String accessKey = myKey.accessKeyId();
        String secretKey = myKey.secretAccessKey();
        String assumeRolePolicyDocument = "{" +
                "\"Version\": \"2012-10-17\"," +
                "\"Statement\": [{" +
                "\"Effect\": \"Allow\"," +
                "\"Principal\": {" +
                "	\"AWS\": \"" + userArn + "\"" +
                "}," +
                "\"Action\": \"sts:AssumeRole\"" +
                "}]" +
                "}";

        System.out.println(assumeRolePolicyDocument);
        System.out.println(userName + " was successfully created.");
        System.out.println(DASHES);
        System.out.println("2. Creates a policy.");
        String polArn = createIAMPolicy(iam, policyName);
        System.out.println("The policy " + polArn + " was successfully created.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("3. Creates a role.");
        TimeUnit.SECONDS.sleep(30);
        String roleArn = createIAMRole(iam, roleName, assumeRolePolicyDocument);
        System.out.println(roleArn + " was successfully created.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("4. Grants the user permissions.");
        attachIAMRolePolicy(iam, roleName, polArn);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("*** Wait for 30 secs so the resource is available");
        TimeUnit.SECONDS.sleep(30);
        System.out.println("5. Gets temporary credentials by assuming the role.");
        System.out.println("Perform an Amazon S3 Service operation using the temporary credentials.");
        assumeRole(roleArn, roleSessionName, bucketName, accessKey, secretKey);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("6 Getting ready to delete the AWS resources");
        deleteKey(iam, userName, accessKey);
        deleteRole(iam, roleName, polArn);
        deleteIAMUser(iam, userName);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("This IAM Scenario has successfully completed");
        System.out.println(DASHES);
    }

    public static AccessKey createIAMAccessKey(IamClient iam, String user) {
        try {
            CreateAccessKeyRequest request = CreateAccessKeyRequest.builder()
                    .userName(user)
                    .build();

            CreateAccessKeyResponse response = iam.createAccessKey(request);
            return response.accessKey();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
    }

    public static User createIAMUser(IamClient iam, String username) {
        try {
            // Create an IamWaiter object
            IamWaiter iamWaiter = iam.waiter();
            CreateUserRequest request = CreateUserRequest.builder()
                    .userName(username)
                    .build();

            // Wait until the user is created.
            CreateUserResponse response = iam.createUser(request);
            GetUserRequest userRequest = GetUserRequest.builder()
                    .userName(response.user().userName())
                    .build();

            WaiterResponse<GetUserResponse> waitUntilUserExists = iamWaiter.waitUntilUserExists(userRequest);
            waitUntilUserExists.matched().response().ifPresent(System.out::println);
            return response.user();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
    }

    public static String createIAMRole(IamClient iam, String rolename, String json) {

        try {
            CreateRoleRequest request = CreateRoleRequest.builder()
                    .roleName(rolename)
                    .assumeRolePolicyDocument(json)
                    .description("Created using the AWS SDK for Java")
                    .build();

            CreateRoleResponse response = iam.createRole(request);
            System.out.println("The ARN of the role is " + response.role().arn());
            return response.role().arn();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static String createIAMPolicy(IamClient iam, String policyName) {
        try {
            // Create an IamWaiter object.
            IamWaiter iamWaiter = iam.waiter();
            CreatePolicyRequest request = CreatePolicyRequest.builder()
                    .policyName(policyName)
                    .policyDocument(PolicyDocument).build();

            CreatePolicyResponse response = iam.createPolicy(request);
            GetPolicyRequest polRequest = GetPolicyRequest.builder()
                    .policyArn(response.policy().arn())
                    .build();

            WaiterResponse<GetPolicyResponse> waitUntilPolicyExists = iamWaiter.waitUntilPolicyExists(polRequest);
            waitUntilPolicyExists.matched().response().ifPresent(System.out::println);
            return response.policy().arn();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static void attachIAMRolePolicy(IamClient iam, String roleName, String policyArn) {
        try {
            ListAttachedRolePoliciesRequest request = ListAttachedRolePoliciesRequest.builder()
                    .roleName(roleName)
                    .build();

            ListAttachedRolePoliciesResponse response = iam.listAttachedRolePolicies(request);
            List<AttachedPolicy> attachedPolicies = response.attachedPolicies();
            String polArn;
            for (AttachedPolicy policy : attachedPolicies) {
                polArn = policy.policyArn();
                if (polArn.compareTo(policyArn) == 0) {
                    System.out.println(roleName + " policy is already attached to this role.");
                    return;
                }
            }

            AttachRolePolicyRequest attachRequest = AttachRolePolicyRequest.builder()
                    .roleName(roleName)
                    .policyArn(policyArn)
                    .build();

            iam.attachRolePolicy(attachRequest);
            System.out.println("Successfully attached policy " + policyArn + " to role " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    // Invoke an Amazon S3 operation using the Assumed Role.
    public static void assumeRole(String roleArn, String roleSessionName, String bucketName, String keyVal,
            String keySecret) {

        // Use the creds of the new IAM user that was created in this code example.
        AwsBasicCredentials credentials = AwsBasicCredentials.create(keyVal, keySecret);
        StsClient stsClient = StsClient.builder()
                .region(Region.US_EAST_1)
                .credentialsProvider(StaticCredentialsProvider.create(credentials))
                .build();

        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();
            String key = myCreds.accessKeyId();
            String secKey = myCreds.secretAccessKey();
            String secToken = myCreds.sessionToken();

            // List all objects in an Amazon S3 bucket using the temp creds retrieved by
            // invoking assumeRole.
            Region region = Region.US_EAST_1;
            S3Client s3 = S3Client.builder()
                    .credentialsProvider(
                            StaticCredentialsProvider.create(AwsSessionCredentials.create(key, secKey, secToken)))
                    .region(region)
                    .build();

            System.out.println("Created a S3Client using temp credentials.");
            System.out.println("Listing objects in " + bucketName);
            ListObjectsRequest listObjects = ListObjectsRequest.builder()
                    .bucket(bucketName)
                    .build();

            ListObjectsResponse res = s3.listObjects(listObjects);
            List<S3Object> objects = res.contents();
            for (S3Object myValue : objects) {
                System.out.println("The name of the key is " + myValue.key());
                System.out.println("The owner is " + myValue.owner());
            }

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }

    public static void deleteRole(IamClient iam, String roleName, String polArn) {

        try {
            // First the policy needs to be detached.
            DetachRolePolicyRequest rolePolicyRequest = DetachRolePolicyRequest.builder()
                    .policyArn(polArn)
                    .roleName(roleName)
                    .build();

            iam.detachRolePolicy(rolePolicyRequest);

            // Delete the policy.
            DeletePolicyRequest request = DeletePolicyRequest.builder()
                    .policyArn(polArn)
                    .build();

            iam.deletePolicy(request);
            System.out.println("*** Successfully deleted " + polArn);

            // Delete the role.
            DeleteRoleRequest roleRequest = DeleteRoleRequest.builder()
                    .roleName(roleName)
                    .build();

            iam.deleteRole(roleRequest);
            System.out.println("*** Successfully deleted " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void deleteKey(IamClient iam, String username, String accessKey) {
        try {
            DeleteAccessKeyRequest request = DeleteAccessKeyRequest.builder()
                    .accessKeyId(accessKey)
                    .userName(username)
                    .build();

            iam.deleteAccessKey(request);
            System.out.println("Successfully deleted access key " + accessKey +
                    " from user " + username);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void deleteIAMUser(IamClient iam, String userName) {
        try {
            DeleteUserRequest request = DeleteUserRequest.builder()
                    .userName(userName)
                    .build();

            iam.deleteUser(request);
            System.out.println("*** Successfully deleted " + userName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK for Java 2.x*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/PutUserPolicy)

------
#### [ JavaScript ]

**SDK para JavaScript (v3)**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/iam#code-examples). 
Cree un usuario de IAM y un rol que conceda permiso para enumerar los buckets de Amazon S3. El usuario solo tiene derechos para asumir el rol. Después de asumir el rol, use las credenciales temporales para enumerar los buckets de la cuenta.  

```
import {
  CreateUserCommand,
  GetUserCommand,
  CreateAccessKeyCommand,
  CreatePolicyCommand,
  CreateRoleCommand,
  AttachRolePolicyCommand,
  DeleteAccessKeyCommand,
  DeleteUserCommand,
  DeleteRoleCommand,
  DeletePolicyCommand,
  DetachRolePolicyCommand,
  IAMClient,
} from "@aws-sdk/client-iam";
import { ListBucketsCommand, S3Client } from "@aws-sdk/client-s3";
import { AssumeRoleCommand, STSClient } from "@aws-sdk/client-sts";
import { retry } from "@aws-doc-sdk-examples/lib/utils/util-timers.js";
import { ScenarioInput } from "@aws-doc-sdk-examples/lib/scenario/index.js";

// Set the parameters.
const iamClient = new IAMClient({});
const userName = "iam_basic_test_username";
const policyName = "iam_basic_test_policy";
const roleName = "iam_basic_test_role";

/**
 * Create a new IAM user. If the user already exists, give
 * the option to delete and re-create it.
 * @param {string} name
 */
export const createUser = async (name, confirmAll = false) => {
  try {
    const { User } = await iamClient.send(
      new GetUserCommand({ UserName: name }),
    );
    const input = new ScenarioInput(
      "deleteUser",
      "Do you want to delete and remake this user?",
      { type: "confirm" },
    );
    const deleteUser = await input.handle({}, { confirmAll });
    // If the user exists, and you want to delete it, delete the user
    // and then create it again.
    if (deleteUser) {
      await iamClient.send(new DeleteUserCommand({ UserName: User.UserName }));
      await iamClient.send(new CreateUserCommand({ UserName: name }));
    } else {
      console.warn(
        `${name} already exists. The scenario may not work as expected.`,
      );
      return User;
    }
  } catch (caught) {
    // If there is no user by that name, create one.
    if (caught instanceof Error && caught.name === "NoSuchEntityException") {
      const { User } = await iamClient.send(
        new CreateUserCommand({ UserName: name }),
      );
      return User;
    }
    throw caught;
  }
};

export const main = async (confirmAll = false) => {
  // Create a user. The user has no permissions by default.
  const User = await createUser(userName, confirmAll);

  if (!User) {
    throw new Error("User not created");
  }

  // Create an access key. This key is used to authenticate the new user to
  // Amazon Simple Storage Service (Amazon S3) and AWS Security Token Service (AWS STS).
  // It's not best practice to use access keys. For more information, see https://aws.amazon.com/iam/resources/best-practices/.
  const createAccessKeyResponse = await iamClient.send(
    new CreateAccessKeyCommand({ UserName: userName }),
  );

  if (
    !createAccessKeyResponse.AccessKey?.AccessKeyId ||
    !createAccessKeyResponse.AccessKey?.SecretAccessKey
  ) {
    throw new Error("Access key not created");
  }

  const {
    AccessKey: { AccessKeyId, SecretAccessKey },
  } = createAccessKeyResponse;

  let s3Client = new S3Client({
    credentials: {
      accessKeyId: AccessKeyId,
      secretAccessKey: SecretAccessKey,
    },
  });

  // Retry the list buckets operation until it succeeds. InvalidAccessKeyId is
  // thrown while the user and access keys are still stabilizing.
  await retry({ intervalInMs: 1000, maxRetries: 300 }, async () => {
    try {
      return await listBuckets(s3Client);
    } catch (err) {
      if (err instanceof Error && err.name === "InvalidAccessKeyId") {
        throw err;
      }
    }
  });

  // Retry the create role operation until it succeeds. A MalformedPolicyDocument error
  // is thrown while the user and access keys are still stabilizing.
  const { Role } = await retry(
    {
      intervalInMs: 2000,
      maxRetries: 60,
    },
    () =>
      iamClient.send(
        new CreateRoleCommand({
          AssumeRolePolicyDocument: JSON.stringify({
            Version: "2012-10-17",
            Statement: [
              {
                Effect: "Allow",
                Principal: {
                  // Allow the previously created user to assume this role.
                  AWS: User.Arn,
                },
                Action: "sts:AssumeRole",
              },
            ],
          }),
          RoleName: roleName,
        }),
      ),
  );

  if (!Role) {
    throw new Error("Role not created");
  }

  // Create a policy that allows the user to list S3 buckets.
  const { Policy: listBucketPolicy } = await iamClient.send(
    new CreatePolicyCommand({
      PolicyDocument: JSON.stringify({
        Version: "2012-10-17",
        Statement: [
          {
            Effect: "Allow",
            Action: ["s3:ListAllMyBuckets"],
            Resource: "*",
          },
        ],
      }),
      PolicyName: policyName,
    }),
  );

  if (!listBucketPolicy) {
    throw new Error("Policy not created");
  }

  // Attach the policy granting the 's3:ListAllMyBuckets' action to the role.
  await iamClient.send(
    new AttachRolePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
      RoleName: Role.RoleName,
    }),
  );

  // Assume the role.
  const stsClient = new STSClient({
    credentials: {
      accessKeyId: AccessKeyId,
      secretAccessKey: SecretAccessKey,
    },
  });

  // Retry the assume role operation until it succeeds.
  const { Credentials } = await retry(
    { intervalInMs: 2000, maxRetries: 60 },
    () =>
      stsClient.send(
        new AssumeRoleCommand({
          RoleArn: Role.Arn,
          RoleSessionName: `iamBasicScenarioSession-${Math.floor(
            Math.random() * 1000000,
          )}`,
          DurationSeconds: 900,
        }),
      ),
  );

  if (!Credentials?.AccessKeyId || !Credentials?.SecretAccessKey) {
    throw new Error("Credentials not created");
  }

  s3Client = new S3Client({
    credentials: {
      accessKeyId: Credentials.AccessKeyId,
      secretAccessKey: Credentials.SecretAccessKey,
      sessionToken: Credentials.SessionToken,
    },
  });

  // List the S3 buckets again.
  // Retry the list buckets operation until it succeeds. AccessDenied might
  // be thrown while the role policy is still stabilizing.
  await retry({ intervalInMs: 2000, maxRetries: 120 }, () =>
    listBuckets(s3Client),
  );

  // Clean up.
  await iamClient.send(
    new DetachRolePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
      RoleName: Role.RoleName,
    }),
  );

  await iamClient.send(
    new DeletePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
    }),
  );

  await iamClient.send(
    new DeleteRoleCommand({
      RoleName: Role.RoleName,
    }),
  );

  await iamClient.send(
    new DeleteAccessKeyCommand({
      UserName: userName,
      AccessKeyId,
    }),
  );

  await iamClient.send(
    new DeleteUserCommand({
      UserName: userName,
    }),
  );
};

/**
 *
 * @param {S3Client} s3Client
 */
const listBuckets = async (s3Client) => {
  const { Buckets } = await s3Client.send(new ListBucketsCommand({}));

  if (!Buckets) {
    throw new Error("Buckets not listed");
  }

  console.log(Buckets.map((bucket) => bucket.Name).join("\n"));
};
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK para JavaScript*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/AttachRolePolicyCommand)
  + [CreateAccessKey](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateAccessKeyCommand)
  + [CreatePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreatePolicyCommand)
  + [CreateRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateRoleCommand)
  + [CreateUser](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateUserCommand)
  + [DeleteAccessKey](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteAccessKeyCommand)
  + [DeletePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeletePolicyCommand)
  + [DeleteRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteRoleCommand)
  + [DeleteUser](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteUserCommand)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteUserPolicyCommand)
  + [DetachRolePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DetachRolePolicyCommand)
  + [PutUserPolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/PutUserPolicyCommand)

------
#### [ Kotlin ]

**SDK para Kotlin**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/iam#code-examples). 
Cree funciones que encapsulen las acciones del usuario de IAM.  

```
suspend fun main(args: Array<String>) {
    val usage = """
    Usage:
        <username> <policyName> <roleName> <roleSessionName> <fileLocation> <bucketName> 

    Where:
        username - The name of the IAM user to create. 
        policyName - The name of the policy to create. 
        roleName - The name of the role to create. 
        roleSessionName - The name of the session required for the assumeRole operation. 
        fileLocation - The file location to the JSON required to create the role (see Readme). 
        bucketName - The name of the Amazon S3 bucket from which objects are read. 
    """

    if (args.size != 6) {
        println(usage)
        exitProcess(1)
    }

    val userName = args[0]
    val policyName = args[1]
    val roleName = args[2]
    val roleSessionName = args[3]
    val fileLocation = args[4]
    val bucketName = args[5]

    createUser(userName)
    println("$userName was successfully created.")

    val polArn = createPolicy(policyName)
    println("The policy $polArn was successfully created.")

    val roleArn = createRole(roleName, fileLocation)
    println("$roleArn was successfully created.")
    attachRolePolicy(roleName, polArn)

    println("*** Wait for 1 MIN so the resource is available.")
    delay(60000)
    assumeGivenRole(roleArn, roleSessionName, bucketName)

    println("*** Getting ready to delete the AWS resources.")
    deleteRole(roleName, polArn)
    deleteUser(userName)
    println("This IAM Scenario has successfully completed.")
}

suspend fun createUser(usernameVal: String?): String? {
    val request =
        CreateUserRequest {
            userName = usernameVal
        }

    IamClient { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createUser(request)
        return response.user?.userName
    }
}

suspend fun createPolicy(policyNameVal: String?): String {
    val policyDocumentValue = """
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:*"
                ],
                "Resource": "*"
            }
        ]
    }
    """.trimIndent()

    val request =
        CreatePolicyRequest {
            policyName = policyNameVal
            policyDocument = policyDocumentValue
        }

    IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createPolicy(request)
        return response.policy?.arn.toString()
    }
}

suspend fun createRole(
    rolenameVal: String?,
    fileLocation: String?,
): String? {
    val jsonObject = fileLocation?.let { readJsonSimpleDemo(it) } as JSONObject

    val request =
        CreateRoleRequest {
            roleName = rolenameVal
            assumeRolePolicyDocument = jsonObject.toJSONString()
            description = "Created using the AWS SDK for Kotlin"
        }

    IamClient { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createRole(request)
        return response.role?.arn
    }
}

suspend fun attachRolePolicy(
    roleNameVal: String,
    policyArnVal: String,
) {
    val request =
        ListAttachedRolePoliciesRequest {
            roleName = roleNameVal
        }

    IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.listAttachedRolePolicies(request)
        val attachedPolicies = response.attachedPolicies

        // Ensure that the policy is not attached to this role.
        val checkStatus: Int
        if (attachedPolicies != null) {
            checkStatus = checkMyList(attachedPolicies, policyArnVal)
            if (checkStatus == -1) {
                return
            }
        }

        val policyRequest =
            AttachRolePolicyRequest {
                roleName = roleNameVal
                policyArn = policyArnVal
            }
        iamClient.attachRolePolicy(policyRequest)
        println("Successfully attached policy $policyArnVal to role $roleNameVal")
    }
}

fun checkMyList(
    attachedPolicies: List<AttachedPolicy>,
    policyArnVal: String,
): Int {
    for (policy in attachedPolicies) {
        val polArn = policy.policyArn.toString()

        if (polArn.compareTo(policyArnVal) == 0) {
            println("The policy is already attached to this role.")
            return -1
        }
    }
    return 0
}

suspend fun assumeGivenRole(
    roleArnVal: String?,
    roleSessionNameVal: String?,
    bucketName: String,
) {
    val stsClient = StsClient.fromEnvironment { region = "us-east-1" }
    val roleRequest =
        AssumeRoleRequest {
            roleArn = roleArnVal
            roleSessionName = roleSessionNameVal
        }

    val roleResponse = stsClient.assumeRole(roleRequest)
    val myCreds = roleResponse.credentials
    val key = myCreds?.accessKeyId
    val secKey = myCreds?.secretAccessKey
    val secToken = myCreds?.sessionToken

    val staticCredentials = StaticCredentialsProvider {
        accessKeyId = key
        secretAccessKey = secKey
        sessionToken = secToken
    }

    // List all objects in an Amazon S3 bucket using the temp creds.
    val s3 = S3Client.fromEnvironment {
        region = "us-east-1"
        credentialsProvider = staticCredentials
    }

    println("Created a S3Client using temp credentials.")
    println("Listing objects in $bucketName")

    val listObjects =
        ListObjectsRequest {
            bucket = bucketName
        }

    val response = s3.listObjects(listObjects)
    response.contents?.forEach { myObject ->
        println("The name of the key is ${myObject.key}")
        println("The owner is ${myObject.owner}")
    }
}

suspend fun deleteRole(
    roleNameVal: String,
    polArn: String,
) {
    val iam = IamClient.fromEnvironment { region = "AWS_GLOBAL" }

    // First the policy needs to be detached.
    val rolePolicyRequest =
        DetachRolePolicyRequest {
            policyArn = polArn
            roleName = roleNameVal
        }

    iam.detachRolePolicy(rolePolicyRequest)

    // Delete the policy.
    val request =
        DeletePolicyRequest {
            policyArn = polArn
        }

    iam.deletePolicy(request)
    println("*** Successfully deleted $polArn")

    // Delete the role.
    val roleRequest =
        DeleteRoleRequest {
            roleName = roleNameVal
        }

    iam.deleteRole(roleRequest)
    println("*** Successfully deleted $roleNameVal")
}

suspend fun deleteUser(userNameVal: String) {
    val iam = IamClient.fromEnvironment { region = "AWS_GLOBAL" }
    val request =
        DeleteUserRequest {
            userName = userNameVal
        }

    iam.deleteUser(request)
    println("*** Successfully deleted $userNameVal")
}

@Throws(java.lang.Exception::class)
fun readJsonSimpleDemo(filename: String): Any? {
    val reader = FileReader(filename)
    val jsonParser = JSONParser()
    return jsonParser.parse(reader)
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *Referencia de la API de AWS SDK para Kotlin*.
  + [AttachRolePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateAccessKey](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreatePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateRole](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateUser](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteAccessKey](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeletePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteRole](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteUser](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteUserPolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DetachRolePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [PutUserPolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)

------
#### [ PHP ]

**SDK para PHP**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/iam#code-examples). 

```
namespace Iam\Basics;

require 'vendor/autoload.php';

use Aws\Credentials\Credentials;
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
use Aws\Sts\StsClient;
use Iam\IAMService;

echo("\n");
echo("--------------------------------------\n");
print("Welcome to the IAM getting started demo using PHP!\n");
echo("--------------------------------------\n");

$uuid = uniqid();
$service = new IAMService();

$user = $service->createUser("iam_demo_user_$uuid");
echo "Created user with the arn: {$user['Arn']}\n";

$key = $service->createAccessKey($user['UserName']);
$assumeRolePolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Principal\": {\"AWS\": \"{$user['Arn']}\"},
                    \"Action\": \"sts:AssumeRole\"
                }]
            }";
$assumeRoleRole = $service->createRole("iam_demo_role_$uuid", $assumeRolePolicyDocument);
echo "Created role: {$assumeRoleRole['RoleName']}\n";

$listAllBucketsPolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]
}";
$listAllBucketsPolicy = $service->createPolicy("iam_demo_policy_$uuid", $listAllBucketsPolicyDocument);
echo "Created policy: {$listAllBucketsPolicy['PolicyName']}\n";

$service->attachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']);

$inlinePolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"{$assumeRoleRole['Arn']}\"}]
}";
$inlinePolicy = $service->createUserPolicy("iam_demo_inline_policy_$uuid", $inlinePolicyDocument, $user['UserName']);
//First, fail to list the buckets with the user
$credentials = new Credentials($key['AccessKeyId'], $key['SecretAccessKey']);
$s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]);
try {
    $s3Client->listBuckets([
    ]);
    echo "this should not run";
} catch (S3Exception $exception) {
    echo "successfully failed!\n";
}

$stsClient = new StsClient(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]);
sleep(10);
$assumedRole = $stsClient->assumeRole([
    'RoleArn' => $assumeRoleRole['Arn'],
    'RoleSessionName' => "DemoAssumeRoleSession_$uuid",
]);
$assumedCredentials = [
    'key' => $assumedRole['Credentials']['AccessKeyId'],
    'secret' => $assumedRole['Credentials']['SecretAccessKey'],
    'token' => $assumedRole['Credentials']['SessionToken'],
];
$s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $assumedCredentials]);
try {
    $s3Client->listBuckets([]);
    echo "this should now run!\n";
} catch (S3Exception $exception) {
    echo "this should now not fail\n";
}

$service->detachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']);
$deletePolicy = $service->deletePolicy($listAllBucketsPolicy['Arn']);
echo "Delete policy: {$listAllBucketsPolicy['PolicyName']}\n";
$deletedRole = $service->deleteRole($assumeRoleRole['Arn']);
echo "Deleted role: {$assumeRoleRole['RoleName']}\n";
$deletedKey = $service->deleteAccessKey($key['AccessKeyId'], $user['UserName']);
$deletedUser = $service->deleteUser($user['UserName']);
echo "Delete user: {$user['UserName']}\n";
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK para PHP*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Python ]

**SDK para Python (Boto3)**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/iam#code-examples). 
Cree un usuario de IAM y un rol que conceda permiso para enumerar los buckets de Amazon S3. El usuario solo tiene derechos para asumir el rol. Después de asumir el rol, use las credenciales temporales para enumerar los buckets de la cuenta.  

```
import json
import sys
import time
from uuid import uuid4

import boto3
from botocore.exceptions import ClientError


def progress_bar(seconds):
    """Shows a simple progress bar in the command window."""
    for _ in range(seconds):
        time.sleep(1)
        print(".", end="")
        sys.stdout.flush()
    print()


def setup(iam_resource):
    """
    Creates a new user with no permissions.
    Creates an access key pair for the user.
    Creates a role with a policy that lets the user assume the role.
    Creates a policy that allows listing Amazon S3 buckets.
    Attaches the policy to the role.
    Creates an inline policy for the user that lets the user assume the role.

    :param iam_resource: A Boto3 AWS Identity and Access Management (IAM) resource
                         that has permissions to create users, roles, and policies
                         in the account.
    :return: The newly created user, user key, and role.
    """
    try:
        user = iam_resource.create_user(UserName=f"demo-user-{uuid4()}")
        print(f"Created user {user.name}.")
    except ClientError as error:
        print(
            f"Couldn't create a user for the demo. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        user_key = user.create_access_key_pair()
        print(f"Created access key pair for user.")
    except ClientError as error:
        print(
            f"Couldn't create access keys for user {user.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    print(f"Wait for user to be ready.", end="")
    progress_bar(10)

    try:
        role = iam_resource.create_role(
            RoleName=f"demo-role-{uuid4()}",
            AssumeRolePolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Principal": {"AWS": user.arn},
                            "Action": "sts:AssumeRole",
                        }
                    ],
                }
            ),
        )
        print(f"Created role {role.name}.")
    except ClientError as error:
        print(
            f"Couldn't create a role for the demo. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        policy = iam_resource.create_policy(
            PolicyName=f"demo-policy-{uuid4()}",
            PolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "s3:ListAllMyBuckets",
                            "Resource": "arn:aws:s3:::*",
                        }
                    ],
                }
            ),
        )
        role.attach_policy(PolicyArn=policy.arn)
        print(f"Created policy {policy.policy_name} and attached it to the role.")
    except ClientError as error:
        print(
            f"Couldn't create a policy and attach it to role {role.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        user.create_policy(
            PolicyName=f"demo-user-policy-{uuid4()}",
            PolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "sts:AssumeRole",
                            "Resource": role.arn,
                        }
                    ],
                }
            ),
        )
        print(
            f"Created an inline policy for {user.name} that lets the user assume "
            f"the role."
        )
    except ClientError as error:
        print(
            f"Couldn't create an inline policy for user {user.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    print("Give AWS time to propagate these new resources and connections.", end="")
    progress_bar(10)

    return user, user_key, role


def show_access_denied_without_role(user_key):
    """
    Shows that listing buckets without first assuming the role is not allowed.

    :param user_key: The key of the user created during setup. This user does not
                     have permission to list buckets in the account.
    """
    print(f"Try to list buckets without first assuming the role.")
    s3_denied_resource = boto3.resource(
        "s3", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret
    )
    try:
        for bucket in s3_denied_resource.buckets.all():
            print(bucket.name)
        raise RuntimeError("Expected to get AccessDenied error when listing buckets!")
    except ClientError as error:
        if error.response["Error"]["Code"] == "AccessDenied":
            print("Attempt to list buckets with no permissions: AccessDenied.")
        else:
            raise


def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name):
    """
    Assumes a role that grants permission to list the Amazon S3 buckets in the account.
    Uses the temporary credentials from the role to list the buckets that are owned
    by the assumed role's account.

    :param user_key: The access key of a user that has permission to assume the role.
    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    """
    sts_client = boto3.client(
        "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret
    )
    try:
        response = sts_client.assume_role(
            RoleArn=assume_role_arn, RoleSessionName=session_name
        )
        temp_credentials = response["Credentials"]
        print(f"Assumed role {assume_role_arn} and got temporary credentials.")
    except ClientError as error:
        print(
            f"Couldn't assume role {assume_role_arn}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    # Create an S3 resource that can access the account with the temporary credentials.
    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )
    print(f"Listing buckets for the assumed role's account:")
    try:
        for bucket in s3_resource.buckets.all():
            print(bucket.name)
    except ClientError as error:
        print(
            f"Couldn't list buckets for the account. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise




def teardown(user, role):
    """
    Removes all resources created during setup.

    :param user: The demo user.
    :param role: The demo role.
    """
    try:
        for attached in role.attached_policies.all():
            policy_name = attached.policy_name
            role.detach_policy(PolicyArn=attached.arn)
            attached.delete()
            print(f"Detached and deleted {policy_name}.")
        role.delete()
        print(f"Deleted {role.name}.")
    except ClientError as error:
        print(
            "Couldn't detach policy, delete policy, or delete role. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        for user_pol in user.policies.all():
            user_pol.delete()
            print("Deleted inline user policy.")
        for key in user.access_keys.all():
            key.delete()
            print("Deleted user's access key.")
        user.delete()
        print(f"Deleted {user.name}.")
    except ClientError as error:
        print(
            "Couldn't delete user policy or delete user. Here's why: "
            f"{error.response['Error']['Message']}"
        )


def usage_demo():
    """Drives the demonstration."""
    print("-" * 88)
    print(f"Welcome to the IAM create user and assume role demo.")
    print("-" * 88)
    iam_resource = boto3.resource("iam")
    user = None
    role = None
    try:
        user, user_key, role = setup(iam_resource)
        print(f"Created {user.name} and {role.name}.")
        show_access_denied_without_role(user_key)
        list_buckets_from_assumed_role(user_key, role.arn, "AssumeRoleDemoSession")
    except Exception:
        print("Something went wrong!")
    finally:
        if user is not None and role is not None:
            teardown(user, role)
        print("Thanks for watching!")


if __name__ == "__main__":
    usage_demo()
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *Referencia de la API de AWS SDK para Python (Boto3)*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/PutUserPolicy)

------
#### [ Ruby ]

**SDK para Ruby**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples). 
Cree un usuario de IAM y un rol que conceda permiso para enumerar los buckets de Amazon S3. El usuario solo tiene derechos para asumir el rol. Después de asumir el rol, use las credenciales temporales para enumerar los buckets de la cuenta.  

```
# Wraps the scenario actions.
class ScenarioCreateUserAssumeRole
  attr_reader :iam_client

  # @param [Aws::IAM::Client] iam_client: The AWS IAM client.
  def initialize(iam_client, logger: Logger.new($stdout))
    @iam_client = iam_client
    @logger = logger
  end

  # Waits for the specified number of seconds.
  #
  # @param duration [Integer] The number of seconds to wait.
  def wait(duration)
    puts('Give AWS time to propagate resources...')
    sleep(duration)
  end

  # Creates a user.
  #
  # @param user_name [String] The name to give the user.
  # @return [Aws::IAM::User] The newly created user.
  def create_user(user_name)
    user = @iam_client.create_user(user_name: user_name).user
    @logger.info("Created demo user named #{user.user_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info('Tried and failed to create demo user.')
    @logger.info("\t#{e.code}: #{e.message}")
    @logger.info("\nCan't continue the demo without a user!")
    raise
  else
    user
  end

  # Creates an access key for a user.
  #
  # @param user [Aws::IAM::User] The user that owns the key.
  # @return [Aws::IAM::AccessKeyPair] The newly created access key.
  def create_access_key_pair(user)
    user_key = @iam_client.create_access_key(user_name: user.user_name).access_key
    @logger.info("Created accesskey pair for user #{user.user_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create access keys for user #{user.user_name}.")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  else
    user_key
  end

  # Creates a role that can be assumed by a user.
  #
  # @param role_name [String] The name to give the role.
  # @param user [Aws::IAM::User] The user who is granted permission to assume the role.
  # @return [Aws::IAM::Role] The newly created role.
  def create_role(role_name, user)
    trust_policy = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Principal: { 'AWS': user.arn },
        Action: 'sts:AssumeRole'
      }]
    }.to_json
    role = @iam_client.create_role(
      role_name: role_name,
      assume_role_policy_document: trust_policy
    ).role
    @logger.info("Created role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create a role for the demo. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  else
    role
  end

  # Creates a policy that grants permission to list S3 buckets in the account, and
  # then attaches the policy to a role.
  #
  # @param policy_name [String] The name to give the policy.
  # @param role [Aws::IAM::Role] The role that the policy is attached to.
  # @return [Aws::IAM::Policy] The newly created policy.
  def create_and_attach_role_policy(policy_name, role)
    policy_document = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Action: 's3:ListAllMyBuckets',
        Resource: 'arn:aws:s3:::*'
      }]
    }.to_json
    policy = @iam_client.create_policy(
      policy_name: policy_name,
      policy_document: policy_document
    ).policy
    @iam_client.attach_role_policy(
      role_name: role.role_name,
      policy_arn: policy.arn
    )
    @logger.info("Created policy #{policy.policy_name} and attached it to role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create a policy and attach it to role #{role.role_name}. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Creates an inline policy for a user that lets the user assume a role.
  #
  # @param policy_name [String] The name to give the policy.
  # @param user [Aws::IAM::User] The user that owns the policy.
  # @param role [Aws::IAM::Role] The role that can be assumed.
  # @return [Aws::IAM::UserPolicy] The newly created policy.
  def create_user_policy(policy_name, user, role)
    policy_document = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Action: 'sts:AssumeRole',
        Resource: role.arn
      }]
    }.to_json
    @iam_client.put_user_policy(
      user_name: user.user_name,
      policy_name: policy_name,
      policy_document: policy_document
    )
    puts("Created an inline policy for #{user.user_name} that lets the user assume role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create an inline policy for user #{user.user_name}. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Creates an Amazon S3 resource with specified credentials. This is separated into a
  # factory function so that it can be mocked for unit testing.
  #
  # @param credentials [Aws::Credentials] The credentials used by the Amazon S3 resource.
  def create_s3_resource(credentials)
    Aws::S3::Resource.new(client: Aws::S3::Client.new(credentials: credentials))
  end

  # Lists the S3 buckets for the account, using the specified Amazon S3 resource.
  # Because the resource uses credentials with limited access, it may not be able to
  # list the S3 buckets.
  #
  # @param s3_resource [Aws::S3::Resource] An Amazon S3 resource.
  def list_buckets(s3_resource)
    count = 10
    s3_resource.buckets.each do |bucket|
      @logger.info "\t#{bucket.name}"
      count -= 1
      break if count.zero?
    end
  rescue Aws::Errors::ServiceError => e
    if e.code == 'AccessDenied'
      puts('Attempt to list buckets with no permissions: AccessDenied.')
    else
      @logger.info("Couldn't list buckets for the account. Here's why: ")
      @logger.info("\t#{e.code}: #{e.message}")
      raise
    end
  end

  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end

  # Deletes a role. If the role has policies attached, they are detached and
  # deleted before the role is deleted.
  #
  # @param role_name [String] The name of the role to delete.
  def delete_role(role_name)
    @iam_client.list_attached_role_policies(role_name: role_name).attached_policies.each do |policy|
      @iam_client.detach_role_policy(role_name: role_name, policy_arn: policy.policy_arn)
      @iam_client.delete_policy(policy_arn: policy.policy_arn)
      @logger.info("Detached and deleted policy #{policy.policy_name}.")
    end
    @iam_client.delete_role({ role_name: role_name })
    @logger.info("Role deleted: #{role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't detach policies and delete role #{role.name}. Here's why:")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Deletes a user. If the user has inline policies or access keys, they are deleted
  # before the user is deleted.
  #
  # @param user [Aws::IAM::User] The user to delete.
  def delete_user(user_name)
    user = @iam_client.list_access_keys(user_name: user_name).access_key_metadata
    user.each do |key|
      @iam_client.delete_access_key({ access_key_id: key.access_key_id, user_name: user_name })
      @logger.info("Deleted access key #{key.access_key_id} for user '#{user_name}'.")
    end

    @iam_client.delete_user(user_name: user_name)
    @logger.info("Deleted user '#{user_name}'.")
  rescue Aws::IAM::Errors::ServiceError => e
    @logger.error("Error deleting user '#{user_name}': #{e.message}")
  end
end

# Runs the IAM create a user and assume a role scenario.
def run_scenario(scenario)
  puts('-' * 88)
  puts('Welcome to the IAM create a user and assume a role demo!')
  puts('-' * 88)
  user = scenario.create_user("doc-example-user-#{Random.uuid}")
  user_key = scenario.create_access_key_pair(user)
  scenario.wait(10)
  role = scenario.create_role("doc-example-role-#{Random.uuid}", user)
  scenario.create_and_attach_role_policy("doc-example-role-policy-#{Random.uuid}", role)
  scenario.create_user_policy("doc-example-user-policy-#{Random.uuid}", user, role)
  scenario.wait(10)
  puts('Try to list buckets with credentials for a user who has no permissions.')
  puts('Expect AccessDenied from this call.')
  scenario.list_buckets(
    scenario.create_s3_resource(Aws::Credentials.new(user_key.access_key_id, user_key.secret_access_key))
  )
  puts('Now, assume the role that grants permission.')
  temp_credentials = scenario.assume_role(
    role.arn, scenario.create_sts_client(user_key.access_key_id, user_key.secret_access_key)
  )
  puts('Here are your buckets:')
  scenario.list_buckets(scenario.create_s3_resource(temp_credentials))
  puts("Deleting role '#{role.role_name}' and attached policies.")
  scenario.delete_role(role.role_name)
  puts("Deleting user '#{user.user_name}', policies, and keys.")
  scenario.delete_user(user.user_name)
  puts('Thanks for watching!')
  puts('-' * 88)
rescue Aws::Errors::ServiceError => e
  puts('Something went wrong with the demo.')
  puts("\t#{e.code}: #{e.message}")
end

run_scenario(ScenarioCreateUserAssumeRole.new(Aws::IAM::Client.new)) if $PROGRAM_NAME == __FILE__
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *referencia de la API de AWS SDK para Ruby*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Rust ]

**SDK para Rust**  
 Hay más en GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/iam#code-examples). 

```
use aws_config::meta::region::RegionProviderChain;
use aws_sdk_iam::Error as iamError;
use aws_sdk_iam::{config::Credentials as iamCredentials, config::Region, Client as iamClient};
use aws_sdk_s3::Client as s3Client;
use aws_sdk_sts::Client as stsClient;
use tokio::time::{sleep, Duration};
use uuid::Uuid;

#[tokio::main]
async fn main() -> Result<(), iamError> {
    let (client, uuid, list_all_buckets_policy_document, inline_policy_document) =
        initialize_variables().await;

    if let Err(e) = run_iam_operations(
        client,
        uuid,
        list_all_buckets_policy_document,
        inline_policy_document,
    )
    .await
    {
        println!("{:?}", e);
    };

    Ok(())
}

async fn initialize_variables() -> (iamClient, String, String, String) {
    let region_provider = RegionProviderChain::first_try(Region::new("us-west-2"));

    let shared_config = aws_config::from_env().region(region_provider).load().await;
    let client = iamClient::new(&shared_config);
    let uuid = Uuid::new_v4().to_string();

    let list_all_buckets_policy_document = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]
    }"
    .to_string();
    let inline_policy_document = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"{}\"}]
    }"
    .to_string();

    (
        client,
        uuid,
        list_all_buckets_policy_document,
        inline_policy_document,
    )
}

async fn run_iam_operations(
    client: iamClient,
    uuid: String,
    list_all_buckets_policy_document: String,
    inline_policy_document: String,
) -> Result<(), iamError> {
    let user = iam_service::create_user(&client, &format!("{}{}", "iam_demo_user_", uuid)).await?;
    println!("Created the user with the name: {}", user.user_name());
    let key = iam_service::create_access_key(&client, user.user_name()).await?;

    let assume_role_policy_document = "{
        \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Principal\": {\"AWS\": \"{}\"},
                    \"Action\": \"sts:AssumeRole\"
                }]
            }"
    .to_string()
    .replace("{}", user.arn());

    let assume_role_role = iam_service::create_role(
        &client,
        &format!("{}{}", "iam_demo_role_", uuid),
        &assume_role_policy_document,
    )
    .await?;
    println!("Created the role with the ARN: {}", assume_role_role.arn());

    let list_all_buckets_policy = iam_service::create_policy(
        &client,
        &format!("{}{}", "iam_demo_policy_", uuid),
        &list_all_buckets_policy_document,
    )
    .await?;
    println!(
        "Created policy: {}",
        list_all_buckets_policy.policy_name.as_ref().unwrap()
    );

    let attach_role_policy_result =
        iam_service::attach_role_policy(&client, &assume_role_role, &list_all_buckets_policy)
            .await?;
    println!(
        "Attached the policy to the role: {:?}",
        attach_role_policy_result
    );

    let inline_policy_name = format!("{}{}", "iam_demo_inline_policy_", uuid);
    let inline_policy_document = inline_policy_document.replace("{}", assume_role_role.arn());
    iam_service::create_user_policy(&client, &user, &inline_policy_name, &inline_policy_document)
        .await?;
    println!("Created inline policy.");

    //First, fail to list the buckets with the user.
    let creds = iamCredentials::from_keys(key.access_key_id(), key.secret_access_key(), None);
    let fail_config = aws_config::from_env()
        .credentials_provider(creds.clone())
        .load()
        .await;
    println!("Fail config: {:?}", fail_config);
    let fail_client: s3Client = s3Client::new(&fail_config);
    match fail_client.list_buckets().send().await {
        Ok(e) => {
            println!("This should not run. {:?}", e);
        }
        Err(e) => {
            println!("Successfully failed with error: {:?}", e)
        }
    }

    let sts_config = aws_config::from_env()
        .credentials_provider(creds.clone())
        .load()
        .await;
    let sts_client: stsClient = stsClient::new(&sts_config);
    sleep(Duration::from_secs(10)).await;
    let assumed_role = sts_client
        .assume_role()
        .role_arn(assume_role_role.arn())
        .role_session_name(format!("iam_demo_assumerole_session_{uuid}"))
        .send()
        .await;
    println!("Assumed role: {:?}", assumed_role);
    sleep(Duration::from_secs(10)).await;

    let assumed_credentials = iamCredentials::from_keys(
        assumed_role
            .as_ref()
            .unwrap()
            .credentials
            .as_ref()
            .unwrap()
            .access_key_id(),
        assumed_role
            .as_ref()
            .unwrap()
            .credentials
            .as_ref()
            .unwrap()
            .secret_access_key(),
        Some(
            assumed_role
                .as_ref()
                .unwrap()
                .credentials
                .as_ref()
                .unwrap()
                .session_token
                .clone(),
        ),
    );

    let succeed_config = aws_config::from_env()
        .credentials_provider(assumed_credentials)
        .load()
        .await;
    println!("succeed config: {:?}", succeed_config);
    let succeed_client: s3Client = s3Client::new(&succeed_config);
    sleep(Duration::from_secs(10)).await;
    match succeed_client.list_buckets().send().await {
        Ok(_) => {
            println!("This should now run successfully.")
        }
        Err(e) => {
            println!("This should not run. {:?}", e);
            panic!()
        }
    }

    //Clean up.
    iam_service::detach_role_policy(
        &client,
        assume_role_role.role_name(),
        list_all_buckets_policy.arn().unwrap_or_default(),
    )
    .await?;
    iam_service::delete_policy(&client, list_all_buckets_policy).await?;
    iam_service::delete_role(&client, &assume_role_role).await?;
    println!("Deleted role {}", assume_role_role.role_name());
    iam_service::delete_access_key(&client, &user, &key).await?;
    println!("Deleted key for {}", key.user_name());
    iam_service::delete_user_policy(&client, &user, &inline_policy_name).await?;
    println!("Deleted inline user policy: {}", inline_policy_name);
    iam_service::delete_user(&client, &user).await?;
    println!("Deleted user {}", user.user_name());

    Ok(())
}
```
+ Para obtener información sobre la API, consulte los siguientes temas en la *Referencia de la API de AWS SDK para Rust*.
  + [AttachRolePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.attach_role_policy)
  + [CreateAccessKey](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_access_key)
  + [CreatePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_policy)
  + [CreateRole](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_role)
  + [CreateUser](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_user)
  + [DeleteAccessKey](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_access_key)
  + [DeletePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_policy)
  + [DeleteRole](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_role)
  + [DeleteUser](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_user)
  + [DeleteUserPolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_user_policy)
  + [DetachRolePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.detach_role_policy)
  + [PutUserPolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.put_user_policy)

------

# Utilizar un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias de Amazon EC2
<a name="id_roles_use_switch-role-ec2"></a>

Las aplicaciones que se ejecutan en una instancia de Amazon EC2 deben incluir credenciales de AWS en sus solicitudes de API de AWS. Los desarrolladores pueden almacenar las credenciales de AWS directamente en la instancia de Amazon EC2 y permitir que las aplicaciones de dicha instancia las utilicen. Sin embargo, los desarrolladores tendrían que encargarse de administrar las credenciales, así como asegurarse de transferirlas de forma segura a cada instancia y actualizar cada instancia de Amazon EC2 cuando haya que actualizar las credenciales. Todo esto supone mucho trabajo adicional.

En su lugar, puede y debe utilizar un rol de IAM para administrar las credenciales *temporales* de las aplicaciones que se ejecutan en una instancia de Amazon EC2. Al utilizar un rol, no tiene que distribuir credenciales a largo plazo (como credenciales de inicio de sesión o claves de acceso) a una instancia de Amazon EC2. En vez de ello, el rol proporciona permisos temporales que las aplicaciones pueden utilizar al realizar llamadas a otros recursos de AWS. Cuando lanza una instancia de Amazon EC2, usted especifica un rol de IAM que se asocia a la instancia. Esto permite a las aplicaciones que se ejecutan en dicha instancia utilizar las credenciales temporales facilitadas por el rol para firmar las solicitudes de API.

El uso de roles para conceder permisos a aplicaciones que se ejecutan en instancias de Amazon EC2 requiere una configuración adicional. El sistema operativo virtualizado extrae de AWS una aplicación que se ejecuta en una instancia de Amazon EC2. Debido a esta separación adicional, necesita un paso más para asignar un rol de AWS y sus permisos asociados a una instancia de Amazon EC2 y para ponerlos a disposición de las aplicaciones. Este paso adicional consiste en crear un *[perfil de instancia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)* asociado a la instancia. El perfil de instancia contiene el rol y puede proporcionar las credenciales temporales de este a una aplicación que se ejecute en la instancia. La aplicación, a su vez, puede utilizar estas credenciales temporales en las llamadas a la API para obtener acceso a los recursos y para restringir el acceso únicamente a aquellos recursos que el rol especifica.

**nota**  
Solo se puede asignar un rol a la vez a una instancia de Amazon EC2 y todas las aplicaciones en la instancia comparten ese mismo rol y permisos. Cuando aprovecha Amazon ECS para administrar las instancias de Amazon EC2, puede asignar roles a las tareas de Amazon ECS que pueden distinguirse del rol de la instancia de Amazon EC2 en la que se ejecutan. La asignación de un rol a cada tarea se ajusta al principio de acceso con privilegio mínimo y permite un mayor control pormenorizado de acciones y recursos.  
Para obtener más información, consulte [Uso de roles de IAM con tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/security-iam-roles.html) en la *Guía de prácticas recomendadas para Amazon Elastic Container Service*.

Este uso de los roles tiene varios beneficios. Dado que las credenciales del rol son temporales y se actualizan de forma automática, no es necesario administrar las credenciales ni preocuparse por los riesgos de seguridad a largo plazo. Además, si utiliza un único rol para varias instancias, puede especificar un cambio en ese rol y el cambio se propagará automáticamente a todas las instancias. 

**nota**  
Aunque normalmente un rol se asigna a una instancia de Amazon EC2 cuando esta se lanza, también se puede asociar un rol a una instancia de Amazon EC2 que ya esté en ejecución. Para obtener información sobre cómo asociar una función a una instancia en ejecución, consulte [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

**Topics**
+ [

## ¿Cómo funcionan los roles de instancias de Amazon EC2?
](#roles-usingrole-ec2instance-roles)
+ [

## Permisos necesarios para utilizar roles con Amazon EC2
](#roles-usingrole-ec2instance-permissions)
+ [

## ¿Cómo puedo comenzar?
](#roles-usingrole-ec2instance-get-started)
+ [

## Información relacionada
](#roles-usingrole-ec2instance-related-info)

## ¿Cómo funcionan los roles de instancias de Amazon EC2?
<a name="roles-usingrole-ec2instance-roles"></a>

En la figura siguiente, un desarrollador ejecuta una aplicación en una instancia de Amazon EC2 que necesita obtener acceso a un bucket de S3 denominado `amzn-s3-demo-bucket-photos`. Un administrador crea el rol de servicio `Get-pics` y lo asocia a la instancia de Amazon EC2. El rol incluye una política de permisos que otorga acceso de solo lectura al bucket de S3 especificado. También incluye una política de confianza que permite a la instancia de Amazon EC2 asumir el rol y obtener las credenciales temporales. Cuando la aplicación se ejecuta en la instancia, puede utilizar las credenciales temporales del rol para obtener acceso al bucket photos. El administrador no tiene que conceder al desarrollador permiso para acceder al bucket photos y el desarrollador no tiene que compartir ni administrar en ningún momento las credenciales.

![\[Aplicación en una instancia de Amazon EC2 que obtiene acceso a un recurso de AWS\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/roles-usingrole-ec2roleinstance.png)


1. El administrador usa IAM para crear el rol **Get-pics**. En la política de confianza del rol, el administrador especifica que solo las instancias de Amazon EC2 pueden asumir el rol. En la política de permisos del rol, el administrador especifica permisos de solo lectura para el bucket `amzn-s3-demo-bucket-photos`.

1. Un desarrollador lanza una instancia de Amazon EC2 y asigna el rol `Get-pics` a dicha instancia.
**nota**  
Si utiliza la consola de IAM, el perfil de instancias se administra de forma prácticamente transparente en su lugar. Sin embargo, si utiliza la AWS CLI o la API para crear y administrar el rol y la instancia de Amazon EC2, debe crear el perfil de instancia y asignarle el rol en pasos diferentes. A continuación, al lanzar la instancia, debe especificar el nombre del perfil de instancia en lugar del nombre del rol.

1. Cuando se ejecuta la aplicación, esta obtiene credenciales de seguridad temporales desde los [metadatos de instancias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) de Amazon EC2, tal y como se describe en [Recuperación de las credenciales de seguridad en los metadatos de la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials). Se trata de las [credenciales de seguridad temporales](id_credentials_temp.md) que representan el rol y son válidas durante un periodo de tiempo limitado. 

   Con algunos [AWS SDKs](https://aws.amazon.com/tools/), el desarrollador puede utilizar un proveedor que administre las credenciales de seguridad temporales de forma transparente. (La documentación de los SDK AWS individuales describe las características compatibles con el SDK de administración de credenciales).

   De forma alternativa, la aplicación puede obtener credenciales temporales directamente desde los metadatos de la instancia de Amazon EC2. Las credenciales y los valores asociados están disponibles en la categoría `iam/security-credentials/role-name` (en este caso, `iam/security-credentials/Get-pics`) de los metadatos. Si la aplicación obtiene las credenciales de los metadatos de la instancia, puede almacenar en caché las credenciales.

1. Con las credenciales temporales recuperadas, la aplicación obtiene acceso al bucket photo. Debido a la política asociada al rol **Get-pics**, la aplicación tiene permisos de solo lectura. 

   Las credenciales de seguridad temporales disponibles en la instancia se actualizan de manera automática antes de caducar, de modo que siempre haya un conjunto válido disponible. La aplicación solo debe asegurarse de obtener un conjunto nuevo de credenciales de los metadatos de la instancia antes de que las credenciales actuales caduquen. Es posible utilizar el AWS SDK para administrar credenciales, de modo que la aplicación no necesite incluir lógica adicional para actualizar las credenciales. Por ejemplo, crear instancias de clientes con proveedores de credenciales de perfil de instancia. No obstante, si la aplicación obtiene las credenciales de seguridad temporales de los metadatos de la instancia y los almacena en caché, debería obtener un conjunto de credenciales actualizado cada hora, o al menos 15 minutos antes de que el conjunto en curso caduque. El plazo de vencimiento está indicado en la información devuelta, en la categoría `iam/security-credentials/role-name`. 

## Permisos necesarios para utilizar roles con Amazon EC2
<a name="roles-usingrole-ec2instance-permissions"></a>

Para lanzar una instancia con un rol, el desarrollador debe tener permiso para lanzar instancias de Amazon EC2 y transferir roles de IAM.

La siguiente política de ejemplo permite a los usuarios utilizar la Consola de administración de AWS para lanzar una instancia con un rol. La política incluye comodines (`*`) para permitir a los usuarios transferir cualquier rol y llevar a cabo las acciones de Amazon EC2 mencionadas. La acción `ListInstanceProfiles` permite a los usuarios ver todos los roles disponibles en la Cuenta de AWS.

**Example Ejemplo de política que concede permiso a un usuario para utilizar la consola de Amazon EC2 para lanzar una instancia con cualquier rol**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        },
        {
            "Sid": "ListEc2AndListInstanceProfiles",
            "Effect": "Allow",
            "Action": [
                "iam:ListInstanceProfiles",
                "ec2:Describe*",
                "ec2:Search*",
                "ec2:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

### Restricción de los roles que se pueden transferir a instancias de Amazon EC2 (usando PassRole)
<a name="roles-usingrole-ec2instance-passrole"></a>

Puede utilizar el permiso `PassRole` para restringir qué rol puede transferir un usuario a una instancia de Amazon EC2 cuando el usuario lanza la instancia. Esto es útil para evitar que el usuario ejecute aplicaciones que tengan más permisos de los que se le han concedido; es decir, evita que se puedan obtener privilegios superiores. Por ejemplo, supongamos que la usuaria Alice tenga permiso solo para lanzar instancias de Amazon EC2 y trabajar con buckets de Amazon S3, pero el rol que pasa a una instancia de Amazon EC2 tiene permisos para trabajar con IAM y Amazon DynamoDB. En este caso, Alice podría lanzar la instancia, iniciar sesión en ella, obtener credenciales de seguridad temporales y, a continuación, realizar acciones de IAM o DynamoDB para las que carece de autorización.

Para restringir los roles que un usuario puede transferir a una instancia de Amazon EC2, debe crear una política que permita la acción `PassRole`. A continuación, debe asociar la política al usuario (o a un grupo de IAM al que pertenezca el usuario), el cual, a su vez, lanzará las instancias de Amazon EC2. En el elemento `Resource` de la política, se genera una lista con el rol o los roles que el usuario tiene permiso para transferir a las instancias de Amazon EC2. Cuando el usuario lanza una instancia y le asocia un rol, Amazon EC2 comprueba si el usuario tiene permiso para transmitir dicho rol. Desde luego, también debe asegurarse de que el rol que el usuario puede transferir no incluya más permisos de los que se supone que debe tener el usuario.

**nota**  
`PassRole` no es una acción de API de la misma forma que `RunInstances` o `ListInstanceProfiles`. Se trata de un permiso que AWS comprueba siempre que un ARN de rol se transfiere como parámetro a una API (o la consola se encarga de ello en nombre del usuario). Sirve de ayuda para que el administrador controle qué roles pueden pasar según qué usuarios. En este caso, se asegura de que el usuario pueda asociar un rol específico a una instancia de Amazon EC2.

**Example Ejemplo de política que concede permiso a un usuario para lanzar una instancia de Amazon EC2 con un rol concreto**  
La siguiente política de ejemplo permite a los usuarios utilizar la API de Amazon EC2 para lanzar una instancia con un rol. El elemento `Resource` especifica el nombre de recurso de Amazon (ARN) de un rol. Al especificar el ARN, la política concede al usuario permiso para transferir únicamente el rol `Get-pics`. Si el usuario intenta especificar otro rol al lanzar una instancia, la acción dará un error. El usuario tiene permisos para ejecutar cualquier instancia, independientemente de si transmiten una función.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/Get-pics"
        }
    ]
}
```

### Permitir que una función de perfil de instancia cambie una función en otra cuenta
<a name="switch-role-ec2-another-account"></a>

Puede permitir que una aplicación que se ejecuta en una instancia de Amazon EC2 ejecute comandos en otra cuenta. Para ello, debe permitir el rol de instancia de Amazon EC2 en la primera cuenta para cambiar a una función en la segunda cuenta.

Imagine que está utilizando dos Cuentas de AWS y desea permitir que una aplicación se ejecute en una instancia de Amazon EC2 para ejecutar comandos [AWS CLI](https://aws.amazon.com/cli/) en ambas cuentas. Supongamos que la instancia de Amazon EC2 existe en la cuenta `111111111111`. Dicha instancia incluye la función de perfil de instancias `abcd` que permite que la aplicación realice tareas de solo lectura de Amazon S3 en el bucket `amzn-s3-demo-bucket1` dentro de la misma cuenta `111111111111`. Sin embargo, la aplicación también debe tener permitido asumir la función entre cuentas `efgh` para acceder al bucket `amzn-s3-demo-bucket2` Amazon S3 de la cuenta `222222222222`.

![\[En el diagrama, se muestra cómo un desarrollador inicia una instancia de Amazon EC2 con el rol para acceder a las fotos almacenadas en un bucket de Amazon S3.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/roles-instance-profile-cross-account.png)


Para ello, la función del perfil de instancia de Amazon EC2 `abcd` debe tener la siguiente política de permisos para permitir que la aplicación acceda al bucket `amzn-s3-demo-bucket1` Amazon S3:

***Política de permisos del rol de la cuenta 111111111111 `abcd`***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        },
        {
            "Sid": "AllowIPToAssumeCrossAccountRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::222222222222:role/efgh"
        }
    ]
}
```

------

El rol `abcd` debe confiar en el servicio Amazon EC2 para asumir la función. Para ello, la función `abcd` debe tener la siguiente política de confianza:

***Política de confianza de rol `abcd` de la cuenta 111111111111 ***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "abcdTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"Service": "ec2.amazonaws.com"}
        }
    ]
}
```

------

Supongamos que la función entre cuentas `efgh` permite tareas de solo lectura de Amazon S3 en el bucket `amzn-s3-demo-bucket2` dentro de la misma cuenta `222222222222`. Para ello, la función entre cuentas `efgh` debe tener la siguiente política de permisos:

***Política de permisos del rol de la cuenta 222222222222 `efgh`***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

La función `efgh` debe confiar en la función de perfil de instancia `abcd` para asumirla. Para ello, la función `efgh` debe tener la siguiente política de confianza:

***Política de confianza de rol `efgh` de la cuenta 222222222222 ***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "efghTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"}
        }
    ]
}
```

------

## ¿Cómo puedo comenzar?
<a name="roles-usingrole-ec2instance-get-started"></a>

Para comprender cómo funcionan los roles con instancias de Amazon EC2, debe utilizar la consola de IAM para crear un rol, lanzar una instancia de Amazon EC2 que utilice dicho rol y, a continuación, estudiar la instancia mientras se ejecuta. Puede examinar los [metadatos de la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) para ver cómo se ponen las credenciales temporales de la función a disposición de la instancia. También puede ver cómo una aplicación que ejecuta una instancia puede utilizar el rol. Utilice los siguientes recursos para obtener más información. 
+ [Tutorial de roles de IAM en instancias de Amazon EC2](https://www.youtube.com/watch?v=TlCuOjviOhk). El video del enlace muestra cómo utilizar un rol de IAM con una instancia de Amazon EC2 para controlar lo que una aplicación puede hacer cuando se ejecuta en la instancia. El vídeo muestra cómo la aplicación (escrita en el AWS SDK) puede obtener credenciales de seguridad temporales mediante el rol. 
+ Tutoriales de SDK. La documentación del SDK de AWS contiene explicaciones que muestran una aplicación que se ejecuta en una instancia de Amazon EC2 que utiliza credenciales temporales para los roles para leer un bucket de Amazon S3. Cada uno de los siguientes tutoriales presenta pasos similares con un lenguaje de programación diferente:
  + [Configuración de roles de IAM para Amazon EC2 con el SDK para Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) en la *Guía para desarrolladores de AWS SDK para Java* 
  + [Inicie una instancia de Amazon EC2 utilizando el SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/run-instance.html) en la *Guía para el desarrollador de AWS SDK para .NET*
  + [Creación de una instancia de Amazon EC2 con el SDK para Ruby](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/ec2-example-create-instance.html) en la *Guía para el desarrollador de AWS SDK para Ruby*

## Información relacionada
<a name="roles-usingrole-ec2instance-related-info"></a>

Para obtener más información sobre cómo crear roles o roles para instancias de Amazon EC2, consulte la siguiente información:
+ Para obtener más información acerca de [Uso de roles de IAM con instancias de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html), consulte la *Guía del usuario de Amazon EC2*.
+ Para crear un rol, consulte [Creación de roles de IAM](id_roles_create.md)
+ Para obtener más información sobre cómo utilizar credenciales de seguridad temporales, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md).
+ Si trabaja con la API o la CLI IAM, debe crear y administrar perfiles de instancia de IAM. Para obtener más información sobre los perfiles de instancia, consulte [Utilizar perfiles de instancia](id_roles_use_switch-role-ec2_instance-profiles.md).
+ Para obtener más información sobre las credenciales de seguridad temporales para roles en los metadatos de la instancia, consulte [Recuperación de las credenciales de seguridad en los metadatos de la instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials) en la *Guía del usuario de Amazon EC2*.

# Utilizar perfiles de instancia
<a name="id_roles_use_switch-role-ec2_instance-profiles"></a>

Utilice un perfil de instancias para pasar un rol de IAM a una instancia EC2. Para obtener más información, consulte [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) en la *Guía del usuario de Amazon EC2*.

## Administración de perfiles de instancia (consola)
<a name="instance-profiles-manage-console"></a>

Si utiliza la Consola de administración de AWS para crear un rol para Amazon EC2, la consola crea automáticamente un perfil de instancias y le da el mismo nombre que al rol. Después, cuando utilice la consola Amazon EC2 para lanzar una instancia con un rol de IAM, puede seleccionar una función para asociarlo con la instancia. En la consola, la lista que se muestra es en realidad una lista de nombres de perfiles de instancia. La consola no crea un perfil de instancias para un rol que no está asociado a Amazon EC2.

Puede utilizar el Consola de administración de AWS para eliminar roles de IAM y perfiles de instancia de Amazon EC2 si el rol y el perfil de instancias tienen el mismo nombre. Para obtener más información acerca de la eliminación de perfiles de instancia, consulte [Eliminar roles o perfiles de instancia](id_roles_manage_delete.md).

**nota**  
Para actualizar los permisos de una instancia, sustituya su perfil de instancia. No recomendamos eliminar un rol de un perfil de instancia, ya que este cambio tarda hasta una hora en surtir efecto.

## Administración de perfiles de instancias (AWS CLI o API de AWS)
<a name="instance-profiles-manage-cli-api"></a>

Si administra sus roles en la AWS CLI o la API de AWS, crea los roles y los perfiles de instancias como acciones independientes. Debido a que los roles y los perfiles de instancias puede tener nombres diferentes, debe saber los nombres de sus perfiles de instancia, así como los nombres de los roles que contienen. De esta forma, puede elegir el perfil de instancia correcto cuando lance una instancia EC2. 

Puede asociar etiquetas a los recursos de IAM, incluidos los perfiles de instancia, a fin de identificar, organizar y controlar el acceso a ellos. Solo puede etiquetar perfiles de instancia cuando utiliza la AWS CLI o la API de AWS. 

**nota**  
Un perfil de instancias puede contener un único rol de IAM, aunque un rol puede incluirse en varios perfiles de instancias. Este límite de un rol por perfil de instancia no puede aumentarse. Puede eliminar el rol existente y, a continuación, agregar un rol diferente a un perfil de instancia. A continuación, debe esperar a que el cambio aparezca en todo AWS, a causa de la [consistencia final](https://en.wikipedia.org/wiki/Eventual_consistency). Para forzar el cambio, debe [desvincular el perfil de instancia](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html) y, a continuación, [asociar el perfil de instancia](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), o bien puede detener la instancia y después reiniciarla.

### Administración de perfiles de instancias (AWS CLI)
<a name="instance-profiles-manage-cli"></a>

Puede utilizar los siguientes comandos de la AWS CLI para trabajar con perfiles de instancia en una cuenta de AWS. 
+ Creación de un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)
+ Etiquetado de un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html)
+ Enumeración de etiquetas de un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html)
+ Desetiquetado de un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html)
+ Añadir un rol a un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html) 
+ Enumeración de perfiles de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html), [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html) 
+ Obtención de información sobre un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html) 
+ Eliminación de un rol de un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-role-from-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-role-from-instance-profile.html)
+ Eliminación de un perfil de instancia: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-instance-profile.html) 

También puede asociar un rol a una instancia EC2 que ya esté en ejecución ejecutando los siguientes comandos. Para obtener más información, consulte [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).
+ Asociación de un perfil de instancia con un rol a una instancia EC2 en ejecución o detenida: [https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) 
+ Obtención de información sobre un perfil de instancia asociado a una instancia EC: [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) 
+ Separación de un perfil de instancia con un rol de una instancia EC2 en ejecución o detenida: [https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html) 

### Administración de perfiles de instancias (API de AWS)
<a name="instance-profiles-manage-api"></a>

Puede llamar a las siguientes operaciones de la API de AWS para trabajar con perfiles de instancia en una Cuenta de AWS.
+ Creación de un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html) 
+ Etiquetado de un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Enumeración de etiquetas de un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Desetiquetado de un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Añadir un rol a un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html) 
+ Enumeración de perfiles de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html) 
+ Obtención de información sobre un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html) 
+ Eliminación de un rol de un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html) 
+ Eliminación de un perfil de instancia: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html) 

También puede asociar un rol a una instancia EC2 que ya esté en ejecución llamando a las siguientes operaciones. Para obtener más información, consulte [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).
+ Asociación de un perfil de instancia con un rol a una instancia EC2 en ejecución o detenida: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html) 
+ Obtención de información sobre un perfil de instancia asociado a una instancia EC: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeIamInstanceProfileAssociations.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeIamInstanceProfileAssociations.html) 
+ Separación de un perfil de instancia con un rol de una instancia EC2 en ejecución o detenida: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html) 

# Proveedores de identidades y federación en AWS
<a name="id_roles_providers"></a>

Como práctica recomendada, le aconsejamos que exija a los usuarios humanos que utilicen la federación con un proveedor de identidad para acceder a los recursos de AWS en lugar de crear usuarios de IAM individuales en su Cuenta de AWS. Con un proveedor de identidades (IdP), puede administrar sus identidades de usuario fuera de AWS y conceder permisos a estas identidades de usuarios externos para utilizar los recursos de AWS en su cuenta. Esto resulta útil si su organización ya tiene su propio sistema de identidad, como por ejemplo, un directorio de usuario corporativo. También resulta útil si crea una aplicación móvil o web que necesita acceso a los recursos de AWS.

**nota**  
También puede administrar usuarios humanos en [IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html) con un proveedor de identidad SAML externo en lugar de utilizar la federación SAML en IAM. La federación de IAM Identity Center con un proveedor de identidades le permite brindar a las personas acceso a varias cuentas de AWS de su organización y a varias aplicaciones de AWS. Para obtener más información acerca de situaciones específicas en las que se requiere un usuario de IAM, consulte [Cuándo crear un usuario de IAM (en lugar de un rol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose).

Si prefiere utilizar una sola cuenta de AWS sin habilitar IAM Identity Center, puede utilizar IAM con un IdP externo que proporcione información de identidad a AWS mediante [OpenID Connect (OIDC)](http://openid.net/connect/) o [SAML 2.0 (Lenguaje de marcado para confirmaciones de seguridad 2.0)](https://wiki.oasis-open.org/security). El OIDC conecta aplicaciones, como GitHub Actions, que no se ejecutan en AWS los AWS recursos. Algunos ejemplos de proveedores de identidad SAML conocidos son: Shibboleth y Active Directory Federation Services.

Cuando se utiliza un proveedor de identidad, no es necesario crear un código de inicio de sesión personalizado ni administrar sus propias identidades de usuario. El proveedor de identidad lo hace automáticamente. Sus usuarios externos inician sesión a través de un IdP, y usted puede conceder permisos a las identidades externas para utilizar los recursos de AWS en su cuenta. Los proveedores de identidades le ayudan a proteger su Cuenta de AWS, ya que no tiene que distribuir ni integrar credenciales de seguridad a largo plazo, como por ejemplo, claves de acceso, en su aplicación.

Consulte la siguiente tabla a fin de determinar qué tipo de federación de IAM es mejor para su caso de uso: IAM, IAM Identity Center o Amazon Cognito. Los siguientes resúmenes y tabla proporcionan una visión general de los métodos que sus usuarios pueden emplear para obtener acceso federado a los recursos de AWS.


| Tipo de federación de IAM | Tipo de cuenta | Administración de acceso a | Fuente de identidad compatible | 
| --- | --- | --- | --- | 
|  Federación con IAM Identity Center  |  Cuentas múltiples administradas por AWS Organizations  |  Usuarios humanos de su plantilla  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Federación con IAM  |  Cuenta única e independiente  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_roles_providers.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Federación con grupos de identidades de Amazon Cognito  |  Cualquiera  |  Los usuarios de aplicaciones que requieren autorización de IAM para acceder a los recursos  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_roles_providers.html)  | 

## Federación con IAM Identity Center
<a name="id_roles_providers_identity-center"></a>

Si desea administrar el acceso de usuarios humanos de manera centralizada, le recomendamos utilizar [IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) para administrar el acceso a las cuentas y los permisos dentro de esas cuentas. A los usuarios de IAM Identity Center se les conceden credenciales a corto plazo para sus recursos de AWS. Puede utilizar Active Directory, un proveedor de identidades (IdP) externo o un directorio del Centro de identidades de IAM como fuente de identidad para los usuarios y grupos con el fin de asignar el acceso a sus recursos de AWS. 

IAM Identity Center admite la federación de identidades con SAML (Security Assertion Markup Language) 2.0, que proporciona acceso federado de inicio de sesión único para los usuarios autorizados a utilizar aplicaciones dentro del portal de acceso de AWS. A continuación, los usuarios pueden realizar un inicio de sesión único que admita SAML, incluida la Consola de administración de AWS y aplicaciones de terceros, como Microsoft 365, SAP Concur y Salesforce.

## Federación con IAM
<a name="id_roles_providers_iam"></a>

Si bien recomendamos administrar a los usuarios humanos en IAM Identity Center, puede habilitar el acceso de entidades principales federadas con IAM para usuarios humanos en implementaciones a corto plazo y de pequeña escala. IAM permite usar proveedores independientes de SAML 2.0 y OpenID Connect (OIDC), y utilizar atributos de entidades principales federadas para el control de acceso. Con IAM, puede proporcionar atributos de usuario, como el centro de costes, el cargo o la ubicación, desde sus IdP a AWS, e implementar permisos de acceso detallados basados en estos atributos.

Una *carga de trabajo* es un conjunto de recursos y código que ofrece valor comercial, como una aplicación o un proceso de backend. Su carga de trabajo puede requerir una identidad IAM para hacer peticiones a servicios de AWS, aplicaciones, herramientas operativas y componentes. Estas identidades incluyen máquinas que se ejecutan en los entornos de AWS, como instancias de Amazon EC2 o funciones de AWS Lambda.

También se pueden administrar identidades de máquina para las partes externas que necesiten acceso. Para dar acceso a las identidades de máquina, puede utilizar roles de IAM. Los roles de IAM tienen permisos específicos y ofrecen una forma de acceder a AWS empleando credenciales de seguridad temporales con una sesión de rol. Además, es posible que tenga máquinas fuera de AWS que necesiten acceso a los entornos de AWS. Para máquinas que se ejecuten fuera de AWS, puede utilizar [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html). Para obtener más información acerca de los roles, consulte [Roles de IAM](id_roles.md). Para obtener detalles sobre cómo utilizar roles para delegar el acceso en Cuentas de AWS, consulte [Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM](tutorial_cross-account-with-roles.md).

Para vincular un IdP directamente a IAM, debe crear una entidad de proveedor de identidad para establecer una relación de confianza entre su Cuenta de AWS y el IdP. IAM admite proveedores de identidades (IdP) que son compatibles con [OpenID Connect (OIDC)](http://openid.net/connect/) o [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security). Para obtener más información sobre el uso de uno de estos proveedores de identidad (IdP) con AWS, consulte las siguientes secciones:
+ [Federación OIDC](id_roles_providers_oidc.md)
+ [Federación SAML 2.0](id_roles_providers_saml.md)

## Federación con grupos de identidades de Amazon Cognito
<a name="id_roles_providers_cognito"></a>

Amazon Cognito está diseñado para desarrolladores que desean autenticar y autorizar usuarios en sus aplicaciones móviles y web. Los grupos de usuarios de Amazon Cognito añaden características de inicio de sesión y registro a su aplicación, y los grupos de identidades proporcionan credenciales de IAM que conceden a sus usuarios acceso a recursos protegidos que usted administra en AWS. Los grupos de identidades adquieren credenciales para sesiones temporales a través de la operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) de la API.

Amazon Cognito funciona con proveedores de identidad externos compatibles con SAML y OpenID Connect, y con proveedores de identidad social como Facebook, Google y Amazon. Su aplicación puede iniciar sesión en un usuario con un grupo de usuarios o un IdP externo y, a continuación, recuperar recursos en su nombre con sesiones temporales personalizadas en un rol de IAM.

## Recursos adicionales
<a name="id_roles_providers_additional_resources"></a>
+ Para ver una demostración de cómo crear un proxy de federación personalizada que habilita el inicio de sesión único (SSO) en la Consola de administración de AWS mediante el sistema de autenticación de la organización, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).

# Escenarios habituales
<a name="id_federation_common_scenarios"></a>

**nota**  
Se recomienda exigir a los usuarios humanos que utilicen credenciales temporales cuando accedan a AWS. ¿Ha considerado la posibilidad de usar AWS IAM Identity Center? Puede usar IAM Identity Center para administrar de forma centralizada el acceso a múltiples Cuentas de AWS y proporcionar a los usuarios un acceso protegido por MFA y de inicio de sesión único a todas sus cuentas asignadas desde un solo lugar. Con IAM Identity Center, puede crear y administrar identidades de usuario en IAM Identity Center o conectarse fácilmente a su proveedor de identidades existente compatible con SAML 2.0. Para obtener más información, consulte [¿Qué es el Centro de identidades de IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) en la *Guía del usuario de AWS IAM Identity Center*.

Puede utilizar un proveedor de identidades (IdP) externo para gestionar las identidades de los usuarios externos a AWS y el IdP externo. Un IdP externo puede proporcionar información de identidad de AWS mediante OpenID Connect (OIDC) o el lenguaje de marcado de aserciones de seguridad (SAML). El OIDC se suele utilizar cuando una aplicación que no se ejecuta en AWS necesita acceder a los recursos AWS.

Si desea configurar la federación con un IdP externo, debe crear 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 externo. En los siguientes temas, se proporcionan escenarios comunes para usar proveedores de identidades de IAM.

**Topics**
+ [

## Amazon Cognito para aplicaciones móviles
](#id_roles_providers_oidc_cognito)
+ [

## Federación de OIDC para aplicaciones móviles
](#id_roles_providers_oidc_manual)

## Amazon Cognito para aplicaciones móviles
<a name="id_roles_providers_oidc_cognito"></a>

La mejor forma de utilizar las federaciones de OIDC es emplear [Amazon Cognito](https://aws.amazon.com/cognito/). Por ejemplo, Adele, la desarrolladora, está creando un juego para un dispositivo móvil donde los datos de usuario, como perfiles y puntuaciones, se almacenan en Amazon S3 y Amazon DynamoDB. Adele también podría almacenar estos datos localmente en el dispositivo y utilizar Amazon Cognito para mantenerlos sincronizados en todos los dispositivos. Ella sabe que por razones de seguridad y mantenimiento, las credenciales de seguridad de AWS a largo plazo no deben distribuirse con el juego. También sabe que el juego podría tener un gran número de usuarios. Por todo ello, no quiere crear nuevas identidades de usuario en IAM para cada jugador. En cambio, diseña el juego de manera que los usuarios puedan iniciar sesión con una identidad que ya han establecido con un proveedor de identidades (IdP) externo bien conocido, como **Login with Amazon**, **Facebook**, **Google** o cualquier IdP compatible con **OpenID Connect** (OIDC). Su juego puede aprovechar el mecanismo de autenticación de uno de estos proveedores para validar la identidad del usuario. 

Para permitir que la aplicación móvil pueda acceder a sus recursos de AWS, Adele registra primero un ID de desarrollador con el proveedor de identidad elegido. También configura la aplicación con cada uno de estos proveedores. En su Cuenta de AWS que contiene el bucket de Amazon S3 y la tabla de DynamoDB para el juego, Adele utiliza Amazon Cognito para crear roles de IAM que definen de forma precisa los permisos que necesita el juego. Si está utilizando un IdP de OIDC, también crea una entidad de proveedor de identidades de OIDC de IAM para establecer una relación de confianza entre un [grupo de identidades de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) de la Cuenta de AWS y el IdP.

En el código de aplicación, Adele llama a la interfaz de inicio de sesión para el proveedor de identidad que ha configurado anteriormente. El proveedor de identidad gestiona todos los detalles que permiten iniciar sesión al usuario y la aplicación obtiene un token de acceso OAuth o un token de ID de OIDC del proveedor. La aplicación de Adele puede intercambiar esta información de autenticación por un conjunto de credenciales de seguridad temporales que constan de un ID de clave de acceso de AWS, una clave de acceso secreta y un token de sesión. A continuación, la aplicación puede utilizar estas credenciales para obtener acceso a los servicios web que ofrece AWS. La aplicación está limitada por los permisos que están definidos en el rol que asume.

La imagen siguiente muestra un flujo simplificado de su funcionamiento, utilizando Login with Amazon como proveedor de identidad. En el paso 2, la aplicación también puede utilizar Facebook, Google o cualquier IdP compatible con OIDC, pero no se muestra aquí.

![\[Ejemplo de flujo de trabajo utilizando Amazon Cognito con usuarios federados para una aplicación móvil\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/mobile-app-web-identity-federation.diagram.png)


 

1. Un cliente inicia la aplicación en un dispositivo móvil. La aplicación solicita al usuario que inicie la sesión.

1. La aplicación utiliza los recursos de Login with Amazon para aceptar las credenciales del usuario.

1. La aplicación utiliza operaciones `GetId` y `GetCredentialsForIdentity` de la API de Amazon Cognito para intercambiar el token de ID de Login with Amazon por un token de Amazon Cognito. Amazon Cognito, que se ha configurado para confiar en su proyecto de Login with Amazon, genera un token que intercambia por credenciales de sesión temporales con AWS STS.

1. La aplicación recibe credenciales de seguridad temporales de Amazon Cognito. La aplicación también puede usar el flujo de trabajo básico (clásico) de Amazon Cognito para recuperar tokens de AWS STS con `AssumeRoleWithWebIdentity`. Para obtener más información acerca del modo en que ayuda a la autenticación de usuarios, consulte [Identity pools (federated identities) authentication flow](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html) (Flujo de autenticación de grupo de identidades [federadas]) en la Amazon Cognito Developer Guide (Guía para desarrolladores de Amazon Cognito).

1. La aplicación puede utilizar las credenciales de seguridad temporales para acceder a los recursos de AWS que necesita la aplicación para funcionar. El rol asociado con las credenciales de seguridad temporales y sus políticas asignadas determina a qué se puede acceder.

Utilice el siguiente proceso para configurar la aplicación para utilizar Amazon Cognito para autenticar los usuarios y otorgar a la aplicación acceso a los recursos de AWS. Para conocer los pasos específicos en este escenario, consulte la documentación de Amazon Cognito.

1. (Opcional) Regístrese como desarrollador en Login with Amazon, Facebook, Google o cualquier otro IdP compatible con OpenID Connect (OIDC) y configure una o varias aplicaciones con el proveedor. Este paso es opcional, ya que Amazon Cognito también admite acceso sin autenticar (como invitado) para los usuarios.

1. Diríjase a [Amazon Cognito de Consola de administración de AWS](https://console.aws.amazon.com/cognito/home). Utilice el asistente de Amazon Cognito para crear un grupo de identidades, que es un contenedor que Amazon Cognito utiliza para mantener las identidades de los usuarios finales organizados para las aplicaciones. Puede compartir grupos de identidades entre aplicaciones. Al configurar un grupo de identidades, Amazon Cognito crea uno o dos roles de IAM (uno para las identidades autenticadas y otro para las identidades "invitadas" sin autenticar) que definen los permisos para los usuarios de Amazon Cognito. 

1. Integre [AWS](https://docs.amplify.aws) Amplify con su aplicación e importe los archivos necesarios para usar Amazon Cognito.

1. Cree una instancia del proveedor de credenciales de Amazon Cognito, transmitiendo el ID de grupo de identidades, el número de Cuenta de AWS y el nombre de recurso de Amazon (ARN) de los roles que asocia con el grupo de identidades. El asistente de Amazon Cognito en la Consola de administración de AWS proporciona código de muestra para ayudarle a comenzar.

1. Cuando la aplicación accede a un recurso de AWS, transfiere la instancia de credenciales de proveedor al objeto de cliente, que a su vez transmite las credenciales de seguridad temporales al cliente. Los permisos de las credenciales se basan en el rol o roles que ha definido previamente.

Para obtener más información, consulte los siguientes temas:
+ [Iniciar sesión (Android)](https://docs.amplify.aws/lib/auth/signin/q/platform/android/) en la documentación de AWS Amplify Framework. 
+ [Iniciar sesión (iOS)](https://docs.amplify.aws/lib/auth/signin/q/platform/ios/) en la documentación de AWS Amplify Framework.

## Federación de OIDC para aplicaciones móviles
<a name="id_roles_providers_oidc_manual"></a>

Para obtener los mejores resultados, utilice Amazon Cognito como su agente de identidades para casi todos los casos de federación de OIDC. Amazon Cognito es fácil de utilizar y ofrece capacidades adicionales, tales como acceso anónimo (no autenticado) y sincronización de datos del usuario entre varios dispositivos y proveedores. Sin embargo, si ya ha creado una aplicación que utiliza federación de OIDC llamando manualmente a la API `AssumeRoleWithWebIdentity`, puede seguir utilizándola y sus aplicaciones seguirán funcionando correctamente. 

El esquema general del proceso de uso de una federación de OIDC ***sin*** Amazon Cognito es el siguiente: 

1. Inscríbase como desarrollador con el proveedor de identidad (IdP) externo y configure su aplicación con él, que le proporcionará un ID único para su aplicación. (Cada IdP utiliza una terminología diferente para este proceso. En este esquema se utiliza el término *configurar* para el proceso de identificación de su aplicación con el IdP). Cada proveedor de identidad (IdP) le ofrece una ID de aplicación exclusivo para dicho IdP, de modo que si configura la misma aplicación con varios proveedores de identidad (IdP), la aplicación tendrá varios ID de aplicación. Puede configurar varias aplicaciones en un mismo proveedor. 

   Los siguientes enlaces externos proporcionan información sobre el uso de algunos de los proveedores de identidad (IdP) habituales: 
   + [Registro con Amazon Developer Center](https://login.amazon.com/) 
   + [Añada inicio de sesión con Facebook a su aplicación o sitio web](https://developers.facebook.com/docs/facebook-login/v2.1) en el sitio de desarrolladores de Facebook. 
   + [Uso de OAuth 2.0 para iniciar sesión (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) en el sitio de desarrolladores de Google.
**importante**  
Si utiliza un proveedor de identidades OIDC de Google, Facebook o Amazon Cognito, no cree un proveedor de identidad de IAM independiente en el Consola de administración de AWS. AWS tiene estos proveedores de identidad OIDC incorporados y disponibles para su uso. Omita el siguiente paso y vaya directamente a crear nuevos roles con su proveedor de identidades.

1. Si utiliza un proveedor de identidad (IdP) distinto de Google, Facebook o Amazon Cognito compatible con OIDC, cree una entidad de proveedor de identidades de IAM para dicho proveedor.

1. En IAM, [cree uno o varios roles](id_roles_create_for-idp.md). Para cada rol, defina quién puede asumir el rol (la política de confianza) y los permisos que los usuarios de la aplicación tienen (la política de permisos). Por lo general, debe crear un rol para cada proveedor de identidad (IdP) que una aplicación admite. Por ejemplo, puede crear un rol que asume una aplicación si el usuario inicia sesión mediante Login with Amazon, un segundo rol para la misma aplicación si el usuario inicia sesión en Facebook y un tercer rol para la aplicación si el usuario inicia sesión a través de Google. En el caso de la relación de confianza, especifique el proveedor de identidad (IdP) (como Amazon.com) como `Principal` (la entidad de confianza) e incluya un elemento `Condition` que coincida con el ID de la aplicación asignado al proveedor de identidad (IdP). En podrá encontrar ejemplos de roles para distintos proveedores [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md). 

1. En su aplicación, autentique los usuarios con el proveedor de identidad (IdP). Los detalles de cómo hacerlo varían en función del proveedor de identidad que utilice (Login with Amazon, Facebook o Google) y de la plataforma de la aplicación. Por ejemplo, el método de autenticación de una aplicación Android puede diferir del método de una aplicación iOS o una aplicación web basada en JavaScript.

   Por lo general, si el usuario aún no ha iniciado sesión, el proveedor de identidad (IdP) se encarga de mostrar una página de inicio de sesión. Una vez que el proveedor de identidad (IdP) autentica al usuario, el IdP devuelve un token de autenticación con información sobre el usuario a su aplicación. La información que se incluye depende de lo que el proveedor de identidad (IdP) expone y de la información que el usuario está dispuesto a compartir. Puede utilizar esta información en su aplicación.

1. En su aplicación, realice una llamada *sin firma* a la acción `AssumeRoleWithWebIdentity` para solicitar credenciales de seguridad temporales. En la solicitud, transmita el token de autenticación del proveedor de identidades (IdP) y especifique el Nombre de recurso de Amazon (ARN) para el rol de IAM que ha creado para dicho proveedor. AWS verifica que el token es de confianza y válido y, en tal caso, devuelve las credenciales de seguridad temporales a su aplicación que tienen los permisos para el rol que indica en la solicitud. La respuesta también incluye los metadatos sobre el usuario del proveedor de identidad (IdP), tales como el ID de usuario único que el proveedor de identidad (IdP) asocia al usuario.

1. Al utilizar las credenciales de seguridad temporales de la respuesta de `AssumeRoleWithWebIdentity`, la aplicación envía solicitudes firmadas a las operaciones de la API de AWS. La información del ID de usuario del IdP puede distinguir a los usuarios de la aplicación. Por ejemplo, puede colocar objetos en las carpetas de Amazon S3 que incluyan el ID de usuario como prefijos o sufijos. Esto le permite crear políticas de control de acceso que bloqueen la carpeta para que solo el usuario con dicho ID pueda tener acceso a ella. Para obtener más información, consulte [Entidades principales de usuarios federados de AWS STS](reference_policies_elements_principal.md#sts-session-principals).

1. Su aplicación debe almacenar en caché las credenciales de seguridad temporales para que no tenga que obtener unas nuevas cada vez que la aplicación tenga que realizar una solicitud a AWS. De forma predeterminada, las credenciales son válidas durante una hora. Cuando las credenciales caduquen (o antes), realice otra llamada a `AssumeRoleWithWebIdentity` para obtener un nuevo conjunto de credenciales de seguridad temporales. En función del proveedor de identidad (IdP) y el modo en que administra sus tokens, es posible que tenga que actualizar el token del proveedor de identidad (IdP) antes de realizar una nueva llamada a `AssumeRoleWithWebIdentity`, ya que los tokens del proveedor de identidad (IdP) también suelen caducar después de un tiempo establecido. Si utiliza el SDK for iOS de AWS o el SDK for Android de AWS, puede utilizar la acción [AmazonSTSCredentialsProvider](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios), que administra las credenciales temporales de IAM, incluida su actualización según sea necesario.

# Federación OIDC
<a name="id_roles_providers_oidc"></a>

Imagine que está creando una aplicación que accede a los recursos de AWS, como, por ejemplo, GitHub Actions, que utiliza flujos de trabajo para acceder a Amazon S3 y DynamoDB. 

Cuando utiliza estos flujos de trabajo, realizará solicitudes a los servicios de AWS que deben estar firmadas con una clave de acceso de AWS. Sin embargo, te recomendamos **encarecidamente** que **no** guardes las AWS credenciales a largo plazo en aplicaciones externas AWS. En cambio, cree su aplicación de forma que solicite credenciales de seguridad de AWS cuando las necesite utilizando la *federación de OIDC*. Las credenciales temporales suministradas se asignan a un rol de AWS que solo tiene los permisos necesarios para realizar las tareas requeridas por la aplicación.

Con la federación de OIDC no necesita crear código de inicio de sesión personalizado ni administrar sus propias identidades de usuario. En su lugar, puedes usar el OIDC en aplicaciones, como GitHub Actions o cualquier otro IdP compatible con [OpenID Connect (OIDC)](http://openid.net/connect/), para autenticarte con AWS. Pueden recibir un token de autenticación, conocido como JSON Web Token (JWT) y luego intercambiarlo por credenciales de seguridad temporales en AWS que tienen asignado un rol de IAM con permisos para utilizar los recursos de la Cuenta de AWS. El uso de un IdP le permite tener una Cuenta de AWS más segura, ya que no tiene que integrar ni distribuir credenciales de seguridad a largo plazo con su aplicación.

La federación OIDC admite tanto la autenticación de máquina a máquina (p. ej., canalizaciones de CI/CD, scripts automatizados y aplicaciones sin servidor) como la autenticación de usuarios humanos. Para escenarios de autenticación con usuarios humanos en los que necesite gestionar el registro, el inicio de sesión y los perfiles de usuario, considere usar [Amazon Cognito](https://aws.amazon.com/cognito/) como agente de identidades. Para obtener más información sobre el uso de Amazon Cognito con OIDC, consulte [Amazon Cognito para aplicaciones móviles](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito).

**nota**  
Los JSON Web Tokens (JWT) emitidos por los proveedores de identidad de OpenID Connect (OIDC) tienen un tiempo de vencimiento especificado en el campo `exp` que indica cuándo expira el token. IAM proporciona un período de cinco minutos más allá del tiempo de caducidad especificado en el JWT para tener en cuenta la desviación del reloj, según lo permitido por el [estándar OpenID Connect (OIDC) Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html). Esto significa que los documentos JWT del OIDC recibidos por IAM después de la fecha de caducidad, pero dentro de este plazo de cinco minutos, se aceptan para su posterior evaluación y procesamiento.

**Topics**
+ [

## Recursos adicionales para federaciones de OIDC
](#id_roles_providers_oidc_resources)
+ [

# Crear un proveedor de identidad de IAM OpenID Connect (OIDC)
](id_roles_providers_create_oidc.md)
+ [

# Obtención de la huella digital de un proveedor de identidades OpenID Connect
](id_roles_providers_create_oidc_verify-thumbprint.md)
+ [

# Controles del proveedor de identidad para proveedores compartidos de OIDC
](id_roles_providers_oidc_secure-by-default.md)

## Recursos adicionales para federaciones de OIDC
<a name="id_roles_providers_oidc_resources"></a>

Los siguientes recursos pueden ayudarle a obtener más información sobre la federaciones de OIDC:
+ Usa OpenID Connect en tus flujos de trabajo de GitHub mediante la configuración de [OpenID Connect en Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [Amazon Cognito Identity](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/) en la *Guía de bibliotecas de Amplify para Android* y [Amazon Cognito Identity](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/) en la *Guía de bibliotecas de Amplify para Swift*.
+ [Cómo utilizar un identificador externo al conceder acceso a sus AWS recursos](https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/) en el *blog de seguridad de AWS*, se proporcionan instrucciones sobre cómo configurar de forma segura el acceso entre cuentas y la federación de identidades externas.

# Crear un proveedor de identidad de IAM OpenID Connect (OIDC)
<a name="id_roles_providers_create_oidc"></a>

Los *proveedores de identidad de IAM OIDC* son entidades de que describen un servicio de proveedor de identidad (IdP) externo compatible con el estándar [OpenID Connect](http://openid.net/connect/) (OIDC), como Google o Salesforce. Puede utilizar un proveedor de identidad OIDC de IAM cuando desee establecer una relación de confianza entre un IdP compatible con OIDC y su Cuenta de AWS. Esto resulta útil al crear una aplicación móvil o aplicación web que requiere acceso a los recursos de AWS, pero no desea crear un código de inicio de sesión personalizado ni administrar sus propias identidades de usuario. Para obtener más información acerca de esta situación, consulte [Federación OIDC](id_roles_providers_oidc.md).

Puede crear y administrar un proveedor de identidad OIDC de IAM con Consola de administración de AWS, el AWS Command Line Interface, Tools for Windows PowerShell o la API de IAM.

Después de crear un proveedor de identidades OIDC de IAM, debe crear uno más roles de IAM. Un rol es una identidad en AWS que no tiene sus propias credenciales (como las tiene un usuario). Sin embargo, en este contexto se asigna dinámicamente un rol a una entidad principal federada de OIDC autenticada por el proveedor de identidades de la organización. El rol permite al proveedor de identidad (IdP) de la organización solicitar credenciales de seguridad temporales para obtener acceso a AWS. Las políticas asignadas al rol determinan lo que los usuarios tienen permitido hacer en AWS. Para crear un rol para un proveedor de identidades de terceros, consulte [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md).

**importante**  
Al configurar políticas basadas en la identidad para acciones que admiten recursos `oidc-provider`, IAM evalúa la URL completa del proveedor de identidades del OIDC, incluidas las rutas especificadas. Si la URL de su proveedor de identidad OIDC tiene una ruta, debe incluirla en el ARN `oidc-provider` como un valor del elemento `Resource`. También tiene la opción de añadir una barra inclinada y un comodín (`/*`) al dominio URL o de utilizar caracteres comodín (`*` y `?`) en cualquier punto de la ruta URL. Si la URL del proveedor de identidad del OIDC de la solicitud no coincide con el valor establecido en el elemento `Resource` de la política, la solicitud falla.

Para solucionar problemas comunes con la federación de OIDC de IAM, consulte [Resolver errores relacionados con OIDC](https://repost.aws/knowledge-center/iam-oidc-idp-federation) en AWS re:Post.

**Topics**
+ [

## Requisitos previos: valide la configuración de su proveedor de identidad
](#manage-oidc-provider-prerequisites)
+ [

## Creación y administración de un proveedor OIDC (consola)
](#manage-oidc-provider-console)
+ [

## Creación y administración de un proveedor de identidad de OIDC de IAM (AWS CLI)
](#manage-oidc-provider-cli)
+ [

## Creación y administración de un proveedor de identidad de OIDC (API de AWS)
](#manage-oidc-provider-api)

## Requisitos previos: valide la configuración de su proveedor de identidad
<a name="manage-oidc-provider-prerequisites"></a>

Antes de poder crear un proveedor de identidades OIDC de IAM, debe disponer de la siguiente información de su IdP. Para obtener más información sobre cómo obtener información sobre la configuración del proveedor de OIDC, consulte la documentación de su IdP.

1. Determine la URL de acceso público de su proveedor de identidad OIDC. La dirección URL debe empezar por https://. De acuerdo con el estándar de OIDC, los componentes de ruta están permitidos, pero los parámetros de consulta no lo están. Normalmente, la URL consta de solo un nombre de host, como https://server.example.org o https://example.com. La dirección URL no debe contener un número de puerto.

1. Añada **/.well-known/openid-configuration** al final de la URL de su proveedor de identidad OIDC para ver el documento de configuración y los metadatos del proveedor que están disponibles públicamente. Debe tener un documento de detección en formato JSON con el documento de configuración y los metadatos del proveedor que se puedan recuperar de la [URL del punto de conexión de descubrimiento del proveedor de OpenID Connect](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig).

1. Confirme que los siguientes valores estén incluidos en la información de configuración de su proveedor. Si a la openid-configuration le falta alguno de estos campos, debe actualizar el documento de detección. Este proceso puede variar en función del proveedor de identidad, así que sigue la documentación de tu IdP para completar esta tarea.
   + emisor: la URL de tu dominio.
   + jwks\$1uri: punto de conexión JSON Web Key Set (JWKS) donde IAM obtiene las claves públicas. El proveedor de identidades debe incluir un punto de conexión JSON Web Key Set (JWKS) en la openid-configuration. Este URI define dónde obtener las claves públicas que se utilizan para verificar los tokens firmados por tu proveedor de identidad.
**nota**  
El conjunto de claves web JSON (JWKS) debe contener al menos una clave y puede tener un máximo de 100 claves RSA y 100 claves EC. Si el JWKS de su proveedor de identidad OIDC contiene más de 100 claves RSA o 100 claves EC, se devolverá una excepción `InvalidIdentityToken` cuando se utilice la operación de API [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) con un JWT firmado por un tipo de clave que supere el límite de 100 claves. Por ejemplo, si un JWT está firmado con el algoritmo RSA y hay más de 100 claves RSA en el JWKS de su proveedor, se devolverá una excepción `InvalidIdentityToken`.
   + claims\$1supported: información sobre el usuario que ayuda a garantizar que las respuestas de autenticación OIDC del proveedor de identidades contengan los atributos requeridos que AWS utiliza en las políticas de IAM para verificar permisos de entidades principales federadas de OIDC. Para obtener una lista de las claves de condición de IAM que se pueden usar para las reclamaciones, consulte [Claves disponibles para las federaciones de identidades AWS de OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).
     + aud: Debe determinar el valor de reclamación de la audiencia que sus IdP emiten en los JSON Web Tokens (JWT). La reclamación de la audiencia (aud) es específica de la aplicación e identifica a los destinatarios previstos del token. Al registrar una aplicación móvil o web con un proveedor de OpenID Connect, este establece un ID de cliente que identifica la aplicación. El ID de cliente es un identificador único de la aplicación que se incluye en la reclamación aud para la autenticación. La reclamación aud debe coincidir con el valor de Audience al crear tu proveedor de identidad IAM OIDC.
     + iat: las reclamaciones deben incluir un valor para `iat` que represente el momento en que se emitió el token ID.
     + iss: la URL del proveedor de identidades. La URL debe comenzar con https:// y debe corresponder a la URL del proveedor proporcionada a IAM. De acuerdo con el estándar de OIDC, los componentes de ruta están permitidos, pero los parámetros de consulta no lo están. Normalmente, la URL consta de solo un nombre de host, como https://server.example.org o https://example.com. La dirección URL no debe contener un número de puerto.
   + response\$1types\$1supported: id\$1token
   + subject\$1types\$1supported: público
   + id\$1token\$1signing\$1alg\$1values\$1supported: RS256, RS384, RS512, ES256, ES384, ES512
**nota**  
Puedes incluir reclamaciones adicionales, como `my_custom_claim`, en el siguiente ejemplo; sin embargo, AWS STS las ignorará.  

   ```
   {
     "issuer": "https://example-domain.com",
     "jwks_uri": "https://example-domain.com/jwks/keys",
     "claims_supported": [
       "aud",
       "iat",
       "iss",
       "name",
       "sub",
       "my_custom_claim"
     ],
     "response_types_supported": [
       "id_token"
     ],
     "id_token_signing_alg_values_supported": [
       "RS256",
       "RS384",
       "RS512",
       "ES256",
       "ES384",
       "ES512"
     ],
     "subject_types_supported": [
       "public"
     ]
   }
   ```

## Creación y administración de un proveedor OIDC (consola)
<a name="manage-oidc-provider-console"></a>

Siga estas instrucciones para crear y administrar un proveedor de identidad de IAM OIDC en la Consola de administración de AWS.

**importante**  
Si utiliza un proveedor de identidades OIDC de Google, Facebook o Amazon Cognito, no cree un proveedor de identidades IAM independiente mediante este procedimiento. Estos proveedores de identidad de OIDC ya están integrados a AWS y están disponibles para su uso. En su lugar, siga los pasos para crear nuevos roles para su proveedor de identidades, consulte [Creación de un rol para una federación de OpenID Connect (consola)](id_roles_create_for-idp_oidc.md).

**Para crear un proveedor de identidad de IAM OIDC (consola)**

1. <a name="idpoidcstep1"></a>Antes de crear un proveedor de identidad de IAM OIDC, debe registrar la aplicación en el IdP para recibir un *ID de cliente*. El ID de cliente (también conocido como *público*) es un identificador único para la aplicación que se emite al registrar la aplicación con el proveedor de identidades. Para obtener más información sobre cómo obtener un ID de cliente, consulte la documentación de su proveedor de identidad. 
**nota**  
AWS asegura la comunicación con los proveedores de identidad (IdP) de OIDC mediante nuestra biblioteca de entidades de certificación de raíz de confianza (CA) para verificar el certificado TLS del punto final JSON Web Key Set (JWKS). Si el IdP OIDC utiliza un certificado que no está firmado por una de estas CA de confianza, solo entonces se protege la comunicación mediante las huellas digitales registradas en la configuración del IdP. AWS recurrirá a la verificación mediante huella digital si no se puede recuperar el certificado TLS o si se requiere TLS v1.3.

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Proveedores de identidades** y, a continuación, **Agregar proveedor**.

1. En **Configurar proveedor**, elija **OpenID Connect**. 

1. En **URL del proveedor**, escriba la dirección URL del proveedor de identidades. La dirección URL debe cumplir las siguientes restricciones:
   + La dirección URL distingue entre mayúsculas y minúsculas.
   + La dirección URL debe comenzar por **https://**.
   + La dirección URL no debe contener un número de puerto. 
   + En la Cuenta de AWS, cada proveedor de identidad OIDC en IAM debe utilizar una dirección URL única. Si intenta enviar una URL que ya se ha utilizado para un proveedor de OpenID Connect en el Cuenta de AWS, aparecerá un error.

1. En **Público**, escriba el ID del cliente de la aplicación que ha registrado en el proveedor de identidades y recibido en [Step 1](#idpoidcstep1). De este modo se realizarán solicitudes a AWS. Si tiene más ID de cliente (también conocido como *público*) para este proveedor de identidades, puede añadirlos más adelante en la página de detalles de proveedor.
**nota**  
Si tu token JWT IdP incluye la reclamación `azp`, introduce este valor como valor de Audiencia.  
Si su proveedor de identidades de OIDC establece las reclamaciones `aud` y `azp` en el token, AWS STS utilizará el valor en la reclamación `azp` como la reclamación `aud`.

1. (Opcional) En **Agregar etiquetas**, puede agregar pares clave-valor para ayudarlo a identificar y organizar los proveedores de identidad. También puede utilizar etiquetas para controlar el acceso a los recursos de AWS. Para obtener más información sobre cómo etiquetar proveedores de identidad OIDC IAM, consulte [Etiquetado de proveedores de identidad OpenID Connect (OIDC)](id_tags_oidc.md). Seleccione **Agregar etiqueta**. Introduzca valores para cada par clave-valor de etiqueta. 

1. Compruebe la información que ha proporcionado. Cuando haya terminado, elija **Agregar proveedor**. IAM intentará recuperar y utilizar la huella digital de CA intermedia superior del certificado del servidor del IdP de OIC para crear el proveedor de identidad de IAM OIDC.
**nota**  
La cadena de certificados del proveedor de identidades OIDC debe empezar con el dominio o la URL del emisor, luego con el certificado intermedio y terminar con el certificado raíz. Si el orden de la cadena de certificados es diferente o incluye certificados duplicados o adicionales, se produce un error de discordancia de firmas y STS no podrá validar el token web JSON (JWT). Corrija el orden de los certificados de la cadena devuelta por el servidor para resolver el error. Para obtener más información sobre los estándares de la cadena de certificados, consulte el documento [certificate\$1list en el RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) en el sitio web de la serie RFC.

1. Asigne un rol de IAM a su proveedor de identidades para otorgar a las identidades de usuarios externas administradas por su proveedor de identidades permisos para acceder a los recursos de AWS de su cuenta. Para obtener más información sobre cómo crear roles para la federación de identidades, consulte [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md).
**nota**  
Los proveedores de identidad de OIDC que se utilizan en una política de confianza de roles deben estar en la misma cuenta en la que se encuentra el rol.

**Para agregar o eliminar una huella digital de un proveedor de identidades OIDC de IAM (consola)**
**nota**  
AWS asegura la comunicación con los proveedores de identidad (IdP) de OIDC mediante nuestra biblioteca de entidades de certificación de raíz de confianza (CA) para verificar el certificado TLS del punto final JSON Web Key Set (JWKS). Si el IdP OIDC utiliza un certificado que no está firmado por una de estas CA de confianza, solo entonces se protege la comunicación mediante las huellas digitales registradas en la configuración del IdP. AWS recurrirá a la verificación mediante huella digital si no se puede recuperar el certificado TLS o si se requiere TLS v1.3.

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Proveedores de identidades**. A continuación, elija el nombre del proveedor de identidades de IAM que desea actualizar.

1. Seleccione la pestaña **Verificación de punto de conexión** y luego, en la sección **Huellas digitales**, seleccione **Administrar**. Para introducir un nuevo valor de huella digital, elija **Agregar huella digital**. Para eliminar una huella digital, elija **Eliminar** que está ubicado junto a la huella digital que desea eliminar.
**nota**  
Un proveedor de identidad de IAM OIDC debe tener un mínimo de una y un máximo de cinco huellas digitales.

    Cuando haya terminado, elija **Guardar cambios**.

**Para agregar un público a un proveedor de identidades OIDC de IAM (consola)**

1. En el panel de navegación, elija **Proveedores de identidades** y, a continuación, elija el nombre del proveedor de identidades de IAM que desea actualizar.

1. En la sección **Públicos**, elija **Acciones** y seleccione **Agregar público**. 

1. Escriba el ID del cliente de la aplicación que registró en el proveedor de identidades y recibió en [Step 1](#idpoidcstep1). De este modo, se realizarán solicitudes a AWS. A continuación, seleccione **Agregar públicos**.
**nota**  
Un proveedor de identidades OIDC de IAM debe tener un mínimo de 1 y un máximo de 100 públicos.

**Para eliminar un público de un proveedor de identidades OIDC de IAM (consola)**

1. En el panel de navegación, elija **Proveedores de identidades** y, a continuación, elija el nombre del proveedor de identidades de IAM que desea actualizar.

1. En la sección **Públicos**, seleccione el botón de opción situado junto al público que desea eliminar y, a continuación, seleccione **Acciones**.

1.  Elija **Eliminar público**. Se abrirá una nueva ventana.

1. Si elimina un público, las identidades federadas con el público no pueden asumir los roles asociados con aquel. En la ventana, lea la advertencia y confirme que desea eliminar el público escribiendo la palabra `remove` en el campo.

1. Elija **Eliminar** para eliminar el público.

**Para eliminar un proveedor de identidad de OIDC de IAM (consola)**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Proveedores de identidades**. 

1. Seleccione la casilla de verificación situada junto al proveedor de identidad de IAM que desea eliminar. Se abrirá una nueva ventana.

1. Confirme que desea eliminar el proveedor escribiendo la palabra `delete` en el campo. A continuación, elija **Eliminar**.

## Creación y administración de un proveedor de identidad de OIDC de IAM (AWS CLI)
<a name="manage-oidc-provider-cli"></a>

Puede utilizar los siguientes comandos de la AWS CLI para crear y administrar proveedores de identidad de OIDC de IAM.

**Para crear un proveedor de identidad OIDC de IAM (AWS CLI)**

1. (Opcional) Para obtener una lista de todos los proveedores de identidad de IAM OIDC de su cuenta de AWS, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. Para crear un nuevo proveedor de identidad de IAM OIDC, ejecute este comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html)

**Para actualizar la lista de huellas digitales de certificado de servidor para un proveedor de identidad de IAM OIDC existente (AWS CLI)**
+ Para actualizar la lista de huellas digitales de certificado de servidor de un proveedor de identidad de IAM OIDC, ejecute el siguiente comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html)

**Para etiquetar un proveedor de identidad OIDC de IAM existente (AWS CLI)**
+ Para etiquetar un proveedor de identidad de OIDC de IAM existente, ejecute este comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html)

**Para enumerar etiquetas para un proveedor de identidad OIDC de IAM existente (AWS CLI)**
+ Para enumerar etiquetas de un proveedor de identidad OIDC de IAM existente, ejecute el siguiente comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html)

**Para quitar etiquetas de un proveedor de identidad de OIDC de IAM (AWS CLI)**
+ Para quitar etiquetas de un proveedor de identidad de OIDC de IAM existente, ejecute el siguiente comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html)

**Para agregar o eliminar un ID de cliente de un proveedor de identidad de IAM OIDC existente (AWS CLI)**

1. (Opcional) Para obtener una lista de todos los proveedores de identidad de IAM OIDC de su cuenta de AWS, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (Opcional) Para obtener información detallada sobre un proveedor de identidad de IAM OIDC, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. Para agregar un ID de cliente nuevo a un proveedor de identidad de IAM OIDC existente, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html)

1. Para eliminar un cliente de un proveedor de identidad de IAM OIDC existente, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html)

**Para eliminar un proveedor de identidad IAM OIDC (AWS CLI)**

1. (Opcional) Para obtener una lista de todos los proveedores de identidad de IAM OIDC de su cuenta de AWS, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (Opcional) Para obtener información detallada sobre un proveedor de identidad de IAM OIDC, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. Para eliminar un proveedor de identidad de IAM OIDC, ejecute este comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html)

## Creación y administración de un proveedor de identidad de OIDC (API de AWS)
<a name="manage-oidc-provider-api"></a>

Puedes utilizar los siguientes comandos de la API de IAM para crear y administrar proveedores OIDC.

**Para crear un proveedor de identidad OIDC de IAM (API de AWS)**

1. (Opcional) Para obtener una lista de todos los proveedores de identidad de IAM OIDC de su cuenta de AWS, llame a la operación siguiente:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. Para crear un nuevo proveedor de identidad de IAM OIDC, llame a la siguiente operación: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html)

**Para actualizar la lista de huellas digitales de certificado de servidor para un proveedor de identidad de IAM OIDC existente (API de AWS)**
+ Para actualizar la lista de huellas digitales del certificado de servidor de un proveedor de identidad de IAM OIDC, llame a la siguiente operación:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html)

**Para etiquetar un proveedor de identidad OIDC de IAM existente (API de AWS)**
+ Para etiquetar un proveedor de identidad OIDC de IAM existente, llame a la siguiente operación:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**Para enumerar etiquetas de un proveedor de identidad OIDC de IAM existente (API de AWS)**
+ Para enumerar etiquetas de un proveedor de identidad OIDC de IAM existente, llame a la siguiente operación:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**Para quitar etiquetas de un proveedor de identidad OIDC de IAM existente (API de AWS)**
+ Para eliminar etiquetas de un proveedor de identidad OIDC de IAM existente, llame a la siguiente operación:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

**Para agregar OIDC eliminar un ID de cliente de un proveedor de identidad de IAM OIDC existente (API de AWS)**

1. (Opcional) Para obtener una lista de todos los proveedores de identidad de IAM OIDC de su cuenta de AWS, llame a la operación siguiente:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (Opcional) Para obtener información detallada sobre un proveedor de identidad de IAM OIDC, llame a la siguiente operación: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. Para agregar un ID de cliente nuevo a un proveedor de identidad de IAM OIDC existente, llame a la siguiente operación: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html)

1. Para eliminar un ID de cliente de un proveedor de identidad de IAM OIDC existente, llame a la siguiente operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html)

**Para eliminar un proveedor de identidad IAM OIDC (API de AWS)**

1. (Opcional) Para obtener una lista de todos los proveedores de identidad de IAM OIDC de su cuenta de AWS, llame a la operación siguiente: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (Opcional) Para obtener información detallada sobre un proveedor de identidad de IAM OIDC, llame a la siguiente operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. Para eliminar un proveedor de identidad de IAM OIDC, llame a la siguiente operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html)

# Obtención de la huella digital de un proveedor de identidades OpenID Connect
<a name="id_roles_providers_create_oidc_verify-thumbprint"></a>

Cuando crea un [proveedor de identidad de OpenID Connect (OIDC)](id_roles_providers_create_oidc.md) en IAM, debe proporcionar una huella digital para la autoridad de certificación (CA) intermedia superior que firmó el certificado utilizado por el proveedor de identidades (IdP) externo. La huella digital es una firma para el certificado de CA que se utilizó para emitir el certificado para el proveedor de identidad compatible con OIDC. Cuando crea un proveedor de identidad OIDC en IAM, está dando acceso a su Cuenta de AWS a las identidades autenticadas por ese IdP. Al usar la huella digital del certificado de CA, confía en cualquier certificado emitido por esa CA con el mismo nombre DNS que el registrado. Esto elimina la necesidad de actualizar las relaciones de confianza de cada cuenta al renovar el certificado de firma del proveedor de identidad.

**importante**  
En la mayoría de los casos, el servidor de federación utiliza dos certificados diferentes:  
El primero establece una conexión HTTPS entre AWS y el proveedor de identidades. Este lo debe emitir una CA raíz pública conocida, como AWS Certificate Manager. Esto permite al cliente comprobar la fiabilidad y el estado del certificado.
El segundo se emplea para cifrar tokens y debe estar firmado por una CA *raíz* privada o pública.

Puede crear y administrar un proveedor de identidad OIDC de IAM con [AWS Command Line Interface, Tools for Windows PowerShell o la API de IAM](id_roles_providers_create_oidc.md#manage-oidc-provider-cli). Cuando utilice estos métodos, tiene la opción de proporcionar de manera manual una huella digital. Si decide no incluir una huella digital, IAM recuperará la huella digital de la CA intermedia superior del certificado del servidor IdP del OIDC. Si opta por incluir una huella digital, deberá obtenerla manualmente y proporcionarla a AWS.

Cuando crea un proveedor de identidades OIDC con [la consola de IAM](id_roles_providers_create_oidc.md), IAM intenta recuperar la huella digital de CA intermedia superior del certificado del servidor del IdP de OIC para usted. 

Le recomendamos que obtenga también manualmente la huella digital del IdP OIDC y que verifique que la IAM obtuvo la huella digital correcta. Para obtener más información sobre cómo obtener huellas digitales de certificados, consulte las siguientes secciones.

**nota**  
AWS asegura la comunicación con los proveedores de identidad (IdP) de OIDC mediante nuestra biblioteca de entidades de certificación de raíz de confianza (CA) para verificar el certificado TLS del punto final JSON Web Key Set (JWKS). Si el IdP OIDC utiliza un certificado que no está firmado por una de estas CA de confianza, solo entonces se protege la comunicación mediante las huellas digitales registradas en la configuración del IdP. AWS recurrirá a la verificación mediante huella digital si no se puede recuperar el certificado TLS o si se requiere TLS v1.3.

## Obtener huellas digitales de certificados
<a name="oidc-obtain-thumbprint"></a>

Utilice un navegador Web y la herramienta de línea de comandos OpenSSL para obtener la huella digital de un proveedor OIDC. Sin embargo, no es necesario que obtenga manualmente la huella digital del certificado para crear un proveedor de identidades OIDC de IAM. Puede usar el siguiente procedimiento para obtener la huella digital del certificado de su proveedor OIDC.

**Para obtener la huella digital de un proveedor de identidades OIDC**

1. Para poder obtener la huella digital de un proveedor de identidad OIDC, debe obtener primero la herramienta de línea de comandos OpenSSL. Esta herramienta le permite descargar la cadena de certificados del proveedor de identidades OIDC IdP y generar una huella digital del certificado final en la cadena de certificados. Si necesita instalar y configurar OpenSSL, siga las instrucciones que figuran en [Instalación de OpenSSL](#oidc-install-openssl) y [Configuración de OpenSSL](#oidc-configure-openssl).

1. Comience con la URL del IdP OIDC (por ejemplo, `https://server.example.com`) y, a continuación, agregue `/.well-known/openid-configuration` para formar la dirección URL del documento de configuración del IdP, de este modo:

   **https://*server.example.com*/.well-known/openid-configuration**

   Abra esta URL en un navegador web y sustituya *servidor.ejemplo.com* por el nombre del servidor del proveedor de identidades. 

1. <a name="thumbstep2"></a>En el documento que se muestra, utilice la característica de su navegador web **Buscar** para localizar el texto de `"jwks_uri"`. Justo después del texto `"jwks_uri"`, verá dos puntos (:) seguidos de una URL. Copie el nombre completo del dominio de la URL. No incluya `https://` ni ninguna ruta que vaya después del dominio de nivel superior. 

   ```
   {
    "issuer": "https://accounts.example.com",
    "authorization_endpoint": "https://accounts.example.com/o/oauth2/v2/auth",
    "device_authorization_endpoint": "https://oauth2.exampleapis.com/device/code",
    "token_endpoint": "https://oauth2.exampleapis.com/token",
    "userinfo_endpoint": "https://openidconnect.exampleapis.com/v1/userinfo",
    "revocation_endpoint": "https://oauth2.exampleapis.com/revoke",
    "jwks_uri": "https://www.exampleapis.com/oauth2/v3/certs",
   ...
   ```

1. Utilice la herramienta de línea de comandos OpenSSL para ejecutar el siguiente comando. Sustituya *claves.ejemplo.com* por el nombre de dominio que ha obtenido en [Step 3](#thumbstep2).

   ```
   openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
   ```

1. En la ventana de comandos, desplácese hacia arriba hasta que vea un certificado similar al del ejemplo siguiente. Si ve más de un certificado, busque el último certificado que se muestre (en la parte inferior de la salida del comando). Este contendrá el certificado de la CA superior intermedia en la cadena de autoridad de certificación.

   ```
   -----BEGIN CERTIFICATE-----
    MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
    VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
    b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
    BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
    MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
    VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
    b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
    YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
    21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
    rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
    Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
    nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
    FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
    NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
    -----END CERTIFICATE-----
   ```

   Copie todo el certificado (incluidas las líneas `-----BEGIN CERTIFICATE-----` y `-----END CERTIFICATE-----`) y péguelo en un archivo de texto. A continuación, guarde el archivo con el nombre de archivo **certificate.crt**.
**nota**  
La cadena de certificados del proveedor de identidades OIDC debe empezar con el dominio o la URL del emisor, incluir el certificado intermedio (si lo hubiera) y terminar con el certificado raíz. Si el orden de la cadena de certificados es diferente o incluye certificados duplicados o adicionales, se produce un error de discordancia de firmas y STS no podrá validar el token web JSON (JWT). Corrija el orden de los certificados de la cadena devuelta por el servidor para resolver el error. Para obtener más información sobre los estándares de la cadena de certificados, consulte el documento [certificate\$1list en el RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) en el sitio web de la serie RFC.

1. Utilice la herramienta de línea de comandos OpenSSL para ejecutar el siguiente comando.

   ```
   openssl x509 -in certificate.crt -fingerprint -sha1 -noout
   ```

   La ventana de comandos muestra la huella digital del certificado, que tiene un aspecto similar al del siguiente ejemplo:

   ```
   SHA1 Fingerprint=99:0F:41:93:97:2F:2B:EC:F1:2D:DE:DA:52:37:F9:C9:52:F2:0D:9E
   ```

   Elimine todos los dos puntos (:) de esta cadena para generar la huella digital final, tal y como se muestra a continuación:

   ```
   990F4193972F2BECF12DDEDA5237F9C952F20D9E
   ```

1. Si está creando el proveedor de identidad de IAM OIDC con la AWS CLI, las Tools for Windows PowerShell o la API de IAM, proporcionar la huella digital es opcional. Si decide no incluir una huella digital durante la creación, IAM recuperará la huella digital de la CA intermedia superior del certificado del servidor del IdP de OIDC. Una vez creado el proveedor de identidad de IAM OIDC, puede comparar esta huella digital con la que IAM recupera.

   Si crea el proveedor de identidad de IAM OIDC en la consola de IAM, la consola intenta recuperar la huella digital de CA intermedia superior del certificado del servidor del IdP de OIDC para usted. Puede comparar esta huella digital con la que IAM recupera. Una vez creado el proveedor de identidad de IAM OIDC, puede ver la huella digital del proveedor de identidades de IAM OIDC en la pestaña de verificación **Puntos de conexión** de la página de la consola **Resumen** del proveedor de OIDC.
**importante**  
Si la huella digital que ha obtenido no coincide con la que se muestra en los detalles de la huella digital del proveedor de identidad de IAM OIDC, no debería utilizar el proveedor de OIDC. En su lugar, debe eliminar el proveedor de OIDC creado y volver a intentarlo para crear el proveedor de OIDC después de que haya pasado cierto tiempo. Compruebe que las huellas digitales coinciden antes de utilizar el proveedor. Si siguen sin coincidir después de intentarlo por segunda vez, utilice el [foro de IAM](https://forums.aws.amazon.com/forum.jspa?forumID=76) para ponerse en contacto con AWS.

## Instalación de OpenSSL
<a name="oidc-install-openssl"></a>

Si aún no dispone de OpenSSL instalado, siga las instrucciones indicadas en esta sección.

**Para instalar OpenSSL en Linux o Unix**

1. Vaya a [OpenSSL: Fuente, Tarballs](https://openssl.org/source/) (https://openssl.org/source/).

1. Descargue la fuente más reciente y cree el paquete.

**Para instalar OpenSSL en Windows**

1. Vaya a [OpenSSL: distribuciones binarias](https://wiki.openssl.org/index.php/Binaries) (https://wiki.openssl.org/index.php/Binaries) para obtener una lista de sitios desde los que puede instalar la versión de Windows.

1. Siga las instrucciones del sitio seleccionado para iniciar la instalación.

1. Si se le solicita que instale **Microsoft Visual C\$1\$1 2008 Redistributables** y aún no está instalado en su sistema, elija el enlace de descarga adecuado para su entorno. Siga las instrucciones proporcionadas por el **Asistente para la instalación de Microsoft Visual C\$1\$1 2008 Redistributable**.
**nota**  
Si no está seguro de si Microsoft Visual C\$1\$1 2008 Redistributables ya está instalado en el sistema, puede intentar instalar OpenSSL primero. El instalador de OpenSSL muestra una alerta si Microsoft Visual C\$1\$1 2008 Redistributables aún no está instalado. Asegúrese de instalar la arquitectura (32 bits o 64 bits) que coincide con la versión de OpenSSL que instale.

1. Después de instalar Microsoft Visual C\$1\$1 2008 Redistributables, seleccione la versión adecuada de los archivos binarios OpenSSL para su entorno y guarde el archivo localmente. Inicie el **Asistente de instalación de OpenSSL**.

1. Siga las instrucciones descritas en el **Asistente de instalación de OpenSSL**.

## Configuración de OpenSSL
<a name="oidc-configure-openssl"></a>

Antes de utilizar los comandos de OpenSSL, debe configurar el sistema operativo para que tenga información sobre la ubicación donde está instalado OpenSSL.

**Para configurar OpenSSL en Linux o Unix**

1. En la línea de comandos, establezca la variable `OpenSSL_HOME` a la ubicación de la instalación de OpenSSL:

   ```
   $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. Establezca la ruta para incluir la instalación de OpenSSL:

   ```
   $ export PATH=$PATH:$OpenSSL_HOME/bin
   ```
**nota**  
Los cambios que haga en las variables de entorno mediante el comando `export` solo son válidas para la sesión actual. Puede realizar cambios persistentes en las variables de entorno configurándolas en el archivo de configuración del intérprete de comandos. Para obtener más información, consulte la documentación del sistema operativo.

**Para configurar OpenSSL en Windows**

1. Abra una ventana del **símbolo del sistema**.

1. Establezca la variable `OpenSSL_HOME` a la ubicación de la instalación de OpenSSL:

   ```
   C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. Establezca la variable `OpenSSL_CONF` a la ubicación del archivo de configuración en su instalación OpenSSL:

   ```
   C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
   ```

1. Establezca la ruta para incluir la instalación de OpenSSL:

   ```
   C:\> set Path=%Path%;%OpenSSL_HOME%\bin
   ```
**nota**  
Cualquier cambio que realice en las variables de entorno de Windows en una ventana del **Símbolo del sistema** es válido solo para la sesión actual de la línea de comandos. Puede realizar cambios persistentes en las variables de entorno configurándolas como propiedades del sistema. Los procedimientos exactos dependen de la versión de Windows que esté utilizando. (Por ejemplo, en Windows 7, abra **Panel de control**, **Seguridad y sistema**, **Sistema**. A continuación, elija **Configuración avanzada del sistema**, pestaña **Avanzado**, **Variables de entorno**.) Para obtener más información, consulte la documentación de Windows.

# Controles del proveedor de identidad para proveedores compartidos de OIDC
<a name="id_roles_providers_oidc_secure-by-default"></a>

Para los proveedores de identidades OpenID Connect (OIDC) compartidos y reconocidos, IAM requiere evaluar de forma explícita ciertas reclamaciones en las políticas de confianza de rol. Estas reclamaciones requeridas, conocidas como *controles del proveedor de identidades*, son evaluadas por IAM durante la creación del rol y las actualizaciones de la política de confianza. Si la política de confianza del rol no evalúa los controles requeridos por el proveedor de identidades OIDC compartido, se producirá un error en la creación o actualización del rol. Esto garantiza que solo las identidades autorizadas de la organización prevista puedan asumir roles y acceder a los recursos de AWS. Este control de seguridad es fundamental cuando los proveedores OIDC se comparten entre varios clientes de AWS.



IAM no evaluará los controles del proveedor de identidades en las políticas de confianza de rol OIDC ya existentes. Para cualquier modificación de la política de confianza de rol en roles OIDC existentes, IAM requerirá que se incluyan los controles del proveedor de identidades en dicha política.

## Tipos de proveedores OIDC
<a name="id_roles_providers_oidc_idp_types"></a>

IAM clasifica los proveedores de identidades OIDC en dos categorías: **privados** y **compartidos**. Un proveedor de identidades OIDC privado puede ser propiedad de una única organización y estar gestionado por esta, o bien corresponder a un inquilino de un proveedor SaaS, donde la URL del emisor OIDC actúa como identificador único específico de esa organización. Por el contrario, un proveedor de identidades OIDC compartido se utiliza en múltiples organizaciones, y la URL del emisor OIDC puede ser la misma para todas ellas.

La siguiente tabla presenta las principales diferencias entre los proveedores OIDC privados y compartidos:


| Característica | Proveedor OIDC privado | Proveedor OIDC compartido | 
| --- | --- | --- | 
|  Emisor  |  Exclusivo de la organización  |  Compartido entre varias organizaciones  | 
|  Información de tenencia  |  Comunicado a través de un emisor único  |  Comunicado a través de reclamaciones en JWT  | 
|  Requisitos de la política de confianza  |  No se requiere evaluación de reclamaciones específica  |  Se requiere evaluación de reclamaciones específica  | 

## Proveedores de identidades OIDC compartidos con controles del proveedor de identidades
<a name="id_roles_providers_oidc_idp_shared_oidc_secure_support"></a>

Al crear o modificar un proveedor OIDC en IAM, el sistema identifica y evalúa automáticamente las reclamaciones requeridas para los proveedores OIDC compartidos reconocidos. Si los controles del proveedor de identidades no están configurados en la política de confianza del rol, la creación o actualización del rol fallará con un error MalformedPolicyDocument.

La siguiente tabla muestra los proveedores OIDC compartidos que requieren controles del proveedor de identidades en las políticas de confianza de rol e información adicional para permitirle configurar los controles de proveedor de identidades.


| Proveedor de identidad OIDC | URL de OIDC | Reclamación de tenencia | Reclamaciones requeridas | 
| --- | --- | --- | --- | 
| [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html) |  `cognito-identity.amazonaws.com`  | aud |  `cognito-identity.amazonaws.com:aud`  | 
| [Azure Sentinel](https://learn.microsoft.com/en-us/azure/defender-for-cloud/sentinel-connected-aws) |  https://sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d  |  sts:RoleSessionName  |  sts:RoleSessionName  | 
| [Buildkite](https://buildkite.com/docs/pipelines/security/oidc/aws) |  https://agent.buildkite.com  |  sub  |  agent.buildkite.com:sub  | 
| [Codefresh SaaS](https://codefresh.io/docs/docs/integrations/oidc-pipelines/) | https://oidc.codefresh.io | sub |  oidc.codefresh.io:sub  | 
| [DVC Studio](https://dvc.org/doc/studio/user-guide/openid-connect) | https://studio.datachain.ai/api | sub |  studio.datachain.ai/api:sub  | 
| [Acciones de GitHub](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://token.actions.githubusercontent.com | sub |  token.actions.githubusercontent.com:sub  | 
| [Flujo de registro de auditoría de GitHub](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) | https://oidc-configuration.audit-log.githubusercontent.com | sub |  oidc-configuration.audit-log.githubusercontent.com:sub  | 
| [GitHub vstoken](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://vstoken.actions.githubusercontent.com | sub |  vstoken.actions.githubusercontent.com:sub  | 
| [GitLab](https://docs.gitlab.com/ci/cloud_services/aws/) | https://gitlab.com | sub |  gitlab.com:sub  | 
| [IBM Turbonomic SaaS\$1](https://www.ibm.com/docs/en/tarm/8.16.x?topic=turbonomic-setting-up-aws-iam-role-saas-deployments) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | sub |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | 
| [Pulumi Cloud](https://www.pulumi.com/docs/pulumi-cloud/deployments/oidc/aws/) | https://api.pulumi.com/oidc | aud |  api.pulumi.com/oidc:aud  | 
| [sandboxes.cloud](https://docs.sandboxes.cloud/docs/cloud-resources-setup) | https://sandboxes.cloud | aud |  sandboxes.cloud:aud  | 
| [Scalr](https://docs.scalr.io/docs/aws) | https://scalr.io | sub |  scalr.io:sub  | 
| [Shisho Cloud](https://shisho.dev/docs/g/getting-started/integrate-apps/aws/) | https://tokens.cloud.shisho.dev | sub |  tokens.cloud.shisho.dev:sub  | 
| [Terraform Cloud](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration) | https://app.terraform.io | sub |  app.terraform.io:sub  | 
| [Upbound](https://docs.upbound.io/providers/provider-aws/authentication/) | https://proidc.upbound.io | sub |  proidc.upbound.io:sub  | 
| [Punto de conexión global de Vercel](https://vercel.com/docs/oidc/reference) | https://oidc.vercel.com | aud |  oidc.vercel.com:aud  | 

\$1 IBM Turbonomic actualiza periódicamente la URL del emisor OIDC con cada nueva versión de la plataforma. Agregaremos emisores OIDC de Turbonomic adicionales al ámbito como proveedores compartidos, según sea necesario.

Para cualquier nuevo proveedor de identidades OIDC que IAM identifique como compartido, los controles del proveedor de identidades requeridos para las políticas de confianza de roles se documentarán y se aplicarán de manera similar.

## Recursos adicionales
<a name="concept_additional_resources"></a>

Recursos adicionales:
+ Para obtener más información sobre cómo crear un rol de IAM para federación con OIDC, consulte [Creación de un rol para una federación de OpenID Connect (consola)](id_roles_create_for-idp_oidc.md).
+ Para obtener una lista de las claves de condición de IAM que se pueden usar para las reclamaciones, consulte [Claves disponibles para las federaciones de identidades AWS de OIDC](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Federación SAML 2.0
<a name="id_roles_providers_saml"></a>

AWS admite la federación de identidades con [SAML 2.0 (Lenguaje de marcado para confirmaciones de seguridad 2.0)](https://wiki.oasis-open.org/security), un estándar abierto que utilizan muchos proveedores de identidad (IdP). Esta característica permite el inicio de sesión único (SSO) federado para que los usuarios puedan iniciar sesión en la Consola de administración de AWS o llamar a operaciones de la API de AWS sin necesidad de crear un usuario de IAM para cada persona de la organización. Al utilizar SAML, puede simplificar el proceso de configuración de la federación con AWS, ya que puede utilizar el servicio del proveedor de identidades en lugar de [escribir el código proxy de identidad personalizado](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingFedTokens.html).

**nota**  
La federación de identidades de SAML de IAM admite respuestas SAML cifradas de proveedores de identidad (IdP) federados basados en SAML. IAM Identity Center y Amazon Cognito no admiten las aserciones de SAML cifradas de los proveedores de identidades de SAML de IAM.  
Puede añadir de forma indirecta soporte para aserciones de SAML cifradas a la federación de grupos de identidades de Amazon Cognito con los grupos de usuarios de Amazon Cognito. Los grupos de usuarios tienen una federación de SAML que es independiente de la federación de SAML de IAM y admite [la firma y el cifrado de SAML](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html). Aunque esta característica no se extiende de manera directa a los grupos de identidades, los grupos de usuarios pueden ser IdP para los grupos de identidades. Para usar el cifrado de SAML con grupos de identidades, agregue un proveedor de SAML con cifrado a un grupo de usuarios que sea un IdP de un grupo de identidades.  
El proveedor de SAML debe poder cifrar las afirmaciones de SAML con una clave que proporcione el grupo de usuarios. Los grupos de usuarios no aceptarán afirmaciones cifradas con un certificado que haya proporcionado IAM.

La federación de IAM admite estos casos de uso: 
+ [** Acceso federado para permitir que un usuario o aplicación de su organización llame a las operaciones de API de AWS**](#CreatingSAML-configuring). Este caso de uso se analiza en la siguiente sección. Utiliza una afirmación SAML (como parte de la respuesta de autenticación) que se genera en la organización para obtener credenciales de seguridad temporales. Esta situación es similar a otras situaciones de federación que admite IAM, como las descritas en [Solicitud de credenciales de seguridad temporales](id_credentials_temp_request.md) y [Federación OIDC](id_roles_providers_oidc.md). Sin embargo, los proveedores de identidad SAML 2.0 de su organización gestionan gran parte de los detalles en el tiempo de ejecución para realizar la comprobación de la autenticación y la autorización.
+ [** Inicio de sesión único (SSO) basado en web en la Consola de administración de AWS desde su organización**](id_roles_providers_enable-console-saml.md). Los usuarios pueden iniciar sesión en un portal de la organización alojado por un proveedor de identidades compatible con SAML 2.0, seleccionar una opción para ir a AWS y ser redireccionados hacia la consola sin tener que proporcionar información de inicio de sesión adicional. Puede utilizar un IdP SAML de terceros para establecer el acceso SSO a la consola, o también puede crear un IdP personalizado para conceder acceso a la consola a los usuarios externos. Para obtener más información acerca de la creación de un proveedor de identidad personalizado, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).

**Topics**
+ [

## Uso de la federación basada en SAML para el acceso a la API de AWS
](#CreatingSAML-configuring)
+ [

## Información general sobre la configuración de la federación basada en SAML 2.0
](#CreatingSAML-configuring-IdP)
+ [

## Información general acerca del rol que permite el acceso federado SAML a los recursos de AWS
](#CreatingSAML-configuring-role)
+ [

## Identificación única de los usuarios en la federación basada en SAML
](#CreatingSAML-userid)
+ [

# Crear un proveedor de identidades de SAML en IAM
](id_roles_providers_create_saml.md)
+ [

# Configuración su SAML 2.0 IdP con una relación de confianza para usuario autenticado y agregando reclamos
](id_roles_providers_create_saml_relying-party.md)
+ [

# Integración de proveedores de soluciones SAML externos con AWS
](id_roles_providers_saml_3rd-party.md)
+ [

# Configure aserciones SAML para la respuesta de autenticación
](id_roles_providers_create_saml_assertions.md)
+ [

# Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0
](id_roles_providers_enable-console-saml.md)
+ [

# Ver una respuesta SAML en su navegador
](troubleshoot_saml_view-saml-response.md)

## Uso de la federación basada en SAML para el acceso a la API de AWS
<a name="CreatingSAML-configuring"></a>

Imagine que desea proporcionar un método para que los empleados copien datos de sus equipos a una carpeta de copia de seguridad. Puede crear una aplicación que los usuarios pueden ejecutar en sus equipos. En la etapa final, la aplicación lee y escribe objetos en un bucket de Amazon S3. Los usuarios no tienen acceso directo a AWS. En su lugar, se utiliza el siguiente proceso:

![\[Obtención de credenciales de seguridad temporales basadas en una aserción de SAML\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/saml-based-federation-diagram.png)


1. Un usuario de su organización utiliza una aplicación cliente para solicitar autenticación del proveedor de identidad de su organización.

1. El proveedor de identidad autentica al usuario en función del almacén de identidades de la organización.

1. El proveedor de identidad construye una aserción de SAML con información sobre el usuario y envía dicha aserción a la aplicación cliente. Cuando habilita el cifrado de SAML para su IdP de SAML de IAM, el IdP externo cifra esta afirmación.

1. La aplicación cliente llama a la API AWS STS[`AssumeRoleWithSAML` de ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html), transfiriendo el ARN del proveedor SAML, el ARN del rol a asumir y la aserción de SAML del proveedor de identidad. Si el cifrado está habilitado, la aserción que pasa por la aplicación del cliente permanece cifrada en tránsito.

1. (Opcional) AWS STS utiliza la clave privada de su IdP externo para descifrar la aserción de SAML cifrada.

1. La respuesta de la API a la aplicación cliente incluye credenciales de seguridad temporales.

1. La aplicación cliente usa las credenciales de seguridad temporales para llamar a las operaciones de API de Amazon S3. 

## Información general sobre la configuración de la federación basada en SAML 2.0
<a name="CreatingSAML-configuring-IdP"></a>

Antes de poder utilizar la federación basada en SAML 2.0 tal y como se describe en la situación anterior y en el diagrama, debe configurar el proveedor de identidad de su organización y su Cuenta de AWS para que confíen el uno en el otro. El proceso general para configurar esta confianza se describe en los pasos siguientes. Dentro de su organización, debe contar con un [proveedor de identidades compatible con SAML 2.0](id_roles_providers_saml_3rd-party.md), como Microsoft Active Directory Federation Service (AD FS, parte de Windows Server), Shibboleth u otro proveedor SAML 2.0 compatible. 

**nota**  
Para mejorar la resiliencia de la federación, le recomendamos que configure su IdP y su federación de AWS para que admitan varios puntos de conexión de inicio de sesión de SAML. Para obtener más información, consulte el artículo del blog sobre seguridad de AWS, [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

**Configure que la IdP de su organización y AWS confíen el uno en el otro**

1. Registre AWS como proveedor de servicios (SP) con el IdP de su organización. Utilice el documento de metadatos SAML de `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 

   Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

   Opcionalmente, puede usar el documento de metadatos SAML de `https://signin.aws.amazon.com/static/saml-metadata.xml` .

1. <a name="createxml"></a>Con el IdP de la organización puede generar un archivo XML de metadatos SAML equivalente que describe su IdP como proveedor de identidad de IAM en AWS. Debe incluir el nombre de emisor, una fecha de creación, una fecha de vencimiento y claves que AWS puede utilizar para validar las respuestas de autenticación (aserciones) de la organización. 

   Si permite que se envíen aserciones de SAML cifradas desde su IdP externo, debe generar un archivo de clave privada con el IdP de su organización y cargar este archivo en la configuración de SAML de IAM en formato de archivo .pem. AWS STS necesita esta clave privada para descifrar las respuestas de SAML que corresponden a la clave pública cargada en su IdP.
**nota**  
Según se define en la [versión 1.0 del perfil de interoperabilidad de metadatos SAML V2.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html), IAM no evalúa ni toma medidas en relación con la caducidad de los certificados X.509 de los documentos de metadatos SAML. Si le preocupan los certificados X.509 caducados, le recomendamos que supervise las fechas de caducidad de los certificados y los alterne de acuerdo con las políticas de gobernanza y seguridad de su organización.

1. <a name="samlovrcreateentity"></a>En la consola de IAM, debe crear un proveedor de identidad SAML. Como parte de este proceso, puede cargar el documento de metadatos SAML y la clave de descifrado privada producidos por el IdP en la organización en [Step 2](#createxml). Para obtener más información, consulte [Crear un proveedor de identidades de SAML en IAM](id_roles_providers_create_saml.md).

1. <a name="samlovrcreaterole"></a>En IAM, debe crear uno o varios roles de IAM. En la política de confianza del rol, se establece el proveedor SAML como principal, que establece una relación de confianza entre la organización y AWS. La política de permisos del rol establece qué usuarios de la organización pueden realizar qué cosas en AWS. Para obtener más información, consulte [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md).
**nota**  
Los proveedores de identidad de SAML que se utilizan en una política de confianza de roles deben estar en la misma cuenta en la que se encuentra el rol.

1. En el proveedor de identidad de la organización, defina aserciones que asignen usuarios o grupos de la organización a los roles de IAM. Tenga en cuenta que los distintos usuarios y grupos de la organización pueden asignarse a diferentes roles de IAM. Los pasos exactos para llevar a cabo la asignación dependerán del proveedor de identidad que esté utilizando. En la [situación anterior](#CreatingSAML-configuring) de una carpeta de Amazon S3 para los usuarios, es posible que todos los usuarios estén asignados al mismo rol que proporciona los permisos de Amazon S3. Para obtener más información, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md).

   Si el proveedor de identidades activa el inicio de sesión único en la consola de AWS, puede configurar la duración máxima de las sesiones de la consola. Para obtener más información, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md).

1. En la aplicación que esté creando, llame a la API AWS Security Token Service `AssumeRoleWithSAML`, que transfiere el ARN del proveedor SAML que creó en [Step 3](#samlovrcreateentity), el ARN del rol a asumir que creó en [Step 4](#samlovrcreaterole) y la aserción de SAML sobre el usuario actual que obtiene del proveedor de identidades. AWS se asegurará de que la solicitud para asumir el rol procede del proveedor de identidades al que se hace referencia en el proveedor SAML. 

   Para obtener más información, consulte [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) en la *Referencia de la API de AWS Security Token Service*. 

1. Si la solicitud se realiza correctamente, la API devuelve un conjunto de credenciales de seguridad temporales, que su aplicación puede utilizar para realizar solicitudes firmadas a AWS. Su aplicación tiene información sobre el usuario actual y puede acceder a carpetas específicas del usuario en Amazon S3, tal y como se describe en la situación anterior. 

## Información general acerca del rol que permite el acceso federado SAML a los recursos de AWS
<a name="CreatingSAML-configuring-role"></a>

Los roles que cree en IAM definen qué acciones pueden realizar en AWS las entidades principales federadas de SAML de la organización. Al crear la política de confianza para el rol, debe especificar el proveedor SAML que creó anteriormente como `Principal`. Además puede ampliar la política de confianza con una `Condition` para permitir únicamente a los usuarios que cumplen determinados atributos SAML acceder al rol. Por ejemplo, puede especificar que solo los usuarios cuya afiliación SAML es `staff` (tal como afirma https://openidp.feide.no) estén autorizados para acceder al rol, tal y como se muestra en la siguiente política de muestra:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"},
    "Action": "sts:AssumeRoleWithSAML",
    "Condition": {
      "StringEquals": {
        "saml:aud": "https://us-east-1.signin.aws.amazon.com/saml",
        "saml:iss": "https://openidp.feide.no"
      },
      "ForAllValues:StringLike": {"saml:edupersonaffiliation": ["staff"]}
    }
  }]
}
```

------

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws-cn:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:aud": "https://ap-east-1.signin.amazonaws.cn/saml",
                    "saml:iss": "https://openidp.feide.no"
                },
                "ForAllValues:StringLike": {
                    "saml:edupersonaffiliation": [
                        "staff"
                    ]
                }
            }
        }
    ]
}
```

------

**nota**  
Los proveedores de identidad de SAML que se utilizan en una política de confianza de roles deben estar en la misma cuenta en la que se encuentra el rol.

La clave de contexto de `saml:aud` de la política especifica la URL que muestra el navegador al iniciar sesión en la consola. Esta URL de punto de conexión de inicio de sesión debe coincidir con el atributo del destinatario del proveedor de identidades. Puede incluir URL de inicio de sesión en determinadas regiones. AWS recomienda usar los puntos de conexión regionales en lugar del punto de conexión global para mejorar la resiliencia de la federación. Si solo ha configurado un punto de conexión, no podrá federarse en AWS en el improbable caso de que el punto de conexión deje de estar disponible. Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

En el siguiente ejemplo, se muestra el formato de URL de inicio de sesión con el `region-code` opcional.

`https://region-code.signin.aws.amazon.com/saml`

Si se requiere el cifrado de SAML, la URL de inicio de sesión debe incluir el identificador único que AWS asigna al proveedor de SAML, que puede encontrar en la página de detalles del proveedor de identidades. En el siguiente ejemplo, la URL de inicio de sesión incluye el identificador único del IdP, que requiere que /acs/ se agregue a la ruta de inicio de sesión.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Para la política de permisos del rol, debe especificar los permisos de la misma forma que haría para cualquier rol. Por ejemplo, si los usuarios de la organización pueden administrar las instancias Amazon Elastic Compute Cloud (EC2), debe permitir de forma explícita las acciones de Amazon EC2 en la política de permisos, como los de la política administrada **AmazonEC2FullAccess**. 

Para obtener más información sobre las claves de SAML que puede revisar en una política, consulte [Claves disponibles para la federación AWS STS basada en SAML](reference_policies_iam-condition-keys.md#condition-keys-saml).

## Identificación única de los usuarios en la federación basada en SAML
<a name="CreatingSAML-userid"></a>

Al crear políticas de acceso en IAM, a menudo es útil poder especificar los permisos basados en la identidad de los usuarios. Por ejemplo, en el caso de los usuarios que se han federado mediante SAML, es posible que una aplicación quiera conservar información en Amazon S3 utilizando una estructura de este tipo: 

```
amzn-s3-demo-bucket/app1/user1
amzn-s3-demo-bucket/app1/user2
amzn-s3-demo-bucket/app1/user3
```

Puede crear el bucket (`amzn-s3-demo-bucket`) y la carpeta (`app1`) a través de la consola de Amazon S3 o la AWS CLI, pues son valores estáticos. Sin embargo, las carpetas específicas de usuarios (*user1*, *user2*, *user3*, etc.) deben crearse en el tiempo de ejecución utilizando código, ya que el valor que identifica al usuario es desconocido hasta la primera vez que el usuario inicia sesión a través del proceso de federación. 

Para escribir políticas que hacen referencia a detalles específicos del usuario como parte de un nombre de recurso, la identidad del usuario tiene que estar disponible en claves SAML que puedan utilizarse en las condiciones de políticas. Las siguientes claves están disponibles para la federación basada en SAML 2.0 para utilizarlas en las políticas de IAM. Puede utilizar los valores devueltos por las siguientes claves para crear identificadores de usuario únicos para recursos como carpetas de Amazon S3. 
+ `saml:namequalifier`. Un valor hash basado en la concatenación del `Issuer` valor de respuesta (`saml:iss`) y una cadena con el ID de cuenta `AWS` y el nombre fácil de recordar (la última parte del ARN) del proveedor SAML en IAM. La concatenación del ID de cuenta y del nombre fácil de recordar del proveedor SAML está disponible para las políticas de IAM como clave `saml:doc`. El ID de cuenta y el nombre de proveedor deben separarse con una "/" como en "123456789012/provider\$1name". Para obtener más información, consulte la clave `saml:doc` en [Claves disponibles para la federación AWS STS basada en SAML](reference_policies_iam-condition-keys.md#condition-keys-saml).

  La combinación de `NameQualifier` y `Subject` se puede usar para identificar de forma única a una entidad principal federada de SAML. El pseudocódigo siguiente muestra cómo se calcula este valor. En este pseudocódigo, `+` indica una concatenación, `SHA1` representa una función que genera un resumen del mensaje utilizando SHA-1 y `Base64` representa una función que genera una versión con codificación Base64 de la salida del hash.

   `Base64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) )` 

   Para obtener más información acerca de las claves de la política que están disponibles para la federación basada en SAML, consulte [Claves disponibles para la federación AWS STS basada en SAML](reference_policies_iam-condition-keys.md#condition-keys-saml).
+ `saml:sub` (cadena). Se trata del asunto de la demanda, que incluye un valor que identifica de forma unívoca a un usuario individual dentro de una organización (por ejemplo, `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`). 
+ `saml:sub_type` (cadena). Esta clave puede ser `persistent`, `transient` o la URI completa `Format` de los elementos `Subject` y `NameID` utilizados en la aserción SAML. Un valor de `persistent` indica que el valor de `saml:sub` es el mismo para un usuario en todas las sesiones. Si el valor es `transient`, el usuario tendrá un valor `saml:sub` diferente para cada sesión. Para obtener información sobre el atributo `NameID` del elemento `Format`, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md). 

El siguiente ejemplo muestra una política de permisos que utiliza las claves anteriores para conceder permisos a una carpeta específica de usuario en Amazon S3. La política presupone que los objetos de Amazon S3 se identifican utilizando un prefijo que incluye tanto `saml:namequalifier` y `saml:sub`. Observe que el elemento `Condition` incluye una prueba para asegurarse de que `saml:sub_type` está fijado en `persistent`. Si se establece como `transient`, el valor `saml:sub` para el usuario puede ser diferente en cada sesión, por lo que la combinación de los valores no debe utilizarse para identificar las carpetas específicas del usuario. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

Para obtener más información sobre la asignación de aserciones del proveedor de identidad a claves de políticas, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md). 

# Crear un proveedor de identidades de SAML en IAM
<a name="id_roles_providers_create_saml"></a>

Un proveedor de identidad de IAM SAML 2.0 es una entidad de IAM que describe un servicio de proveedor de identidad (IdP) externo compatible con el estándar [SAML 2.0 (Lenguaje de marcado para confirmaciones de seguridad 2.0)](https://wiki.oasis-open.org/security). Utiliza un proveedor de identidades de IAM cuando quiere establecer una relación de confianza entre un IdP compatible con SAML, como Shibboleth o Active Directory Federation Services, y AWS, de modo que los usuarios de su organización tengan acceso a los recursos de AWS. Los proveedores de identidad de IAM SAML se utilizan como entidades principales en una política de confianza de IAM. 

Para obtener más información acerca de esta situación, consulte [Federación SAML 2.0](id_roles_providers_saml.md).

Puede crear y administrar un proveedor de identidad de IAM en el Consola de administración de AWS o con AWS CLI, Tools for Windows PowerShell o la API de IAM AWS. 

Después de crear un proveedor SAML, debe crear uno varios roles de IAM. Un rol es una identidad en AWS que no tiene sus propias credenciales (como las tiene un usuario). Sin embargo, en este contexto un rol se asigna dinámicamente a una entidad principal federada de SAML que ha sido autenticada por el proveedor de identidades. El rol permite al proveedor de identidades solicitar credenciales de seguridad temporales para obtener acceso a AWS. Las políticas asignadas al rol determinan qué acciones pueden realizar los usuarios en AWS. Para crear un rol para la federación SAML, consulte [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md). 

Finalmente, después de crear el rol, completa la relación de confianza SAML al configurar el proveedor de identidades con la información sobre AWS y los roles que desea que usen las entidades principales federadas de SAML. Esto se denomina configuración de la relación de confianza para usuario autenticado entre su proveedor de identidades y AWS. Para configurar una relación de confianza, consulte [Configuración su SAML 2.0 IdP con una relación de confianza para usuario autenticado y agregando reclamos](id_roles_providers_create_saml_relying-party.md). 

**Topics**
+ [

## Requisitos previos
](#idp-manage-identityprovider-prerequisites)
+ [

## Crea y administra un proveedor de identidad IAM SAML (consola)
](#idp-manage-identityprovider-console)
+ [

## Gestiona las claves de cifrado SAML
](#id_federation_manage-saml-encryption)
+ [

## Cree y administre un proveedor de identidad IAM SAML (AWS CLI)
](#idp-create-identityprovider-CLI)
+ [

## Cree y administre un proveedor de identidad IAM SAML (API de AWS)
](#idp-create-identityprovider-API)
+ [

## Siguientes pasos
](#id_roles_create-for-saml-next-steps)

## Requisitos previos
<a name="idp-manage-identityprovider-prerequisites"></a>

Antes de poder crear un proveedor de identidad SAML de, debe tener la siguiente información de su IdP.
+ Obtenga el documento de metadatos SAML de su IdP. Este documento incluye el nombre del emisor, la información del vencimiento y las claves que se pueden utilizar para validar la respuesta de autenticación SAML (afirmaciones) que se reciben del proveedor de identidades. Para generar el documento de metadatos, utilice el software de administración de identidades proporcionado por su IdP externo.
**importante**  
Este archivo de metadatos incluye el nombre del emisor, información de vencimiento y las claves que se pueden utilizar para validar la respuesta de autenticación SAML (afirmaciones) recibida desde el IdP. El archivo de metadatos debe estar codificado en formato UTF-8 sin una marca de orden de bytes (BOM). Para eliminar la BOM, puede codificar el archivo en UTF-8 con una herramienta de edición de texto, como Notepad\$1\$1.  
El certificado X.509 incluido como parte del documento de metadatos de SAML debe utilizar un tamaño de clave de al menos 1024 bits. Además, el certificado X.509 no debe contener extensiones repetidas. Puede utilizar extensiones, pero estas solo pueden aparecer una vez en el certificado. Si el certificado X.509 no cumple ninguna condición, se produce un error en la creación de proveedor de identidad (IdP) y devuelve el mensaje “Unable to parse metadata” (No se pueden analizar los metadatos).  
Según se define en la [versión 1.0 del perfil de interoperabilidad de metadatos SAML V2.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html), IAM no evalúa ni toma medidas en relación con la caducidad de los certificados X.509 de los documento de metadatos SAML. Si le preocupan los certificados X.509 caducados, le recomendamos que supervise las fechas de caducidad de los certificados y los alterne de acuerdo con las políticas de gobernanza y seguridad de su organización.
+ Si elige activar el cifrado de SAML, debe generar un archivo de clave privada con su IdP y cargue este archivo en la configuración de SAML de IAM en formato de archivo .pem. AWS STS requiere esta clave privada para descifrar las respuestas de SAML que corresponden a la clave pública cargada en el IdP. Se admiten los siguientes algoritmos:
  + Algoritmos de cifrado
    + AES-128
    + AES-256
    + RSA-OAEP
  + Algoritmos de transporte de claves
    + AES-CBC
    + AES-GCM

  Consulte la documentación de su proveedor de identidades a fin de conocer los pasos necesarios para generar una clave privada.
**nota**  
IAM Identity Center y Amazon Cognito no admiten las aserciones de SAML cifradas de los proveedores de identidades de SAML de IAM. Puede añadir de forma indirecta soporte para aserciones de SAML cifradas a la federación de grupos de identidades de Amazon Cognito con los grupos de usuarios de Amazon Cognito. Los grupos de usuarios tienen una federación de SAML que es independiente de la federación de SAML de IAM y admite [la firma y el cifrado de SAML](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html). Aunque esta característica no se extiende de manera directa a los grupos de identidades, los grupos de usuarios pueden ser IdP para los grupos de identidades. Para usar el cifrado de SAML con grupos de identidades, agregue un proveedor de SAML con cifrado a un grupo de usuarios que sea un IdP de un grupo de identidades.  
El proveedor de SAML debe poder cifrar las afirmaciones de SAML con una clave que proporcione el grupo de usuarios. Los grupos de usuarios no aceptarán aserciones cifradas con un certificado que haya proporcionado IAM.

Para obtener instrucciones sobre cómo configurar muchos de los proveedores de identidades (IdP) que funcionan con AWS y sobre cómo generar el documento de metadatos de SAML, consulte [Integración de proveedores de soluciones SAML externos con AWS](id_roles_providers_saml_3rd-party.md).

Para obtener ayuda con la federación de SAML, consulta [Solución de problemas de la federación de SAML](troubleshoot_saml.md).

## Crea y administra un proveedor de identidad IAM SAML (consola)
<a name="idp-manage-identityprovider-console"></a>

Puede utilizar la Consola de administración de AWS para crear, actualizar y eliminar proveedores de identidad IAM SAML. Para obtener ayuda con la federación de SAML, consulta [Solución de problemas de la federación de SAML](troubleshoot_saml.md).

**Para crear un proveedor de identidades SAML de IAM (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Identity providers (Proveedores de identidades)** y, a continuación, **Add provider (Agregar proveedor)**. 

1. En **Configure provider (Configurar proveedor)**, elija **SAML**. 

1. Escriba un nombre para el proveedor de identidad.

1. En **Metadata document (Documento de metadatos)**, haga clic en **Choose File (Elegir archivo)** y especifique el documento de metadatos de SAML que descargó en [Requisitos previos](#idp-manage-identityprovider-prerequisites).
**nota**  
El atributo `validUntil` o `cacheDuration` del documento de metadatos de SAML define la fecha de **Válido hasta** del proveedor de identidad. Si el documento de metadatos de SAML no incluye un atributo de período de validez, la fecha de **Válido hasta** no coincidirá con la fecha de caducidad del certificado X.509.  
IAM no evalúa ni toma medidas en relación con la caducidad de los certificados X.509 en los documentos de metadatos de SAML. Si le preocupan los certificados X.509 caducados, le recomendamos que supervise las fechas de caducidad de los certificados y los alterne de acuerdo con las políticas de gobernanza y seguridad de su organización.

1. (Opcional) En **Cifrado de SAML**, seleccione **Elegir archivo** y, a continuación, el archivo de claves privadas que creó en [Requisitos previos](#idp-manage-identityprovider-prerequisites). Selecciona **Requerir cifrado** para aceptar únicamente las solicitudes cifradas de su IdP.

1. (Opcional) En **Agregar etiquetas**, puede agregar pares clave-valor para ayudarlo a identificar y organizar los proveedores de identidad. También puede utilizar etiquetas para controlar el acceso a los recursos de AWS. Para obtener más información sobre cómo etiquetar proveedores de identidad SAML, consulte [Etiquetado de proveedores de identidad SAML de IAM](id_tags_saml.md).

   Seleccione **Agregar etiqueta**. Introduzca valores para cada par clave-valor de etiqueta. 

1. Compruebe la información que ha proporcionado. Cuando haya terminado, elija **Add provider (Agregar proveedor)**. 

1. Asigne un rol de IAM a su proveedor de identidad. Este rol otorga a las identidades de usuarios externas administradas por su proveedor de identidades permisos para acceder a los recursos de AWS de su cuenta. Para obtener más información sobre cómo crear roles para la federación de identidades, consulte [Creación de un rol para un proveedor de identidad externo](id_roles_create_for-idp.md).
**nota**  
Los proveedores de identidad de SAML que se utilizan en una política de confianza de roles deben estar en la misma cuenta en la que se encuentra el rol.

**Para eliminar un proveedor SAML (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Proveedores de identidades**.

1. Seleccione el botón de opción situado junto al proveedor de identidades que desea eliminar.

1. Elija **Eliminar**. Se abrirá una nueva ventana.

1. Confirme que desea eliminar el proveedor escribiendo la palabra `delete` en el campo. A continuación, elija **Eliminar**.

## Gestiona las claves de cifrado SAML
<a name="id_federation_manage-saml-encryption"></a>

Puede configurar los proveedores de IAM SAML para que reciban afirmaciones cifradas en la respuesta de SAML de su IdP externo. Los usuarios pueden asumir un rol en AWS con las aserciones de SAML cifradas si llaman a `[sts:AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)`.

El cifrado SAML garantiza la seguridad de las afirmaciones cuando se transmiten a través de intermediarios o terceros. Además, esta característica le ayuda a cumplir con los requisitos de FedRAMP o de cualquier política de conformidad interna que exija el cifrado de las afirmaciones de SAML.

Para configurar un proveedor de identidad IAM SAML, consulte [Crear un proveedor de identidades de SAML en IAM](#id_roles_providers_create_saml). Para obtener ayuda con la federación de SAML, consulta [Solución de problemas de la federación de SAML](troubleshoot_saml.md).

### Rote la clave de cifrado SAML
<a name="id_federation_manage-saml-keys-rotate"></a>

IAM utiliza la clave privada que ha cargado en el proveedor de SAML de IAM para descifrar las aserciones de SAML cifradas de su IdP. Puedes guardar hasta dos archivos de claves privadas para cada proveedor de identidad, lo que te permite rotar las claves privadas según sea necesario. Cuando se guardan dos archivos, cada solicitud intentará descifrar primero con la fecha de **adición** más reciente y, a continuación, IAM intentará descifrar la solicitud con la fecha de **adición** más antigua.

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elige **Proveedores de identidades** y, a continuación, elige tu proveedor de la lista. 

1. Selecciona la pestaña de **cifrado SAML** y selecciona **Añadir nueva clave**.

1. Seleccione **Elegir archivo** y cargue la clave privada que descargó de su IdP como archivo .pem. A continuación, elija **Agregar clave**.

1. En la sección **Claves privadas para el descifrado de SAML**, selecciona el archivo de clave privada caducado y selecciona **Eliminar**. Le recomendamos que elimine la clave privada que ha caducado después de agregar una nueva clave privada para asegurarse de que el primer intento de descifrar su aserción se haga de manera correcta.

## Cree y administre un proveedor de identidad IAM SAML (AWS CLI)
<a name="idp-create-identityprovider-CLI"></a>

Puede utilizar la AWS CLI para crear, actualizar y eliminar proveedores de identidad SAML. Para obtener ayuda con la federación de SAML, consulta [Solución de problemas de la federación de SAML](troubleshoot_saml.md).

**Para crear un proveedor de identidad de IAM y cargar un documento de metadatos (AWS CLI)**
+ Ejecute este comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html) 

**Para actualizar un proveedor de identidad de IAM SAML (AWS CLI)**

Puede actualizar el archivo de metadatos, la configuración de cifrado de SAML y rotar los archivos de descifrado de clave privada para su proveedor IAM SAML. Para rotar las claves privadas, agregue la nueva clave privada y, a continuación, elimine la antigua en una solicitud independiente. Para obtener más información acerca de la rotación de claves privadas, consulte [Gestiona las claves de cifrado SAML](#id_federation_manage-saml-encryption).
+ Ejecute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html) 

**Para etiquetar un proveedor de identidad existente de IAM (AWS CLI)**
+ Ejecute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html) 

**Para enumerar etiquetas del proveedor de identidad de IAM existente (AWS CLI)**
+ Ejecute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html) 

**Para quitar etiquetas de un proveedor de identidad de IAM existente (AWS CLI)**
+ Ejecute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html) 

**Para eliminar un proveedor de identidad de IAM SAML (AWS CLI)**

1. (Opcional) Para mostrar información de todos los proveedores. como el ARN o la fecha de creación y vencimiento, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html)

1. (Opcional) Para obtener información sobre un determinado proveedor, como ARN, fecha de creación y vencimiento, configuración de cifrado e información de la clave privada, ejecute el siguiente comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html)

1. Para eliminar un proveedor de identidad de IAM, ejecute este comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html)

## Cree y administre un proveedor de identidad IAM SAML (API de AWS)
<a name="idp-create-identityprovider-API"></a>

Puede utilizar la API de AWS para crear, actualizar y eliminar proveedores de identidad SAML. Para obtener ayuda con la federación de SAML, consulta [Solución de problemas de la federación de SAML](troubleshoot_saml.md).

**Para crear un proveedor de identidad de IAM y cargar un documento de metadatos (API de AWS)**
+ Llame a esta operación: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html)

**Para actualizar un proveedor de identidad IAM SAML (API de AWS)**

Puede actualizar el archivo de metadatos, la configuración de cifrado de SAML y rotar los archivos de descifrado de clave privada para su proveedor IAM SAML. Para rotar las claves privadas, agregue la nueva clave privada y, a continuación, elimine la antigua en una solicitud independiente. Para obtener más información acerca de la rotación de claves privadas, consulte [Gestiona las claves de cifrado SAML](#id_federation_manage-saml-encryption).
+ Llame a esta operación: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html)

**Para etiquetar un proveedor de identidad de IAM existente (API de AWS)**
+ Llame a esta operación: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**Para enumerar etiquetas de un proveedor de identidad de IAM existente (API de AWS)**
+ Llame a esta operación: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**Para quitar etiquetas de un proveedor de identidad de IAM existente (API de AWS)**
+ Llame a esta operación: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

**Para eliminar un proveedor de identidad de IAM (API de AWS)**

1. (Opcional) Para mostrar información de todos los proveedores de identidad (IdP), como ARN, fecha de creación y vencimiento, llame a la siguiente operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html)

1. (Opcional) Para obtener información sobre un determinado proveedor, como ARN, fecha de creación y vencimiento, configuración de cifrado e información de la clave privada, llame a la siguiente operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html)

1. Para eliminar un IdP, llame a la siguiente operación:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html)

## Siguientes pasos
<a name="id_roles_create-for-saml-next-steps"></a>

Después de crear un proveedor de identidades SAML, establezca la relación de confianza entre partes con su IdP. También puede utilizar reclamaciones de la respuesta de autenticación de su IdP en políticas para controlar el acceso a un rol.
+ Debe informar al IdP sobre AWS como proveedor de servicios. Esto se denomina agregar una relación de confianza entre partes entre su IdP y AWS. El proceso exacto para añadir una relación de confianza entre partes depende del IdP que se use. Para obtener más información, consulte [Configuración su SAML 2.0 IdP con una relación de confianza para usuario autenticado y agregando reclamos](id_roles_providers_create_saml_relying-party.md).
+ Cuando el proveedor de identidades envía la respuesta que contiene las notificaciones a AWS, muchas de las notificaciones entrantes se mapean a claves de contexto de AWS. Puede utilizar estas claves de contexto en las políticas de IAM mediante el elemento Condition para controlar el acceso a un rol. Para obtener información, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md)

# Configuración su SAML 2.0 IdP con una relación de confianza para usuario autenticado y agregando reclamos
<a name="id_roles_providers_create_saml_relying-party"></a>

Cuando crea un proveedor de identidad de IAM SAML y un rol para el acceso con SAML, está informando a AWS sobre el proveedor de identidad (IdP) externo y lo que los usuarios pueden hacer. Su siguiente paso consistirá en informar al proveedor de identidades sobre AWS como proveedor de servicios. Esto se denomina añadir una *relación de confianza* para usuario autenticado entre su proveedor de identidades y AWS. El proceso exacto para añadir una relación de confianza entre partes depende del IdP que se use. Para obtener más información, consulte la documentación del software de administración de identidades. 

Muchos proveedores de identidades permiten especificar una URL en la que el proveedor de identidades pueda leer un documento XML que contiene información sobre la parte que confía y certificados. Para AWS, utilice la URL del punto de conexión de inicio de sesión. En el siguiente ejemplo, se muestra el formato de URL con el `region-code` opcional.

`https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`

Si se requiere el cifrado de SAML, la URL debe incluir el identificador único que AWS asigna al proveedor de SAML, que puede encontrar en la página de detalles del proveedor de identidades. En el ejemplo siguiente, se muestra una URL de inicio de sesión regional que incluye un identificador único.

`https://region-code.signin.aws.amazon.com/static/saml/IdP-ID/saml-metadata.xml`

Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Para el valor AWS, también puede usar el punto de conexión no regional `https://signin.aws.amazon.com/saml`.

Si no puede especificar directamente una URL, descargue el documento XML de la URL anterior e impórtelo a su software de proveedor de identidades. 

También necesita crear reglas de notificación adecuadas en su proveedor de identidades que indiquen que AWS es la parte que confía. Cuando el proveedor de identidades envía una respuesta SAML al punto de enlace de AWS, que contiene una *aserción* SAML con una o varias *notificaciones*. Una notificación es información sobre el usuario y sus grupos. Una regla de notificación asigna dicha información a atributos SAML. Con esto se puede asegurar de que las respuestas de autenticación SAML del proveedor de identidades contengan los atributos necesarios que AWS utiliza en las políticas de IAM para verificar los permisos de las entidades principales federadas de SAML. Para obtener más información, consulte los temas siguientes:
+  [Información general acerca del rol que permite el acceso federado SAML a los recursos de AWS](id_roles_providers_saml.md#CreatingSAML-configuring-role). Este tema explica el uso de claves específicas de SAML en las políticas de IAM y cómo utilizarlas para restringir los permisos de las entidades principales federadas de SAML.
+ [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md). En este tema se explica cómo configurar las notificaciones SAML que contienen información sobre el usuario. Las notificaciones están empaquetadas en una aserción SAML y se incluyen en la respuesta de SAML que se envía a AWS. Debe asegurarse de que la información que las políticas de AWS necesitan esté incluida en la aserción SAML en un formato que AWS pueda reconocer y utilizar.
+  [Integración de proveedores de soluciones SAML externos con AWS](id_roles_providers_saml_3rd-party.md). En este tema se proporcionan enlaces a documentación provista por organizaciones externas sobre cómo integrar las soluciones de identidad con AWS. 

**nota**  
Para mejorar la resiliencia de la federación, le recomendamos que configure su IdP y su federación de AWS para que admitan varios puntos de conexión de inicio de sesión de SAML. Para obtener más información, consulte el artículo del blog sobre seguridad de AWS, [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

# Integración de proveedores de soluciones SAML externos con AWS
<a name="id_roles_providers_saml_3rd-party"></a>

**nota**  
Se recomienda exigir a los usuarios humanos que utilicen credenciales temporales cuando accedan a AWS. ¿Ha considerado la posibilidad de usar AWS IAM Identity Center? Puede usar IAM Identity Center para administrar de forma centralizada el acceso a múltiples Cuentas de AWS y proporcionar a los usuarios un acceso protegido por MFA y de inicio de sesión único a todas sus cuentas asignadas desde un solo lugar. Con IAM Identity Center, puede crear y administrar identidades de usuario en IAM Identity Center o conectarse fácilmente a su proveedor de identidades existente compatible con SAML 2.0. Para obtener más información, consulte [¿Qué es el Centro de identidades de IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) en la *Guía del usuario de AWS IAM Identity Center*.

Los siguientes enlaces le ayudarán a configurar las soluciones de proveedores de identidad (IdP) SAML 2.0 externos para que funcionen con la federación de AWS. Consulta con tu proveedor de identidad para determinar si admite el cifrado de token SAML. Para conocer los requisitos de cifrado de SAML, consulte [Gestiona las claves de cifrado SAML](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption).

**sugerencia**  
AWSLos ingenieros de soporte de pueden ayudar a los clientes que tienen Planes de soporte Business y Enterprise con algunas tareas de integración que implican software de terceros. Para ver una lista actual de las plataformas y aplicaciones compatibles, consulte [¿Qué software de terceros se admite?](https://aws.amazon.com/premiumsupport/faqs/#what3rdParty) en la página *Preguntas frecuentes de AWS Support*.


****  

| Solución | Más información | 
| --- | --- | 
| Auth0 |  [Integrate with Amazon Web Services](https://auth0.com/docs/integrations/aws) (Integración con Amazon Web Services): esta página del sitio web de documentación de Auth0 contiene enlaces a los recursos en los que se describe cómo configurar el inicio de sesión único (SSO) con la Consola de administración de AWS e incluye un ejemplo de JavaScript. Puede configurar Auth0 para que pase las [etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte [Auth0 Announces Partnership con AWS para etiquetas de sesión de IAM](https://auth0.com/blog/auth0-partners-with-aws-for-iam-session-tags/). | 
| Microsoft Entra |  [Tutorial: Integración del inicio de sesión único (SSO) de Microsoft Entra con AWS Single-Account Access](https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/amazon-web-service-tutorial): este tutorial del sitio web de Microsoft describe cómo configurar Microsoft Entra (conocido anteriormente como Azure AD) como un proveedor de identidades (IdP) mediante la federación SAML. | 
| Centrify | [Configure Centrify and Use SAML for SSO to AWS](https://docs.centrify.com/Content/Applications/AppsWeb/AmazonSAML.htm) AWS En esta página del sitio web de Centrify se explica cómo configurar Centrify para utilizar el inicio de sesión único (SSO) basado en SAML en . | 
| CyberArk | Configure [CyberArk](https://docs.cyberark.com/Product-Doc/OnlineHelp/Idaptive/Latest/en/Content/Applications/AppsWeb/AmazonSAML.htm) para proporcionar acceso a Amazon Web Services (AWS) a los usuarios que inician sesión mediante el inicio de sesión único (SSO) de SAML desde el portal de usuarios de CyberArk. | 
| ForgeRock | [ForgeRock Identity Platform](https://backstage.forgerock.com/docs/am/6.5/saml2-guide/#saml2-create-hosted-idp) se integra con AWS. Puede configurar ForgeRock para que pase las [etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte el tema sobre [control de acceso basado en atributos para Amazon Web Services](https://www.forgerock.com/blog/attribute-based-access-control-amazon-web-services). | 
| Workspace de Google | [Amazon Web Services cloud application](https://support.google.com/a/answer/6194963) - En este artículo del sitio Google Workspace Admin Help se describe cómo configurar Google Workspace como IdP SAML 2.0 con AWS como el proveedor de servicio. | 
| IBM | Puede configurar IBM para que pase las [etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte el tema [IBM Cloud Identity IDaaS como uno de los primeros en admitir etiquetas de sesión de AWS](https://community.ibm.com/community/user/security/blogs/adam-case/2019/11/25/ibm-cloud-identity-idaas-one-of-first-to-support-aws-session-tags). | 
| JumpCloud |  [Concesión de acceso mediante roles de IAM para inicio de sesión único (SSO) con Amazon AWS](https://support.jumpcloud.com/support/s/article/Granting-Access-via-IAM-Roles-for-Single-Sign-On-SSO-with-Amazon-AWS): en este artículo del sitio web de JumpCloud se describe cómo configurar y habilitar el inicio de sesión único (SSO) en función de los roles de IAM para AWS. | 
| Matrix42 | [Guía de introducción a MyWorkspace](https://myworkspace.matrix42.com/documents/MyWorkspace-Getting-Started-with-AWS.pdf): en esta guía se describe cómo integrar los servicios de identidad de AWS con Matrix42 MyWorkspace. | 
| Microsoft Active Directory Federation Services (AD FS) |  [Field Notes: Integrating Active Directory Federation Service with AWS IAM Identity Center](https://aws.amazon.com/blogs/architecture/field-notes-integrating-active-directory-federation-service-with-aws-single-sign-on/) (Notas de campo: integración de Active Directory Federation Service con ): esta publicación del blog de arquitectura de AWS explica el flujo de autenticación entre AD FS y AWS IAM Identity Center (IAM Identity Center). IAM Identity Center admite la federación de identidades con SAML 2.0, lo que permite la integración con las soluciones de AD FS. Los usuarios pueden iniciar sesión en el portal de IAM Identity Center con sus credenciales corporativas, lo que reduce la sobrecarga administrativa de mantener credenciales separadas en IAM Identity Center. Puede configurar AD FS para que pase las [etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte el tema sobre [uso del control de acceso basado en atributos con AD FS para simplificar la administración de permisos de IAM](https://aws.amazon.com/blogs/security/attribute-based-access-control-ad-fs-simplify-iam-permissions-management/).  | 
| miniOrange | [SSO para AWS](http://miniorange.com/amazon-web-services-%28aws%29-single-sign-on-%28sso%29) - En esta página del sitio web de miniOrange se describe cómo establecer un acceso seguro a AWS para empresas y tener control completo sobre el acceso de las aplicaciones de AWS.  | 
| Okta |  [Integrar la interface de línea de comandos de Amazon Web Services utilizando Okta](https://support.okta.com/help/Documentation/Knowledge_Article/Integrating-the-Amazon-Web-Services-Command-Line-Interface-Using-Okta) - En esta página del sitio de soporte de Okta puede consultar cómo configurar Okta para utilizarlo con AWS. Puede configurar Okta para que pase las [etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte [Okta y AWS se unen para simplificar el acceso mediante etiquetas de sesión](https://www.okta.com/blog/2019/11/okta-and-aws-partner-to-simplify-access-via-session-tags/). | 
| Okta | [Federación de cuentas de AWS](https://help.okta.com/oie/en-us/Content/Topics/DeploymentGuides/AWS/aws-deployment.htm): esta sección del sitio web de Okta describe cómo configurar y habilitar Centro de identidades de IAM para AWS. | 
| OneLogin | En [OneLogin Knowledgebase](https://onelogin.service-now.com/support), busque SAML AWS para obtener una lista de artículos que expliquen cómo configurar la funcionalidad de IAM Identity Center entre OneLogin y AWS en situaciones de una sola función y de varias funciones. Puede configurar OneLogin para que pase las [etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte [OneLogin y etiquetas de sesión: control de acceso basado en atributos para recursos de AWS](https://www.onelogin.com/blog/aws-session-tags-integration). | 
| Ping Identity |  [PingFederate AWS Connector](https://support.pingidentity.com/s/marketplace-integration-details?recordId=a7i1W0000004HBwQAM): consulte sobre PingFederate AWS Connector, una plantilla de conexión rápida para configurar fácilmente un inicio de sesión único (SSO) y una conexión de aprovisionamiento. Lea la documentación y descargue la versión de PingFederate AWS Connector más reciente para las integraciones con AWS. Puede configurar Ping Identity para que pase [las etiquetas de sesión](id_session-tags.md). Para obtener más información, consulte [Anuncio de compatibilidad de Ping Identity para el control de acceso basado en atributos en AWS](https://support.pingidentity.com/s/document-item?bundleId=integrations&topicId=pon1571779451105.html).  | 
| RadiantLogic | [Radiant Logic Technology Partners](http://www.radiantlogic.com/about/partners/technology-partners/) - RadiantOne Federated Identity Service de Radiant Logic se integra con AWS para proporcionar un centro de identidades para el inicio de sesión único (SSO) basado en SAML.  | 
| RSA | La [Guía de implementación de Amazon Web Services y RSA Ready](https://community.rsa.com/s/article/Amazon-Web-Services-RSA-Ready-Implementation-Guide) proporciona orientación para la integración de AWS y RSA. Para obtener más información sobre la configuración de SAML, consulte la [Guía de implementación de Amazon Web Services - Configuración de SSO de My Page de SAML - RSA Ready](https://community.rsa.com/s/article/Amazon-Web-Services-SAML-My-Page-SSO-Configuration-RSA-Ready-Implementation-Guide). | 
| Salesforce.com |  [How to configure SSO from Salesforce to AWS](https://developer.salesforce.com/page/Configuring-SAML-SSO-to-AWS) - En este artículo sobre procedimientos del sitio para desarrolladores de Salesforce.com se describe cómo configurar un proveedor de identidades (IdP) en Salesforce y configurar AWS como proveedor de servicio.  | 
| SecureAuth |  [AWS - SecureAuth SAML SSO](https://docs.secureauth.com/2104/en/amazon-web-services--aws---idp-initiated--integration-guide.html) - En este artículo del sitio web de SecureAuth se describe cómo configurar la integración SAML con AWS para un dispositivo SecureAuth.  | 
| Shibboleth |  [How to Use Shibboleth for SSO to the Consola de administración de AWS](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console) - En esta entrada del blog de seguridad de AWS se ofrece un tutorial que explica paso a paso cómo configurar Shibboleth como proveedor de identidades para AWS. Puede configurar Shibboleth para que pase las [etiquetas de sesión](id_session-tags.md). | 

Para obtener más información, consulte la página [Socios de IAM](https://aws.amazon.com/iam/partners/) del sitio web de AWS. 

# Configure aserciones SAML para la respuesta de autenticación
<a name="id_roles_providers_create_saml_assertions"></a>

Después de verificar la identidad de un usuario de su organización, el proveedor de identidades (IdP) externo envía una respuesta de autenticación a la URL de punto de conexión de SAML de AWS. Esta respuesta es una solicitud POST que contiene un token de SAML que cumple el estándar [HTTP POST Binding for SAML 2.0](http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf) y que incluye los siguientes elementos o *notificaciones*. Estas notificaciones se configuran en su proveedor de identidades compatible con SAML. Consulte la documentación de su proveedor de identidad para obtener instrucciones sobre cómo ingresar esos reclamos.

Cuando el proveedor de identidades envía la respuesta que contiene las notificaciones a AWS, muchas de las notificaciones entrantes se mapean a claves de contexto de AWS. Estas claves de contexto pueden comprobarse en las políticas de IAM utilizando el elemento `Condition`. Encontrará una lista de los mapeos disponibles en la sección [Mapeo de atributos SAML con claves de contexto de una política de confianza de AWS](#saml-attribute-mapping).

## `Subject` y `NameID`
<a name="saml_subject-name-id"></a>

La respuesta debe incluir exactamente un elemento `SubjectConfirmation` con un elemento `SubjectConfirmationData` que contenga tanto el atributo `NotOnOrAfter` como un atributo `Recipient`. El atributo Recipient debe incluir un valor que coincida con la URL del punto de conexión de inicio de sesión de AWS. El IdP puede usar el término `ACS`, `Recipient` o `Target` para referirse a este atributo.

Si se requiere el cifrado de SAML, la URL de inicio de sesión debe incluir el identificador único que AWS asigna al proveedor de SAML, que puede encontrar en la página de detalles del proveedor de identidades. En el siguiente ejemplo, se muestra el formato de URL de inicio de sesión con el `region-code` opcional.

`https://region-code.signin.aws.amazon.com/saml`

En el siguiente ejemplo, la URL de inicio de sesión incluye un identificador único, que requiere que /acs/ se agregue a la ruta de inicio de sesión.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Para el valor de AWS, también puede usar el punto de conexión de inicio de sesión global `https://signin.aws.amazon.com/saml`.

El valor de los elementos `NameID` puede ser “persistent” o “transient”, o bien el URI de formato completo proporcionado por la solución del proveedor de identidades. El valor “persistent” indica que el valor de `NameID` es el mismo para un usuario entre sesiones. Si el valor es “transient”, el usuario tendrá un valor de `NameID` diferente para cada sesión. Las interacciones mediante inicio de sesión único permiten los siguientes tipos de identificadores:
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:entity`

En el fragmento siguiente se muestra un ejemplo. Solo tiene que cambiar sus propios valores por los valores marcados.

```
<Subject>
  <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://region-code.signin.aws.amazon.com/saml/SAMLSP4SHN3UIS2D558H46"/>
  </SubjectConfirmation>
</Subject>
```

**importante**  
La clave de contexto `saml:aud` proviene del atributo *recipient* (destinatario) de SAML, ya que es el equivalente de SAML del campo de público de OIDC; por ejemplo, `accounts.google.com:aud`.

## Atributo `PrincipalTag` de SAML
<a name="saml_role-session-tags"></a>

(Opcional) Puede utilizar un elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Este elemento le permite pasar atributos como etiquetas de sesión en la aserción SAML. Para obtener más información acerca de las etiquetas de sesión, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

Para pasar atributos como etiquetas de sesión, incluya el elemento `AttributeValue` que especifica el valor de la etiqueta. Por ejemplo, para pasar los pares clave-valor de etiquetas `Project` = `Marketing` y `CostCenter` = `12345`, utilice el siguiente atributo. Incluya un elemento `Attribute` separado para cada etiqueta.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Marketing</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
```

Para establecer las etiquetas anteriores como transitivas, incluya otro elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. Este es un atributo opcional multivalor que establece las etiquetas de sesión como transitivas. Las etiquetas transitivas persisten cuando se utiliza la sesión de SAML para asumir otro rol en AWS. Esto se conoce como [encadenamiento de roles](id_roles.md#iam-term-role-chaining). Por ejemplo, para establecer tanto las etiquetas `Principal` como las `CostCenter` como transitivas, utilice el siguiente atributo para especificar las claves.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>CostCenter</AttributeValue>
</Attribute>
```

## `Role`Atributo de SAML
<a name="saml_role-attribute"></a>

Puede utilizar un elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/Role`. Este elemento contiene uno o más elementos `AttributeValue` que indican el proveedor de identidad de IAM y el rol que el IdP asigna al usuario. El rol de IAM y el proveedor de identidades de IAM se especifican como un par de ARN delimitados con comas en el mismo formato que los parámetros `RoleArn` y `PrincipalArn` que se transfieren a [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html). Este elemento debe contener al menos un par de proveedores de roles (elemento `AttributeValue`) y puede contener varios pares. Si el elemento contiene varios pares, se le pide al usuario que seleccione qué rol quiere asumir cuando utilice WebSSO para iniciar sesión en la Consola de administración de AWS.

**importante**  
El valor del atributo `Name` de la etiqueta `Attribute` distingue entre mayúsculas y minúsculas. Debe establecerse en `https://aws.amazon.com/SAML/Attributes/Role` con precisión.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
</Attribute>
```

## `RoleSessionName`Atributo de SAML
<a name="saml_role-session-attribute"></a>

Puede utilizar un elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/RoleSessionName`. Este elemento contiene un elemento `AttributeValue` que proporciona un identificador para las credenciales temporales que se generan cuando se asume el rol. Puede utilizar esto para asociar las credenciales temporales con el usuario que está utilizando la aplicación. Este elemento se utiliza para mostrar información del usuario en la Consola de administración de AWS. El valor del elemento `AttributeValue` debe tener entre 2 y 64 caracteres, solo puede contener caracteres alfanuméricos, guiones bajos y los siguientes caracteres: **. , \$1 = @ -** (guion). No puede contener espacios. El valor suele ser un ID de usuario (`john`) o una dirección de correo electrónico (`johndoe@example.com`). No debe ser un valor que contenga un espacio, como el nombre de visualización de un usuario (`John Doe`).

**importante**  
El valor del atributo `Name` de la etiqueta `Attribute` distingue entre mayúsculas y minúsculas. Debe establecerse en `https://aws.amazon.com/SAML/Attributes/RoleSessionName` con precisión.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName">
  <AttributeValue>user-id-name</AttributeValue>
</Attribute>
```

## `SessionDuration`Atributo de SAML
<a name="saml_role-session-duration"></a>

(Opcional) Puede utilizar un elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/SessionDuration"`. Este elemento contiene un elemento `AttributeValue` que especifica cuánto tiempo puede obtener acceso el usuario a la Consola de administración de AWS antes de tener que solicitar credenciales temporales nuevas. El valor es un número entero que representa el número de segundos para la sesión. Este valor puede oscilar entre 900 segundos (15 minutos) y 43 200 segundos (12 horas). Si este atributo no está presente, las credenciales serán válidas durante una hora (el valor predeterminado del parámetro `DurationSeconds` de la API `AssumeRoleWithSAML`).

Para utilizar este atributo, debe configurar el proveedor SAML para que proporcione un acceso de inicio de sesión único a la Consola de administración de AWS a través del punto de enlace web de inicio de sesión de la consola en `https://region-code.signin.aws.amazon.com/saml`. Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Opcionalmente, puede utilizar la siguiente URL: `https://signin.aws.amazon.com/static/saml`. Tenga en cuenta que este atributo amplía las sesiones únicamente en la Consola de administración de AWS. No puede ampliar la duración de otras credenciales. Sin embargo, si está presente en una llamada a la API `AssumeRoleWithSAML`, se puede utilizar para *acortar* la duración de la sesión. La duración predeterminada de las credenciales devueltas por la llamada es de 60 minutos. 

Además, tenga en cuenta que si se ha definido también un atributo `SessionNotOnOrAfter`, el valor ***inferior*** de los dos atributos, `SessionDuration` o `SessionNotOnOrAfter`, establecerá la duración máxima de la sesión de la consola.

Si habilita sesiones de consola con una duración ampliada, aumenta el riesgo de que las credenciales se filtren. Para mitigar este riesgo, puede desactivar inmediatamente las sesiones de consola activas de cualquier rol si elige **Revoke Sessions** en la página **Role Summary** de la consola de IAM. Para obtener más información, consulte [Revocación de las credenciales de seguridad temporales de un rol de IAM](id_roles_use_revoke-sessions.md). 

**importante**  
El valor del atributo `Name` de la etiqueta `Attribute` distingue entre mayúsculas y minúsculas. Debe establecerse en `https://aws.amazon.com/SAML/Attributes/SessionDuration` con precisión.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration">
  <AttributeValue>1800</AttributeValue>
</Attribute>
```

## `SourceIdentity`Atributo de SAML
<a name="saml_sourceidentity"></a>

(Opcional) Puede utilizar un elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Este elemento contiene un `AttributeValue` elemento que proporciona un identificador para la persona o aplicación que utiliza un rol de IAM. El valor de la identidad de origen persiste cuando se utiliza la sesión de SAML para asumir otro rol en AWS conocido como [Encadenamiento de roles](id_roles.md#iam-term-role-chaining). El valor de la identidad de origen está presente en la solicitud para cada acción realizada durante la sesión de rol. El valor que se establece no se puede cambiar durante la sesión de rol. A continuación, los administradores pueden utilizar registros de AWS CloudTrail para monitorear y auditar la información de identidad de origen para determinar quién realizó acciones con roles compartidos.

El valor del elemento `AttributeValue` debe tener entre 2 y 64 caracteres, solo puede contener caracteres alfanuméricos, guiones bajos y los siguientes caracteres: **. , \$1 = @ -** (guion). No puede contener espacios. El valor suele ser un atributo asociado con el usuario, como un ID de usuario (`john`) o una dirección de correo electrónico (`johndoe@example.com`). No debe ser un valor que contenga un espacio, como el nombre de visualización de un usuario (`John Doe`). Para obtener más información acerca de las identidades de fuente, consulte [Monitorear y controlar las acciones realizadas con roles asumidos](id_credentials_temp_control-access_monitor.md).

**importante**  
Si la aserción SAML está configurada para utilizar el atributo [`SourceIdentity`](#saml_sourceidentity), la política de confianza también debe incluir la acción `sts:SetSourceIdentity`, de otro modo, la operación de rol asumido fallará. Para obtener más información acerca de las identidades de fuente, consulte [Monitorear y controlar las acciones realizadas con roles asumidos](id_credentials_temp_control-access_monitor.md).

Para pasar un atributo de identidad de origen, incluya el elemento `AttributeValue` que especifica el valor de la identidad de origen. Por ejemplo, para pasar la identidad de origen `Diego` utilice el atributo siguiente.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
  <AttributeValue>Diego</AttributeValue>
```

## Mapeo de atributos SAML con claves de contexto de una política de confianza de AWS
<a name="saml-attribute-mapping"></a>

En las tablas de esta sección se enumeran los atributos SAML utilizados con más frecuencia y se muestra su correspondencia con las claves de contexto de condición de una política de confianza de AWS. Puede utilizar estas claves para controlar el acceso a un rol. Para ello, compare las claves con los valores que se incluyen en las aserciones que acompañan a una solicitud de acceso SAML.

**importante**  
Estas claves solo están disponibles en las políticas de confianza de IAM (políticas que determinan quién puede asumir un rol) y no se pueden aplicar a políticas de permisos.

En la tabla de atributos eduPerson y eduOrg, los valores se indican como cadenas o como listas de cadenas. En el caso de los valores de cadenas, puede probar estos valores en las políticas de confianza de IAM utilizando las condiciones `StringEquals` o `StringLike`. En cuanto a los valores que contienen una lista de cadenas, puede utilizar los `ForAnyValue`operadores de definición de políticas`ForAllValues` [ y ](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys) para probar los valores de las políticas de confianza.

**nota**  
Debe incluir únicamente una notificación por clave de contexto de AWS. Si incluye más de una, solo se asignará una notificación. 

En la siguiente tabla, se muestran los atributos eduPerson y eduOrg.


| Atributo eduPerson o eduOrg (clave `Name`) | Se asigna a esta clave de contexto de AWS (clave `FriendlyName`). | Tipo | 
| --- | --- | --- | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`   |   `eduPersonAffiliation`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.2`   |   `eduPersonNickname`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.3`   |   `eduPersonOrgDN`   |  Cadena  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.4`   |   `eduPersonOrgUnitDN`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.5`   |   `eduPersonPrimaryAffiliation`   |  Cadena  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.6`   |   `eduPersonPrincipalName`   |  Cadena  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.7`   |   `eduPersonEntitlement`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.8`   |   `eduPersonPrimaryOrgUnitDN`   |  Cadena  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.9`   |   `eduPersonScopedAffiliation`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.10`   |   `eduPersonTargetedID`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.11`   |   `eduPersonAssurance`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.2`   |   `eduOrgHomePageURI`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.3`   |   `eduOrgIdentityAuthNPolicyURI`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.4`   |   `eduOrgLegalName`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.5`   |   `eduOrgSuperiorURI`   |  Lista de cadenas  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.6`   |   `eduOrgWhitePagesURI`   |  Lista de cadenas  | 
|   `urn:oid:2.5.4.3`   |   `cn`   |  Lista de cadenas  | 

En la siguiente tabla, se muestran los atributos de Active Directory.


| Atributo de AD | Se asigna con esta clave de contexto AWS | Tipo | 
| --- | --- | --- | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`  |  `name`  |  Cadena  | 
|  `http://schemas.xmlsoap.org/claims/CommonName`  |  `commonName`  |  Cadena  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`  |  `givenName`  |  Cadena  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname`  |  `surname`  |  Cadena  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`  |  `mail`  |  Cadena  | 
|  `http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid`  |  `uid`  |  Cadena  | 

En la siguiente tabla, se muestran los atributos X.500.


| Atributo X.500 | Se asigna con esta clave de contexto AWS | Tipo | 
| --- | --- | --- | 
|  `2.5.4.3`  |  `commonName`  |  Cadena  | 
|  `2.5.4.4`  |  `surname`  |  Cadena  | 
|  `2.4.5.42`  |  `givenName`  |  Cadena  | 
|  `2.5.4.45`  |  `x500UniqueIdentifier`  |  Cadena  | 
|  `0.9.2342.19200300100.1.1`  |  `uid`  |  Cadena  | 
|  `0.9.2342.19200300100.1.3`  |  `mail`  |  Cadena  | 
|  `0.9.2342.19200300.100.1.45`  |  `organizationStatus`  |  Cadena  | 

# Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0
<a name="id_roles_providers_enable-console-saml"></a>

Puede usar un rol para configurar el proveedor de identidades compatible con SAML 2.0 y AWS, y permitir que las entidades principales federadas de SAML accedan a la Consola de administración de AWS. El rol otorga los permisos de usuario para realizar tareas en la consola. Si desea ofrecer a las entidades principales federadas de SAML otras formas para acceder a AWS, consulte uno de estos temas:
+ AWS CLI: [Cambiar a un rol de IAM (AWS CLI)](id_roles_use_switch-role-cli.md)
+ Herramientas para Windows PowerShell: [Cambiar a un rol de IAM (Herramientas para Windows PowerShell)](id_roles_use_switch-role-twp.md)
+ AWS API: [Cambiar a un rol de IAM (API de AWS)](id_roles_use_switch-role-api.md)

## Descripción general
<a name="enable-console-saml-overview"></a>

El siguiente diagrama ilustra el flujo para el inicio de sesión único habilitado para SAML. 

**nota**  
Este uso específico de SAML difiere del más general que se muestra en [Federación SAML 2.0](id_roles_providers_saml.md) porque este flujo de trabajo abre la Consola de administración de AWS en nombre del usuario. Esto requiere el uso del punto de conexión de inicio de sesión de AWS en lugar de llamar directamente a la API `AssumeRoleWithSAML`. El punto de enlace llama a la API para el usuario y devuelve una URL que redirige automáticamente al navegador del usuario a la Consola de administración de AWS.

![\[Inicio de sesión único (SSO) a Management Console de AWS mediante SAML\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/saml-based-sso-to-console.diagram.png)


El siguiente diagrama muestra los siguientes pasos:

1. El usuario navega al portal de su organización y selecciona la opción para ir a la Consola de administración de AWS. En su organización, el portal suele ser una función del IdP que gestiona el intercambio de confianza entre su organización y AWS. Por ejemplo, en Active Directory Federation Services, la dirección URL del portal es: `https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx` 

1. El portal verifica la identidad del usuario de la organización.

1. El portal genera una respuesta de autenticación SAML que incluye aserciones que identifican al usuario e incluyen atributos sobre el usuario. También puede configurar su proveedor de identidad para incluir un atributo de la aserción de SAML llamado `SessionDuration` que especifica durante cuánto tiempo es válida la sesión de la consola. También puede configurar el IdP para que pase atributos como las [etiquetas de sesión](id_session-tags.md). El portal envía esta respuesta al navegador del cliente.

1. Se redirige al navegador del cliente al punto de enlace de inicio de sesión único de AWS y publica esta aserción de SAML. 

1. El punto de enlace solicita credenciales de seguridad temporales en nombre del usuario y crea una dirección URL de inicio de sesión de la consola que utiliza dichas credenciales. 

1. AWS envía la dirección URL de inicio de sesión al cliente en forma de redireccionamiento.

1. El navegador del cliente se redirige hacia la Consola de administración de AWS. Si la respuesta de autenticación de SAML incluye atributos asociados a varios roles de IAM, el usuario primero deberá seleccionar el rol para acceder a la consola. 

Desde el punto de vista del usuario, el proceso se realiza de forma transparente: el usuario comienza en el portal interno de la organización y acaba en la Consola de administración de AWS, sin haber tenido que escribir las credenciales de AWS.

Consulte las secciones siguientes para obtener información general acerca de cómo configurar este comportamiento junto con enlaces a pasos detallados.

## Configurar la red como proveedor SAML para AWS
<a name="fedconsole-config-network-as-saml"></a>

En la red de su organización, configure el almacén de identidades (como Windows Active Directory) de modo que funcione con un IdP basado en SAML, como Windows Active Directory Federation Services, Shibboleth, etc. Utilice el IdP para generar un documento de metadatos que describa la organización como IdP e incluya claves de autenticación. También puede configurar el portal de su organización para dirigir las solicitudes de los usuarios para la Consola de administración de AWS al punto de enlace SAML de AWS para la autenticación mediante aserciones SAML. Cómo configurar el proveedor de identidad para producir el archivo metadata.xml depende del proveedor de identidad. Consulte la documentación del proveedor de identidad para obtener instrucciones o consulte [Integración de proveedores de soluciones SAML externos con AWS](id_roles_providers_saml_3rd-party.md) para encontrar enlaces a la documentación web de muchos de los proveedores SAML compatibles.

## Crear un proveedor SAML en IAM
<a name="fedconsole-create-saml-provider"></a>

A continuación, inicie sesión en la Consola de administración de AWS y vaya la consola de IAM. Cree un nuevo proveedor SAML, que es una entidad de IAM que contiene la información sobre el IdP de la organización. Durante este proceso, cargue el documento de metadatos generado por el software del proveedor de identidad de la organización de la sección anterior. Para obtener más información, consulte [Crear un proveedor de identidades de SAML en IAM](id_roles_providers_create_saml.md). 

## Configuración de permisos en AWS para las entidades principales federadas de SAML
<a name="fedconsole-grantperms"></a>

El siguiente paso consiste en crear un rol de IAM que establezca una relación de confianza entre IAM y el IdP de su organización. Este rol debe identificar su IdP como una entidad principal (entidad de confianza) a efectos de la federación. El rol también define qué pueden hacer los usuarios autenticados mediante el proveedor de identidad de la organización en AWS. Puede utilizar la consola de IAM para crear este rol. Al crear la política de confianza que indica quién puede asumir el rol, especifique el proveedor SAML que creó anteriormente en IAM. Especifique también uno o más atributos de SAML que debe tener un usuario para poder asumir el rol. Por ejemplo, puede especificar que solo los usuarios cuyo valor SAML `[eduPersonOrgDN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_edupersonorgdn)` es `ExampleOrg` puedan iniciar sesión. El asistente de rol añade automáticamente una condición para probar el atributo `saml:aud` para asegurarse de que el rol se asume solo para iniciar sesión en la Consola de administración de AWS.

Si se requiere el cifrado de SAML, la URL de inicio de sesión debe incluir el identificador único que AWS asigna al proveedor de SAML, que puede encontrar en la página de detalles del proveedor de identidades. La política de confianza del rol podría tener el siguiente aspecto:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:edupersonorgdn": "ExampleOrg",
                    "saml:aud": "https://region-code.signin.aws.amazon.com/saml/acs/SAMLSP4SHN3UIS2D558H46"
                }
            }
        }
    ]
}
```

------

**nota**  
Los proveedores de identidad de SAML que se utilizan en una política de confianza de roles deben estar en la misma cuenta en la que se encuentra el rol.

Le recomendamos que usar los puntos de conexión regionales para el atributo `saml:aud` en `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`. Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

Para la [política de permisos](access_policies.md) del rol, debe especificar los permisos de la misma forma que haría para un rol, usuario o grupo. Por ejemplo, si los usuarios de su organización pueden administrar instancias Amazon EC2, usted permite de forma explícita las acciones de Amazon EC2 en la política de permisos. Puede hacer esto asignando una [política administrada](access_policies_manage-attach-detach.md), como la política administrada **Amazon EC2 Full Access**. 

Para obtener más información acerca de cómo crear un rol para un proveedor de identidad SAML, consulte [Creación de un rol para una federación SAML 2.0 (consola)](id_roles_create_for-idp_saml.md). 

## Finalizar la configuración y crear aserciones de SAML
<a name="fedconsole-configassertions"></a>

Notifique a su IdP de SAML de que AWS es su proveedor de servicios mediante la instalación del archivo `saml-metadata.xml` que se encuentra en `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` o `https://signin.aws.amazon.com/static/saml-metadata.xml`. Si se requiere el cifrado de SAML, el archivo se encuentra en `https://region-code.signin.aws.amazon.com/static/saml/SAMLSP4SHN3UIS2D558H46/saml-metadata.xml`.

Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). 

La instalación de dicho archivo depende del proveedor de identidad. Algunos proveedores ofrecen la opción de escribir la URL, en cuyo caso el IdP obtiene e instala el archivo automáticamente. Otros requieren que descargue el archivo de la URL y, a continuación, lo proporcione como archivo local. Consulte la documentación del proveedor de identidad para obtener información detallada o consulte [Integración de proveedores de soluciones SAML externos con AWS](id_roles_providers_saml_3rd-party.md) para encontrar enlaces a la documentación web de cualquiera de los proveedores SAML compatibles.

También puede configurar la información que quiere que el proveedor de identidad traspase como atributos SAML a AWS dentro de la respuesta de autenticación. La mayor parte de esta información aparece en AWS como claves de contexto de condición que puede evaluar en sus políticas. Estas claves de condición garantizan que solo los usuarios autorizados en los contextos adecuados tengan permisos para acceder a los recursos de AWS. Puede especificar períodos de tiempo que restrinjan cuándo se puede utilizar la consola. También puede especificar el tiempo máximo (hasta 12 horas) durante el cuál los usuarios pueden acceder a la consola antes de tener que renovar sus credenciales. Para obtener información, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md).

# Ver una respuesta SAML en su navegador
<a name="troubleshoot_saml_view-saml-response"></a>

Los siguientes procedimientos describen cómo ver la respuesta SAML de su proveedor de servicios en el navegador durante la resolución de un problema relacionado con SAML 2.0. 

En todos los navegadores, diríjase a la página en la que pueda reproducir el problema. A continuación, siga los pasos del correspondiente navegador:

**Topics**
+ [

## Google Chrome
](#chrome)
+ [

## Mozilla Firefox
](#firefox)
+ [

## Apple Safari
](#safari)
+ [

## Qué hacer con la respuesta SAML codificada en Base64
](#whatnext)

## Google Chrome
<a name="chrome"></a>

**Para ver una respuesta SAML en Chrome**

Estos pasos se probaron con la versión 106.0.5249.103 (versión oficial) (arm64) de Google Chrome. Si utiliza otra versión, es posible que necesite adaptar los pasos como corresponda.

1. Pulse **F12** para iniciar la **consola para desarrolladores**.

1. Seleccione la pestaña **Network** (Red) y, a continuación, seleccione **Preserve log** (Conservar registro) en la parte superior izquierda de la ventana **Developer Tools** (Herramientas para desarrolladores).

1. Reproduzca el problema.

1. (Opcional) Si la columna **Method** (Método) no está visible en el panel de registro de **Developer Tools** (Herramientas para desarrolladores) **Network** (Red), haga clic con el botón derecho en cualquier etiqueta de columna y elija **Method** (Método) para agregar la columna.

1. Busque una **publicación de SAML** en el panel de registro de **Developer Tools** (Herramientas para desarrolladores) **Network** (Red). Seleccione dicha fila y, a continuación, visualice la pestaña **Payload** (Carga) en la parte superior. Busque el elemento **SAMLResponse** que incluye la solicitud codificada. El valor asociado es la respuesta codificada en Base64.

## Mozilla Firefox
<a name="firefox"></a>

**Para ver una respuesta SAML en Firefox**

Este procedimiento se ha probado en la versión 105.0.3 (64 bits) de Mozilla Firefox. Si utiliza otra versión, es posible que necesite adaptar los pasos como corresponda.

1. Pulse **F12** para iniciar la consola de **herramientas web para desarrolladores**.

1. Seleccione la pestaña **Network (Red)**. 

1. En la parte superior derecha de la ventana de **herramientas para desarrolladores**, haga clic en las opciones de la barra de herramientas (icono pequeño con forma de engranaje). Seleccione **Persist logs** (Conservar registros). 

1. Reproduzca el problema.

1. (Opcional) Si la columna **Method** (Método) no está visible en el panel de registro de **Web Developer Tools** (Herramientas para desarrolladores) **Network** (Red), haga clic con el botón derecho en cualquier etiqueta de columna y elija **Method** (Método) para agregar la columna.

1. Busque un **POST** **SAML** en la tabla. Seleccione esa fila y, a continuación, consulte la pestaña **Request** (Solicitar) y busque el elemento **SAMLResponse**. El valor asociado es la respuesta codificada en Base64.

## Apple Safari
<a name="safari"></a>

**Para ver una respuesta SAML en Safari**

Estos pasos se probaron con la versión 16.0 (17614.1.25.9.10, 17614) de Apple Safari. Si utiliza otra versión, es posible que necesite adaptar los pasos como corresponda.

1. Habilite el inspector web en Safari. Abra la ventana **Preferences (Preferencias)**, seleccione la pestaña **Advanced (Configuración avanzada)** y, a continuación, seleccione **Show Develop menu in the menu bar (Mostrar menú de desarrollo en la barra de menús)**.

1. Ahora puede abrir el inspector web. Elija **Develop** (Desarrollar) en la barra de menús y, a continuación, seleccione **Show Web Inspector** (Mostrar inspector web).

1. Seleccione la pestaña **Network (Red)**.

1. En la parte superior izquierda de la ventana de **Web Inspector** (Inspector web), seleccione las opciones (el icono de círculo pequeño que contiene tres líneas horizontales). Seleccione **Preseve Log** (Conservar registro).

1. (Opcional) Si la columna **Method** (Método) no está visible en el panel de registro de **Web Inspector** (Inspector web) **Network** (Red), haga clic con el botón derecho en cualquier etiqueta de columna y elija **Method** (Método) para agregar la columna.

1. Reproduzca el problema.

1. Busque un **POST** **SAML** en la tabla. Seleccione dicha fila y, a continuación, visualice la pestaña Headers (Encabezados).

1. Busque el elemento **SAMLResponse** que incluye la solicitud codificada. Desplácese hacia abajo para buscar `Request Data` con el nombre `SAMLResponse`. El valor asociado es la respuesta codificada en Base64.

## Qué hacer con la respuesta SAML codificada en Base64
<a name="whatnext"></a>

Una vez que haya encontrado el elemento de respuesta SAML codificada en Base64 en el navegador, cópiela y utilice su herramienta favorita de decodificación en Base64 para extraer la respuesta con etiquetas XML.

**Consejo sobre seguridad**  
Dado que los datos de respuesta SAML que está visualizando pueden incluir datos de seguridad confidenciales, le recomendamos no utilizar un decodificador Base64 *online*. En cambio, utilice una herramienta instalada en el equipo local que no envíe los datos SAML a través de la red.

**Opción integrada para sistemas Windows (PowerShell):**

```
PS C:\> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("base64encodedtext"))
```

**Opción integrada para sistemas MacOS y Linux:**

```
$ echo "base64encodedtext" | base64 --decode
```

**Revisión de los valores del archivo decodificado**  
Revisión de los valores del archivo de respuesta SAML decodificado. 
+ Compruebe que el valor para el atributo saml:NameID coincida con el nombre de usuario del usuario autenticado.
+ Revise el valor de https://aws.amazon.com/SAML/Attributes/Role. El ARN y el proveedor de SAML distinguen mayúsculas de minúsculas y el [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) debe coincidir con el recurso de su cuenta.
+ Revise el valor de https://aws.amazon.com/SAML/Attributes/RoleSessionName. El valor debe coincidir con el valor en la [regla de reclamación](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html).
+ Si configura el valor del atributo para una dirección de correo electrónico o un nombre de cuenta, asegúrese de que los valores sean correctos. Los valores deben corresponder a la dirección de correo electrónico o al nombre de la cuenta del usuario autenticado.

**Comprobación de errores y confirmación de la configuración**  
Compruebe si los valores contienen errores y confirme que las siguientes configuraciones sean correctas.
+ Las reglas de reclamación cumplen con los elementos requeridos y todos los ARN son correctos. Para obtener más información, consulte [Configuración su SAML 2.0 IdP con una relación de confianza para usuario autenticado y agregando reclamos](id_roles_providers_create_saml_relying-party.md).
+ Ha cargado el último archivo de metadatos de su IdP en AWS en su proveedor de SAML. Para obtener más información, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md).
+ Configuró de manera correcta la política de confianza del rol de IAM. Para obtener más información, consulte [Métodos para asumir un rol](id_roles_manage-assume.md).

# Federación de identidades de AWS en servicios externos
<a name="id_roles_providers_outbound"></a>

La federación de identidad saliente de IAM permite que sus cargas de trabajo de AWS accedan de forma segura a los servicios externos sin almacenar credenciales a largo plazo. Sus cargas de trabajo de AWS pueden solicitar tokens web JSON (JWT) de corta duración de AWS Security Token Service (AWS STS) mediante una llamada a la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Estos tokens están firmados criptográficamente, se pueden verificar de forma pública y contienen un conjunto completo de notificaciones que afirman la identidad de su carga de trabajo de AWS ante los servicios externos. Puede usar estos tokens con una amplia gama de proveedores de servicios en la nube de terceros, plataformas de SaaS y aplicaciones autoalojadas. Los servicios externos verifican la autenticidad del token mediante las claves de verificación de AWS publicadas en puntos de conexión conocidos y utilizan la información de los tokens para tomar decisiones de autenticación y autorización.

La federación de identidad saliente elimina la necesidad de almacenar credenciales a largo plazo, como claves de API o contraseñas, en el código de la aplicación o en las variables de entorno, lo que mejora la posición de seguridad. Puede controlar el acceso a la generación de tokens y aplicar las propiedades correspondientes, como los algoritmos de firma, las audiencias permitidas y la duración, mediante políticas de IAM. Todas las solicitudes de tokens se registran en AWS, lo que proporciona registros de auditoría completos para la supervisión de la seguridad y los informes de cumplimiento. También puede personalizar los tokens con etiquetas que aparecen como notificaciones personalizadas, lo que permite a los servicios externos implementar un control de acceso detallado basado en atributos.

## Casos de uso comunes
<a name="outbound-federation-use-cases"></a>

Al utilizar la federación de identidad saliente, sus cargas de trabajo de AWS pueden hacer lo siguiente de forma segura:
+ Acceder a recursos y servicios en proveedores de servicios en la nube externos. Por ejemplo, una función de Lambda que procesa datos puede escribir los resultados en el servicio de almacenamiento de un proveedor de servicios en la nube externo o consultar su base de datos.
+ Integrarse con proveedores de software como servicio (SaaS) externos para el análisis, el procesamiento de datos, la supervisión, etc. Por ejemplo, sus funciones de Lambda pueden enviar métricas a plataformas de observabilidad.
+ Autenticarse con sus propias aplicaciones alojadas en AWS, proveedores de servicios en la nube externos o centros de datos en las instalaciones, lo que posibilita arquitecturas híbridas y multinube seguras. Por ejemplo, sus cargas de trabajo de AWS pueden interactuar con las aplicaciones en contenedores que se ejecutan en su clúster de Kubernetes en las instalaciones.

## Cómo funciona
<a name="outbound-federation-how-it-works"></a>

![\[alt text not found\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/outbound-use-cases.png)


1. La función de Lambda llama a la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) para solicitar un token web JSON (JWT) de AWS Security Token Service (AWS STS).

1. AWS STS valida la solicitud y devuelve un JWT firmado a la función de Lambda.

1. La función de Lambda envía el JWT al servicio externo.

1. El servicio externo extrae la URL del emisor del token, verifica que coincida con un emisor de confianza conocido y recupera las claves de verificación de AWS y los metadatos del punto de conexión de detección de OIDC.

1. El servicio externo utiliza las claves de verificación para verificar la firma del token y valida notificaciones como la fecha de vencimiento, el tema y la audiencia.

1. Tras una validación correcta, el servicio externo concede acceso a la función de Lambda.

# Introducción a la federación de identidades saliente
<a name="id_roles_providers_outbound_getting_started"></a>

En esta guía se muestra cómo habilitar la federación de identidades saliente para su cuenta de AWS y cómo obtener su primer token web JSON (JWT) (mediante la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)). Habilitará la característica, establecerá una relación de confianza con un servicio externo, configurará los permisos de IAM y solicitará un token mediante AWS CLI o AWS SDK para Python (Boto3).

## Requisitos previos
<a name="outbound-federation-prerequisites"></a>

Antes de comenzar, asegúrese de que dispone de lo siguiente:
+ La versión más reciente de AWS CLI o Python 3.8 (o posteriores) y Boto3 instaladas (para ejemplos de AWS SDK)
+ La cuenta de un servicio externo en la que puede configurar relaciones de confianza (como un proveedor de servicios en la nube externo, un proveedor de SaaS o una aplicación de prueba)

**nota**  
La API `GetWebIdentityToken` no está disponible en el punto de conexión global de STS.
Los tokens web JSON (JWT) generados por la API `GetWebIdentityToken` no se pueden usar para la federación de OpenID Connect (OIDC) en AWS (a través de la API [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)).

## Habilitación de la federación de identidades saliente para una cuenta
<a name="enable-outbound-federation"></a>

Debe habilitar la federación de identidades saliente para poder solicitar los tokens. Puede habilitar la característica mediante la Consola de administración de AWS o mediante programación con la API [EnableOutboundWebIdentityFederation](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOutboundWebIdentityFederation.html).

### Uso de la CLI de AWS
<a name="enable-using-cli"></a>

```
aws iam enable-outbound-web-identity-federation
```

### Uso de AWS SDK para Python
<a name="enable-using-sdk"></a>

```
import boto3

# Create IAM client
iam_client = boto3.client('iam')

# Enable outbound identity federation
response = iam_client.enable_outbound_web_identity_federation()
print(f"Feature enabled. Issuer URL: {response['IssuerUrl']}")
print(f"Status: {response['Status']}")
```

### Uso de la consola de AWS
<a name="enable-using-console"></a>

Vaya a IAM y seleccione **Configuración de la cuenta** en la sección **Administración de acceso** del menú de navegación de la izquierda.

![\[alt text not found\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/outbound-screen-1.png)


Cuando habilite la característica, tome nota de la URL del emisor específico de su cuenta. Utilizará esta URL al configurar las relaciones de confianza en los servicios externos. También puede recuperar la URL de este emisor según sea necesario mediante la API [GetOutboundWebIdentityFederationInfo](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOutboundWebIdentityFederationInfo.html).

![\[alt text not found\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/outbound-screen-2.png)


## Establecimiento de una relación de confianza en el servicio externo
<a name="establish-trust-relationship"></a>

Configure el servicio externo para que confíe en los tokens emitidos por su cuenta de AWS y los acepte. Los pasos específicos varían según el servicio, pero por lo general incluyen lo siguiente:
+ Registro de la URL del emisor de la cuenta de AWS como proveedor de identidades de confianza
+ Configuración de las notificaciones que validar (audiencia, patrones de temas)
+ Asignación de notificaciones de tokens a permisos en el servicio externo

Consulte la documentación del servicio externo para obtener instrucciones de configuración detalladas.

## Configurar los permisos de IAM
<a name="configure-iam-permissions"></a>

Cree una política de IAM que conceda permiso para llamar a la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) y adjunte la política a un rol de IAM que necesite generar tokens.

Este ejemplo de política otorga acceso a la generación de tokens con restricciones específicas. Solo permite solicitar tokens para “https://api.ejemplo.com” como audiencia y aplica una duración máxima de los tokens de 5 minutos (300 segundos). Consulte la lista de claves de condición que puede utilizar para aplicar las propiedades de los tokens en [Claves de contexto de condición de IAM y AWS STS](reference_policies_iam-condition-keys.md).

### Política de IAM de ejemplo
<a name="example-iam-policy"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "sts:IdentityTokenAudience": "https://api.example.com"
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                }
            }
        }
    ]
}
```

## Solicitud de su primer token web JSON (JWT)
<a name="request-first-jwt"></a>

Puede solicitar un token web JSON mediante la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Puede especificar los siguientes parámetros al llamar a la API:
+ **Audience (obligatorio):** el destinatario previsto del token. Este valor rellena la notificación “aud” en el JWT. Los servicios externos validan esta notificación para asegurarse de que el token estaba destinado a ellos.
+ **SigningAlgorithm (obligatorio):** el algoritmo criptográfico que se utiliza para firmar el token. Los valores válidos son ES384 y RS256. Utilice ES384 para una seguridad y un rendimiento óptimos o RS256 para una compatibilidad más amplia con sistemas que no admiten ECDSA.
+ **DurationSeconds (opcional):** la vida útil del token en segundos. Los valores válidos están comprendidos entre 60 y 3600. El valor predeterminado es 300 (5 minutos). Recomendamos que los tokens tengan una vida útil más corta para aumentar la seguridad.
+ **Tags (opcional):** una lista de pares de clave-valor para incluirlos como notificaciones personalizadas en el token. Los servicios externos pueden usar estas notificaciones para la autorización detallada.

La API devuelve los siguientes campos:
+ **IdentityToken:** el JWT firmado como una cadena codificada en base64url. Incluya este token en las solicitudes a servicios externos.
+ **Expiration:** la marca de tiempo UTC del momento en que vence el token.

### Uso de la CLI de AWS
<a name="using-aws-cli"></a>

```
aws sts get-web-identity-token \
    --audience "https://api.example.com" \
    --signing-algorithm ES384 \
    --duration-seconds 300 \
    --tags Key=team,Value=data-engineering \
           Key=environment,Value=production \
           Key=cost-center,Value=analytics
```

### Uso de AWS SDK para Python
<a name="using-aws-sdk-python"></a>

```
import boto3

sts_client = boto3.client('sts')

response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    DurationSeconds=300,
    SigningAlgorithm='RS256',
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'environment', 'Value': 'production'},
        {'Key': 'cost-center', 'Value': 'analytics'}
    ]
)

token = response['WebIdentityToken']
```

También puede descodificar el JWT para inspeccionar su contenido mediante bibliotecas de JWT estándar como PyJWT, Python-jose para Python, Nimbus JOSE\$1JWT para Java o depuradores como jwt.io. Consulte [Descripción de las notificaciones de tokens](id_roles_providers_outbound_token_claims.md) para obtener más información sobre las notificaciones incluidas en el token.

## Uso del token con un servicio externo
<a name="use-token-with-external-service"></a>

Tras recibir el token, inclúyalo en las solicitudes al servicio externo. El método varía según el servicio, pero la mayoría de los servicios aceptan los tokens en el encabezado de autorización. El servicio externo debe implementar una lógica de validación de tokens que recupere las claves de JWKS del punto de conexión conocido del emisor, verifique la firma del token y valide las notificaciones esenciales antes de conceder acceso a sus cargas de trabajo de AWS.

## Recuperación de claves de verificación y metadatos de los puntos de conexión de OpenID Connect (OIDC)
<a name="fetch-verification-keys"></a>

La URL única del emisor de su cuenta de AWS aloja los puntos de conexión de detección de OpenID Connect (OIDC) que contienen las claves de verificación y los metadatos necesarios para la verificación de los tokens.

La URL del punto de conexión de detección de OIDC contiene los metadatos que algunos proveedores utilizan para verificar los tokens. Está disponible en:

```
{issuer_url}/.well-known/openid-configuration
```

El punto de conexión de JWKS (conjunto de claves web JSON) contiene las claves que se utilizan para verificar las firmas de los tokens. Está disponible en:

```
{issuer_url}/.well-known/jwks.json
```

### Recuperación de JWKS mediante curl
<a name="fetch-jwks-curl"></a>

```
curl https://{issuer_url}/.well-known/jwks.json
```

Respuesta:

```
{
  "keys": [
    {
      "kty": "EC",
      "use": "sig",
      "kid": "key-id-1",
      "alg": "ES384",
      "crv": "P-384",
      "x": "base64-encoded-x-coordinate",
      "y": "base64-encoded-y-coordinate"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "key-id-2",
      "n": "base64-encoded-modulus",
      "e": "AQAB"
    }
  ]
}
```

### Uso de AWS SDK para Python
<a name="fetch-using-sdk"></a>

```
import requests

# Fetch Openid Configuration
open_id_config_response = requests.get("https://{issuer_url}/.well-known/openid-configuration")
open_id_config = open_id_config_response.json()

# Fetch JWKS
jwks_response = requests.get("https://{issuer_url}/.well-known/jwks.json")
jwks = jwks_response.json()
```

Recomendamos almacenar en caché estas claves para evitar recuperarlas cada vez que se verifique un token.

### Validaciones de notificaciones esenciales
<a name="essential-claim-validations"></a>
+ **Tema (sub):** verifique que la notificación del tema contenga el patrón de ARN de entidad principal de IAM esperado.
+ **Vencimiento (exp):** asegúrese de que el token no haya vencido. Las bibliotecas de JWT suelen gestionar esto automáticamente.
+ **Audiencia (aud):** verifique que la audiencia coincida con el valor esperado. Esto evita que los tokens destinados a otros servicios se utilicen con los suyos.
+ **Emisor (iss):** verifique que el emisor coincida con las cuentas de AWS en las que confía. Mantenga una lista de direcciones URL de emisores de confianza.

Siempre que sea posible, debe validar otras notificaciones específicas de AWS para implementar el control de acceso detallado en el servicio externo. Por ejemplo, valide la notificación org\$1id para restringir el acceso a las entidades principales de IAM de su organización de AWS, compruebe principal\$1tags para aplicar el control de acceso basado en atributos (por ejemplo, permitir solo entornos de producción o equipos específicos) o verifique las notificaciones de contexto de sesión, como lambda\$1source\$1function\$1arn o ec2\$1instance\$1source\$1vpc, para restringir el acceso en función del recurso de computación. Consulte [Descripción de las notificaciones de tokens](id_roles_providers_outbound_token_claims.md) para ver una lista completa de las notificaciones incluidas en el token.

# Descripción de las notificaciones de tokens
<a name="id_roles_providers_outbound_token_claims"></a>

Al llamar a la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html), AWS Security Token Service devuelve un token web JSON (JWT) firmado que contiene un conjunto de notificaciones que representan la identidad de la entidad principal de IAM. Estos tokens cumplen con el [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519). Comprender la estructura y el contenido de estos tokens lo ayuda a implementar flujos de autenticación seguros, configurar las validaciones de notificaciones adecuadas en los servicios externos y utilizar de forma eficaz las notificaciones personalizadas para el control de acceso detallado.

El JWT incluye notificaciones estándar de OpenID Connect (OIDC), como el tema (“sub”), la audiencia (“aud”) y el emisor (“iss”), para facilitar la interoperabilidad entre diferentes servicios externos. AWS STS rellena el token con notificaciones específicas de las identidades de AWS (como el ID de cuenta de AWS y las etiquetas de la entidad principal) y con notificaciones de contexto de la sesión (como los ARN de las instancias de EC2), cuando procede. Para agregar notificaciones personalizadas al token, debe transferirlas como etiquetas de solicitud a la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Las notificaciones específicas de identidades de AWS, las notificaciones de contexto de sesión y las notificaciones personalizadas se anidan en el espacio de nombres “https://sts.amazonaws.com/” del token.

Consulte el ejemplo de token que aparece a continuación para ver una lista de las notificaciones incluidas en el token. Tenga en cuenta que es posible que todas estas notificaciones no estén presentes en un token al mismo tiempo. 

```
{
  "iss": "https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws",
  "aud": "https://api.example.com",
  "sub": "arn:aws:iam::123456789012:role/DataProcessingRole",
  "iat": 1700000000,
  "exp": 1700000900,
  "jti": "xyz123-def456-ghi789-jkl012",
  "https://sts.amazonaws.com/": {
    "aws_account": "123456789012",
    "source_region": "us-east-1",
    "org_id": "o-abc1234567",
    "ou_path": "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/",
    "principal_tags": {
      "environment": "production",
      "team": "data-engineering",
      "cost-center": "engineering"
    },
    "lambda_source_function_arn": "arn:aws:lambda:us-east-1:123456789012:function:process-data",
    "request_tags": {
        "job-id": "job-2024-001",
        "priority": "high",
        "data-classification": "sensitive"
    }
  }
}
```

## Notificaciones estándar
<a name="standard-claims"></a>

Las notificaciones estándar de OIDC presentes en los tokens facilitan la interoperabilidad con una amplia gama de servicios externos. Estas notificaciones se pueden validar utilizando la mayoría de las bibliotecas de JWT.


| Reclamación | Nombre | Descripción | Ejemplo de valor | 
| --- | --- | --- | --- | 
| iss | Emisor | URL del emisor específico de su cuenta. Los servicios externos validan esta notificación para asegurarse de que coincida con su emisor de confianza. | https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws | 
| aud | Público | Destinatario previsto del token especificado en la solicitud [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). | https://api.example.com | 
| sub | Asunto | ARN de la entidad principal de IAM que solicitó el token. | arn:aws:iam::123456789012:role/DataProcessingRole | 
| iat | Hora de emisión | Valor de NumericDate que identifica la hora en la que se emitió el JWT. | 1700000000 | 
| exp | Expiration | Valor de NumericDate que identifica la hora de vencimiento a partir de la cual NO SE DEBE aceptar el JWT para su procesamiento. | 1700000900 | 
| jti | ID del JWT | Identificador único de esta instancia de token. | xyz123-def456-ghi789-jkl012 | 

## Notificaciones personalizadas
<a name="custom-claims"></a>

Además de las notificaciones estándar de OIDC, AWS STS agrega notificaciones sobre la identidad y el contexto de la sesión, cuando corresponde. Para agregar sus propias notificaciones al token, debe transferirlas como etiquetas de solicitud. Las notificaciones personalizadas se anidan en el espacio de nombres https://sts.amazonaws.com/.

### Notificaciones de identidades de AWS
<a name="aws-identity-claims"></a>

Estas notificaciones proporcionan información detallada sobre su cuenta de AWS, la estructura de la organización y la entidad principal de IAM.


| Reclamación | Descripción | Se asigna a la clave de condición | Ejemplo de valor | 
| --- | --- | --- | --- | 
| aws\$1account | Su ID de cuenta de AWS | [aws:PrincipalAccount](reference_policies_condition-keys.md#condition-keys-principalaccount) | 123456789012 | 
| source\$1region | Región de AWS en la que se solicitó el token. | [aws:RequestedRegion](reference_policies_condition-keys.md#condition-keys-requestedregion) | us-east-1 | 
| org\$1id | ID de su instancia de AWS Organizations (si su cuenta forma parte de una organización). | [aws:PrincipalOrgID](reference_policies_condition-keys.md#condition-keys-principalorgid) | o-abc1234567 | 
| ou\$1path | Ruta de su unidad organizativa (si corresponde). | [aws:PrincipalOrgPaths](reference_policies_condition-keys.md#condition-keys-principalorgpaths) | o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ | 
| principal\$1tags | Etiquetas adjuntas a la entidad principal de IAM o la sesión del rol asumido. Cuando se solicita un token en el que la entidad principal de IAM solicitante tiene tanto etiquetas de entidad principal como etiquetas de sesión, las etiquetas de sesión estarán presentes en el JWT. | [aws:PrincipalTag/<clave-etiqueta>](reference_policies_condition-keys.md#condition-keys-principaltag) | \$1"environment": "production", "team": "data-engineering", "cost-center":"engineering"\$1 | 

### Notificaciones de contexto de sesión
<a name="session-context-claims"></a>

Estas notificaciones proporcionan información sobre el entorno de computación y la sesión en los que se originó la solicitud del token. AWS AWS STS incluye automáticamente estas notificaciones cuando corresponde, en función del contexto de la sesión de la entidad principal solicitante.


| Reclamación | Descripción | Se asigna a la clave de condición | Ejemplo de valor | 
| --- | --- | --- | --- | 
| original\$1session\$1exp | Cuándo vencerán las credenciales de la sesión de rol original (para los roles asumidos). | N/A | 2024-01-15T10:00:00Z | 
| federated\$1provider | Nombre del proveedor de identidades de las sesiones federadas. | [aws:FederatedProvider](reference_policies_condition-keys.md#condition-keys-federatedprovider) | arn:aws:iam::111122223333:oidc-provider/your\$1oidc\$1provider | 
| identity\$1store\$1user\$1id | ID del usuario de IAM Identity Center. | [identitystore:UserId](reference_policies_condition-keys.md#condition-keys-identity-store-user-id) | user-abc123def456 | 
| identity\$1store\$1arn | ARN del almacén de identidades de IAM Identity Center. | [identitystore:IdentityStoreArn](https://docs.aws.amazon.com/singlesignon/latest/userguide/condition-context-keys-sts-idc.html#condition-keys-identity-store-arn) | arn:aws:identitystore::123456789012:identitystore/d-abc1234567 | 
| ec2\$1source\$1instance\$1arn | ARN de la instancia de EC2 solicitante. | [ec2:SourceInstanceArn](reference_policies_condition-keys.md#condition-keys-ec2-source-instance-arn) | arn:aws:ec2:us-east-1:123456789012:instance/i-abc123def456 | 
| ec2\$1instance\$1source\$1vpc | ID de la VPC donde se entregaron las credenciales del rol de EC2. | [aws:Ec2InstanceSourceVpc](reference_policies_condition-keys.md#condition-keys-ec2instancesourcevpc) | vpc-abc123def456 | 
| ec2\$1instance\$1source\$1private\$1ipv4 | Dirección IPv4 privada de la instancia de EC2. | [aws:Ec2InstanceSourcePrivateIPv4](reference_policies_condition-keys.md#condition-keys-ec2instancesourceprivateip4) | 10.0.1.25 | 
| ec2\$1role\$1delivery | Versión del servicio de metadatos de instancia. | [ec2:RoleDelivery](reference_policies_condition-keys.md#condition-keys-ec2-role-delivery) | 2 | 
| source\$1identity | Identidad de origen establecida por la entidad principal. | [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) | admin-user | 
| lambda\$1source\$1function\$1arn | ARN de la función de Lambda que hace la llamada. | [lambda:SourceFunctionArn](reference_policies_condition-keys.md#condition-keys-lambda-source-function-arn) | arn:aws:lambda:us-east-1:123456789012:function:my-function | 
| glue\$1credential\$1issuing\$1service | Identificador del servicio AWS Glue para trabajos de Glue. | [glue:CredentialIssuingService](reference_policies_condition-keys.md#condition-keys-glue-credential-issuing) | glue.amazonaws.com | 

### Solicitud de etiquetas
<a name="request-tags"></a>

Para agregar notificaciones personalizadas a los tokens, debe especificar etiquetas en la solicitud de la API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Estas notificaciones aparecen en el campo request\$1tags del token y le permiten transmitir información específica que los servicios externos pueden usar para tomar decisiones de autorización detalladas. Puede especificar hasta 50 etiquetas por solicitud.

Ejemplo de solicitud:

```
response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    SigningAlgorithm='ES384'
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'cost-center', 'Value': 'analytics'},
        {'Key': 'environment', 'Value': 'production'}
    ]
)
```

Notificaciones resultantes en el token:

```
{
  "request_tags": {
    "team": "data-engineering",
    "cost-center": "analytics",
    "environment": "production"
  }
}
```

# Control de acceso mediante políticas de IAM
<a name="id_roles_providers_outbound_policies"></a>

IAM proporciona varios tipos de políticas para controlar el acceso a la característica de federación de identidad saliente. Puede utilizar [políticas basadas en identidades](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) para controlar qué entidades principales de IAM pueden solicitar los tokens y aplicar propiedades específicas de estos, como la audiencia, la vida útil y los algoritmos de firma. Las [políticas de control de servicio](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP) le permiten aplicar restricciones en toda la organización a la generación de tokens en todas las cuentas de su instancia de AWS Organizations. Las [políticas de control de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCP) controlan el acceso en el nivel de recursos. También puede usar [políticas de puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) para restringir qué entidades principales pueden acceder a la API `GetWebIdentityToken` de AWS STS a través de sus puntos de conexión de VPC al agregar controles de nivel de red a su posición de seguridad. En esta sección, se explica cómo implementar controles de acceso detallados mediante estos tipos de políticas y claves de condición.

Para solicitar tokens de identidad, una entidad principal de IAM debe tener el permiso `sts:GetWebIdentityToken`. Otorgue este permiso a través de las políticas de identidades adjuntas a los usuarios o roles de IAM. Para permitir que las etiquetas (pares de claves y valores) se transfieran a la llamada a GetWebIdentityToken, la entidad principal de IAM debe tener el permiso `sts:TagGetWebIdentityToken`.
+ Utilice la clave de condición [sts:IdentityTokenAudience](reference_policies_iam-condition-keys.md#ck_identitytokenaudience) para limitar los servicios externos que pueden recibir los tokens.
+ Utilice la clave de condición [sts:DurationSeconds](reference_policies_iam-condition-keys.md#ck_durationseconds) para aplicar la vida útil máxima de los tokens.
+ Utilice la clave de condición [sts:SigningAlgorithm](reference_policies_iam-condition-keys.md#ck_signingalgorithm) para requerir algoritmos criptográficos específicos.
+ Utilice la clave de condición [aws:RequestTag](reference_policies_condition-keys.md#condition-keys-requesttag) para comparar el par de clave-valor de la etiqueta que se transfirió en la solicitud con el par de etiquetas especificado en la política.
+ Utilice la clave de condición [aws:TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) para comparar las claves de etiquetas de una solicitud con las claves que especifique en la política.

Consulte [Claves de contexto de condición de IAM y AWS STS](reference_policies_iam-condition-keys.md) para obtener más información sobre las claves de condición disponibles en las políticas de IAM.

Este ejemplo de política de identidades combina varias claves de condición:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTokenGenerationWithRestrictions",
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api1.example.com",
                        "https://api2.example.com"
                    ]
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                },
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

## Prácticas recomendadas
<a name="outbound-best-practices"></a>

Siga estas recomendaciones para federar de forma segura sus identidades de AWS en servicios externos.
+ **Uso de tokens con una vida útil corta:** solicite tokens con la vida útil más corta que se adapte a sus necesidades operativas.
+ **Implementación del acceso con privilegio mínimo y restricción de las propiedades de los tokens con políticas de IAM:** conceda el permiso `sts:GetWebIdentityToken` solo a las entidades principales de IAM que lo requieran. Utilice claves de condición para especificar los algoritmos de firma, las audiencias de tokens permitidas y la vida útil máxima de los tokens, según sea necesario.
+ **Validación de las notificaciones en servicios externos:** por motivos de seguridad, valide siempre las notificaciones pertinentes, como el tema (“sub”), la audiencia (“aud”), etc., para asegurarse de que coincidan con los valores esperados. Valide las notificaciones personalizadas siempre que sea posible para que los servicios externos puedan tomar decisiones de autorización detalladas.

# Credenciales de seguridad temporales en IAM
<a name="id_credentials_temp"></a>

Puede utilizar AWS Security Token Service (AWS STS) para crear credenciales de seguridad temporales que pueden controlar el acceso a sus recursos de AWS y proporcionárselas a usuarios de confianza. Las credenciales de seguridad temporales funcionan prácticamente igual que las credenciales de clave de acceso a largo plazo, con las siguientes diferencias:
+ Las credenciales de seguridad temporales son *a corto plazo*, tal como su nombre indica. Se pueden configurar para durar entre unos cuantos minutos y varias horas. Cuando las credenciales caduquen, AWS dejará de reconocerlas o permitirá todo tipo de acceso a las solicitudes realizadas desde API que las utilicen.
+ Las credenciales de seguridad temporales no se guardan con el usuario, sino que se generan de forma dinámica y se proporcionan al usuario cuando se solicitan. Cuando las credenciales de seguridad temporales caducan (o incluso antes), el usuario puede solicitar nuevas credenciales, siempre y cuando el usuario que las solicite tenga permiso para hacerlo.

Como resultado, las credenciales temporales tienen las siguientes ventajas con respecto a las credenciales a largo plazo:
+ No tiene que distribuir ni incrustar credenciales de seguridad de AWS a largo plazo con una aplicación.
+ Puede proporcionar acceso a sus recursos de AWS a usuarios, sin necesidad de definir una identidad de AWS para ellos. Las credenciales temporales son la base de los [roles](id_roles.md) y la [federación de identidades](id_roles_providers.md).
+ Las credenciales de seguridad temporales tienen un ciclo de vida limitado, por lo que no tiene que actualizarlas ni revocarlas de forma explícita cuando ya no las necesite. Cuando las credenciales de seguridad temporales caducan, ya no se pueden volver a utilizar. Puede especificar el tiempo de validez de las credenciales, hasta un límite máximo. 

## Regiones de AWS STS y AWS
<a name="sts-regionalization"></a>

 genera las credenciales de seguridad temporales; AWS STS. De forma predeterminada, AWS STS es un servicio global con un único punto de enlace en `https://sts.amazonaws.com`. Sin embargo, también puede optar por realizar llamadas de API de AWS STS a puntos de enlace de cualquier otra región compatible. Esto puede reducir la latencia de servidor (retraso del servidor) enviando las solicitudes a servidores de una región que está más cerca de usted. No importa de qué región vienen sus credenciales, funcionan en todo el mundo. Para obtener más información, consulte [Administración de AWS STS en una Región de AWS](id_credentials_temp_enable-regions.md).

## Escenarios habituales en las credenciales temporales
<a name="sts-introduction"></a>

Las credenciales temporales son útiles en escenarios en los que entren en juego las identidades federadas, la delegación, el acceso entre cuentas y los roles de IAM.

### Identidad federada
<a name="id-federation"></a>

Puede administrar sus identidades de usuario en un sistema externo situado fuera de AWS y conceder a los usuarios que inician sesión desde dichos sistemas acceso para realizar tareas de AWS y obtener acceso a sus recursos de AWS. IAM admite dos tipos de identidades federadas. En ambos casos, las identidades se almacenan fuera de AWS. La diferencia radica dónde reside el sistema externo, en su centro de datos o un tercero externo en la web. Para comparar las características de las credenciales de seguridad temporales para la federación de identidades, consulte [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md).

Para obtener más información acerca de proveedores de identidades externos, consulte [Proveedores de identidades y federación en AWS](id_roles_providers.md).
+ **Federación de OpenID Connect (OIDC)**: puede dejar que los usuarios inicien sesión con un proveedor de identidades de terceros conocido, como Inicio de sesión con Amazon, Facebook, Google o cualquier proveedor compatible con OIDC 2.0 para su aplicación móvil o Web, no necesita crear un código de inicio de sesión personalizado ni administrar sus propias identidades de usuario. La federación de OIDC le permite tener una Cuenta de AWS más segura, ya que no tiene que distribuir credenciales de seguridad a largo plazo, como claves de acceso de usuario de IAM, con su aplicación. Para obtener más información, consulte [Federación OIDC](id_roles_providers_oidc.md).

  La federación de OIDC AWS STS admite Inicio de sesión con Amazon, Facebook, Google o cualquier proveedor de identidad compatible con OpenID Connect (OIDC).
**nota**  
Para aplicaciones móviles, le recomendamos que utilice Amazon Cognito. Puede utilizar el servicio con los AWS SDK para desarrollo móvil para crear identidades únicas para usuarios y autenticarlos para proteger el acceso a los recursos de AWS. Amazon Cognito es compatible con los mismos proveedores de identidades que AWS STS y con el acceso sin autenticar (invitado), y le permite migrar datos de usuario cuando un usuario inicia sesión. Amazon Cognito también ofrece operaciones de API para sincronizar los datos del usuario de modo que se preserven cuando cambia de un dispositivo a otro. Para obtener más información, consulte [Autenticación con Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) en la *documentación de Amplify*.
+ **Federación de SAML**: Puede autenticar usuarios de la red de su organización y, a continuación, dar a dichos usuarios acceso a AWS sin tener que crearles nuevas identidades de AWS ni exigirles que inicien sesión con credenciales diferentes. Este procedimiento se denomina *inicio de sesión único* para el acceso temporal. AWS STS es compatible con estándares abiertos como Security Assertion Markup Language (SAML) 2.0, con el que puede utilizar Microsoft AD FS para aprovechar su Microsoft Active Directory. También puede utilizar SAML 2.0 para administrar su propia solución de identidades federadas de usuarios. Para obtener más información, consulte [Federación SAML 2.0](id_roles_providers_saml.md).
  + **Agente de federación personalizado** AWS Puede utilizar el sistema de autenticación de su organización para conceder acceso a los recursos de . Si desea ver un escenario de ejemplo, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).
  + **Federación con SAML 2.0** Puede utilizar el sistema de autenticación de su organización y SAML para conceder acceso a los recursos de AWS. Para obtener más información y ver un escenario de ejemplo, consulte [Federación SAML 2.0](id_roles_providers_saml.md).

### Roles para el acceso entre cuentas
<a name="role_cross-account"></a>

Muchas organizaciones mantienen más de una Cuenta de AWS. Con los roles y el acceso entre cuentas, puede definir identidades de usuarios en una cuenta y utilizar esas mismas identidades para obtener acceso a recursos de AWS de otras cuentas que pertenezcan a su organización. Este procedimiento se denomina *delegación* del acceso temporal. Para obtener más información sobre la creación de roles entre cuentas, consulte [Creación de un rol para delegar permisos a un usuario de IAM](id_roles_create_for-user.md). Consulte [¿Qué es IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para saber si las entidades principales de las cuentas fuera de su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles.

### Roles para Amazon EC2
<a name="role_ec2"></a>

Si ejecuta aplicaciones en instancias de Amazon EC2 y dichas aplicaciones necesitan obtener acceso a recursos de AWS, puede proporcionar credenciales de seguridad temporales a las instancias cuando las lanza. Dichas credenciales de seguridad temporales están disponibles para todas las aplicaciones que se ejecutan en la instancia, por lo que no es necesario almacenar credenciales a largo plazo en ella. Para obtener más información, consulte [Utilizar un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias de Amazon EC2](id_roles_use_switch-role-ec2.md).

Para obtener más información sobre las credenciales de los roles de Amazon EC2 de IAM, consulte los [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) en la *Guía del usuario de Amazon Elastic Compute Cloud*.

### Otros servicios de AWS
<a name="other-services"></a>

Puede utilizar credenciales de seguridad temporales para obtener acceso a la mayoría de los servicios de AWS. Para obtener una lista de los servicios que aceptan credenciales de seguridad temporales, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md).

## Aplicaciones de ejemplo que utilizan credenciales temporales
<a name="id_credentials_temp_sample-apps"></a>

Puede utilizar AWS Security Token Service (AWS STS) para crear credenciales de seguridad temporales que pueden controlar el acceso a sus recursos de AWS y proporcionárselas a usuarios de confianza. Para obtener más información acerca de AWS STS, consulte [Credenciales de seguridad temporales en IAM](#id_credentials_temp). Para ver cómo puede utilizar AWS STS para administrar credenciales de seguridad temporales, puede descargar las siguientes aplicaciones de ejemplo que implementan escenarios de ejemplo completos:
+ [Habilitar la federación a AWS para utilizar Windows Active Directory, ADFS y SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/). Demuestra cómo delegar el acceso mediante la federación empresarial a AWS mediante Windows Active Directory (AD), Active Directory Federation Services (ADFS) 2.0 y SAML (Security Assertion Markup Language) 2.0.
+ [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md). Muestra cómo crear un proxy de federación personalizada que permite el inicio de sesión único (SSO), de modo que los usuarios de Active Directory puedan iniciar sesión en Consola de administración de AWS.
+ [Cómo utilizar Shibboleth para el inicio de sesión único en Consola de administración de AWS.](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console/). En esta página se muestra cómo utilizar [Shibboleth](http://shibboleth.net/) y [SAML](id_roles_providers_saml.md) para proporcionar a los usuarios un acceso de inicio de sesión único (SSO) a la Consola de administración de AWS.

### Muestras para la federación OIDC
<a name="sts-sample-apps-wif"></a>

Las siguientes aplicaciones de muestra ilustran cómo utilizar la federación OIDC con proveedores como Inicio de sesión con Amazon, Amazon Cognito, Facebook, o Google. Puede intercambiar la autenticación de estos proveedores por credenciales de seguridad de AWS temporales para obtener acceso a los servicios de AWS.
+ [Tutoriales de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorials.html): le recomendamos que utilice Amazon Cognito con las SDK de AWS para el desarrollo móvil. Amazon Cognito es la forma más sencilla de administrar la identidad en aplicaciones móviles y ofrece características adicionales, como la sincronización y la identidad en todos los dispositivos. Para obtener más información acerca de Amazon Cognito, consulte [Autenticación con Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) en la *documentación de Amplify*.

## Recursos adicionales para las credenciales de seguridad temporales
<a name="id_credentials_temp_related-topics"></a>

Los escenarios y aplicaciones siguientes pueden orientarlo sobre el uso de credenciales de seguridad temporales: 
+ [Cómo integrar AWS STS SourceIdentity con su proveedor de identidades](https://aws.amazon.com/blogs/security/how-to-integrate-aws-sts-sourceidentity-with-your-identity-provider/). Esta publicación muestra cómo configurar el atributo AWS STS `SourceIdentity` al usar Okta, Ping o OneLogin como su IdP.
+  [Federación OIDC](id_roles_providers_oidc.md). En esta sección se explica cómo configurar roles de IAM cuando utiliza las federaciones OIDC y la API `AssumeRoleWithWebIdentity`. 
+ [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md). En este tema se explica cómo utilizar roles para exigir una autenticación multifactor (MFA) para proteger acciones de API confidenciales en su cuenta.

Para obtener más información sobre las políticas y permisos de AWS, consulte los temas siguientes:
+ [Recursos de AWS para administración de acceso](access.md)
+ [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md).
+ [Administración de los permisos de acceso a los recursos de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) en la *Guía del usuario de Amazon Simple Storage Service*.
+  Consulte [¿Qué es IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para saber si las entidades principales de las cuentas fuera de su zona de confianza (cuenta u organización de confianza) tienen acceso para asumir sus roles.

# Comparación de credenciales AWS STS
<a name="id_credentials_sts-comparison"></a>

La siguiente tabla compara las características de las operaciones de la API de AWS STS que devuelven credenciales de seguridad temporales. Para obtener más información sobre los distintos métodos que puede utilizar para solicitar credenciales de seguridad temporales asumiendo un rol, consulte [Métodos para asumir un rol](id_roles_manage-assume.md). Para obtener información sobre las diferentes operaciones de API de AWS STS que le permiten pasar etiquetas de sesión, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

**nota**  
Puede enviar llamadas a la API de AWS STS tanto a un punto de enlace global como a uno de los puntos de enlace regionales. Si elige el punto de enlace más cercano, puede reducir la latencia y mejorar el rendimiento de las llamadas a la API. También puede elegir enviar sus llamadas a un punto de enlace regional alternativo si ya no puede comunicarse con el punto de enlace original. Si utiliza uno de los distintos SDK de AWS, utilice el método del SDK para especificar una región antes de realizar la llamada a la API. Si va realiza manualmente solicitudes de API HTTP, debe enviar usted mismo la solicitud al punto de conexión correcto. Para obtener más información, consulte la [AWS STS sección de *Regiones y puntos de enlace*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) y [Administración de AWS STS en una Región de AWS](id_credentials_temp_enable-regions.md).


|  **API de AWS STS**  |  **Quién puede llamar**  |  **Duración de las credenciales (mín \$1 máx \$1 predeterminada)**  |  **Soporte de MFA**¹  |  **Compatibilidad con políticas de sesión**²  |  **Restricciones aplicables a las credenciales temporales obtenidas**  | 
| --- | --- | --- | --- | --- | --- | 
|  [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)  | Usuario de IAM o rol de IAM con credenciales de seguridad temporales existentes  | 15 min \$1 configuración de la duración máxima de la sesión³ \$1 1 h  | Sí  | Sí |  No se puede llamar a `GetFederationToken` ni a `GetSessionToken`.  | 
|  [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)  | Cualquier usuario: el intermediario debe transmitir una respuesta de autenticación de SAML que indique la autenticación de un proveedor de identidad conocido | 15 min \$1 configuración de la duración máxima de la sesión³ \$1 1 h  | No | Sí |  No se puede llamar a `GetFederationToken` ni a `GetSessionToken`.  | 
|  [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)  | Cualquier usuario; la persona que llama debe pasar un token JWT compatible con OIDC que indique la autenticación de un proveedor de identidad conocido | 15 min \$1 configuración de la duración máxima de la sesión³ \$1 1 h  | No | Sí |  No se puede llamar a `GetFederationToken` ni a `GetSessionToken`.  | 
| [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Usuario de IAM o Usuario raíz de la cuenta de AWS |  Usuario de IAM: 15 m \$1 36 h \$1 12 h Usuario raíz: 15 m \$1 1 h \$1 1 h  | No  | Sí  |  No se puede llamar a operaciones de IAM mediante AWS CLI o la API de AWS. Esta limitación no se aplica a las sesiones de consola. No se puede llamar a operaciones de AWS STS excepto `GetCallerIdentity`.⁴ Se permite el inicio de sesión único (SSO) en la consola.⁵  | 
| [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) | Usuario de IAM o Usuario raíz de la cuenta de AWS |  Usuario de IAM: 15 m \$1 36 h \$1 12 h Usuario raíz: 15 m \$1 1 h \$1 1 h  | Sí  | No  |  No se puede llamar a las operaciones de API de IAM, a no ser que se incluya en la solicitud la información de MFA. No se puede llamar a las operaciones de API de AWS STS excepto `AssumeRole` o `GetCallerIdentity`. No se permite el inicio de sesión único (SSO) en la consola.⁶  | 

 ¹ **Compatibilidad con MFA**. Puede incluir información acerca del dispositivo de autenticación multifactor (MFA) cuando llama a las operaciones de API AssumeRole y GetSessionToken. De este modo, se garantiza que las credenciales de seguridad temporales que se derivan de la llamada a la API solo las puedan utilizar los usuarios que se autentiquen con un dispositivo MFA. Para obtener más información, consulte [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md). 

 ² **Soporte con políticas de sesión**. Las políticas de sesión son políticas que se pasan como parámetro al crear mediante programación una sesión temporal para un rol o una sesión de usuario federado de AWS STS. Esta política limita los permisos de la política basada en identidad del rol o usuario que se asignan a la sesión. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades de la entidad y las políticas de la sesión. Las políticas de sesión no se pueden utilizar para conceder más permisos que los permitidos por la política basada en identidades del rol que se asume. Para obtener más información sobre los permisos de sesión de un rol, consulte [Políticas de sesión](access_policies.md#policies_session).

³ **Configuración de la duración máxima de la sesión**. Use el parámetro `DurationSeconds` para especificar la duración de la sesión de rol, que puede oscilar entre 900 segundos (15 minutos) y el valor de la duración máxima de la sesión especificado para el rol. Para obtener información sobre cómo ver el valor máximo para el rol, consulte [Actualizar la duración máxima de la sesión para un rol](id_roles_update-role-settings.md#id_roles_update-session-duration).

⁴ **GetCallerIdentity**. No se requieren permisos para realizar esta operación. Si un administrador añade una política a su usuario o rol de IAM que deniega explícitamente el acceso a la acción `sts:GetCallerIdentity`, puede realizar esta operación. Los permisos no son necesarios porque se devuelve la misma información cuando se deniega el acceso a un usuario o rol de IAM. Para ver un ejemplo de respuesta, consulte [No tengo autorización para realizar la operación iam:DeleteVirtualMFADevice](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa).

⁵ **.⁶**. Para facilitar el inicio de sesión único (SSO), AWS le permite llamar a un punto de enlace de federación (`https://signin.aws.amazon.com/federation`) y transmitir las credenciales de seguridad temporales. El punto de enlace devuelve un token que puede utilizar para crear una dirección URL con la que un usuario inicia sesión directamente en la consola sin necesidad de una contraseña. Para obtener más información, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md) y [ How to Enable Cross-Account Access to the AWS Management Console](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) en el blog de seguridad de AWS. 

⁶ Tras recuperar las credenciales temporales, no puede acceder a la Consola de administración de AWS transmitiendo las credenciales al punto de enlace de inicio de sesión único de la federación. Para obtener más información, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).

# Tokens de portador del servicio
<a name="id_credentials_bearer"></a>

Algunos servicios de AWS requieren que tenga permiso para obtener un token al portador del servicio AWS STS para poder acceder a sus recursos mediante programación. Estos servicios admiten un protocolo que requiere que utilice un token de portador, en lugar de un tradicional [AWS Signature Version 4 para solicitudes de API](reference_sigv.md). Cuando realiza operaciones de la API de AWS CLI o AWS que requieren tokens al portador, el servicio de AWS solicita un token al portador en su nombre. El servicio le proporciona el token, que puede utilizar más adelante para realizar futuras operaciones en ese servicio. 

AWS STSLos tokens al portador del servicio incluyen información original de su entidad principal que podría afectar a sus permisos. Esta información puede incluir etiquetas de entidad principal, etiquetas de sesión y políticas de sesión. El ID de clave de acceso del token comienza con el prefijo `ABIA`. Esto le ayuda a identificar las operaciones que se realizaron mediante tokens al portador del servicio en sus registros de CloudTrail.

**importante**  
El token al portador solo se puede utilizar para hacer llamadas al servicio que lo genera y en la región en que se generó. No puede utilizar el token al portador para realizar operaciones en otros servicios o regiones.

Un ejemplo de un servicio que admite tokens al portador es AWS CodeArtifact. Para poder interactuar con AWS CodeArtifact a través de un administrador de paquetes como NPM, Maven o PIP, primero debe llamar a la operación `aws codeartifact get-authorization-token`. Esta operación devuelve un token al portador que puede utilizar para realizar operaciones de AWS CodeArtifact. De forma alternativa, puede utilizar el comando `aws codeartifact login`, que completa la misma operación y luego configura su cliente automáticamente. 

Si realiza una acción en un servicio de AWS que genera un token al portador para usted, debe tener los siguientes permisos en su política de IAM:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowServiceBearerToken",
            "Effect": "Allow",
            "Action": "sts:GetServiceBearerToken",
            "Resource": "*"
        }
    ]
}
```

------

Para ver un ejemplo de token de portador de servicio, consulte [Uso de políticas basadas en identidades para AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/auth-and-access-control-iam-identity-based-access-control.html) en la *Guía del usuario de AWS CodeArtifact *.

# Solicitud de credenciales de seguridad temporales
<a name="id_credentials_temp_request"></a>

Para solicitar credenciales de seguridad temporales, puede utilizar las operaciones AWS Security Token Service (AWS STS) en la API de AWS. Esto incluye operaciones para crear credenciales de seguridad temporales que pueden controlar el acceso a sus recursos de AWS y proporcionárselas a usuarios de confianza. Para obtener más información acerca de AWS STS, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md). Para obtener más información sobre los distintos métodos que puede utilizar para solicitar credenciales de seguridad temporales asumiendo un rol, consulte [Métodos para asumir un rol](id_roles_manage-assume.md).

Para llamar a las operaciones de la API, puede utilizar uno de los [SDK de AWS](https://aws.amazon.com/tools/). Los SDK están disponibles para una gran variedad de entornos y lenguajes de programación, tales como Java, .NET, Python, Ruby, Android e iOS. Los SDK se encargan de tareas como firmar solicitudes criptográficamente, reintentar solicitudes si fuera necesario y administrar respuestas a errores. También puede utilizar la API de consulta de AWS STS, que se describe en [Referencia de API de AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/). Por último, dos herramientas de línea de comandos admiten los comandos de AWS STS: [AWS Command Line Interface](https://aws.amazon.com/documentation/cli) y [AWS Tools for Windows PowerShell](https://aws.amazon.com/documentation/powershell). 

Las operaciones de API de AWS STS crean una nueva sesión con credenciales de seguridad temporales formadas por un par de claves de acceso y un token de sesión. El par de claves de acceso consta de un ID de clave de acceso y una clave secreta. Los usuarios (o una aplicación que el usuario ejecute) pueden utilizar estas credenciales para obtener acceso a los recursos. Puede crear una sesión de rol y pasar políticas de sesión y etiquetas de sesión con programación mediante las operaciones de la API de AWS STS. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades del rol y las políticas de la sesión. Para obtener más información acerca de las políticas de sesión, consulte [Políticas de sesión](access_policies.md#policies_session). Para obtener más información acerca de las etiquetas de sesión, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

**nota**  
El tamaño del token de seguridad que devuelven las operaciones de la API de AWS STS no es fijo. Recomendamos encarecidamente que no realice suposiciones sobre el tamaño máximo. El tamaño típico del token es inferior a 4096 bytes, pero puede variar.

## Uso de AWS STS con regiones de AWS
<a name="using_sts_regions"></a>

Puede enviar llamadas a la API de AWS STS tanto a un punto de enlace global como a uno de los puntos de enlace regionales. Si elige el punto de enlace más cercano, puede reducir la latencia y mejorar el rendimiento de las llamadas a la API. También puede elegir enviar sus llamadas a un punto de enlace regional alternativo si ya no puede comunicarse con el punto de enlace original. Si utiliza uno de los distintos SDK de AWS, utilice el método del SDK para especificar una región antes de realizar la llamada a la API. Si va realiza manualmente solicitudes de API HTTP, debe enviar usted mismo la solicitud al punto de conexión correcto. Para obtener más información, consulte la [AWS STS sección de *Regiones y puntos de enlace*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) y [Administración de AWS STS en una Región de AWS](id_credentials_temp_enable-regions.md).

Las siguientes son operaciones de API que puede utilizar para obtener credenciales temporales para su uso en aplicaciones y entornos de AWS.

## Solicitud de credenciales para la federación y delegación entre cuentas a través de un agente de identidades personalizado
<a name="api_assumerole"></a>

La operación de API [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html) es útil para permitir a los usuarios existentes de IAM el acceso a recursos de AWS a los que todavía no tienen acceso. Por ejemplo, el usuario puede necesitar acceso a los recursos de otra Cuenta de AWS. También es útil para obtener temporalmente acceso privilegiado por ejemplo, para proporcionar autenticación multifactor (MFA). Debe llamar a esta API con las credenciales de usuario activas. Para saber quién puede llamar a esta operación, consulte [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md). Para obtener más información, consulte [Creación de un rol para delegar permisos a un usuario de IAM](id_roles_create_for-user.md) y [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md).

**Para solicitar credenciales de seguridad temporales para la federación y delegación entre cuentas mediante un agente de identidades personalizado**

1. Autentíquese con sus credenciales de seguridad de AWS. Esta llamada debe realizarse con credenciales de seguridad de AWS válidas.

1. Llame a la operación [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html).

En el siguiente ejemplo se muestra una solicitud y respuesta de muestra que utiliza `AssumeRole`. Esta solicitud de ejemplo asume el rol `demo` durante la duración especificada con la [política de sesión](access_policies.md#policies_session) incluida, las [etiquetas de sesión](id_session-tags.md), el [ID externo](id_roles_common-scenarios_third-party.md) y la [identidad de origen](id_credentials_temp_control-access_monitor.md). La sesión resultante se denomina `John-session`. 

**Example Ejemplo de solicitud**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=AssumeRole
&RoleSessionName=John-session
&RoleArn=arn:aws::iam::123456789012:role/demo
&Policy=%7B%22Version%22%3A%222012-10-17		 	 	 %22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&ExternalId=123ABC
&SourceIdentity=DevUser123
&AUTHPARAMS
```

El valor de política que se muestra en el ejemplo anterior es la versión codificada como URL de la siguiente política:

------
#### [ JSON ]

****  

```
{"Version":"2012-10-17",		 	 	 "Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}
```

------

El parámetro `AUTHPARAMS` en el ejemplo es un marcador de posición para su *firma*. Una firma es la información de autenticación que debe incluir en las solicitudes de la API HTTP de AWS. Recomendamos utilizar los [SDK de AWS](https://aws.amazon.com/tools/) para crear solicitudes de API; un beneficio de esto es que los SDK gestionan la firma de solicitudes en su nombre. Si debe crear y firmar manualmente solicitudes de API, diríjase a [Firma de solicitudes de AWS con Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) en la *Referencia general de Amazon Web Services* para averiguar cómo firmar una solicitud.

Además de las credenciales de seguridad temporales, la respuesta incluye el Nombre de recurso de Amazon (ARN) para el usuario federado y el plazo de vencimiento de las credenciales.

**Example Respuesta de ejemplo**  

```
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
  </SessionToken>
  <SecretAccessKey>
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-07-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
  <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
  <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>
```

**nota**  
Una conversión de AWS comprime las políticas de sesión pasadas y las etiquetas de sesión en un formato binario empaquetado que tiene un límite separado. Su solicitud puede fallar para este límite incluso si el texto sin formato cumple con los demás requisitos. El elemento de respuesta `PackedPolicySize` indica por porcentaje lo cerca que están las políticas y etiquetas de su solicitud al límite de tamaño superior.

## Solicitud de credenciales mediante un proveedor de OIDC
<a name="api_assumerolewithwebidentity"></a>

La operación de la API de [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) devuelve un conjunto de credenciales de seguridad de AWS temporales a cambio de un token web JSON (JWT). Esto incluye a los proveedores de identidades públicos, como Login with Amazon, Facebook, Google y los proveedores que emiten JWT compatibles con la detección de OpenID Connect (OIDC), como GitHub Actions o Azure DevOps. Para obtener más información, consulte [Federación OIDC](id_roles_providers_oidc.md).

**nota**  
Las solicitudes de `AssumeRoleWithWebIdentity` no se firman con credenciales de AWS ni las requieren.

**Solicitud de credenciales mediante un proveedor de OIDC**

1. Llame a la operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

   Cuando llama a `AssumeRoleWithWebIdentity`, AWS valida el token presentado mediante la verificación de la firma digital con las claves públicas disponibles a través del conjunto de claves web JSON (JWKS) de su IdP. Si el token es válido y se cumplen todas las condiciones establecidas en la política de confianza del rol de IAM, AWS devuelve la siguiente información:
   + Un conjunto de credenciales de seguridad temporales. Estas incluyen un ID de clave de acceso, una clave de acceso secreta y un token de sesión.
   + El ID de rol y el ARN del rol asumido.
   + Un valor `SubjectFromWebIdentityToken` que incluye el ID de usuario único.

1. Su aplicación puede usar las credenciales de seguridad temporales que se devolvieron en la respuesta para realizar llamadas a la API de AWS. Se trata del mismo proceso que para hacer una llamada a la API de AWS con credenciales de seguridad a largo plazo. La diferencia es que debe incluir el token de sesión, que permite a AWS verificar que las credenciales de seguridad temporales son válidas.

La aplicación debe almacenar en caché las credenciales devueltas por AWS STS y actualizarlas según sea necesario. Si la aplicación se creó con un SDK de AWS, el SDK tiene proveedores de credenciales que pueden gestionar las llamadas a `AssumeRoleWithWebIdentity` y actualizar las credenciales de AWS antes de que caduquen. Para obtener más información, consulte los [proveedores de credenciales estandarizados de herramientas y SDK deAWS](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) en la *Guía de referencia de herramientas y SDK de AWS*.

## Solicitud de credenciales a través de un proveedor de identidades de SAML 2.0
<a name="api_assumerolewithsaml"></a>

La operación de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) devuelve un conjunto de credenciales de seguridad temporales para entidades principales federadas de SAML que han sido autenticadas por el sistema de identidades existente de la organización. Los usuarios también deben utilizar [SAML](https://www.oasis-open.org/standards#samlv2.0) 2.0 (lenguaje de marcado para confirmaciones de seguridad) para transmitir la información de autenticación y autorización a AWS. Esta operación de la API es útil en organizaciones que han integrado sus sistemas de identidad (como Windows Active Directory u OpenLDAP) con software que puede producir aserciones SAML. Esta integración proporciona información sobre los permisos e identidad del usuario (como Active Directory Federation Services o Shibboleth). Para obtener más información, consulte [Federación SAML 2.0](id_roles_providers_saml.md).

1. Llame a la operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html).

   Se trata de una llamada sin firmar, lo que significa que no es necesario autenticar las credenciales de seguridad de AWS antes de realizar la solicitud.
**nota**  
Una llamada a `AssumeRoleWithSAML` no se firma (cifrada). Por lo tanto, solo debe incluir estas políticas de sesión opcionales si la solicitud se transmite a través de un intermediario de confianza. En este caso, alguien podría modificar la política para eliminar las restricciones.

1. Si llama a `AssumeRoleWithSAML`, AWS verifica la autenticidad de la aserción SAML. Suponiendo que el proveedor de identidad valida la aserción, AWS le devuelve la siguiente información:
   + Un conjunto de credenciales de seguridad temporales. Estas incluyen un ID de clave de acceso, una clave de acceso secreta y un token de sesión. 
   + El ID de rol y el ARN del rol asumido. 
   + Un valor `Audience` que incluye el valor del atributo `Recipient` del elemento `SubjectConfirmationData` de la aserción SAML.
   + Un valor `Issuer` que incluye el valor del elemento `Issuer` de la aserción SAML.
   + Un elemento `NameQualifier` que incluye un valor hash creado a partir del valor `Issuer`, el ID de la Cuenta de AWS y el nombre fácil de recordar del proveedor SAML. Cuando se combinan con el elemento `Subject`, pueden identificar de forma única a la entidad principal federada de SAML.
   + Un elemento `Subject` que incluye el valor del elemento `NameID` en el elemento `Subject` de la aserción SAML.
   + Un elemento `SubjectType` que indica el formato del elemento `Subject`. El valor puede ser `persistent`, `transient` o la URI completa `Format` de los elementos `Subject` y `NameID` utilizados en su aserción SAML. Para obtener información sobre el atributo `NameID` del elemento `Format`, consulte [Configure aserciones SAML para la respuesta de autenticación](id_roles_providers_create_saml_assertions.md). 

1. Utiliza las credenciales de seguridad temporales que se devolvieron en la respuesta para realizar llamadas a la API de AWS. Se trata del mismo proceso que para hacer una llamada a la API de AWS con credenciales de seguridad a largo plazo. La diferencia es que debe incluir el token de sesión, que permite a AWS verificar que las credenciales de seguridad temporales son válidas.

La aplicación debe almacenar en caché las credenciales. Las credenciales caducan después de una hora de forma predeterminada. Si no utiliza la acción [AmazonSTSCredentialsProvider](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios) en el SDK de AWS, depende de usted y de su aplicación volver a llamar a `AssumeRoleWithSAML`. Llame a esta operación para obtener un nuevo conjunto de credenciales de seguridad temporales antes de que caduquen las antiguas.

## Solicitud de credenciales a través de un agente de identidades personalizado
<a name="api_getfederationtoken"></a>

La operación de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) devuelve un conjunto de credenciales de seguridad temporales para entidades principales de usuario federado de AWS STS. Esta API difiere de `AssumeRole` en que el periodo de vencimiento predeterminado es bastante mayor (12 horas en lugar de una hora). Además, puede utilizar el parámetro `DurationSeconds` para especificar una duración de validez para las credenciales de seguridad temporales. Las credenciales resultantes son válidas durante el tiempo especificado, entre 900 segundos (15 minutos) y 129 600 segundos (36 horas). Un periodo de vencimiento mayor puede ayudar a reducir el número de llamadas a AWS, ya que no es necesario obtener credenciales nuevas con tanta frecuencia.

1. Autentíquese con las credenciales de seguridad de AWS de su usuario de IAM específico. Esta llamada debe realizarse con credenciales de seguridad de AWS válidas.

1. Llame a la operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html).

La llamada `GetFederationToken` devuelve credenciales de seguridad temporales que incluyen el token de seguridad, la clave de acceso, la clave secreta y el vencimiento. Puede utilizar `GetFederationToken` si desea administrar los permisos de su organización (por ejemplo, la utilización de la aplicación de proxy para asignar permisos).

El siguiente ejemplo muestra una solicitud y respuesta de muestra que utiliza `GetFederationToken`. En este ejemplo de solicitud se federa al usuario que llama durante la duración especificada con el ARN de la [póliza de sesión](access_policies.md#policies_session) y las [etiquetas de sesión](id_session-tags.md). La sesión resultante se denomina `Jane-session`.

**Example Ejemplo de solicitud**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetFederationToken
&Name=Jane-session
&PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&AUTHPARAMS
```

El ARN de la política que se muestra en el ejemplo anterior incluye el siguiente ARN codificado en URL: 

`arn:aws:iam::123456789012:policy/Role1policy`

Además, tenga en cuenta que el parámetro `&AUTHPARAMS` del ejemplo se entiende como marcador de posición para la información de autenticación. Esta es la *firma*, que debe incluir con las solicitudes API de HTTP de AWS. Recomendamos utilizar los [SDK de AWS](https://aws.amazon.com/tools/) para crear solicitudes de API; un beneficio de esto es que los SDK gestionan la firma de solicitudes en su nombre. Si debe crear y firmar manualmente solicitudes de API, diríjase a [Firma de solicitudes de AWS con Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) en la *Referencia general de Amazon Web Services* para averiguar cómo firmar una solicitud.

Además de las credenciales de seguridad temporales, la respuesta incluye el Nombre de recurso de Amazon (ARN) para el usuario federado y el plazo de vencimiento de las credenciales.

**Example Respuesta de ejemplo**  

```
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-04-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
  <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
  <FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>
```

**nota**  
Una conversión de AWS comprime las políticas de sesión pasadas y las etiquetas de sesión en un formato binario empaquetado que tiene un límite separado. Su solicitud puede fallar para este límite incluso si el texto sin formato cumple con los demás requisitos. El elemento de respuesta `PackedPolicySize` indica por porcentaje lo cerca que están las políticas y etiquetas de su solicitud al límite de tamaño superior.

AWS recomienda conceder permisos en el nivel de recursos (por ejemplo, adjuntar una política basada en recursos a un bucket de Amazon S3), puede omitir el parámetro `Policy`. Sin embargo, si no se incluye una política para la entidad principal de usuario federado de AWS STS, las credenciales de seguridad temporales no otorgarán ningún permiso. En este caso, *debe* utilizar las políticas de recursos para conceder acceso a sus recursos de AWS al usuario federado.

Por ejemplo, supongamos que el número de Cuenta de AWS es 111122223333 y que dispone de un bucket de Amazon S3 al que desea que Susan obtenga acceso. Las credenciales de seguridad temporales de Susan no incluyen una política para el bucket. En ese caso, tendría que asegurarse de que el bucket tiene una política con un ARN que coincida con el ARN de Susan, como `arn:aws:sts::111122223333:federated-user/Susan`. 

## Solicitud de credenciales para usuarios de entornos que no son de confianza
<a name="api_getsessiontoken"></a>

La operación de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) devuelve un conjunto de credenciales de seguridad temporales para un usuario de IAM existente. Es útil para proporcionar mayor seguridad, por ejemplo, para permitir las solicitudes de AWS únicamente cuando la función MFA está habilitada para el usuario de IAM. Dado que las credenciales son temporales, proporcionan mayor seguridad cuando se dispone de un usuario de IAM que tiene acceso a los recursos a través de un entorno menos seguro. Algunos ejemplos de entornos menos seguros son un dispositivo móvil o un navegador web.

1. Autentíquese con las credenciales de seguridad de AWS de su usuario de IAM específico. Esta llamada debe realizarse con credenciales de seguridad de AWS válidas.

1. Llame a la operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html).

1. `GetSessionToken` devuelve credenciales de seguridad temporales que incluyen un token de sesión, un ID de clave de acceso y una clave de acceso secreta.

De forma predeterminada, las credenciales de seguridad temporales de un usuario de IAM son válidas durante un máximo de 12 horas. Sin embargo, puede solicitar una duración mínima de 15 minutos o una duración máxima de 36 horas mediante el parámetro `DurationSeconds`. Por motivos de seguridad, un token para un usuario Usuario raíz de la cuenta de AWS está limitado a una hora.

En el siguiente ejemplo se muestra una solicitud y respuesta de muestra que utiliza `GetSessionToken`. La respuesta también incluye el plazo de vencimiento de las credenciales de seguridad temporales. 

**Example Ejemplo de solicitud**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=1800
&AUTHPARAMS
```

El parámetro `AUTHPARAMS` en el ejemplo es un marcador de posición para su *firma*. Una firma es la información de autenticación que debe incluir en las solicitudes de la API HTTP de AWS. Recomendamos utilizar los [SDK de AWS](https://aws.amazon.com/tools/) para crear solicitudes de API; un beneficio de esto es que los SDK gestionan la firma de solicitudes en su nombre. Si debe crear y firmar manualmente solicitudes de API, diríjase a [Firma de solicitudes de AWS con Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) en la *Referencia general de Amazon Web Services* para averiguar cómo firmar una solicitud.

**Example Respuesta de ejemplo**  

```
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
  <SessionToken>
   AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
   To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
   rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
   Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2011-07-11T19:55:29.611Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>
```

De forma opcional, la solicitud `GetSessionToken` puede incluir los valores `SerialNumber` y `TokenCode` para la verificación con autenticación multifactor (MFA) de AWS. Si los valores facilitados son válidos, AWS STS proporciona credenciales de seguridad temporales que incluyen el estado de la autenticación MFA. A continuación, las credenciales de seguridad temporales pueden utilizarse para obtener acceso a las acciones de la API protegidas por MFA o a los sitios web de AWS durante el periodo en que la autenticación MFA sea válida. 

El siguiente ejemplo muestra una solicitud `GetSessionToken` que incluye un código de verificación de MFA y un número de serie del dispositivo. 

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=7200
&SerialNumber=YourMFADeviceSerialNumber
&TokenCode=123456
&AUTHPARAMS
```

**nota**  
La llamada a AWS STS se puede realizar al punto de conexión global o a cualquiera de los puntos de conexión regionales que active en su Cuenta de AWS. Para obtener más información, consulte la [sección de AWS STS de *Regiones y puntos de enlace*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region).  
El parámetro `AUTHPARAMS` en el ejemplo es un marcador de posición para su *firma*. Una firma es la información de autenticación que debe incluir en las solicitudes de la API HTTP de AWS. Recomendamos utilizar los [SDK de AWS](https://aws.amazon.com/tools/) para crear solicitudes de API; un beneficio de esto es que los SDK gestionan la firma de solicitudes en su nombre. Si debe crear y firmar manualmente solicitudes de API, diríjase a [Firma de solicitudes de AWS con Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) en la *Referencia general de Amazon Web Services* para averiguar cómo firmar una solicitud.

# Uso de credenciales temporales con recursos de AWS
<a name="id_credentials_temp_use-resources"></a>

Puede utilizar credenciales de seguridad temporales para realizar solicitudes programáticas de recursos de AWS mediante AWS CLI o la API de AWS o (mediante los[SDK de AWS](https://aws.amazon.com/tools/)). Las credenciales temporales proporcionan los mismos permisos que las credenciales de seguridad a largo plazo, como las credenciales de usuario de IAM. Sin embargo, hay algunas diferencias:
+ Cuando realice una llamada utilizando las credenciales de seguridad temporales, la llamada debe incluir un token de sesión, que se devuelve junto con las credenciales temporales en cuestión. AWS utiliza el token de sesión para validar las credenciales de seguridad temporales. 
+ Las credenciales temporales vencen después de un intervalo especificado. Después de que las credenciales temporales venzan, cualquier llamada que hagas con esas credenciales fallará, por lo que deberás generar un nuevo conjunto de credenciales temporales. Las credenciales temporales no pueden extenderse o actualizarse más allá del intervalo original especificado.
+ Cuando utiliza credenciales temporales para realizar una solicitud, la entidad principal puede incluir un conjunto de etiquetas. Estas etiquetas provienen de etiquetas de sesión y etiquetas asociadas al rol que asume. Para obtener más información acerca de las etiquetas de sesión, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

Si está utilizando los [SDK de AWS](https://aws.amazon.com/tools), [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/) (AWS CLI) o [Tools for Windows PowerShell](https://aws.amazon.com/powershell), la forma de obtener y usar credenciales de seguridad temporales difiere según el contexto. Si ejecuta código o comandos de la AWS CLI o las Tools for Windows PowerShell en una instancia EC2, puede sacar partido de los roles de Amazon EC2. De lo contrario, puede llamar a una [API de AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) para obtener las credenciales temporales y, a continuación, utilizarlas de forma explícita para realizar llamadas a los servicios de AWS.

**nota**  
Puede utilizar AWS Security Token Service (AWS STS) para crear credenciales de seguridad temporales que pueden controlar el acceso a sus recursos de AWS y proporcionárselas a usuarios de confianza. Para obtener más información sobre AWS STS, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md). AWS STS es un servicio global que tiene un punto de enlace predeterminado en `https://sts.amazonaws.com`. Este punto de conexión se encuentra en la región Este de EE. UU. (Norte de Virginia), aunque las credenciales que obtiene de este y otros puntos de conexión son válidas a nivel global. Estas credenciales funcionan con servicios y recursos de cualquier región. También puede optar por realizar llamadas a API de AWS STS a los puntos de enlace de cualquier región compatible. Esto puede reducir la latencia realizando las solicitudes desde servidores de una región que está más cerca de usted. No importa de qué región vienen sus credenciales, funcionan en todo el mundo. Para obtener más información, consulte [Administración de AWS STS en una Región de AWS](id_credentials_temp_enable-regions.md).

**Contents**
+ [

## Uso de credenciales temporales en instancias Amazon EC2
](#using-temp-creds-sdk-ec2-instances)
+ [

## Uso de credenciales de seguridad temporales con los SDK de AWS
](#using-temp-creds-sdk)
+ [

## Uso de credenciales de seguridad temporales con AWS CLI
](#using-temp-creds-sdk-cli)
+ [

## Uso de credenciales de seguridad temporales con operaciones de API
](#RequestWithSTS)
+ [

## Más información
](#using-temp-creds-more-info)

## Uso de credenciales temporales en instancias Amazon EC2
<a name="using-temp-creds-sdk-ec2-instances"></a>

Si desea ejecutar código o comandos de AWS CLI en una instancia EC2, la forma recomendada de obtener credenciales es utilizar [roles para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html). Cree un rol de IAM que especifique los permisos que desea conceder a las aplicaciones que se ejecutan en las instancias EC2. Al lanzar la instancia, asocie el rol con la instancia.

Las aplicaciones y los comandos de la AWS CLI y las Tools for Windows PowerShell que se ejecutan en la instancia pueden obtener credenciales de seguridad temporales automáticas desde los metadatos de la instancia. No es necesario obtener explícitamente las credenciales de seguridad temporales. Los SDK de AWS, AWS CLI y Tools for Windows PowerShell obtienen automáticamente las credenciales del servicio de metadatos de instancia de EC2 y las utilizan. Las credenciales temporales tienen los permisos que usted defina para el rol asociado a la instancia.

Para obtener más información y ejemplos, consulte lo siguiente:
+  [Uso de roles de IAM para conceder acceso a recursos de AWS en Amazon Elastic Compute Cloud (EC2)](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) — AWS SDK para Java
+  [Granting Access Using an IAM Role](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) — AWS SDK para .NET 
+  [Crear un rol](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-create-role.html): AWS SDK para Ruby

## Uso de credenciales de seguridad temporales con los SDK de AWS
<a name="using-temp-creds-sdk"></a>

Para utilizar credenciales de seguridad temporales en el código, se llama mediante programación a una API AWS STS similar a `AssumeRole` y se extraen las credenciales y el token de sesión resultantes. A continuación, utilice esos valores como credenciales para las llamadas posteriores a AWS. En el siguiente ejemplo se muestra un pseudocódigo en el que se indica cómo utilizar credenciales de seguridad temporales si utiliza un SDK de AWS:

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
s3Request = CreateAmazonS3Client(tempCredentials);
```

Para ver un ejemplo escrito en Python (usando [AWS SDK para Python (Boto)](https://aws.amazon.com/sdk-for-python/)), consulte [Cambiar a un rol de IAM (API de AWS)](id_roles_use_switch-role-api.md). En este ejemplo se muestra cómo llamar a `AssumeRole` para obtener credenciales de seguridad temporales y, a continuación, utilizar esas credenciales para realizar una llamada a Amazon S3.

Para obtener más información sobre cómo llamar a `AssumeRole`, `GetFederationToken` y otras operaciones de API, consulte la [Referencia de la API de AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/). Para obtener información sobre cómo obtener las credenciales de seguridad temporales y el token de sesión a partir del resultado, consulte la documentación para el SDK con el que esté trabajando. Encontrará la documentación para todos los SDK de AWS en la [página de documentación de AWS](https://aws.amazon.com/documentation) principal, en la sección **SDK y conjuntos de herramientas**.

Debe asegurarse de que obtiene un nuevo conjunto de credenciales antes de que caduquen las antiguas. En algunos SDK, puede utilizar un proveedor que administre en su nombre el proceso de actualización de credenciales; compruebe la documentación del SDK que esté utilizando. 

## Uso de credenciales de seguridad temporales con AWS CLI
<a name="using-temp-creds-sdk-cli"></a>

Puede utilizar las de credenciales de seguridad temporales con AWS CLI. Esto puede resultar útil para probar políticas. 

Mediante la [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/), puede llamar a una [API de AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) como `AssumeRole` o `GetFederationToken` y, a continuación, capturar la salida resultante. En el siguiente ejemplo se muestra una llamada a `AssumeRole` que envía la salida a un archivo. En el ejemplo, se supone que el parámetro `profile` es un perfil en el archivo de configuración de AWS CLI. También se supone que hace referencia a las credenciales de un usuario de IAM que tiene permisos para asumir el rol.

```
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt
```

Cuando el comando está terminado, puede extraer el ID de clave de acceso, clave de acceso secreta y token de sesión del lugar en el que lo haya enrutado. Puede hacerlo manualmente o mediante un script. A continuación, puede asignar estos valores a las variables de entorno. 

Cuando ejecuta comandos AWS CLI, AWS CLI buscará credenciales en un orden determinado, primero en las variables de entorno y, a continuación, en el archivo de configuración. Por lo tanto, cuando haya colocado las credenciales temporales en las variables de entorno, AWS CLI utilizará dicha credenciales de forma predeterminada (Si especifica un parámetro `profile` en el comando, la AWS CLI omite las variables de entorno. En lugar de eso, el AWS CLI busca en el archivo de configuración, que le permite anular las credenciales en las variables de entorno, en el caso de ser necesario). 

En el siguiente ejemplo se muestra cómo puede establecer las variables de entorno para las credenciales de seguridad temporales y, a continuación, llamar a un comando de AWS CLI. Dado que no se incluye el parámetro `profile` en el comando de AWS CLI, AWS CLI busca primero credenciales en las variables de entorno y, de este modo, utiliza las credenciales temporales. 

**Linux**

```
$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
$ aws ec2 describe-instances --region us-west-1
```

**Windows**

```
C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> 
C:\> aws ec2 describe-instances --region us-west-1
```

## Uso de credenciales de seguridad temporales con operaciones de API
<a name="RequestWithSTS"></a>

Si está realizando solicitudes directas de la API HTTPS a AWS, puede firmar dichas solicitudes con las credenciales de seguridad temporales que obtiene del AWS Security Token Service (AWS STS). Para ello, utilice el ID de clave de acceso y la clave de acceso secreta que recibe de AWS STS. Utilice el ID de clave de acceso y la clave de acceso secreta de la misma forma que utilizaría las credenciales a largo plazo para firmar una solicitud. También puede añadir a su solicitud de la API el token de sesión que reciba de AWS STS. Puede añadir el token de sesión a un encabezado HTTP o a un parámetro de cadena de consulta denominado `X-Amz-Security-Token`. Añada el token de sesión al encabezado HTTP *o* al parámetro de cadena de consulta, pero no a ambos. Para obtener más información sobre la firma de las solicitudes de la API HTTPS, consulte [Firma de solicitudes de la API de AWS](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) en la *Referencia general de AWS*.

## Más información
<a name="using-temp-creds-more-info"></a>

Para obtener más información acerca de AWS STS con otros servicios de AWS, consulte los siguientes vínculos:
+ **Amazon S3**. Consulte [Realización de solicitudes con las credenciales temporales de usuario de IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempSessionToken.html) o [Realización de solicitudes con credenciales temporales de usuario federado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempFederationToken.html) en la *Guía del usuario de Amazon Simple Storage Service*.
+ **de Amazon SNS**. Consulte [Uso de políticas basadas en identidades con Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#UsingTemporarySecurityCredentials_SNS) en la *Guía para desarrolladores de Amazon Simple Queue Service*.
+ **Amazon SQS**. Consulte [Administración de identidades y acceso en Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html#UsingTemporarySecurityCredentials_SQS) en la *Guía para desarrolladores de Amazon Simple Queue Service*.
+ **Amazon SimpleDB**. Consulte [Utilizar credenciales de seguridad temporales](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?UsingTemporarySecurityCredentials_SDB.html) en la *Guía para desarrolladores de Amazon SimpleDB*.

# Permisos para credenciales de seguridad temporales
<a name="id_credentials_temp_control-access"></a>

Puede utilizar AWS Security Token Service (AWS STS) para crear credenciales de seguridad temporales que pueden controlar el acceso a sus recursos de AWS y proporcionárselas a usuarios de confianza. Para obtener más información acerca de AWS STS, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md). Las credenciales de seguridad temporales que emite AWS STS son válidas durante el periodo de vencimiento y no se pueden revocar. Sin embargo, los permisos asignados a credenciales de seguridad temporales se evalúan cada vez que una solicitud utiliza las credenciales, por lo que puede conseguir el efecto de revocar las credenciales cambiando sus permisos de acceso incluso después de que se hayan emitido. 

En los siguientes temas se presupone que tiene experiencia trabajando con permisos y políticas de AWS. Para obtener más información sobre estos temas, consulte [Recursos de AWS para administración de acceso](access.md). 

**Topics**
+ [

# Permisos de AssumeRole, AssumeRoleWithSAML y AssumeRoleWithWebIdentity
](id_credentials_temp_control-access_assumerole.md)
+ [

# Monitorear y controlar las acciones realizadas con roles asumidos
](id_credentials_temp_control-access_monitor.md)
+ [

# Permisos para GetFederationToken
](id_credentials_temp_control-access_getfederationtoken.md)
+ [

# Permisos para GetSessionToken
](id_credentials_temp_control-access_getsessiontoken.md)
+ [

# Deshabilitar permisos para credenciales de seguridad temporales
](id_credentials_temp_control-access_disable-perms.md)
+ [

# Concesión de permisos para crear credenciales de seguridad temporales
](id_credentials_temp_control-access_enable-create.md)
+ [

# Concesión de permisos para usar sesiones de consola con identidad mejorada
](id_credentials_temp_control-access_sts-setcontext.md)

# Permisos de AssumeRole, AssumeRoleWithSAML y AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_assumerole"></a>

La política de permisos del rol que se asume determina los permisos de las credenciales de seguridad temporales devueltas por `AssumeRole`, `AssumeRoleWithSAML` y `AssumeRoleWithWebIdentity`. Defina estos permisos al crear o actualizar el rol. 

De forma opcional, puede pasar [políticas de sesión](access_policies.md#policies_session) administradas o insertadas como parámetros de las operaciones de API `AssumeRole`, `AssumeRoleWithSAML` o `AssumeRoleWithWebIdentity`. Las políticas de sesión limitan los permisos para la sesión de credenciales temporales de la función. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades de la función y las políticas de la sesión. Puede utilizar las credenciales temporales del rol en llamadas posteriores a la API de AWS para tener acceso a los recursos de la cuenta propietaria del rol. No puede utilizar las políticas de sesión para conceder más permisos que los permitidos por la política basada en identidades de la función que se asume. Para obtener más información sobre cómo determina AWS los permisos efectivos de un rol, consulte [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md).

![\[PermissionsWhenPassingRoles_Diagram\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


`AssumeRole` no evalúa las políticas asociadas a las credenciales con las que se hizo la llamada original a AWS para tomar la decisión de autorización "permitir" o "denegar". El usuario abandona temporalmente sus permisos originales en favor de los permisos asignados al rol asumido. En el caso de las operaciones de API `AssumeRoleWithSAML` y `AssumeRoleWithWebIdentity`, no existen políticas que evaluar, porque el intermediario de la API no es una identidad de AWS.

## Ejemplo: asignación de permisos utilizando AssumeRole
<a name="permissions-assume-role-example"></a>

Puede utilizar la operación de API `AssumeRole` con diferentes tipos de políticas. A continuación se ofrecen algunos ejemplos.

### Política de permisos del rol
<a name="permissions-assume-role-example-role-access-policy"></a>

En este ejemplo, se llama a la operación de API `AssumeRole` sin especificar la política de sesión en el parámetro opcional `Policy`. Los permisos asignados a las credenciales temporales vienen determinados por la política de permisos del rol que se asume. En el ejemplo siguiente, la política de permisos concede el permiso de rol para enumerar todos los objetos contenidos en un bucket de S3 denominado `productionapp`. También permite al rol obtener, agregar y eliminar objetos en ese bucket.

**Example Ejemplo de política de permisos del rol**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Política de sesión pasada como parámetro
<a name="permissions-assume-role-example-passed-policy"></a>

Imagine que desea permitir a un usuario asumir el mismo rol que en el ejemplo anterior. Sin embargo, en este caso desea que la sesión del rol solo tenga permiso para obtener y colocar objetos en el bucket de S3 `productionapp`. No desea permitirle eliminar objetos. Una forma de conseguirlo es crear un nuevo rol y especificar los permisos deseados en su política de permisos. Otra forma de conseguirlo consiste en llamar a la API `AssumeRole` e incluir políticas de sesión en el parámetro opcional `Policy` como parte de la llamada a la operación de API. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades del rol y las políticas de la sesión. Las políticas de sesión no se pueden utilizar para conceder más permisos que los permitidos por la política basada en identidades del rol que se asume. Para obtener más información sobre los permisos de sesión de un rol, consulte [Políticas de sesión](access_policies.md#policies_session). 

Después de recuperar las credenciales temporales de la nueva sesión, puede pasarlas al usuario que desea que tenga esos permisos.

Por ejemplo, imagine que las siguientes políticas se transfieren como parámetro de la llamada a la API. La persona que ha iniciado la sesión solo tiene permisos para ejecutar las acciones siguientes: 
+ Realizar una lista de todos los objetos del bucket `productionapp`.
+ Obtener y colocar objetos en el bucket `productionapp`.

Con la política de sesión siguiente, el permiso `s3:DeleteObject` se descarta y en la sesión no se concede el permiso `s3:DeleteObject`. La política establece los permisos máximos para la sesión del rol, anulando todas las políticas de permisos que tuviera el rol.

**Example Ejemplo de política de sesión pasada con la llamada a la API `AssumeRole`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Política basada en recursos
<a name="permissions-assume-role-example-resource-based-policy"></a>

Algunos recursos de AWS admiten políticas basadas en recursos y dichas políticas proporcionan otro mecanismo para definir los permisos que afectan directamente a las credenciales de seguridad temporales. Solo unos pocos recursos, como buckets de Amazon S3, temas de Amazon SNS y colas de Amazon SQS admiten políticas basadas en recursos. El siguiente ejemplo amplía los ejemplos anteriores y utiliza un bucket de S3 denominado `productionapp`. La política siguiente se asocia al bucket. 

Al adjuntar la siguiente política basada en recursos al bucket `productionapp`, se deniega a *todos* los usuarios el permiso para eliminar objetos del bucket. (Consulte el elemento `Principal` en la política). Esto incluye todos los usuarios con el rol asumido, aunque la política de permisos de rol conceda el permiso `DeleteObject`. Una instrucción `Deny` explícita siempre prevalece sobre una instrucción `Allow`.

**Example Ejemplo de política de bucket**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": {"AWS": "*"},
    "Effect": "Deny",
    "Action": "s3:DeleteObject",
    "Resource": "arn:aws:s3:::productionapp/*"
  }
}
```

Para obtener más información sobre el modo en que AWS combina y evalúa varios tipos de políticas, consulte [Lógica de evaluación de políticas](reference_policies_evaluation-logic.md).

# Monitorear y controlar las acciones realizadas con roles asumidos
<a name="id_credentials_temp_control-access_monitor"></a>

Un [rol de IAM](id_roles.md) es un objeto en IAM que está asignado a [permisos](access_policies.md). Cuando usted [asume ese rol](id_roles_manage-assume.md) utilizando una identidad de IAM o una identidad de fuera de AWS, recibirá una sesión con los permisos que se asignan al rol. 

Cuando lleva a cabo acciones en AWS, la información sobre su sesión se puede registrar en AWS CloudTrail para que el administrador de la cuenta la supervise. Los administradores pueden configurar roles para requerir que las identidades pasen una cadena personalizada que identifique a la persona o aplicación que está realizando acciones en AWS. Esta información de identidad se almacena como *Identidad de origen* en AWS CloudTrail. Cuando el administrador revisa la actividad en CloudTrail, puede ver la información de la identidad de origen para determinar quién o qué realizó acciones con las sesiones de rol asumidas.

Después de establecer una identidad de origen, está presente en las solicitudes de cualquier acción de AWS realizada durante la sesión de rol. El valor que se establece persiste cuando se utiliza un rol para asumir otro rol a través de AWS CLI o API de AWS, conocida como [encadenamiento de roles](id_roles.md#iam-term-role-chaining). El valor que se establece no se puede cambiar durante la sesión de rol. Los administradores pueden configurar permisos pormenorizados basados en la presencia o el valor de la identidad de origen para controlar aún más las acciones de AWS que se realizan con roles compartidos. Puede decidir si se puede utilizar el atributo de identidad de origen, si es necesario y qué valor se puede utilizar.



La forma en que utiliza la identidad de origen difiere del nombre de sesión de rol y las etiquetas de sesión de forma importante. El valor de identidad de origen no se puede cambiar una vez establecido y persiste para cualquier acción adicional que se realice con la sesión de rol. A continuación se muestra cómo puede utilizar las etiquetas de sesión y el nombre de la sesión de rol: 
+ **Etiquetas de sesión** - Puede pasar etiquetas de sesión al asumir un rol o federar un usuario. Las etiquetas de sesión están presentes cuando se asume un rol. Puede definir políticas que utilicen claves de condición de etiqueta para conceder permisos a sus entidades principales en función de sus etiquetas. Luego puede utilizar CloudTrail para ver las solicitudes realizadas para asumir roles o federar usuarios. Para obtener más información sobre las etiquetas de sesión, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).
+ **Nombre de la sesión de rol** – Puede utilizar la clave de condición `sts:RoleSessionName` en una política de confianza de rol para exigir que los usuarios proporcionen un nombre de sesión específico cuando asuman un rol. El nombre de sesión de rol se puede utilizar para diferenciar sesiones de rol cuando un rol es utilizado por diferentes entidades principales. Para obtener más información sobre el nombre de la sesión de rol, consulte [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Le recomendamos que utilice la identidad de origen cuando desee controlar la identidad que asume un rol. La identidad de origen también es útil para extraer registros de CloudTrail para determinar quién utilizó el rol para realizar acciones. 

**Topics**
+ [

## Configuración para utilizar la identidad de origen
](#id_credentials_temp_control-access_monitor-setup)
+ [

## Cosas que debe saber sobre la identidad de origen
](#id_credentials_temp_control-access_monitor-know)
+ [

## Permisos necesarios para establecer la identidad de origen
](#id_credentials_temp_control-access_monitor-perms)
+ [

## Especificar una identidad de origen al asumir un rol
](#id_credentials_temp_control-access_monitor-specify-sourceid)
+ [

## Utilizar la identidad de origen con AssumeRole
](#id_credentials_temp_control-access_monitor-assume-role)
+ [

## Utilizar la identidad de origen con AssumeRoleWithSAML
](#id_credentials_temp_control-access_monitor-assume-role-saml)
+ [

## Utilizar la identidad de origen con AssumeRoleWithWebIdentity
](#id_credentials_temp_control-access_monitor-assume-role-web-id)
+ [

## Controlar el acceso mediante información de identidad de origen
](#id_credentials_temp_control-access_monitor-control-access)
+ [

## Visualización de identidad de origen en CloudTrail
](#id_credentials_temp_control-access_monitor-ct)

## Configuración para utilizar la identidad de origen
<a name="id_credentials_temp_control-access_monitor-setup"></a>

La forma en que se configura para utilizar la identidad de origen depende del método utilizado cuando se asumen los roles. Por ejemplo, los usuarios de IAM pueden asumir roles directamente mediante la operación `AssumeRole`. Si tiene identidades empresariales, también conocidas como identidades de personal, es posible que accedan a sus recursos de AWS utilizando `AssumeRoleWithSAML`. Si los usuarios finales acceden a sus aplicaciones móviles o web, es posible que lo hagan mediante `AssumeRoleWithWebIdentity`. A continuación se ofrece información general del flujo de trabajo de alto nivel para poder comprender cómo puede configurar la utilización de la información de identidad de origen en su entorno existente.

1. **Configurar usuarios y roles de prueba** - Mediante un entorno de preproducción, configure los usuarios y roles de prueba y configure sus políticas para permitir establecer una identidad de origen.

   Si utiliza un proveedor de identidades (IdP) para sus identidades federadas, configure su IdP para que pase un atributo de usuario de su elección para la identidad de origen en la aserción o el token.

1. **Asuma el rol** — Pruebe asumir roles y pasar una identidad de origen con los usuarios y roles que configuró para la prueba.

1. **Revisión de CloudTrail** – Revise la información de identidad de origen para sus roles de prueba en los registros de CloudTrail.

1. **Forme a sus usuarios** – Después de haber probado en su entorno de preproducción, asegúrese de que sus usuarios sepan cómo transmitir la información de identidad de origen, si es necesario. Establezca una fecha límite para cuándo requerirá a los usuarios que proporcionen una identidad de origen en su entorno de producción.

1. **Configuración de políticas de producción** – Configure las políticas para su entorno de producción y, a continuación, agréguelas a los usuarios y roles de producción.

1. **Monitoreo de actividad** – Monitoree la actividad de su rol de producción mediante los registros de CloudTrail.

## Cosas que debe saber sobre la identidad de origen
<a name="id_credentials_temp_control-access_monitor-know"></a>

Tenga en cuenta lo siguiente cuando trabaje con identidad de origen.
+ Las políticas de confianza de roles para todos los roles conectados a un proveedor de identidades (IdP) deben tener el permiso `sts:SetSourceIdentity`. En el caso de los roles que no tienen este permiso en la política de confianza de rol, la operación `AssumeRole*` producirá un error. Si no desea actualizar la política de confianza de rol para cada rol, puede utilizar una instancia de proveedor de identidades independiente para pasar la identidad de origen. A continuación, agregue el permiso `sts:SetSourceIdentity` solo a los roles que están conectados al proveedor de identidades independiente.
+ Cuando una identidad establece una identidad de origen, la clave `sts:SourceIdentity` está presente en la solicitud. Para las acciones posteriores realizadas durante la sesión de rol, la clave `aws:SourceIdentity` está presente en la solicitud. AWS no controla el valor de la identidad de origen en claves `sts:SourceIdentity` o `aws:SourceIdentity`. Si decide requerir una identidad de origen, debe elegir un atributo que desea que proporcionen sus usuarios o IdP. Por motivos de seguridad, debe asegurarse de que puede controlar cómo se proporcionan esos valores.
+ El valor de la identidad de origen debe tener entre 2 y 64 caracteres, solo puede contener caracteres alfanuméricos, guiones bajos y los siguientes caracteres: **. , \$1 = @ -** (guion). No puede utilizar un valor que comience con el texto **aws:**. Este prefijo se reserva para uso interno de AWS.
+ La información de la identidad de origen no es capturada por CloudTrail cuando un servicio o rol vinculado a un servicio de AWS realiza una acción en nombre de una identidad federada o del personal. 

**importante**  
No puede cambiar a un rol en Consola de administración de AWS que requiera que se establezca una identidad de origen cuando se asume el rol. Para asumir tal rol, puede utilizar el AWS CLI o API de AWS para llamar a la operación `AssumeRole` y especifique el parámetro de identidad de origen.

## Permisos necesarios para establecer la identidad de origen
<a name="id_credentials_temp_control-access_monitor-perms"></a>

Además de la acción que coincide con la operación de la API, debe tener la siguiente acción de solo permisos en la política: 

```
sts:SetSourceIdentity
```
+ Para especificar una identidad de origen, las entidades principales (usuarios y roles de IAM) deben tener permisos para `sts:SetSourceIdentity`. Como administrador, puede configurarlo en la política de confianza de rol y en la política de permisos de seguridad de la entidad principal.
+ Cuando asume un rol con otro rol, llamado [encadenamiento de roles](id_roles.md#iam-term-role-chaining), se requieren permisos para `sts:SetSourceIdentity` tanto en la política de permisos de la entidad principal que está asumiendo el rol como en la política de confianza de rol del rol de destino. De lo contrario, la operación de rol asumido no se llevará a cabo correctamente.
+ Cuando se utiliza la identidad de origen, las políticas de confianza de roles para todos los roles conectados a un proveedor de identidades (IdP) deben tener el permiso `sts:SetSourceIdentity`. La operación `AssumeRole*` producirá un error para cualquier rol conectado a un IdP sin este permiso. Si no desea actualizar la política de confianza de rol para cada rol, puede utilizar una instancia de proveedor de identidades independiente para pasar la identidad de origen y agregar el permiso de `sts:SetSourceIdentity` solamente a los roles que están conectados al IdP separado.
+ Para establecer una identidad de origen a través de los límites de la cuenta, debe incluir el permiso de `sts:SetSourceIdentity` en dos lugares. Debe estar en la política de permisos de la entidad principal en la cuenta de origen y en la política de confianza de rol del rol en la cuenta de destino. Es posible que tenga que hacer esto, por ejemplo, cuando se usa un rol para asumir un rol en otra cuenta con [encadenamiento de roles](id_roles.md#iam-term-role-chaining).

Como administrador de la cuenta, imagine que desea permitir que el usuario de IAM `DevUser` en su cuenta para que asuma el `Developer_Role` en la misma cuenta. Pero desea permitir esta acción solo si el usuario ha establecido la identidad de origen en su nombre de usuario de IAM. Puede asignar la siguiente política al usuario IAM.

**Example Ejemplos de política basada en identidades adjunta a DevUser**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role"
    },
    {
      "Sid": "SetAwsUserNameAsSourceIdentity",
      "Effect": "Allow",
      "Action": "sts:SetSourceIdentity",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role",
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": "${aws:username}"
        }
      }
    }
  ]
}
```

Para aplicar los valores de identidad de origen aceptables, puede configurar la siguiente política de confianza de rol. La política proporciona al usuario de IAM permisos de `DevUser` para asumir el rol y establecer una identidad de origen. La clave de condición `sts:SourceIdentity` define el valor de identidad de origen aceptable.

**Example Ejemplo de política de confianza de rol para identidad de origen**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevUserAssumeRole",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/DevUser"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "sts:SourceIdentity": "DevUser"
        }
      }
    }
  ]
}
```

------

Al utilizar las credenciales para el usuario de IAM de `DevUser`, el usuario intenta asumir el `DeveloperRole` utilizando la siguiente solicitud AWS CLI.

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Developer_Role \
--role-session-name Dev-project \ 
--source-identity DevUser \
```

Cuando AWS evalúa la solicitud, el contexto de la solicitud contiene el `sts:SourceIdentity` de `DevUser`.

## Especificar una identidad de origen al asumir un rol
<a name="id_credentials_temp_control-access_monitor-specify-sourceid"></a>

Puede especificar una identidad de origen cuando utilice uno de las operaciones AWS STS API de `AssumeRole*` para obtener credenciales de seguridad temporales de un rol. La operación API que utilice difiere en función de su caso de uso. Por ejemplo, si utiliza roles de IAM para dar a los usuarios de IAM acceso a los recursos AWS que normalmente no tienen acceso, puede utilizar la operación de `AssumeRole`. Si utiliza la federación de identidades de empresa para administrar los usuarios del personal, puede utilizar la operación de `AssumeRoleWithSAML`. Si utiliza la federación de OIDC para permitir que los usuarios finales accedan a sus aplicaciones móviles o Web, puede utilizar la operación de `AssumeRoleWithWebIdentity`. En las secciones siguientes se explica cómo utilizar la identidad de origen con cada operación. Para obtener más información sobre los escenarios comunes de las credenciales temporales, consulte [Escenarios habituales en las credenciales temporales](id_credentials_temp.md#sts-introduction).

## Utilizar la identidad de origen con AssumeRole
<a name="id_credentials_temp_control-access_monitor-assume-role"></a>

La operación `AssumeRole` devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Puede utilizar credenciales de usuario de IAM o credenciales de rol para llamar a `AssumeRole`. Para pasar identidad de origen mientras asume un rol, utilice la opción `-–source-identity` de AWS CLI o el parámetro `SourceIdentity` de la API de AWS. En el siguiente ejemplo, se muestra cómo especificar la identidad de origen con la herramienta de AWS CLI.

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/developer \
--role-session-name Audit \ 
--source-identity Admin \
```

## Utilizar la identidad de origen con AssumeRoleWithSAML
<a name="id_credentials_temp_control-access_monitor-assume-role-saml"></a>

La entidad principal de llamada a la operación `AssumeRoleWithSAML` se autentica mediante la federación basada en SAML. Esta operación devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Para obtener más información acerca del uso de la federación basada en SAML para el acceso a la Consola de administración de AWS, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md). Para obtener información detallada sobre el acceso a la API de AWS CLI o AWS, consulte [Federación SAML 2.0](id_roles_providers_saml.md). Para obtener un tutorial sobre cómo configurar la federación de SAML para los usuarios de Active Directory, consulte [autenticación federada Active Directory Federation Services (ADFS) de AWS](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) en el blog de seguridad de AWS. 

Como administrador, puede permitir que los miembros del directorio de su empresa se federen en AWS mediante la operación AWS STS `AssumeRoleWithSAML`. Para ello, debe completar las siguientes tareas:

1. [Configurar un proveedor SAML en su organización](id_roles_providers_saml_3rd-party.md).

1. [Crear un proveedor SAML en IAM](id_roles_providers_create_saml.md).

1. [Configure un rol y sus permisos en AWS para las entidades principales federadas de SAML](id_roles_create_for-idp_saml.md).

1. [Finalice la configuración del proveedor de identidad SAML y cree aserciones para la respuesta de autenticación SAML](id_roles_providers_create_saml_assertions.md).

Para establecer un atributo SAML para la identidad de origen, incluya el elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Utilice el elemento `AttributeValue` para especificar el valor de la identidad de origen. Por ejemplo, suponga que desea pasar los siguientes atributos de identidad como la identidad de origen. 

`SourceIdentity:DiegoRamirez`

Para pasar este atributo, incluya el siguiente elemento en su aserción de SAML.

**Example Ejemplo de fragmento de una aserción de SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
<AttributeValue>DiegoRamirez</AttributeValue>
</Attribute>
```

## Utilizar la identidad de origen con AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_monitor-assume-role-web-id"></a>

La entidad principal que llama a la operación `AssumeRoleWithWebIdentity` se autentica mediante la federación compatible con OpenID Connect (OIDC). Esta operación devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Para obtener más información acerca del uso de la federación de OIDC para el acceso a la Consola de administración de AWS, consulte [Federación OIDC](id_roles_providers_oidc.md).

Para pasar la identidad de origen desde OpenID Connect (OIDC), debe incluir la identidad de origen en el Token Web JSON (JWT). Incluya identidad de origen en el espacio de nombres `[https://aws.amazon.com/](https://aws.amazon.com/)source_identity` en el token cuando envíe la solicitud `AssumeRoleWithWebIdentity`. Para obtener más información sobre los tokens y las notificaciones de OIDC, consulte [Uso de tokens con grupos de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) en la *Guía para desarrolladores de Amazon Cognito*.

Por ejemplo, el siguiente JWT descodificado es un token que se utiliza para llamar a `AssumeRoleWithWebIdentity` con la identidad de origen de `Admin`.

**Example Ejemplo de token web JSON decodificado**  

```
{
    "sub": "john",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/source_identity":"Admin"
}
```

## Controlar el acceso mediante información de identidad de origen
<a name="id_credentials_temp_control-access_monitor-control-access"></a>

Cuando se establece inicialmente una identidad de origen, la clave [sts:SourceIdentity](reference_policies_iam-condition-keys.md#ck_sourceidentity) está presente en la solicitud. Después de establecer una identidad de origen, la clave [AWS:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) está presente en todas las solicitudes posteriores realizadas durante la sesión de rol. Como administrador, puede escribir políticas que otorguen autorización condicional para realizar acciones de AWS basadas en la existencia o el valor del atributo de identidad de origen.

Imagine que desea exigirle a sus desarrolladores que establezcan una identidad de origen para que asuman un rol crítico que tenga permiso para escribir en un recurso de producción crítico de AWS. Imagínese también que concede acceso de AWS a las identidades de su personal mediante `AssumeRoleWithSAML`. Solo desea que los desarrolladores sénior Saanvi y Diego tengan acceso al rol, de modo que cree la siguiente política de confianza para el rol.

**Example Ejemplo de política de confianza de rol para identidad de origen (SAML)**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "SAMLProviderAssumeRoleWithSAML",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:AssumeRoleWithSAML"
      ],
      "Condition": {
        "StringEquals": {
          "SAML:aud": "https://signin.aws.amazon.com/saml"
        }
      }
    },
    {
      "Sid": "SetSourceIdentitySrEngs",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

La política de confianza contiene una condición para `sts:SourceIdentity` que requiere una identidad de origen de Saanvi o Diego a fin de asumir el rol crítico.

Alternativamente, si utiliza un proveedor OIDC para la federación y los usuarios se autentican con `AssumeRoleWithWebIdentity`, su política de confianza de rol podría tener el siguiente aspecto.

**Example Ejemplo de política de confianza de rol para identidad de origen (proveedor OIDC)**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:oidc-provider/server.example.com"
      },
      "Action": [
        "sts:AssumeRoleWithWebIdentity",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "server.example.com:aud": "oidc-audience-id"
        },
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

### Encadenamiento de funciones y requisitos de cuentas cruzadas
<a name="id_credentials_temp_control-access_monitor-chain"></a>

Imagine que desea permitir a los usuarios que han asumido `CriticalRole` que asuman una `CriticalRole_2` en otra cuenta. Las credenciales de sesión de rol que se obtuvieron para asumir `CriticalRole` se utilizan para [encadenamiento de roles](id_roles.md#iam-term-role-chaining) a un segundo rol, `CriticalRole_2`, en una cuenta de diferente. El rol se asume a través de un límite de cuenta. Por lo tanto, el permio `sts:SetSourceIdentity` debe concederse tanto en la política de permisos en `CriticalRole` como en la política de confianza de rol en `CriticalRole_2`.

**Example Ejemplo de política de permisos en CriticalRole**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRoleAndSetSourceIdentity",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Resource": "arn:aws:iam::222222222222:role/CriticalRole_2"
    }
  ]
}
```

------

Para proteger la identidad de origen de configuración a través del límite de la cuenta, la siguiente política de confianza de rol confía solo en la entidad principal de rol de `CriticalRole` para establecer la identidad de origen.

**Example Ejemplo de política de confianza de rol en CriticalRole\$12**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:role/CriticalRole"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": ["Saanvi","Diego"]
        }
      }
    }
  ]
}
```

------

El usuario realiza la siguiente llamada utilizando las credenciales de sesión de rol obtenidas al asumir CriticalRole. La identidad de origen se estableció durante el supuesto de CriticalRole, por lo que no necesita configurarse explícitamente de nuevo. Si el usuario intenta establecer una identidad de origen diferente del valor establecido cuando se asumió `CriticalRole`, se denegará la solicitud de rol de asunción.

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \ 
--role-arn arn:aws:iam::222222222222:role/CriticalRole_2 \
--role-session-name Audit \
```

Cuando la entidad principal de llamada asume el rol, la identidad de origen en la solicitud persiste desde la primera sesión de rol asumida. En consecuencia, tanto `aws:SourceIdentity` como `sts:SourceIdentity` están presentes en el contexto de la solicitud.

## Visualización de identidad de origen en CloudTrail
<a name="id_credentials_temp_control-access_monitor-ct"></a>

Usted puede utilizar CloudTrail para ver las solicitudes realizadas para asumir roles o federar usuarios. También puede ver las solicitudes de rol o usuario para realizar acciones en AWS. El archivo de registro de CloudTrail incluye información sobre la configuración de identidad de origen para la sesión de usuario federado o de rol asumido. Para obtener más información, consulte [Registro de llamadas a IAM y a la API de AWS STS con AWS CloudTrail](cloudtrail-integration.md)

Por ejemplo, suponga que un usuario hace una solicitud AWS STS `AssumeRole`, y configura una identidad de origen. Puede encontrar la información `sourceIdentity` en la clave `requestParameters` de su sesión de CloudTrail.

**Example Ejemplo de sección requestParameters en una sesión AWS CloudTrail**  

```
"eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AIDAJ45Q7YFFAREXAMPLE",
        "accountId": "111122223333"
    },
    "eventTime": "2020-04-02T18:20:53Z",
    "eventSource": "sts.amazonaws.com",
    "eventName": "AssumeRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "203.0.113.64",
    "userAgent": "aws-cli/1.16.96 Python/3.6.0 Windows/10 botocore/1.12.86",
    "requestParameters": {
        "roleArn": "arn:aws:iam::123456789012:role/DevRole",
        "roleSessionName": "Dev1",
        "sourceIdentity": "source-identity-value-set"
    }
```

Si el usuario utiliza la sesión de rol asumida para realizar una acción, la información de identidad de origen está presente en la clave `userIdentity` en la sesión de CloudTrail.

**Example Ejemplo de clave userIdentity en una sesión AWS CloudTrail**  

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAJ45Q7YFFAREXAMPLE:Dev1",
    "arn": "arn:aws:sts::123456789012:assumed-role/DevRole/Dev1",
    "accountId": "123456789012",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAJ45Q7YFFAREXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/DevRole",
        "accountId": "123456789012",
        "userName": "DevRole"
      },
      "webIdFederationData": {},
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2021-02-21T23:46:28Z"
      },
      "sourceIdentity": "source-identity-value-present"
    }
  }
}
```

Para ver el ejemplo de eventos de API AWS STS en las sesiones de CloudTrail, consulte [Ejemplo de eventos API de IAM en el registro de CloudTrail](cloudtrail-integration.md#cloudtrail-integration_examples-iam-api). Para obtener más información sobre la información incluida en los archivos de sesión de CloudTrail, consulte [Referencia de eventos de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) en la *Guía del usuario de AWS CloudTrail*.

# Permisos para GetFederationToken
<a name="id_credentials_temp_control-access_getfederationtoken"></a>

Un usuario de IAM llama a la operación `GetFederationToken` y devuelve credenciales temporales para ese usuario. Esta operación *federa* al usuario. Los permisos asignados a una sesión de usuario federado de AWS STS se definen en uno de los siguientes dos lugares: 
+ Las políticas de sesión que se pasan como parámetro en la llamada a la API `GetFederationToken`. (Este es el caso más frecuente).
+ Una política basada en recursos que nombra explícitamente la sesión de usuario federado de AWS STS en el elemento `Principal` de la política. (Este es el caso menos frecuente).

Las políticas de sesión son políticas avanzadas que se pasan como parámetros cuando se crea una sesión temporal mediante programación. Al crear una sesión de usuario federado de AWS STS y transmitir políticas de sesión, los permisos de la sesión resultante son la intersección entre la política basada en identidades del usuario y las políticas de sesión. No puede utilizar la política de sesión para conceder más permisos que los permitidos por la política basada en identidades del usuario que se federa.

En la mayoría de los casos, si no transfiere una política con la llamada a la API `GetFederationToken`, las credenciales de seguridad temporales obtenidas no tendrán permisos. Sin embargo, una política basada en recursos puede proporcionar permisos adicionales para la sesión. Puede acceder a un recurso con una política basada en recursos que especifica la sesión como el principal permitido. 

Las figuras siguientes muestran una representación visual de cómo las políticas interactúan para determinar los permisos de las credenciales de seguridad temporales devueltos por una llamada a `GetFederationToken`.

![\[Usuario de IAM: las siguientes ilustraciones muestran marcas de verificación para indicar que los permisos de sesión son la intersección entre la política basada en identidades del usuario y las políticas de sesión. Los permisos de sesión también pueden ser la intersección de las políticas basadas en identidades del usuario y las políticas basadas en recursos.\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/getfederationtoken-permissions.diagram.png)


## Ejemplo: asignación de permisos con GetFederationToken
<a name="permissions-get-federation-token-example"></a>

Puede utilizar la acción de la API `GetFederationToken` con diferentes tipos de políticas. A continuación se ofrecen algunos ejemplos.

### Política asociada al usuario de IAM
<a name="permissions-get-federation-token-example-iam-user"></a>

En este ejemplo, tiene una aplicación cliente basada en navegador que se utiliza dos servicios web de backend. Un servicio de backend es su propio servidor de autenticación, que utiliza su propio sistema de identidad para autenticar la aplicación de cliente. El otro servicio de backend es un servicio de AWS que proporciona algunas de las funcionalidades de la aplicación cliente. Su servidor autentica la aplicación cliente y crea o recupera la política de permisos correspondiente. A continuación, llama a la API `GetFederationToken` para obtener credenciales de seguridad temporales y devuelve dichas credenciales a la aplicación cliente. Esta puede realizar solicitudes directamente al servicio de AWS con las credenciales de seguridad temporales. Esta arquitectura permite a la aplicación cliente realizar solicitudes de AWS sin integrar credenciales de AWS a largo plazo.

El servidor de autenticación llama a la API de `GetFederationToken` con las credenciales de seguridad a largo plazo de un usuario IAM llamado `token-app`. Sin embargo, las credenciales de usuario de IAM a largo plazo permanecen en el servidor y nunca se distribuyen al cliente. La siguiente política de ejemplo se asocia al usuario de IAM `token-app` y define el conjunto más amplio de permisos que necesitarán los usuarios federados de AWS STS (clientes). Tenga en cuenta que se requiere el permiso `sts:GetFederationToken` para que el servicio de autenticación obtenga credenciales de seguridad temporales para los usuarios federados de AWS STS.

**Example Ejemplo de política asociada al usuario de IAM `token-app` que llama a `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "dynamodb:ListTables",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sqs:ReceiveMessage",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sns:ListSubscriptions",
      "Resource": "*"
    }
  ]
}
```

La política anterior concede varios permisos al usuario de IAM. Sin embargo, esta política por sí sola no concede ningún permiso al usuario federado de AWS STS. Si este usuario de IAM llama a `GetFederationToken` y no transfiere una política como parámetro de la llamada a la API, el usuario federado de AWS STS obtenido no tendrá permisos efectivos. 

### Política de sesión pasada como parámetro
<a name="permissions-get-federation-token-example-passed-policy"></a>

La manera más habitual de asegurarse de que al usuario federado de AWS STS se le asignen los permisos adecuados es incluir políticas de sesión en la llamada a la API `GetFederationToken`. Profundizando en el ejemplo anterior, supongamos que `GetFederationToken` se llama con las credenciales del usuario de IAM `token-app`. Entonces, imagine que las siguientes políticas de sesión se transfieren como parámetro de la llamada a la API. El usuario federado de AWS STS resultante tiene permiso para enumerar el contenido del bucket de Amazon S3 denominado `productionapp`. El usuario no puede realizar las acciones de Amazon S3 `GetObject`, `PutObject`, y `DeleteObject` en elementos del bucket `productionapp`.

Estos permisos se asignan al usuario federado porque son la intersección de las políticas del usuario de IAM y las políticas de la sesión que transfiere.

El usuario federado de AWS STS no pudo realizar acciones en Amazon SNS, Amazon SQS, Amazon DynamoDB ni en ningún bucket de S3, excepto en `productionapp`. Estas acciones se deniegan a pesar de que el usuario de IAM asociado a la llamada a `GetFederationToken` cuenta con los permisos correspondientes.

**Example Ejemplo de política de sesión transferida como parámetro de la llamada a la API `GetFederationToken`.**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}
```

### Políticas basadas en recursos
<a name="permissions-get-federation-token-resource-based-policy"></a>

Algunos recursos de AWS permiten el uso de políticas basadas en recursos, las cuales ofrecen un mecanismo adicional para conceder permisos directamente a un usuario federado de AWS STS. Solo algunos servicios de AWS admiten políticas basadas en recursos. Por ejemplo, Amazon S3 tiene buckets, Amazon SNS tiene temas y Amazon SQS tiene colas a las que puede asociar políticas. Para obtener una lista de todos los servicios que admiten políticas basadas en recursos, consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) y observe la columna de políticas basadas en recursos de las tablas. Puede utilizar políticas basadas en recursos para asignar permisos directamente a un usuario federado de AWS STS. Para ello, debe especificar el Nombre de recurso de Amazon (ARN) del usuario federado de AWS STS en el elemento `Principal` de la política basada en recursos. El siguiente ejemplo ilustra esto y amplía los ejemplos anteriores, utilizando un bucket de S3 denominado `productionapp`. 

La política basada en recursos siguiente se asocia al bucket. Esta política del bucket permite a una usuaria federada de AWS STS llamada Carol obtener acceso al bucket. Cuando la política de ejemplo descrita anteriormente se asocia al usuario de IAM `token-app`, la usuaria federada de AWS STS, llamada Carol, tiene permiso para realizar las acciones `s3:GetObject`, `s3:PutObject` y `s3:DeleteObject` en el bucket denominado `productionapp`. Esto es válido incluso cuando no se pasa ninguna política de sesión como parámetro en la llamada a la API `GetFederationToken`. En este caso, la explicación radica en que la siguiente política basada en recursos ha concedido permisos explícitos a la usuaria federada de AWS STS denominada Carol. 

Recuerde, solo se conceden permisos a un usuario federado de AWS STS cuando estos se conceden de forma explícita tanto al usuario de IAM ***como*** al usuario federado de AWS STS. También se pueden conceder (dentro de la cuenta) mediante una política basada en recursos que nombre explícitamente al usuario federado de AWS STS en el elemento `Principal` de la política, como en el siguiente ejemplo.

**Example Ejemplo de política de bucket que permite el acceso a un usuario federado**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Principal": {
            "AWS": "arn:aws:sts::111122223333:federated-user/Carol"
        },
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::productionapp/*"
        ]
    }
}
```

Para obtener más información sobre cómo se evalúan las políticas, consulte [Policy evaluation logic](reference_policies_evaluation-logic.md) (Lógica de evaluación de las políticas).

# Permisos para GetSessionToken
<a name="id_credentials_temp_control-access_getsessiontoken"></a>

La ocasión principal para llamar a la operación de API `GetSessionToken` o al comando `get-session-token` de la CLI es cuando un usuario debe autenticarse con la autenticación multifactor (MFA). Se puede escribir una política que permite determinadas acciones solo cuando dichas acciones las solicita un usuario autenticado con MFA. Para transferir correctamente la comprobación de autorización MFA, el usuario debe llamar primero a `GetSessionToken` e incluir los parámetros adicionales `SerialNumber` y `TokenCode`. Si el usuario se ha autenticado correctamente con un dispositivo MFA, las credenciales devueltas por la operación de API `GetSessionToken` incluyen el contexto de MFA. Este contexto indica que el usuario se ha autenticado con MFA y está autorizado a realizar operaciones de API que requieren la autenticación MFA.

## Permisos requeridos para GetSessionToken
<a name="getsessiontoken-permissions-required"></a>

No se requiere ningún permiso para que un usuario obtenga un token de sesión. La finalidad de la operación `GetSessionToken` es autenticar al usuario mediante MFA. No se pueden utilizar políticas para controlar las operaciones de autenticación.

Para conceder permisos para realizar la mayoría de las operaciones de AWS, es preciso agregar la acción del mismo nombre a una política. Por ejemplo, para crear un usuario, debe utilizar la operación API `CreateUser`, el comando `create-user` de la CLI o la Consola de administración de AWS. Para realizar estas operaciones, debe disponer de una política que le permita obtener acceso a la acción `CreateUser`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateUser",
            "Resource": "*"
        }
    ]
}
```

------

Puede incluir la acción `GetSessionToken` en sus políticas, pero no tiene efecto en la capacidad de un usuario para realizar la operación `GetSessionToken`.

## Permisos concedidos por GetSessionToken
<a name="getsessiontoken-permissions-granted"></a>

Si se llama a `GetSessionToken` con las credenciales de un usuario de IAM, las credenciales de seguridad temporales tienen los mismos permisos que el usuario de IAM. Del mismo modo, si se llama a `GetSessionToken` con credenciales de Usuario raíz de la cuenta de AWS, las credenciales de seguridad temporales tienen permisos de usuario raíz.

**nota**  
Se recomienda evitar el uso de las credenciales de usuario raíz para llamar a `GetSessionToken`. En lugar de esto, siga nuestras [prácticas recomendadas](best-practices-use-cases.md) y cree uno o más usuarios de IAM con los permisos que necesitan. A continuación, utilice estos usuarios de IAM para la interacción diaria con AWS.

Las credenciales temporales que obtiene si llama a `GetSessionToken` tienen las siguientes funciones y limitaciones:
+ Puede utilizar las credenciales para acceder a la Consola de administración de AWS transmitiendo las credenciales al punto de enlace de inicio de sesión único de la federación en `https://signin.aws.amazon.com/federation`. Para obtener más información, consulte [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](id_roles_providers_enable-console-custom-url.md).
+ Las credenciales **no** se pueden utilizar para llamar a las operaciones de API de AWS STS o IAM. **Puede** utilizarlas para llamar a las operaciones de API de otros servicios de AWS.

Compare esta operación de API y sus limitaciones y posibilidades con las demás operaciones de API que crean credenciales de seguridad temporales en . [Comparación de credenciales AWS STS](id_credentials_sts-comparison.md)

Para obtener más información sobre el acceso mediante API protegidas por MFA utilizando `GetSessionToken`, consulte [Acceso seguro a la API con MFA](id_credentials_mfa_configure-api-require.md).

# Deshabilitar permisos para credenciales de seguridad temporales
<a name="id_credentials_temp_control-access_disable-perms"></a>

Las credenciales de seguridad temporales son válidas hasta que caducan. Estas credenciales son válidas durante el tiempo especificado, desde 900 segundos (15 minutos) hasta un máximo de 129 600 segundos (36 horas). La duración predeterminada de una sesión es de 43 200 segundos (12 horas). Puede revocar estas credenciales, pero también debe cambiar los permisos del usuario o rol de IAM para evitar que se utilicen credenciales comprometidas para actividades maliciosas en la cuenta. Los permisos asignados a las credenciales de seguridad temporales se evalúan cada vez que se utilizan para realizar una solicitud de AWS. Una vez que haya eliminado todos los permisos de las credenciales, las solicitudes de AWS que las utilizan fallarán.

Es posible que las actualizaciones de la política tarden unos minutos en hacerse efectivas. Para sesiones de rol de IAM, puede revocar las credenciales de seguridad temporales del rol para forzar a todos los usuarios que lo asumieron a volver a autenticarse y solicitar nuevas credenciales. Para obtener más información, consulte [Revocar las credenciales de seguridad temporales del rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html).

No puede cambiar los permisos para un usuario Usuario raíz de la cuenta de AWS. Del mismo modo, no puede cambiar los permisos de las credenciales de seguridad temporales que se han creado llamando a `GetFederationToken` o `GetSessionToken` al iniciar sesión como usuario raíz. Por este motivo, le recomendamos que no llame a `GetFederationToken` ni a `GetSessionToken` como usuario raíz.

Para conocer los procedimientos sobre cómo cambiar los permisos de un usuario de IAM, consulte [Cambio de los permisos de un usuario de IAM](id_users_change-permissions.md).

Para conocer los procedimientos sobre cómo cambiar los permisos de un rol de IAM, consulte [Actualización de los permisos de un rol](id_roles_update-role-permissions.md).

**importante**  
No puede editar los roles en IAM que se hayan creado a partir de conjuntos de permisos del IAM Identity Center. Debe revocar la sesión del conjunto de permisos activo para un usuario en el IAM Identity Center. Para obtener más información, consulte [Revocar sesiones de rol de IAM creadas por conjuntos de permisos](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions) en la *Guía del usuario de IAM Identity Center*.

**Topics**
+ [

## Denegar el acceso a todas las sesiones de rol de IAM asociadas a un rol
](#deny-access-to-all-sessions)
+ [

## Denegar el acceso a una sesión específica de rol de IAM
](#deny-access-to-specific-session)
+ [

## Denegar el acceso a sesiones de credenciales de seguridad temporales con claves de contexto de condiciones
](#deny-access-to-specific-session-condition-key)
+ [

## Denegar el acceso a una entidad principal específica con políticas basadas en recursos
](#deny-access-with-resource-based)

## Denegar el acceso a todas las sesiones de rol de IAM asociadas a un rol
<a name="deny-access-to-all-sessions"></a>

Este procedimiento deniega permisos a **todas** las sesiones de rol de IAM asociadas a un rol. Utilice este enfoque cuando le preocupe el acceso sospechoso por parte de:


+ Entidades principales de otra cuenta que utilizan el acceso entre cuentas
+ Identidades de usuarios externos con permisos para acceder a recursos de AWS en su cuenta
+ Usuarios que se han autenticado en una aplicación Web o móvil con un proveedor de OIDC

A fin de cambiar o eliminar los permisos asignados a las credenciales de seguridad temporales que se obtienen al llamar a `AssumeRole`, `AssumeRoleWithSAML`, `AssumeRoleWithWebIdentity`, `GetFederationToken` o `GetSessionToken`, puede editar o eliminar la política basada en identidades que define los permisos para el rol.

**importante**  
Si hay una política basada en recursos que permite el acceso de una entidad principal, también debe agregar una denegación explícita para ese recurso. Para obtener más información, consulte [Denegar el acceso a una entidad principal específica con políticas basadas en recursos](#deny-access-with-resource-based).

**Para denegar el acceso a **todas** las sesiones de rol de IAM asociadas a un rol**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM.

1. Seleccione **Roles** en el panel de navegación.

1. Elija el nombre del rol que desea editar. Puede utilizar el cuadro de búsqueda para filtrar la lista.

1. Elija la pestaña **Permisos**.

1. Seleccione la política correspondiente que desea editar. Antes de editar una política administrada por el cliente, revise la pestaña **Entidades asociadas** para evitar interrumpir el acceso a otras identidades que puedan tener la misma política asociada.

1. Elija la pestaña **JSON** y actualice la política para denegar todos los recursos y acciones.
**nota**  
Estos permisos son los mismos que los de la política administrada por AWS [AWSDenyAll](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDenyAll.html). Puede asociar esta política administrada por AWS a cualquier usuario o rol de IAM al que desee denegar todo acceso.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DenyAll",
               "Effect": "Deny",
               "Action": [
                   "*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. En la página **Review (Revisar)**, revise el **Summary (Resumen)** de la política y seleccione **Save changes (Guardar cambios)** para guardar su trabajo.

Al editar la política, los cambios afectan a los permisos de todas las credenciales de seguridad temporales asociadas al rol, incluidas las credenciales que se han emitido antes de cambiar la política de permisos del rol. 

Después de actualizar la política, puede [revocar las credenciales de seguridad temporales del rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) para revocar de inmediato todos los permisos de las credenciales que ha emitido el rol.

## Denegar el acceso a una sesión específica de rol de IAM
<a name="deny-access-to-specific-session"></a>

Cuando se actualizan los roles de IAM con una política de denegar todo o se elimina el rol por completo, todos los usuarios que tienen acceso al rol se verán afectados. Puede denegar el acceso sin que esto afecte a los permisos de todas las demás sesiones asociadas al rol.

Se pueden denegar permisos a `Principal` mediante [claves de contexto de condición](#deny-access-to-specific-session-condition-key) o [políticas basadas en recursos](#deny-access-with-resource-based).

**sugerencia**  
Puede encontrar los ARN de los usuarios federados mediante los registros de AWS CloudTrail. Para obtener más información, consulte [Cómo identificar con facilidad a sus usuarios federados mediante AWS CloudTrail](https://aws.amazon.com/blogs/security/how-to-easily-identify-your-federated-users-by-using-aws-cloudtrail/).

## Denegar el acceso a sesiones de credenciales de seguridad temporales con claves de contexto de condiciones
<a name="deny-access-to-specific-session-condition-key"></a>

Puede utilizar claves de contexto de condición en políticas basadas en identidades en casos en los que desee denegar el acceso a sesiones de credenciales de seguridad temporales específicas sin afectar a los permisos del usuario o rol de IAM que creó las credenciales. En el caso de los roles de IAM, después de actualizar la política, también podrá [revocar las sesiones de credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) del rol para revocar inmediatamente todas las credenciales emitidas.

Para obtener más información sobre las claves de contexto de condición, consulte [Claves de contexto de condición globales de AWS](reference_policies_condition-keys.md).

### aws:PrincipalArn
<a name="deny-access-condition-key-principalarn"></a>

Puede utilizar la clave de contexto de condición [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) en una política basada en identidades para denegar el acceso a una entidad principal específica por su nombre de recurso de Amazon (ARN). Para ello, especifique el ARN de la sesión de usuario federado AWS STS, rol o usuario de IAM al que se encuentran asociadas las credenciales de seguridad temporales en el elemento Condición de una política.

**Para denegar el acceso a una entidad principal específica por su ARN**

1. En el panel de navegación de la consola de IAM, elija **Usuarios** o **Roles**.

1. Elija el nombre del usuario o rol de IAM que desea editar. Puede utilizar el cuadro de búsqueda para filtrar la lista.

1. Elija la pestaña **Permisos**.

1. Seleccione la política correspondiente que desea editar. Antes de editar una política administrada por el cliente, revise la pestaña **Entidades asociadas** para evitar interrumpir el acceso a otras identidades que puedan tener la misma política asociada.

1. Elija la pestaña **JSON** y agregue una instrucción de denegación para el ARN de la entidad principal, como se muestra en el siguiente ejemplo.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::222222222222:role/ROLENAME",
               "arn:aws:iam::222222222222:user/USERNAME",
               "arn:aws:iam::222222222222:federated-user/USERNAME" 
             ]
           }
         }
       }
     ]
   }
   ```

------

1. En la página **Review (Revisar)**, revise el **Summary (Resumen)** de la política y seleccione **Save changes (Guardar cambios)** para guardar su trabajo.

### aws:SourceIdentity
<a name="deny-access-condition-key-sourceidentity"></a>

Puede utilizar la clave de contexto de condición [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) en una política basada en identidades para denegar el acceso a una identidad de origen específica asociada a una sesión de rol de IAM. Esto se aplica siempre que la sesión de rol se haya emitido al configurar el parámetro de solicitud `SourceIdentity` cuando la entidad principal asumió un rol mediante cualquier comando de la CLI AWS STS `assume-role`\$1 u operación de la API AWS STS `AssumeRole`\$1. Para ello, especifique la identidad de origen a la que se encuentran asociadas las credenciales de seguridad temporales en el elemento `Condition` de una política. 

A diferencia de la clave de contexto [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname), después de establecer la identidad de origen, el valor no se puede cambiar. La clave `aws:SourceIdentity` se encuentra presente en el contexto de la solicitud de todas las acciones tomadas por el rol. La identidad de origen persiste en sesiones de rol posteriores cuando se utilizan las credenciales de sesión para asumir otro rol. Asumir un rol de otro se llama [encadenamiento de roles](id_roles.md#iam-term-role-chaining).

En la siguiente política se muestra un ejemplo de cómo puede denegar el acceso a las sesiones de credenciales de seguridad temporales mediante la clave de contexto de condición `aws:SourceIdentity`. Si especifica la identidad de origen asociada con una sesión de rol, se denegarán las sesiones de rol con la identidad de origen mencionada sin afectar los permisos del rol que creó las credenciales. Para este ejemplo, la identidad de origen que estableció la entidad principal cuando se emitió la sesión de rol es `nikki_wolf@example.com`. Cualquier solicitud realizada por una sesión de rol con la identidad de origen `nikki_wolf@example.com` será rechazada porque la identidad de origen está incluida en la condición de la política y la política Effect se estableció en `Deny`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": [
            "nikki_wolf@example.com",
            "<source identity value>"
          ]
        }
      }
    }
  ]
}
```

------

### aws:userid
<a name="deny-access-condition-key-userid"></a>

Puede utilizar la clave de contexto de condición [aws:userid](reference_policies_condition-keys.md#condition-keys-userid) en una política basada en identidades para denegar el acceso a todas las sesiones de credenciales de seguridad temporales o a sesiones específicas asociadas con el usuario o rol de IAM. Para ello, especifique el identificador único (ID) de la sesión de usuario federado AWS STS, rol o usuario de IAM al que se encuentran asociadas las credenciales de seguridad temporales en el elemento `Condition` de una política.

En la siguiente política se muestra un ejemplo de cómo puede denegar el acceso a las sesiones de credenciales de seguridad temporales mediante la clave de contexto de condición `aws:userid`.
+ `AIDAXUSER1` representa el ID único para un usuario de IAM. Especificar el ID único de un usuario de IAM como valor para la clave de contexto `aws:userid` denegará acceso al usuario de IAM. Esto incluye todas las sesiones de credenciales de seguridad temporales que se crearon al llamar a la API `GetSessionToken`.
+ `AROAXROLE1:*` representa el ID único para todas las sesiones asociadas al rol de IAM. Si se especifica el ID único de un rol de IAM y un carácter comodín (\$1) en la parte del nombre de la sesión del rol especificado por quien llama como valor de la clave de contexto `aws:userid`, se denegarán todas las sesiones asociadas al rol.
+ `AROAXROLE2:<caller-specified-role-session-name>` representa el ID único para una sesión de rol asumido. En la parte del nombre de sesión del rol especificado por el autor de la llamada del ID único del rol asumido, puede especificar un nombre de sesión de rol o un carácter comodín si se utiliza el operador de condición StringLike. Si especifica el nombre de la sesión del rol, denegará la sesión del rol nombrada sin afectar a los permisos del rol que creó las credenciales. Si especifica un carácter comodín para el nombre de la sesión del rol, denegará todas las sesiones asociadas al rol.
**nota**  
El nombre de la sesión del rol especificado por la persona que llama, que forma parte del identificador único de una sesión del rol asumido, puede cambiar durante el encadenamiento de roles. El encadenamiento de roles se produce cuando un rol asume otro rol. El nombre de la sesión del rol se establece mediante el parámetro de solicitud `RoleSessionName` cuando la entidad principal asume un rol mediante la operación de la API de AWS STS `AssumeRole`.
+ `account-id:<federated-user-caller-specified-name>` representa el ID único para una sesión de usuario federado AWS STS. Para crear la sesión, un usuario de IAM llama a la API `GetFederationToken`. Especificar el ID único de una sesión de usuario federado de AWS STS deniega la sesión federada indicada sin afectar los permisos del usuario de IAM que creó las credenciales.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:userId": [
            "AIDAXUSER1",
            "AROAXROLE1:*",
            "AROAXROLE2:<caller-specified-role-session-name>",
            "123456789012:<federated-user-caller-specified-name>"
          ]
        }
      }
    }
  ]
}
```

------

Para ver ejemplos específicos de valores de clave de una entidad principal, consulte [Valores clave principales](reference_policies_variables.md#principaltable). Para obtener información sobre los identificadores únicos de IAM y cómo obtenerlos, consulte [Identificadores únicos](reference_identifiers.md#identifiers-unique-ids).

## Denegar el acceso a una entidad principal específica con políticas basadas en recursos
<a name="deny-access-with-resource-based"></a>

Para restringir el acceso a una entidad principal específica con una política basada en recursos, puede utilizar claves de contexto de condición [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) o [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) en el elemento `Condition`. Una política basada en recursos es una política de permisos asociada a un recurso y controla quién puede acceder al recurso y qué acciones puede realizar en este. 

Cuando se utiliza la clave de contexto `aws:PrincipalARN`, especifique el ARN de la sesión de usuario federado de AWS STS, rol o usuario de IAM asociado a las credenciales de seguridad temporales en el elemento Condición de una política. El siguiente ejemplo de política muestra cómo se utiliza la clave de contexto `aws:PrincipalARN` en una política basada en recursos:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "ArnEquals": {
        "aws:PrincipalArn": [
          "arn:aws:iam::222222222222:role/ROLENAME",
          "arn:aws:iam::222222222222:user/USERNAME",
          "arn:aws:sts::222222222222:federated-user/USERNAME"
        ]
      }
    }
  }
}
```

------

Cuando utilice la clave de contexto `aws:SourceIdentity`, especifique el valor de identidad de origen asociado a las credenciales de seguridad temporales del rol en el elemento `Condition` de una política. Esto se aplica siempre que la sesión de rol se haya emitido al configurar el parámetro de solicitud `SourceIdentity` cuando la entidad principal asumió un rol mediante cualquier comando de la CLI AWS STS `assume-role`\$1 u operación de la API AWS STS `AssumeRole`\$1. El siguiente ejemplo muestra cómo se utiliza la clave de contexto `aws:SourceIdentity` en una política basada en recursos:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "StringLike": {
        "aws:SourceIdentity": [
          "nikki_wolf@example.com",
          "<source identity value>"
        ]
      }
    }
  }
}
```

------

Si solo actualiza la política basada en identidades para una entidad principal, esta aún podrá realizar acciones permitidas en la política basada en recursos, excepto cuando dichas acciones se denieguen explícitamente en la política basada en identidades.

**Para denegar el acceso a una entidad principal específica en una política basada en recursos**

1. Consulte [Servicios de AWS que funcionan con IAM](reference_aws-services-that-work-with-iam.md) para comprobar si el servicio admite políticas basadas en recursos.

1. Inicie sesión en la Consola de administración de AWS y abra la consola del servicio. Cada servicio tiene una ubicación diferente en la consola para adjuntar políticas.

1. Edite la política basada en recursos. Agregue una instrucción de política de denegación para especificar la información de identificación de la credencial:

   1. En el elemento `Principal`, ingrese un comodín (\$1). La entidad principal estará restringida en el elemento `Condition`.

   1. En el elemento `Effect`, ingrese “Denegar”.

   1. En `Action`, ingrese el espacio de nombres del servicio y el nombre de la acción que se denegará. Para denegar todas las acciones, utilice el carácter comodín (\$1). Por ejemplo: `"s3:*"`.

   1. En el elemento `Resource`, ingrese el ARN del recurso de destino. Por ejemplo: `"arn:aws:s3:::amzn-s3-demo-bucket"`.

   1. En el elemento `Condition`, especifique la clave de contexto de `aws:PrincipalARN` o `aws:SourceIdentity`.

      Si utiliza la clave de contexto `aws:PrincipalARN`, ingrese el ARN de la entidad principal a la que desea denegar el acceso.

      Si utiliza la clave de contexto `aws:SourceIdentity`, ingrese el valor de identidad de origen establecido en la sesión de rol a la que se denegará el acceso.

1. Guarde su trabajo.

# Concesión de permisos para crear credenciales de seguridad temporales
<a name="id_credentials_temp_control-access_enable-create"></a>

De forma predeterminada, los usuarios de IAM no tienen permisos para crear credenciales de seguridad temporales para sesiones de usuario federado de AWS STS y roles. Debe utilizar una política para proporcionar estos permisos a los usuarios. Aunque pueda conceder permisos directamente a un usuario, le recomendamos encarecidamente que conceda permisos a los grupos. Esto facilita en gran medida la administración de los permisos. Cuando alguien ya no tenga que realizar las tareas asociadas a los permisos, solo tiene que retirarlo del grupo. Si otra persona necesita realizar dicha tarea, añádala al grupo para concederle los permisos.

Para otorgar a un grupo de IAM permiso para crear credenciales de seguridad temporales para sesiones de usuario federado de AWS STS o roles, debe asociar una política que conceda uno o ambos de los siguientes privilegios:
+ Para que las entidades principales federadas de OIDC y SAML accedan a un rol de IAM, otorgue acceso a AWS STS `AssumeRole`.
+ <a name="para_gsy_hxg_1t"></a>Para los usuarios federados de AWS STS que no necesitan un rol, otorgue acceso a AWS STS `GetFederationToken`.

 Para obtener información sobre las diferencias entre las operaciones de API `AssumeRole` y `GetFederationToken`, consulte [Solicitud de credenciales de seguridad temporales](id_credentials_temp_request.md).

Los usuarios de IAM también pueden llamar a [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) para crear credenciales de seguridad temporales. No se requieren permisos para que un usuario llame a `GetSessionToken`. La finalidad de esta operación es autenticar al usuario mediante MFA. No se pueden utilizar políticas para controlar la autenticación. Esto significa que no se puede impedir que los usuarios de IAM llamen a `GetSessionToken` para crear credenciales temporales.

**Example Ejemplo de política que concede permiso para asumir un rol**  
La siguiente política de ejemplo concede permiso para llamar a `AssumeRole` para el rol `UpdateApp` en la Cuenta de AWS `123123123123`. Cuando se usa `AssumeRole`, el usuario (o la aplicación) que crea las credenciales de seguridad en nombre de un usuario federado no puede delegar ningún permiso que no se haya especificado ya en la política de permisos de la función.     
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::123123123123:role/UpdateAPP"
  }]
}
```

**Example Ejemplo de política que concede permiso para crear credenciales de seguridad temporales para un usuario federado**  
La siguiente política de ejemplo concede permiso para obtener acceso a `GetFederationToken`.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": "*"
  }]
}
```

**importante**  
Al otorgar a los usuarios de IAM permiso para crear credenciales de seguridad temporales para usuarios federados de AWS STS con `GetFederationToken`, tenga en cuenta que esto les permite delegar sus propios permisos. Para obtener más información sobre cómo delegar permisos entre usuarios de IAM y Cuentas de AWS, consulte [Ejemplos de políticas para delegar el acceso](id_roles_create_policy-examples.md). Para obtener más información sobre cómo controlar los permisos en las credenciales de seguridad temporales, consulte [Permisos para credenciales de seguridad temporales](id_credentials_temp_control-access.md). 

**Example Ejemplo de política que concede a un usuario un permiso limitado para crear credenciales de seguridad temporales para usuarios federados**  
Cuando se permite que un usuario de IAM llame a `GetFederationToken`, la práctica recomendada es restringir los permisos que el usuario de IAM puede delegar. Por ejemplo, la siguiente política muestra cómo permitir que un usuario de IAM cree credenciales de seguridad temporales solo para usuarios federados de AWS STS cuyos nombres comienzan con *Manager*.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": ["arn:aws:sts::123456789012:federated-user/Manager*"]
  }]
}
```

# Concesión de permisos para usar sesiones de consola con identidad mejorada
<a name="id_credentials_temp_control-access_sts-setcontext"></a>

Las sesiones de consola con identidad mejorada permiten incluir los ID de usuario y de sesión de AWS IAM Identity Center en las sesiones de la consola de AWS de los usuarios cuando inician sesión. Por ejemplo, Amazon Q Developer Pro usa sesiones de consola con identidad mejorada para personalizar la experiencia de servicio. Para obtener más información sobre las sesiones de consola con identidad mejorada, consulte [Habilitación de sesiones de consola con identidad mejorada](https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-enhanced-sessions.html) en la *Guía del usuario de AWS IAM Identity Center*. Para obtener información sobre la configuración de Amazon Q Developer, consulte [Setting up Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/setting-up.html) en la *Guía del usuario de Amazon Q Developer*.

Para que las sesiones de consola con identidad mejorada estén disponibles para un usuario, debe utilizar una política basada en la identidad para conceder a la entidad principal de IAM el permiso `sts:SetContext` para utilizar el recurso que representa su propia sesión de consola. 

**importante**  
De forma predeterminada, los usuarios no tienen permiso para establecer el contexto de sus sesiones de consola con identidad mejorada. Para permitirlo, debe conceder el permiso `sts:SetContext` a la entidad principal de IAM en una política basada en la identidad, como se muestra en el ejemplo de política que aparece a continuación.

El siguiente ejemplo de política basada en la identidad otorga el permiso `sts:SetContext` a una entidad principal de IAM, lo que le permite establecer un contexto de sesión de consola con identidad mejorada para sus propias sesiones de consola de AWS. El recurso de política, `arn:aws:sts::account-id:self`, representa la sesión de AWS de la persona que llama. El segmento de ARN `account-id` se puede sustituir por un carácter comodín `*` en los casos en que se implemente la misma política de permisos en varias cuentas, como cuando esta política se implementa mediante conjuntos de permisos de IAM Identity Center.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:SetContext",
            "Resource": "arn:aws:sts::111122223333:self"
        }
    ]
}
```

------

# Administración de AWS STS en una Región de AWS
<a name="id_credentials_temp_enable-regions"></a>

Un punto de conexión regional es la URL del punto de entrada dentro de una región concreta para un servicio web de AWS. AWS recomienda utilizar puntos de conexión regionales de AWS Security Token Service (AWS STS) en lugar del punto de conexión global para reducir la latencia, crear redundancia y aumentar la validez de los tokens de sesión. Aunque el punto de conexión global (heredado) de AWS STS `https://sts.amazonaws.com` es de alta disponibilidad, está alojado en una única región de AWS, EE. UU. Este (Norte de Virginia), y al igual que otros puntos de conexión, no dispone de conmutación por error automática a puntos de conexión de otras regiones.
+ **Reducir la latencia** - Al realizar las llamadas a AWS STS a un punto de enlace que esté geográficamente más cerca de sus servicios y aplicaciones, puede obtener acceso a los servicios de AWS STS con una latencia menor y tiempos de respuesta mejores.
+ **Redundancia incorporada**: puede limitar los efectos de una falla dentro de una carga de trabajo a una cantidad limitada de componentes con un alcance predecible de contención de impacto. El uso de puntos de conexión de AWS STS regionales le permite alinear el alcance de sus componentes con el alcance de sus identificadores de sesión. Para obtener más información sobre este pilar de fiabilidad, consulte [Usar el aislamiento de errores para proteger su carga de trabajo](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/use-fault-isolation-to-protect-your-workload.html) en *AWS Well-Architected Framework*.
+ **Aumentar la validez del token de sesión**: los tokens de sesión de puntos de enlace de AWS STS regionales son válidos en todas las Regiones de AWS. Los tokens de sesión del punto de conexión de STS global son válidos únicamente en las Regiones de AWS que están habilitadas de forma predeterminada. Si va a habilitar una nueva región en su cuenta, puede utilizar tokens de sesión de los puntos enlace de AWS STS regionales. Si decide utilizar el punto de conexión global, debe cambiar la compatibilidad de la región de tokens de sesión de AWS STS para el punto de enlace global. De esta forma, se garantiza que los tokens sean válidos en todas las Regiones de AWS.

Para obtener una lista de las regiones de AWS STS y sus puntos de conexión, consulte [AWS STSRegiones y puntos de conexión de](id_credentials_temp_region-endpoints.md).

**nota**  
AWS ha realizado cambios en el punto de conexión global del AWS Security Token Service (AWS STS) (`https://sts.amazonaws.com`) en las regiones [activadas de forma predeterminada](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) para mejorar su resiliencia y rendimiento. Las solicitudes del AWS STS al punto de conexión global se atienden automáticamente en la misma Región de AWS que sus cargas de trabajo. Estos cambios no se implementarán en las regiones registradas. Le recomendamos que utilice los puntos de conexión regionales de AWS STS apropiados. Para obtener más información, consulte [Cambios en el punto de conexión global de AWS STS](id_credentials_temp_region-endpoints.md#reference_sts_global_endpoint_changes).

**Topics**
+ [

## Activación y desactivación de AWS STS en una Región de AWS
](#sts-regions-activate-deactivate)
+ [

## Código de escritura para utilizar en regiones de AWS STS
](#id_credentials_temp_enable-regions_writing_code)
+ [

## Administración de tokens de sesión de punto de enlace global
](#sts-regions-manage-tokens)

## Activación y desactivación de AWS STS en una Región de AWS
<a name="sts-regions-activate-deactivate"></a>

Al activar puntos de conexión de AWS STS para una región, AWS STS puede emitir credenciales temporales para los usuarios y roles de dicha cuenta que realizan una solicitud de AWS STS. Esas credenciales se pueden utilizar en cualquier región que esté habilitada de forma predeterminada o habilitada manualmente. En el caso de las regiones habilitadas de forma predeterminada, debe activar el punto de conexión regional de AWS STS en la cuenta en la que se generan las credenciales temporales. No importa si el usuario ha iniciado sesión en la misma cuenta o en una cuenta diferente al realizar la solicitud. Al solicitar credenciales temporales para un rol en otra Cuenta de AWS mediante una región que está habilitada de manera manual, la cuenta de destino (la cuenta que contiene el rol) debe habilitar dicha región para las operaciones de AWS STS. Esto garantiza que la generación de las credenciales de seguridad temporales se realice de manera correcta.

Por ejemplo, imagínese que un usuario de la cuenta A quiere enviar una solicitud de API `sts:AssumeRole` al [punto de conexión regional de AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html) en `https://sts.ap-southeast-3.amazonaws.com`. La solicitud se realiza para las credenciales temporales del rol denominado `Developer` de la cuenta B. Dado que la solicitud se hace para crear credenciales para una entidad de la cuenta B, esta cuenta debe tener habilitada la región `ap-southeast-3`. Los usuarios de la cuenta A (o cualquier otra cuenta) pueden llamar al punto de conexión AWS STS de `ap-southeast-3` para solicitar credenciales para la cuenta B, independientemente de si la región está activada en sus cuentas. Para obtener más información, consulte [Habilitar o deshabilitar Regiones de AWS en su cuenta](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

**nota**  
Las regiones activas están a disposición de todos los usuarios que utilizan las credenciales temporales de esa cuenta. Para controlar qué usuarios o roles de IAM pueden acceder a la región, utilice la clave de condición `aws:RequestedRegion` en sus políticas de permisos.

**Para activar o desactivar AWS STS en una región que está activada de forma predeterminada (consola)**

1. Inicie sesión como usuario raíz o usuario con permisos para realizar tareas de administración de IAM.

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/home?#home) y en el panel de navegación elija [https://console.aws.amazon.com/iam/home?#account_settings](https://console.aws.amazon.com/iam/home?#account_settings).

1. En la sección **Puntos de conexión** de **Security Token Service (STS)**, busque la región que quiere configurar y, a continuación, elija **Activa** o **Inactiva** en la columna **Estado de STS**.

1. En el cuadro de diálogo que se abre, elija **Activar** o **Desactivar**.

En las regiones que deben estar activadas, activamos AWS STS automáticamente cuando se activa la región. Después de activar una región, AWS STS siempre estará activa en la región y no se podrá desactivar. Para obtener información sobre cómo habilitar regiones que están deshabilitadas de forma predeterminada, consulte [Especificar qué Regiones de AWS puede usar su cuenta](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) en la *Guía de referencia de AWS Account Management*.

## Código de escritura para utilizar en regiones de AWS STS
<a name="id_credentials_temp_enable-regions_writing_code"></a>

Después de activar una región, podrá dirigir las llamadas a la API de AWS STS a esa región. El siguiente fragmento de código Java demuestra cómo configurar un objeto `AWSSecurityTokenService` para realizar solicitudes desde la región Europa (Milán) (eu-south-1).

```
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
```

AWS STS recomienda realizar llamadas a un punto de enlace regional. Para aprender cómo habilitar una región de forma manual, consulte [Especificar qué Regiones de AWS puede utilizar su cuenta](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) en la *Guía de referencia de AWS Account Management*.

En el ejemplo, la primera línea crea una instancia de un objeto `EndpointConfiguration` llamado `regionEndpointConfig`, que incluye la URL del punto de conexión y la Región de AWS como parámetros.

Para obtener información acerca de cómo configurar puntos de conexión regionales de AWS STS con una variable de entorno para AWS SDK, consulte [Puntos de conexión regionalizados de AWS STS](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) en la *Guía de referencia de herramientas y AWS SDK*.

Si desea obtener información sobre el resto de combinaciones de entornos de programación y lenguajes, consulte la [documentación del correspondiente SDK](https://aws.amazon.com/tools/).

## Administración de tokens de sesión de punto de enlace global
<a name="sts-regions-manage-tokens"></a>

La mayoría de las Regiones de AWS están habilitadas para llevar a cabo operaciones en todos los Servicios de AWS de forma predeterminada. Estas regiones se activan automáticamente para su uso con AWS STS. Algunas regiones, como, por ejemplo, Asia Pacífico (Hong Kong), se deben habilitar manualmente. Para obtener más información sobre cómo habilitar y deshabilitar Regiones de AWS, consulte [Especificar qué Regiones de AWS puede usar su cuenta](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) en la *Guía de referencia de AWS Account Management*. Cuando habilita estos regiones de AWS, se activan automáticamente para su uso con AWS STS. No puede activar el punto de conexión de AWS STS para una región que está deshabilitada. Los tokens de sesión que son válidos en todas las Regiones de AWS incluyen más caracteres que los tokens que son válidos en regiones que están habilitadas de forma predeterminada. Cambiar esta configuración podría afectar a los sistemas existentes en los que almacena tokens temporalmente.

Puede cambiar esta configuración mediante laConsola de administración de AWS, la AWS CLI o la API de AWS.

**Para cambiar la compatibilidad de la región de los tokens de sesión para el punto de enlace global (consola)**

1. Inicie sesión como usuario raíz o usuario con permisos para realizar tareas de administración de IAM. Para cambiar la compatibilidad de los tokens de sesión, debe tener una política que permita la acción `iam:SetSecurityTokenServicePreferences`.

1. Abra la [consola de IAM](https://console.aws.amazon.com/iam/home?#home). En el panel de navegación, elija **Configuración de cuenta**.

1. En la sección **Tokens de sesión de los puntos de conexión de STS** de **Security Token Service (STS)**. El **punto de conexión global** indica `Valid only in Regiones de AWS enabled by default`. Elija **Change**.

1. En el cuadro de diálogo **Cambiar compatibilidad de región**, seleccione **Todas las Regiones de AWS**. A continuación, elija **Guardar cambios**.
**nota**  
Los tokens de sesión que son válidos en todas las Región de AWS incluyen más caracteres que los tokens que son válidos en regiones que están habilitadas de forma predeterminada. Cambiar esta configuración podría afectar a los sistemas existentes en los que almacena tokens temporalmente.

**Para cambiar la compatibilidad de la región de los tokens de sesión para el punto de enlace global (AWS CLI)**  
Establezca la versión del token de sesión. Los tokens de la versión 1 son válidos únicamente en las Regiones de AWS que están disponibles de forma predeterminada. Estos tokens no funcionan en regiones habilitadas manualmente, como, por ejemplo, Asia Pacífico (Hong Kong). Los tokens de la versión 2 son válidos en todas las regiones. Sin embargo, los tokens de versión 2 incluyen más caracteres y podrían afectar a los sistemas en los que almacena tokens temporalmente.
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html](https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html)

**Para cambiar la compatibilidad de la región de los tokens de sesión para el punto de enlace global (API de AWS)**  
Establezca la versión del token de sesión. Los tokens de la versión 1 son válidos únicamente en las Regiones de AWS que están disponibles de forma predeterminada. Estos tokens no funcionan en regiones habilitadas manualmente, como, por ejemplo, Asia Pacífico (Hong Kong). Los tokens de la versión 2 son válidos en todas las regiones. Sin embargo, los tokens de versión 2 incluyen más caracteres y podrían afectar a los sistemas en los que almacena tokens temporalmente.
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html) 

# AWS STSRegiones y puntos de conexión de
<a name="id_credentials_temp_region-endpoints"></a>

**nota**  
AWS ha realizado cambios en el punto de conexión global del AWS Security Token Service (AWS STS) (`https://sts.amazonaws.com`) en las regiones [activadas de forma predeterminada](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) para mejorar su resiliencia y rendimiento. Las solicitudes del AWS STS al punto de conexión global se atienden automáticamente en la misma Región de AWS que sus cargas de trabajo. Estos cambios no se implementarán en las regiones registradas. Le recomendamos que utilice los puntos de conexión regionales de AWS STS apropiados. Para obtener más información, consulte [Cambios en el punto de conexión global de AWS STS](#reference_sts_global_endpoint_changes).

En la siguiente tabla se muestran las regiones y sus puntos de enlace. Indica cuáles están activadas de forma predeterminada y cuáles puede activar o desactivar.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html)

¹Debe [habilitar la región](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) para utilizarla. Esto activa automáticamente AWS STS. No puede activar o desactivar manualmente AWS STS en estas regiones.

²Para usar AWS en China, necesita una cuenta y unas credenciales específicas para AWS en China.

## Cambios en el punto de conexión global de AWS STS
<a name="reference_sts_global_endpoint_changes"></a>

AWS ha realizado cambios en el punto de conexión global del AWS Security Token Service (AWS STS) (`https://sts.amazonaws.com`) en las regiones [activadas de forma predeterminada](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) para mejorar su resiliencia y rendimiento. Anteriormente, todas las solicitudes al punto de conexión global de AWS STS eran atendidas por una única Región de AWS, Este de EE. UU. (Norte de Virginia). Ahora, en las regiones [activadas de forma predeterminada](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html), las solicitudes al punto de conexión global del AWS STS se atienden de manera automática en la misma región en la que se origina la solicitud, en lugar de en la región Este de EE. UU. (Norte de Virginia). Estos cambios no se implementarán en las regiones registradas.

Con este cambio, AWS STS procesará su solicitud en función de la región de origen y del solucionador de DNS utilizado. Las solicitudes al punto de conexión global del AWS STS se atenderán en la misma región que la carga de trabajo de AWS implementada si la solicitud de DNS para el punto de conexión global del AWS STS es administrada por el servidor DNS de Amazon en las regiones que están activadas de forma predeterminada. Las solicitudes al punto de conexión global del AWS STS se seguirán atendiendo en la región Este de EE. UU. (Norte de Virginia) si su solicitud se originó en regiones de participación voluntaria o si su solicitud se resolvió mediante un solucionador de DNS distinto del servidor de DNS de Amazon. Para obtener más información acerca del servidor DNS de Amazon, consulte [Servidor DNS de Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html#AmazonDNS) en la *Guía del usuario de Amazon Virtual Private Cloud*.

En la siguiente tabla, se muestra cómo se enrutan las solicitudes al punto de conexión global del AWS STS en función de su proveedor de DNS.


| Solucionador de DNS | ¿Las solicitudes al punto de conexión global AWS STS global se enrutan a la Región de AWS local? | 
| --- | --- | 
|  Solucionador de DNS de Amazon en una Amazon VPC en una región activada de forma predeterminada  |  Sí  | 
|  Solucionador de DNS de Amazon en una Amazon VPC en una región registrada  |  No, la solicitud se enrutará a la región Este de EE. UU. (Norte de Virginia)  | 
|  Solucionador de DNS proporcionado por su ISP, un proveedor de DNS público o cualquier otro proveedor de DNS  |  No, la solicitud se enrutará a la región Este de EE. UU. (Norte de Virginia)  | 

Para garantizar una interrupción mínima de sus procesos actuales, AWS ha implementado las siguientes medidas:
+ Los registros de AWS CloudTrail para las solicitudes realizadas al punto de conexión global del AWS STS se envían a la región Este de EE. UU. (Norte de Virginia). Los registros de CloudTrail de las solicitudes atendidas por los puntos de conexión regionales de AWS STS seguirán registrándose en sus respectivas regiones en CloudTrail.
+ Los registros de CloudTrail para las operaciones realizadas por el punto de conexión global del AWS STS y los puntos de conexión regionales tienen los campos adicionales `endpointType` y `awsServingRegion` para indicar qué punto de conexión y región atendieron la solicitud. Para ver ejemplos de registros de CloudTrail, consulte [Ejemplo de evento de API de AWS STS que utiliza el punto de conexión global en el archivo de registro de CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole-sts-global-endpoint).
+ Las solicitudes realizadas al punto de conexión global del AWS STS tienen un valor de `us-east-1` para la clave de condición `aws:RequestedRegion`, independientemente de la región que haya atendido la solicitud.
+ Las solicitudes gestionadas por el punto de conexión global del AWS STS no comparten una cuota de solicitudes por segundo con los puntos de conexión regionales del AWS STS.

Si tiene cargas de trabajo en una región registrada y sigue utilizando el punto de conexión global de AWS STS, le recomendamos que migre a los puntos de conexión regionales de AWS STS para mejorar la resiliencia y el rendimiento. Para obtener más información sobre la configuración de puntos de conexión regionales de AWS STS, consulte [Puntos de conexión regionales de AWS STS](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) en la *Guía de referencia de SDK y herramientas de AWS*.

## AWS CloudTrail y puntos de enlace regionales
<a name="sts-regions-cloudtrail"></a>

Las llamadas a puntos de conexión regionales y globales se registran en el campo `tlsDetails` en AWS CloudTrail. Las llamadas a puntos de conexión regionales, como por ejemplo `us-east-2.amazonaws.com`, se registran en CloudTrail en la región correspondiente. Las llamadas al punto de enlace global, `sts.amazonaws.com`, se registran como llamadas a un servicio global. Los eventos de los puntos de conexión globales AWS STS se registran en us-east-1.

**nota**  
 `tlsDetails` solo se puede ver para los servicios que admiten este campo. Consulte [Servicios que admiten detalles de TLS en CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-supported-tls-details.html) en la *Guía del usuario de AWS CloudTrail*  
Para obtener más información, consulte [Registro de llamadas a IAM y a la API de AWS STS con AWS CloudTrail](cloudtrail-integration.md).

# Permitir el acceso del agente de identidades personalizadas a la consola de AWS
<a name="id_roles_providers_enable-console-custom-url"></a>

Puede escribir y ejecutar código para crear una dirección URL que permita a los usuarios que inicien sesión en la red de su organización obtener acceso de forma segura a la Consola de administración de AWS. La dirección URL incluye un token de inicio de sesión que obtiene de AWS y que autentica al usuario en AWS. La sesión de la consola resultante puede incluir una función `AccessKeyId` distinta debido a la federación. Para rastrear el uso de la clave de acceso para el inicio de sesión de la federación a través de eventos de CloudTrail relacionados, consulte [Registro de llamadas a IAM y a la API de AWS STS con AWS CloudTrail](cloudtrail-integration.md) y [los eventos de inicio de sesión de Consola de administración de AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-aws-console-sign-in-events.html). 

**nota**  
Si su organización usa un proveedor de identidad (IdP) que es compatible con SAML, puede configurar el acceso a la consola sin necesidad de escribir código. Funciona con proveedores como Active Directory Federation Services de Microsoft o Shibboleth de código abierto. Para obtener más información, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md). 

Para permitir que los usuarios de su organización tengan acceso a la Consola de administración de AWS, puede crear un *agente de identidades* que realice los pasos siguientes:

1. Comprobar que el sistema de identidad local autentique al usuario.

1. Llame a las operaciones de la API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) (recomendado) o [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) de AWS Security Token Service (AWS STS) para obtener credenciales de seguridad temporales para el usuario. Para obtener más información sobre los distintos métodos que puede utilizar para asumir un rol, consulte [Métodos para asumir un rol](id_roles_manage-assume.md). Para obtener información sobre cómo pasar etiquetas de sesión opcionales al obtener las credenciales de seguridad, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).
   + Si utiliza una de las operaciones `AssumeRole*` de la API para obtener las credenciales de seguridad temporales de un rol, puede incluir el parámetro `DurationSeconds` en la llamada. Este parámetro especifica la duración de la sesión de rol, que puede oscilar entre 900 segundos (15 minutos) y el valor de la duración máxima de la sesión especificado para el rol. Cuando se utiliza `DurationSeconds` en una operación `AssumeRole*`, debe llamarla como un usuario de IAM con credenciales a largo plazo. De lo contrario, la llamada al punto de enlace de federación en el paso 3 produce un error. Para obtener información sobre cómo ver o cambiar el valor máximo para un rol, consulte [Actualizar la duración máxima de la sesión para un rol](id_roles_update-role-settings.md#id_roles_update-session-duration).
   + Si utiliza la operación `GetFederationToken` de la API para obtener las credenciales, puede incluir el parámetro `DurationSeconds` en la llamada. Este parámetro especifica la duración de la sesión de rol. Este valor puede oscilar entre 900 segundos (15 minutos) y 129 600 segundos (36 horas). Solo podrá realizar esta llamada a la API utilizando las credenciales de seguridad de AWS a largo plazo de un usuario de IAM. También puede realizar estas llamadas con las credenciales de Usuario raíz de la cuenta de AWS, pero no lo recomendamos. Si realiza esta llamada como usuario raíz, la duración predeterminada de la sesión es de una hora. También puede especificar una sesión que dure entre 900 segundos (15 minutos) y 3 600 segundos (una hora). 

1. Llame al punto de enlace de federación de AWS y proporcione las credenciales de seguridad temporales para solicitar un token de inicio de sesión.

1. Representar una URL de la consola que incluya el token:
   + Si utiliza una de las operaciones `AssumeRole*` de la API en la URL, puede incluir el parámetro HTTP `SessionDuration`. Este parámetro especifica la duración de la sesión de consola, que oscila entre 900 segundos (15 minutos) y 43 200 segundos (12 horas).
   + Si utiliza la operación `GetFederationToken` de la API en la URL, puede incluir el parámetro `DurationSeconds`. Este parámetro especifica la duración de la sesión de consola federada. Este valor puede oscilar entre 900 segundos (15 minutos) y 129 600 segundos (36 horas). 
**nota**  
Su `SessionDuration` no puede ser mayor o igual a la configuración de duración máxima de la sesión para el rol que está asumiendo. Por ejemplo, ha establecido en 5 horas la duración máxima de la sesión para el rol que desea asumir. Su parámetro `SessionDuration` puede ser de 16524 segundos o 4 horas y 59 segundos.
No utilice el parámetro HTTP `SessionDuration` si obtiene las credenciales temporales con `GetFederationToken`. La operación producirá un error.
Utilizar las credenciales de un rol para asumir otro rol se denomina [*encadenamiento de roles*](id_roles.md#iam-term-role-chaining). Cuando se utiliza el encadenamiento de roles, las nuevas credenciales tienen una duración máxima de una hora. Cuando utiliza roles para [conceder permisos a las aplicaciones que se ejecutan en instancias EC2](id_roles_use_switch-role-ec2.md), esas aplicaciones no están sujetas a esta limitación.
No utilice el parámetro HTTP `SessionDuration` si obtiene las credenciales temporales mediante el encadenamiento de roles. La operación producirá un error.

1. Proporcione la dirección URL al usuario o invóquela en nombre del usuario.

La dirección URL que el punto de enlace de federación proporciona es válida durante 15 minutos después de su creación. Esto difiere de la duración (en segundos) de la sesión de credenciales de seguridad temporales que está asociada a la URL. Esas credenciales son válidas durante el periodo que especificó al crearlas, a partir del momento en que se crearon.

**importante**  
La dirección URL concede el acceso a sus recursos de AWS a través de la Consola de administración de AWS si ha habilitado los permisos en las credenciales de seguridad temporales asociadas. Por este motivo, debe tratar a la dirección URL como un secreto. Recomendamos devolver la dirección URL a través de un redireccionamiento seguro, por ejemplo, mediante la utilización de un código de estado de respuesta HTTP 302 a través de una conexión SSL. Para obtener más información sobre el código de estado de respuesta HTTP 302, diríjase a [RFC 2616, sección 10.3.3](https://datatracker.ietf.org/doc/html/rfc2616#section-10.3.3).

Para finalizar estas tareas, puede utilizar la API de consulta [HTTPS para AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/APIReference/) y [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/). O bien, puede utilizar lenguajes de programación, tales como Java, Ruby o C\$1, junto con el [SDK de AWS](https://aws.amazon.com/tools/) apropiado. En las siguientes secciones, se describe cada uno de estos métodos.

**Topics**
+ [

## Código de ejemplo con operaciones de API de consulta de IAM
](#STSConsoleLink_manual)
+ [

## Ejemplo de código que utiliza Python
](#STSConsoleLink_programPython)
+ [

## Ejemplo de código que utiliza Java
](#STSConsoleLink_programJava)
+ [

## Ejemplo que muestra cómo crear la dirección URL (Ruby)
](#STSConsoleLink_programRuby)

## Código de ejemplo con operaciones de API de consulta de IAM
<a name="STSConsoleLink_manual"></a>

Puede crear una URL que otorgue acceso directo a la Consola de administración de AWS a roles y entidades principales federadas. Esta tarea usa IAM y la API de consulta HTTPS de AWS STS. Para obtener más información sobre cómo realizar solicitudes de consulta, consulte [Making Query Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html).

**nota**  
El siguiente procedimiento incluye ejemplos de cadenas de texto. Para mejorar la legibilidad, se han agregado saltos de línea a algunos de los ejemplos más largos. Al crear estas cadenas para su propio uso, debe omitir cualquier salto de línea.

**Para otorgar a roles y entidades principales federadas acceso a los recursos desde la Consola de administración de AWS**

1. Autentique al usuario en su sistema de autorización e identidad.

1. Obtenga credenciales de seguridad temporales para el usuario. 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 la creación de instancias de contenedor, consulte [Credenciales de seguridad temporales en IAM](id_credentials_temp.md).

   Para obtener credenciales temporales, puede llamar a la API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) de AWS STS (recomendado) o a la API [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html). Para obtener más información sobre las diferencias entre estas operaciones API, consulte [Descripción de las opciones de la API para delegar de forma segura el acceso a su cuenta deAWS](https://aws.amazon.com/blogs/security/understanding-the-api-options-for-securely-delegating-access-to-your-aws-account) en el blog de seguridad de AWS.
**importante**  
Si utiliza la API [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) para crear credenciales de seguridad temporales, debe especificar los permisos que dichas credenciales conceden al usuario que asume el rol. Para cualquiera de las operaciones API que empiezan por `AssumeRole*`, utilice un rol de IAM para asignar permisos. Para el resto de las operaciones API, el mecanismo varía según la API. Para obtener más información, consulte [Permisos para credenciales de seguridad temporales](id_credentials_temp_control-access.md). Además, si utiliza las operaciones `AssumeRole*` de la API, debe llamarlas como usuario de IAM con credenciales a largo plazo. De lo contrario, la llamada al punto de enlace de federación en el paso 3 produce un error.  


1. Después de obtener las credenciales de seguridad temporales, intégrelas en una cadena de sesión JSON para intercambiarlas por un token de inicio de sesión. El siguiente ejemplo muestra cómo codificar las credenciales. Sustituya el texto del marcador de posición con los valores adecuados de las credenciales que reciba en el paso anterior.

   ```
   {"sessionId":"*** temporary access key ID ***",
   "sessionKey":"*** temporary secret access key ***",
   "sessionToken":"*** session token ***"}
   ```

1. [Aplique el código URL](https://en.wikipedia.org/wiki/Percent-encoding) a la cadena de sesión del paso anterior. Dado que la información que está codificando es confidencial, recomendamos que evite utilizar un servicio web para esta codificación. En su lugar, utilice una función o característica instalada localmente en su conjunto de herramientas de desarrollo para codificar esta información de forma segura. Puede utilizar la función `urllib.quote_plus` en Python, la función `URLEncoder.encode` en Java o la función `CGI.escape` en Ruby. Consulte los ejemplos más adelante en este tema.

1. <a name="STSConsoleLink_manual_step5"></a>
**nota**  
AWS admite solicitudes POST aquí.

   Envíe su solicitud al punto de conexión de federación de AWS:

   `https://region-code.signin.aws.amazon.com/federation` 

   Para obtener una lista de los posibles valores de *region-code*, consulte la columna **Region** (Región) en [Puntos de conexión de inicio de sesión de AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Opcionalmente, puede utilizar un punto de conexión de federación de inicio de sesión de AWS predeterminado:

   `https://signin.aws.amazon.com/federation` 

   La solicitud debe incluir los parámetros `Action` y `Session` y (opcionalmente) si ha utilizado una operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) de la API, un parámetro HTTP `SessionDuration`, tal como se muestra en el siguiente ejemplo.

   ```
   Action = getSigninToken
   SessionDuration = time in seconds
   Session = *** the URL encoded JSON string created in steps 3 & 4 ***
   ```
**nota**  
Las siguientes instrucciones de este paso solo funcionan con solicitudes GET.

   El parámetro HTTP `SessionDuration` especifica la duración de la sesión de consola. Esta es distinta de la duración de las credenciales temporales especificada mediante el parámetro `DurationSeconds`. Puede especificar un valor máximo de `SessionDuration` de 43 200 (12 horas). Si falta el parámetro `SessionDuration`, el valor predeterminado de la sesión será el correspondiente a la duración de las credenciales que ha recuperado de AWS STS en el paso 2 (que tienen el valor predeterminado de una hora). Consulte la [documentación de la API `AssumeRole`](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para obtener más información sobre cómo especificar la duración mediante el parámetro `DurationSeconds`. La posibilidad de crear una sesión de consola con una duración superior a una hora es intrínseca a la operación `getSigninToken` del punto de enlace de federación.
**nota**  
Su `SessionDuration` no puede ser mayor o igual a la configuración de duración máxima de la sesión para el rol que está asumiendo. Por ejemplo, ha establecido en 5 horas la duración máxima de la sesión para el rol que desea asumir. Su parámetro `SessionDuration` puede ser de 16524 segundos o 4 horas y 59 segundos.
No utilice el parámetro HTTP `SessionDuration` si obtiene las credenciales temporales con `GetFederationToken`. La operación producirá un error.
Utilizar las credenciales de un rol para asumir otro rol se denomina [*encadenamiento de roles*](id_roles.md#iam-term-role-chaining). Cuando se utiliza el encadenamiento de roles, las nuevas credenciales tienen una duración máxima de una hora. Cuando utiliza roles para [conceder permisos a las aplicaciones que se ejecutan en instancias EC2](id_roles_use_switch-role-ec2.md), esas aplicaciones no están sujetas a esta limitación.
No utilice el parámetro HTTP `SessionDuration` si obtiene las credenciales temporales mediante el encadenamiento de roles. La operación producirá un error.

   Cuando habilita sesiones de consola con una duración prolongada, aumenta el riesgo de exposición de credenciales. Para ayudarle a mitigar este riesgo, puede deshabilitar inmediatamente las sesiones de consola activas para cualquier rol eligiendo **Revoke Sessions** (Revocar sesiones) en la página de la consola de IAM **Role Summary** (Resumen de roles). Para obtener más información, consulte [Revocación de las credenciales de seguridad temporales de un rol de IAM](id_roles_use_revoke-sessions.md). 

    El siguiente es un ejemplo de lo que su solicitud podría parecer. Las líneas se ajustan aquí para facilitar su legibilidad, pero debe enviarla como una cadena de una sola línea.

   ```
   https://signin.aws.amazon.com/federation
   ?Action=getSigninToken
   &SessionDuration=1800
   &Session=%7B%22sessionId%22%3A+%22ASIAJUMHIZPTOKTBMK5A%22%2C+%22sessionKey%22
   %3A+%22LSD7LWI%2FL%2FN%2BgYpan5QFz0XUpc8s7HYjRsgcsrsm%22%2C+%22sessionToken%2
   2%3A+%22FQoDYXdzEBQaDLbj3VWv2u50NN%2F3yyLSASwYtWhPnGPMNmzZFfZsL0Qd3vtYHw5A5dW
   AjOsrkdPkghomIe3mJip5%2F0djDBbo7SmO%2FENDEiCdpsQKodTpleKA8xQq0CwFg6a69xdEBQT8
   FipATnLbKoyS4b%2FebhnsTUjZZQWp0wXXqFF7gSm%2FMe2tXe0jzsdP0O12obez9lijPSdF1k2b5
   PfGhiuyAR9aD5%2BubM0pY86fKex1qsytjvyTbZ9nXe6DvxVDcnCOhOGETJ7XFkSFdH0v%2FYR25C
   UAhJ3nXIkIbG7Ucv9cOEpCf%2Fg23ijRgILIBQ%3D%3D%22%7D
   ```

   La respuesta del punto de enlace de federación es un documento JSON con un valor de `SigninToken`. Tendrá un aspecto similar al siguiente ejemplo.

   ```
   {"SigninToken":"*** the SigninToken string ***"}
   ```

1. 
**nota**  
AWS admite solicitudes POST aquí.

   Por último, cree la URL que los usuarios pueden usar para acceder a la Consola de administración de AWS. La dirección URL es el mismo punto de enlace URL de federación que usó en [Step 5](#STSConsoleLink_manual_step5), además de los siguientes parámetros:

   ```
   ?Action = login
   &Issuer = *** the form-urlencoded URL for your internal sign-in page ***
   &Destination = *** the form-urlencoded URL to the desired AWS console page ***
   &SigninToken = *** the value of SigninToken received in the previous step ***
   ```
**nota**  
Las siguientes instrucciones de este paso solo funcionan con la API de GET.

   El siguiente ejemplo muestra lo que la dirección URL final podría parecer. La dirección URL es válida durante 15 minutos desde el momento en que se crea. Las credenciales de seguridad temporales y la sesión de consola integradas dentro de la dirección URL son válidas durante el periodo especificado en el parámetro HTTP `SessionDuration` al solicitarlas inicialmente. 

   ```
   https://signin.aws.amazon.com/federation
   ?Action=login
   &Issuer=https%3A%2F%2Fexample.com
   &Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F
   &SigninToken=VCQgs5qZZt3Q6fn8Tr5EXAMPLEmLnwB7JjUc-SHwnUUWabcRdnWsi4DBn-dvC
   CZ85wrD0nmldUcZEXAMPLE-vXYH4Q__mleuF_W2BE5HYexbe9y4Of-kje53SsjNNecATfjIzpW1
   WibbnH6YcYRiBoffZBGExbEXAMPLE5aiKX4THWjQKC6gg6alHu6JFrnOJoK3dtP6I9a6hi6yPgm
   iOkPZMmNGmhsvVxetKzr8mx3pxhHbMEXAMPLETv1pij0rok3IyCR2YVcIjqwfWv32HU2Xlj471u
   3fU6uOfUComeKiqTGX974xzJOZbdmX_t_lLrhEXAMPLEDDIisSnyHGw2xaZZqudm4mo2uTDk9Pv
   9l5K0ZCqIgEXAMPLEcA6tgLPykEWGUyH6BdSC6166n4M4JkXIQgac7_7821YqixsNxZ6rsrpzwf
   nQoS14O7R0eJCCJ684EXAMPLEZRdBNnuLbUYpz2Iw3vIN0tQgOujwnwydPscM9F7foaEK3jwMkg
   Apeb1-6L_OB12MZhuFxx55555EXAMPLEhyETEd4ZulKPdXHkgl6T9ZkIlHz2Uy1RUTUhhUxNtSQ
   nWc5xkbBoEcXqpoSIeK7yhje9Vzhd61AEXAMPLElbWeouACEMG6-Vd3dAgFYd6i5FYoyFrZLWvm
   0LSG7RyYKeYN5VIzUk3YWQpyjP0RiT5KUrsUi-NEXAMPLExMOMdoODBEgKQsk-iu2ozh6r8bxwC
   RNhujg
   ```

## Ejemplo de código que utiliza Python
<a name="STSConsoleLink_programPython"></a>

En los siguientes ejemplos se muestra cómo utilizar Python para crear mediante programación una dirección URL que ofrezca a los usuarios acceso directo a la Consola de administración de AWS. Se incluyen dos ejemplos:
+ Federación mediante solicitudes GET para AWS
+ Federación mediante solicitudes POST para AWS

Ambos ejemplos usan la API [AWS SDK para Python (Boto3)](https://aws.amazon.com/tools/) y [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para obtener credenciales de seguridad temporales.

No incluya `SessionDuration` si sus credenciales de `AssumeRoleSession` provienen del encadenamiento de roles. Si incluye`SessionDuration`, la operación producirá un error.

### Uso de solicitudes GET
<a name="post-api-py-example"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your Cuenta de AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 
# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = "?Action=getSigninToken"
request_parameters += "&SessionDuration=43200"
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)
request_parameters += "&Session=" + quote_plus_function(json_string_with_temp_credentials)
request_url = "https://signin.aws.amazon.com/federation" + request_parameters
r = requests.get(request_url)
# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create URL where users can use the sign-in token to sign in to 
# the console. This URL must be used within 15 minutes after the
# sign-in token was issued.
request_parameters = "?Action=login" 
request_parameters += "&Issuer=Example.org" 
request_parameters += "&Destination=" + quote_plus_function("https://console.aws.amazon.com/")
request_parameters += "&SigninToken=" + signin_token["SigninToken"]
request_url = "https://signin.aws.amazon.com/federation" + request_parameters

# Send final URL to stdout
print (request_url)
```

### Uso de solicitudes POST
<a name="get-api-py-example-1"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'
import os
from selenium import webdriver # 'pip install selenium', 'brew install chromedriver'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your ACuenta de AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 

# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)

sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleDemoSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = {}
request_parameters['Action'] = 'getSigninToken'
request_parameters['SessionDuration'] = '43200'
request_parameters['Session'] = json_string_with_temp_credentials

request_url = "https://signin.aws.amazon.com/federation"
r = requests.post( request_url, data=request_parameters)

# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create a POST request where users can use the sign-in token to sign in to 
# the console. The POST request must be made within 15 minutes after the
# sign-in token was issued.
request_parameters = {}
request_parameters['Action'] = 'login'
request_parameters['Issuer']='Example.org'
request_parameters['Destination'] = 'https://console.aws.amazon.com/'
request_parameters['SigninToken'] =signin_token['SigninToken']

jsrequest = '''
var form = document.createElement('form');
form.method = 'POST';
form.action = '{request_url}';
request_parameters = {request_parameters}
for (var param in request_parameters) {{
    if (request_parameters.hasOwnProperty(param)) {{
        const hiddenField = document.createElement('input');
        hiddenField.type = 'hidden';
        hiddenField.name = param;
        hiddenField.value = request_parameters[param];
        form.appendChild(hiddenField);
    }}
}}
document.body.appendChild(form);
form.submit();
'''.format(request_url=request_url, request_parameters=request_parameters)

driver = webdriver.Chrome()
driver.execute_script(jsrequest)
input("Press Enter to close the browser window...")
```

## Ejemplo de código que utiliza Java
<a name="STSConsoleLink_programJava"></a>

El siguiente ejemplo muestra cómo utilizar Java para crear de forma programada una dirección URL que ofrezca a los usuarios acceso directo a la Consola de administración de AWS. El siguiente fragmento de código usa [AWS SDK para Java](https://aws.amazon.com/documentation/sdkforjava/).

```
import java.net.URLEncoder;
import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
// Available at http://www.json.org/java/index.html
import org.json.JSONObject;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient;
import com.amazonaws.services.securitytoken.model.Credentials;
import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest;
import com.amazonaws.services.securitytoken.model.GetFederationTokenResult;


/* Calls to AWS STS API operations must be signed using the access key ID 
   and secret access key of an IAM user or using existing temporary 
   credentials. The credentials should not be embedded in code. For 
   this example, the code looks for the credentials in a 
   standard configuration file.
*/
AWSCredentials credentials = 
  new PropertiesCredentials(
         AwsConsoleApp.class.getResourceAsStream("AwsCredentials.properties"));

AWSSecurityTokenServiceClient stsClient = 
  new AWSSecurityTokenServiceClient(credentials);

GetFederationTokenRequest getFederationTokenRequest = 
  new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(1800);
getFederationTokenRequest.setName("UserName");

// A sample policy for accessing Amazon Simple Notification Service (Amazon SNS) in the console.

String policy = "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Action\":\"sns:*\"," +
  "\"Effect\":\"Allow\",\"Resource\":\"*\"}]}";

getFederationTokenRequest.setPolicy(policy);

GetFederationTokenResult federationTokenResult = 
  stsClient.getFederationToken(getFederationTokenRequest);

Credentials federatedCredentials = federationTokenResult.getCredentials();

// The issuer parameter specifies your internal sign-in
// page, for example https://mysignin.internal.mycompany.com/.
// The console parameter specifies the URL to the destination console of the
// AWS Management Console. This example goes to Amazon SNS. 
// The signin parameter is the URL to send the request to.

String issuerURL = "https://mysignin.internal.mycompany.com/";
String consoleURL = "https://console.aws.amazon.com/sns";
String signInURL = "https://signin.aws.amazon.com/federation";
  
// Create the sign-in token using temporary credentials,
// including the access key ID,  secret access key, and session token.
String sessionJson = String.format(
  "{\"%1$s\":\"%2$s\",\"%3$s\":\"%4$s\",\"%5$s\":\"%6$s\"}",
  "sessionId", federatedCredentials.getAccessKeyId(),
  "sessionKey", federatedCredentials.getSecretAccessKey(),
  "sessionToken", federatedCredentials.getSessionToken());
              
// Construct the sign-in request with the request sign-in token action, a
// 12-hour console session duration, and the JSON document with temporary 
// credentials as parameters.

String getSigninTokenURL = signInURL + 
                           "?Action=getSigninToken" +
                           "&DurationSeconds=43200" + 
                           "&SessionType=json&Session=" + 
                           URLEncoder.encode(sessionJson,"UTF-8");

URL url = new URL(getSigninTokenURL);

// Send the request to the AWS federation endpoint to get the sign-in token
URLConnection conn = url.openConnection ();

BufferedReader bufferReader = new BufferedReader(new 
  InputStreamReader(conn.getInputStream()));  
String returnContent = bufferReader.readLine();

String signinToken = new JSONObject(returnContent).getString("SigninToken");

String signinTokenParameter = "&SigninToken=" + URLEncoder.encode(signinToken,"UTF-8");

// The issuer parameter is optional, but recommended. Use it to direct users
// to your sign-in page when their session expires.

String issuerParameter = "&Issuer=" + URLEncoder.encode(issuerURL, "UTF-8");

// Finally, present the completed URL for the AWS console session to the user

String destinationParameter = "&Destination=" + URLEncoder.encode(consoleURL,"UTF-8");
String loginURL = signInURL + "?Action=login" +
                     signinTokenParameter + issuerParameter + destinationParameter;
```

## Ejemplo que muestra cómo crear la dirección URL (Ruby)
<a name="STSConsoleLink_programRuby"></a>

El siguiente ejemplo muestra cómo utilizar Ruby para crear de forma programada una dirección URL que ofrezca a los usuarios acceso directo a la Consola de administración de AWS. Este fragmento de código usa [AWS SDK para Ruby](https://aws.amazon.com/documentation/sdkforruby/). 

```
require 'rubygems'
require 'json'
require 'open-uri'
require 'cgi'
require 'aws-sdk'

# Create a new STS instance
# 
# Note: Calls to AWS STS API operations must be signed using an access key ID 
# and secret access key. The credentials can be in EC2 instance metadata 
# or in environment variables and will be automatically discovered by
# the default credentials provider in the AWS Ruby SDK. 
sts = Aws::STS::Client.new()

# The following call creates a temporary session that returns 
# temporary security credentials and a session token.
# The policy grants permissions to work
# in the AWS SNS console.

session = sts.get_federation_token({
  duration_seconds: 1800,
  name: "UserName",
  policy: "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":{\"Effect\":\"Allow\",\"Action\":\"sns:*\",\"Resource\":\"*\"}}",
})

# The issuer value is the URL where users are directed (such as
# to your internal sign-in page) when their session expires.
#
# The console value specifies the URL to the destination console.
# This example goes to the Amazon SNS console.
#
# The sign-in value is the URL of the AWS STS federation endpoint.
issuer_url = "https://mysignin.internal.mycompany.com/"
console_url = "https://console.aws.amazon.com/sns"
signin_url = "https://signin.aws.amazon.com/federation"

# Create a block of JSON that contains the temporary credentials
# (including the access key ID, secret access key, and session token).
session_json = {
  :sessionId => session.credentials[:access_key_id],
  :sessionKey => session.credentials[:secret_access_key],
  :sessionToken => session.credentials[:session_token]
}.to_json

# Call the federation endpoint, passing the parameters
# created earlier and the session information as a JSON block. 
# The request returns a sign-in token that's valid for 15 minutes.
# Signing in to the console with the token creates a session 
# that is valid for 12 hours.
get_signin_token_url = signin_url + 
                       "?Action=getSigninToken" + 
                       "&SessionType=json&Session=" + 
                       CGI.escape(session_json)

returned_content = URI.parse(get_signin_token_url).read

# Extract the sign-in token from the information returned
# by the federation endpoint.
signin_token = JSON.parse(returned_content)['SigninToken']
signin_token_param = "&SigninToken=" + CGI.escape(signin_token)

# Create the URL to give to the user, which includes the
# sign-in token and the URL of the console to open.
# The "issuer" parameter is optional but recommended.
issuer_param = "&Issuer=" + CGI.escape(issuer_url)
destination_param = "&Destination=" + CGI.escape(console_url)
login_url = signin_url + "?Action=login" + signin_token_param + 
  issuer_param + destination_param
```

# Etiquetas para recursos de AWS Identity and Access Management
<a name="id_tags"></a>

Una *etiqueta* es un atributo personalizado que puede asignar a un recurso de AWS. Cada etiqueta de tiene dos partes:
+ Una *clave de etiqueta* (por ejemplo, `CostCenter`, `Environment`, `Project` o `Purpose`).
+ Un campo opcional que se denomina *valor de etiqueta* (por ejemplo, `111122223333`, `Production` o el nombre de un equipo). Omitir el valor de etiqueta es lo mismo que utilizar una cadena vacía.

En conjunto, se conocen como pares clave-valor. Para ver los límites de la cantidad de etiquetas que puede tener en los recursos de IAM, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md).

**nota**  
Para obtener más información sobre la distinción entre mayúsculas y minúsculas en las claves de etiqueta y los valores de las claves de etiqueta, consulte [Case sensitivity](#case-sensitivity).

Las etiquetas le ayudan a identificar y organizar los recursos de AWS. Muchos servicios de AWS admiten el etiquetado, por lo que puede asignar la misma etiqueta a los recursos de diferentes servicios para indicar que los recursos están relacionados. Por ejemplo, puede asignar la misma etiqueta a un rol de IAM que se asigna a un bucket de Amazon S3. Para obtener más información sobre estrategias de etiquetado, consulte la *Guía del usuario del [etiquetado de recursos de AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)*.

Además de utilizar etiquetas para identificar, organizar y realizar el seguimiento de sus recursos de IAM, puede utilizarlas en las políticas de IAM para ayudar a controlar quién puede ver e interactuar con el recurso. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

**Topics**
+ [

## Elija una convención de nomenclatura de etiquetas de AWS
](#id_tags_naming)
+ [

## Reglas para etiquetar en IAM y AWS STS
](#id_tags_rules)
+ [

# Etiquetado de usuarios de IAM
](id_tags_users.md)
+ [

# Etiquetado de roles de IAM
](id_tags_roles.md)
+ [

# Etiqueta de políticas administradas por el cliente
](id_tags_customer-managed-policies.md)
+ [

# Etiquetado de proveedores de identidad OpenID Connect (OIDC)
](id_tags_oidc.md)
+ [

# Etiquetado de proveedores de identidad SAML de IAM
](id_tags_saml.md)
+ [

# Etiquetado de perfiles de instancia para roles de Amazon EC2
](id_tags_instance-profiles.md)
+ [

# Etiquetado de certificados de servidor
](id_tags_server-certificates.md)
+ [

# Etiquetado de dispositivos MFA virtuales
](id_tags_virtual-mfa.md)
+ [

# Transferencia de etiquetas de sesión en AWS STS
](id_session-tags.md)

## Elija una convención de nomenclatura de etiquetas de AWS
<a name="id_tags_naming"></a>

Cuando comience a asociar etiquetas a sus recursos de IAM, elija la convención de nomenclatura de etiquetas con cuidado. Aplique la misma convención para todas las etiquetas de AWS. Esto es especialmente importante si utiliza etiquetas en las políticas para controlar el acceso a recursos de AWS. Si ya utiliza etiquetas en AWS, revise la convención de nomenclatura y ajústela según corresponda.

**nota**  
Si su cuenta es miembro de AWS Organizations, consulte [Políticas de etiquetas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html) en la guía del usuario de AWS Organizations para obtener más información sobre el uso de etiquetas en AWS Organizations.

### Prácticas recomendadas para la denominación de etiquetas
<a name="id_tags_naming_best_practices"></a>

Estas son algunas prácticas recomendadas y convenciones de nomenclatura para las etiquetas.

Asegúrese de que los nombres de las etiquetas se utilicen de forma coherente. Por ejemplo, las etiquetas `CostCenter` y `costcenter` son diferentes, por lo que una podría configurarse como etiqueta de asignación de costos para análisis e informes financieros y la otra podría no serlo. Del mismo modo, la etiqueta `Name` aparece en la consola de AWS para muchos recursos, pero no así la etiqueta `name`. Para obtener más información sobre la distinción entre mayúsculas y minúsculas en las claves de etiqueta y los valores de las claves de etiqueta, consulte [Case sensitivity](#case-sensitivity).

Varias etiquetas están predefinidas por AWS o son creadas automáticamente por varios servicios de AWS. Muchos de los nombres de las etiquetas definidas por AWS utilizan todas minúsculas, con guiones que separan las palabras del nombre y prefijos para identificar el servicio de origen de la etiqueta. Por ejemplo: 
+ `aws:ec2spot:fleet-request-id` identifica la solicitud de instancia puntual de Amazon EC2 que lanzó la instancia.
+ `aws:cloudformation:stack-name` identifica la pila de CloudFormation que creó el recurso. 
+ `elasticbeanstalk:environment-name` identifica la aplicación que creó el recurso.

Considere la posibilidad de asignar nombres a las etiquetas que usen todas minúsculas, con guiones separando las palabras y un prefijo que identifique el nombre de la organización o el nombre abreviado. Por ejemplo, para una compañía ficticia llamada *AnyCompany*, puede definir etiquetas como:
+ `anycompany:cost-center` para identificar el código interno del centro de costes 
+ `anycompany:environment-type` para identificar si el entorno es de desarrollo, prueba o producción
+ `anycompany:application-id` para identificar la aplicación para la que se creó el recurso 

El prefijo garantiza que las etiquetas estén claramente identificadas como definidas por su organización y no por AWS o por una herramienta de terceros que usted pueda estar utilizando. Usar todas minúsculas con guiones para los separadores evita confusiones sobre cómo poner en mayúsculas el nombre de una etiqueta. Por ejemplo, `anycompany:project-id` es más fácil de recordar que `ANYCOMPANY:ProjectID`, `anycompany:projectID` o bien `Anycompany:ProjectId`.

## Reglas para etiquetar en IAM y AWS STS
<a name="id_tags_rules"></a>

Una serie de convenciones rigen la creación y aplicación de etiquetas en IAM y AWS STS.

### Asignación de nombres a etiquetas
<a name="id_tags_rules_creating"></a>

Observe las siguientes convenciones al formular una convención de nomenclatura de etiquetas para recursos de IAM, sesiones de asumir rol de AWS STS y sesiones de usuarios federados de AWS STS:

**Requisitos de caracteres**: las claves y los valores de las etiquetas pueden incluir cualquier combinación de letras, números, espacios y los símbolos \$1 . : / = \$1 - @.

**Distinción de mayúsculas y minúsculas**: la distinción de mayúsculas y minúsculas para las claves de etiqueta varía en función del tipo de recurso de IAM que se etiqueta. Los valores de clave de etiqueta para usuarios y roles de IAM no distinguen mayúsculas y minúsculas, pero se conservan. Esto significa que no puede haber claves de etiqueta **Department** y **department** separadas. Si ha etiquetado un usuario con la etiqueta **Department=finance** y añade la etiqueta **department=hr**, sustituye la primera etiqueta. No se ha añadido una segunda etiqueta.

Para otros tipos de recursos de IAM, los valores de clave de etiqueta distinguen mayúsculas y minúsculas. Eso significa que puede tener claves de etiquetas **Costcenter** y **costcenter** distintas. Por ejemplo, si ha etiquetado una política administrada por el cliente con la etiqueta **Costcenter = 1234** y agrega la etiqueta **costcenter = 5678**, la política tendrá ambas claves de etiqueta, **Costcenter** y **costcenter**.

Como práctica recomendada, sugerimos que evite el uso de etiquetas similares con distinción de minúsculas y mayúsculas inconsistente. Le recomendamos que decida una estrategia de uso de mayúsculas y minúsculas en las etiquetas e implemente esa estrategia sistemáticamente en todos los tipos de recursos. Para obtener más información sobre las prácticas recomendadas para el etiquetado, consulte [Etiquetado de recursos de AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) en Referencia general de AWS.

Las siguientes listas muestran las diferencias entre mayúsculas y minúsculas para las claves de etiqueta asociadas a los recursos de IAM.

Los valores de clave de etiqueta **no** distinguen mayúsculas y minúsculas:
+ Roles de IAM
+ Usuarios de IAM

Los valores de claves de etiqueta distinguen entre mayúsculas y minúsculas:
+ Políticas administradas por el cliente
+ Perfiles de instancias
+ Proveedores de identidad de OpenID Connect
+ Proveedores de identidades SAML
+ Certificados de servidor
+ Dispositivos MFA virtuales

Además, se aplican las siguientes reglas:
+ No puede crear una clave o valor de etiqueta que comience con el texto **aws:**. Este prefijo de etiqueta se reserva para uso interno de AWS.
+ Puede crear una etiqueta con un valor vacío como **phoneNumber = **. No se puede crear una clave de etiqueta vacía.
+ No puede especificar varios valores en una etiqueta única, pero puede crear una estructura personalizada con varios valores en el único valor. Por ejemplo, supongamos que el usuario Zhang trabaja en el equipo de ingeniería y el equipo de control de calidad. Si asocia la etiqueta **team = Engineering** y, a continuación, asocia la etiqueta **team = QA**, cambie el valor de la etiqueta de **Engineering** a **QA**. En su lugar, puede incluir varios valores en una única etiqueta con un separador personalizado. En este ejemplo, puede asociar la etiqueta de **team = Engineering:QA** a Zhang.
**nota**  
Para controlar el acceso a los ingenieros, en este ejemplo se utilizará la etiqueta **team**, debe crear una política que permita que cada configuración pueda incluir **Engineering**, incluida **Engineering:QA**. Para obtener más información sobre el uso de etiquetas en políticas, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

### Aplicación y edición de etiquetas
<a name="id_tags_rules_applying"></a>

Tenga en cuenta las siguientes convenciones al asociar etiquetas a los recursos de IAM:
+ Puede etiquetar la mayoría de los recursos de IAM, pero no grupos, roles asumidos, informes de acceso, dispositivos basados en hardware o dispositivos MFA.
+ No puede utilizar Tag Editor para etiquetar recursos de IAM. Tag Editor no es compatible con etiquetas de IAM. Para obtener más información acerca de cómo utilizar Tag Editor con otros servicios, consulte [Working with Tag Editor (Uso de Tag Editor)](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html) en la *Guía del usuario de Grupos de recursos de AWS*.
+ Para etiquetar un recurso de IAM, debe tener permisos específicos. Para etiquetar o desetiquetar recursos, también debe tener permiso para enumerar etiquetas. Para obtener más información, consulte la lista de temas de cada recurso de IAM al final de esta página. 
+ El número y el tamaño de recursos de IAM en una cuenta de AWS son limitados. Para obtener más información, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md).
+ Puede aplicar la misma etiqueta a varios recursos de IAM. Por ejemplo, suponga que tiene un departamento denominado `AWS_Development` con 12 miembros. Puede tener 12 usuarios y un rol con la clave de etiqueta **department** y un valor de **awsDevelopment** (**department = awsDevelopment**). También puede utilizar la misma etiqueta en recursos de otros [servicios que admiten etiquetado](reference_aws-services-that-work-with-iam.md).
+ Las entidades de IAM (usuarios o roles) no pueden tener varias instancias de la misma clave de etiqueta. Por ejemplo, si tiene un usuario con el par de clave-valor de etiqueta **costCenter = 1234**, puede asociar el par de clave-valor de etiqueta a **costCenter = 5678**. IAM actualiza el valor de la etiqueta **costCenter** a **5678**.
+ Para editar una etiqueta que se asocia a una entidad de IAM (usuario o rol), asocie una etiqueta a un nuevo valor para sobrescribir la etiqueta existente. Por ejemplo, supongamos que tiene un usuario con el par de clave-valor de etiqueta **department = Engineering**. Si necesita trasladar el usuario al departamento de control de calidad, puede asociar el par de clave-valor de etiqueta **department = QA** al usuario. El resultado es el valor **Engineering** de la clave de etiqueta **department** que se va a sustituir por el valor **QA**.

# Etiquetado de usuarios de IAM
<a name="id_tags_users"></a>

Puede utilizar pares clave-valor de etiquetas de IAM para agregar atributos personalizados a un usuario de IAM. Por ejemplo, para añadir información de ubicación a un usuario, puede agregar la clave de etiqueta **location** y el valor de etiqueta **us\$1wa\$1seattle**. O bien puede utilizar tres pares de clave-valor de ubicación independientes: **loc-country = us**, **loc-state = wa** y **loc-city = seattle**. Puede utilizar etiquetas para controlar el acceso de los usuarios a los recursos o para controlar qué etiquetas se pueden asociar a un usuario. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

## Permisos necesarios para etiquetar usuarios de IAM
<a name="id_tags_users_permissions"></a>

Debe configurar permisos para permitir que un usuario de IAM pueda etiquetar a otros usuarios. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListUserTags`
+ `iam:TagUser`
+ `iam:UntagUser`

**Para permitir a un usuario de IAM agregar, enumerar o eliminar una etiqueta para un usuario específico**  
Agregue la siguiente instrucción a la política de permisos del usuario de IAM que necesita administrar etiquetas. Utilice el número de cuenta y reemplace *<username>* por el nombre del usuario que se debe administrar. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Para permitir a un usuario de IAM administrar las etiquetas**  
Añada la siguiente instrucción a la política de permisos de los usuarios para permitir a los usuarios administrar sus propias etiquetas. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::user/${aws:username}"
}
```

**Para permitir a un usuario de IAM agregar una etiqueta a un usuario específico**  
Agregue la siguiente instrucción a la política de permisos del usuario de IAM que necesite agregar, pero no eliminar, etiquetas para un usuario específico.

**nota**  
La acción `iam:TagUser` requiere que también incluya la acción `iam:ListUserTags`.

Para utilizar esta política, reemplace *<username>* por el nombre del usuario cuyas etiquetas se deben administrar. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administración de etiquetas en usuarios de IAM (consola)
<a name="id_tags_users_procs-console"></a>

Puede administrar etiquetas para usuarios de IAM desde la Consola de administración de AWS.

**Para administrar etiquetas en usuarios (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Roles (Roles)** y, a continuación, elija el nombre del usuario que desea editar.

1. Elija la pestaña **Tags (Etiquetas)** y, a continuación, realice una de las siguientes acciones:
   + Elija **Agregar etiqueta nueva** si el usuario aún no tiene etiquetas.
   + Elija **Manage tags** (Administrar etiquetas) para administrar el conjunto de etiquetas existente.

1. Añada o elimine etiquetas para completar el conjunto de etiquetas. A continuación, elija **Guardar cambios**.

## Administrar etiquetas en usuarios de IAM (AWS CLI o API de AWS)
<a name="id_tags_users_procs-cli-api"></a>

Puede enumerar, asociar o quitar etiquetas para los usuarios de IAM. También puede utilizar la AWS CLI o la API de AWS para administrar etiquetas de usuarios de IAM.

**Para obtener una lista de las etiquetas asociadas actualmente a un usuario de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-user-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-tags.html)
+ API de AWS: [ListUserTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserTags.html)

**Para asociar etiquetas a un usuario de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-user](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-user.html)
+ API de AWS: [TagUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagUser.html)

**Para eliminar etiquetas de un usuario de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-user](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-user.html)
+ API de AWS: [UntagUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagUser.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiquetado de roles de IAM
<a name="id_tags_roles"></a>

Puede utilizar pares clave-valor de etiquetas de IAM para agregar atributos personalizados atributo un rol de IAM. Por ejemplo, para agregar información de ubicación a un rol, puede agregar la clave de etiqueta **location** y el valor de etiqueta **us\$1wa\$1seattle**. O bien puede utilizar tres pares de clave-valor de ubicación independientes: **loc-country = us**, **loc-state = wa** y **loc-city = seattle**. Puede utilizar etiquetas para controlar el acceso de un rol a los recursos o para controlar qué etiquetas se pueden asociar a un rol. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

## Permisos necesarios para etiquetar roles de IAM
<a name="id_tags_roles_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuario o rol) pueda etiquetar otras entidades (usuarios o roles). Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListRoleTags`
+ `iam:TagRole`
+ `iam:UntagRole`
+ `iam:ListUserTags`
+ `iam:TagUser`
+ `iam:UntagUser`

**Para permitir que un rol de IAM agregue, enumere o elimine una etiqueta para un usuario específico**  
Agregue la siguiente instrucción a la política de permisos del rol de IAM cuyas etiquetas deben ser administradas. Utilice el número de cuenta y reemplace *<username>* por el nombre del usuario que se debe administrar. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Para permitir a un rol de IAM agregar una etiqueta a un usuario específico**  
Agregue la siguiente instrucción a la política de permisos del rol de IAM que necesite agregar, pero no eliminar, etiquetas para un usuario específico.

Para utilizar esta política, reemplace *<username>* por el nombre del usuario cuyas etiquetas se deben administrar. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Para permitir a un rol de IAM agregar, enumerar o eliminar una etiqueta para un rol específico**  
Agregue la siguiente instrucción a la política de permisos del rol de IAM cuyas etiquetas deben ser administradas. Reemplace *<rolename>* por el nombre del rol que debe administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListRoleTags",
        "iam:TagRole",
        "iam:UntagRole"
    ],
    "Resource": "arn:aws:iam::<account-number>:role/<rolename>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administrar etiquetas en roles de IAM (consola)
<a name="id_tags_roles_procs-console"></a>

Puede administrar etiquetas para roles de IAM desde la Consola de administración de AWS.

**Para administrar etiquetas en roles (consola)**

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Roles** (Roles) y, a continuación, elija el nombre de la entidad que desea editar.

1. Elija la pestaña **Tags (Etiquetas)** y, a continuación, realice una de las siguientes acciones:
   + Elija **Add new tags** (Agregar nuevas etiquetas) si el rol aún no tiene.
   + Elija **Manage tags** (Administrar etiquetas) para administrar el conjunto de etiquetas existente.

1. Añada o elimine etiquetas para completar el conjunto de etiquetas. A continuación, elija **Save changes** (Guardar cambios).

## Administrar etiquetas en roles de IAM (AWS CLI o API de AWS)
<a name="id_tags_roles_procs-cli-api"></a>

Puede enumerar, asociar o eliminar etiquetas para usuarios y roles de IAM. También puede utilizar la AWS CLI o la API de AWS para administrar etiquetas de roles de IAM.

**Para obtener una lista de las etiquetas asociadas actualmente a un rol de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-role-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-tags.html)
+ API de AWS: [ListRoleTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoleTags.html)

**Para asociar etiquetas a un rol de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)
+ API de AWS: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

**Para eliminar etiquetas de un rol de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-role.html)
+ API de AWS: [UntagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagRole.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiqueta de políticas administradas por el cliente
<a name="id_tags_customer-managed-policies"></a>

Puede utilizar pares clave-valor de etiqueta de IAM para agregar atributos personalizados a las políticas administradas por el cliente. Por ejemplo, para etiquetar una política con información del departamento, puede agregar la clave de etiqueta **Department** y el valor de la etiqueta **eng**. O bien, es posible que desee etiquetar políticas para indicar que son para un entorno específico, como por ejemplo **Environment = lab**. Puede utilizar etiquetas para controlar el acceso a los recursos o para controlar qué etiquetas se pueden asociar a un recurso. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

## Permisos necesarios para etiquetar políticas administradas por el cliente
<a name="id_tags_customer-managed-policies_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuarios o roles) etiquete políticas administradas por el cliente. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListPolicyTags`
+ `iam:TagPolicy`
+ `iam:UntagPolicy`

**Para permitir que una entidad de IAM (usuario o rol) agregue, enumere o elimine una etiqueta para una política administrada por el cliente**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita administrar etiquetas. Utilice su número de cuenta y reemplace *<policyname>* por el nombre de la política cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListPolicyTags",
        "iam:TagPolicy",
        "iam:UntagPolicy"
    ],
    "Resource": "arn:aws:iam::<account-number>:policy/<policyname>"
}
```

**Para permitir que una entidad de IAM (usuario o rol) agregue una etiqueta a una política específica administrada por el cliente**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite agregar, pero no eliminar, etiquetas para una política específica. 

**nota**  
La acción `iam:TagPolicy` requiere que también incluya la acción `iam:ListPolicyTags`.

Para utilizar esta política, reemplace *<policyname>* por el nombre de la política cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListPolicyTags",
        "iam:TagPolicy"
    ],
    "Resource": "arn:aws:iam::<account-number>:policy/<policyname>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administración de etiquetas en políticas de IAM administradas por el cliente (consola)
<a name="id_tags_customer-managed-policies_procs-console"></a>

Puede administrar etiquetas para políticas de IAM administradas por el cliente desde la Consola de administración de AWS.

**Para administrar etiquetas en políticas administradas por el cliente (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Policies (Políticas)** y, a continuación, elija el nombre de la política administrada por el cliente que desea editar.

1. Seleccione la pestaña **Etiquetas** y, a continuación, **Administrar etiquetas**.

1. Añada o elimine etiquetas para completar el conjunto de etiquetas. A continuación, elija **Guardar cambios**.

## Administrar etiquetas en políticas de IAM administradas por el cliente (AWS CLI o API de AWS)
<a name="id_tags_customer-managed-policies_procs-cli-api"></a>

Puede enumerar, asociar o quitar etiquetas para políticas de IAM administradas por el cliente. Puede utilizar la AWS CLI o la API de AWS para administrar etiquetas para políticas de IAM administradas por el cliente.

**Para enumerar las etiquetas actualmente asociadas a una política de IAM administrada por el cliente (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-policy-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policy-tags.html)
+ API de AWS: [ListPolicyTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicyTags.html)

**Para asociar etiquetas a una política de IAM administrada por el cliente (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-policy.html)
+ API de AWS: [TagPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagPolicy.html)

**Para quitar etiquetas de una política de IAM administrada por el cliente (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-policy.html)
+ API de AWS: [UntagPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagPolicy.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiquetado de proveedores de identidad OpenID Connect (OIDC)
<a name="id_tags_oidc"></a>

Puede utilizar la etiqueta clave-valores de IAM para agregar atributos personalizados a proveedores de identidad OpenID Connect (OIDC) de IAM. Por ejemplo, para identificar un proveedor de identidades OIDC, puede agregar la clave de etiqueta **google** y el valor de la etiqueta **oidc**. Puede utilizar etiquetas para controlar el acceso a los recursos o para controlar qué etiquetas se pueden asociar a un objeto. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

## Permisos necesarios para etiquetar proveedores de identidad OIDC de IAM
<a name="id_tags_oidc_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuario o rol) pueda etiquetar proveedores de identidad OIDC de IAM. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListOpenIDConnectProviderTags`
+ `iam:TagOpenIDConnectProvider`
+ `iam:UntagOpenIDConnectProvider`

**Permita que una entidad de IAM agregue, enumere o elimine una etiqueta para un proveedor de identidades OIDC de IAM**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita administrar etiquetas. Utilice su número de cuenta y reemplace *<OIDCProviderName>* por el nombre del proveedor OIDC cuyas etiquetas deben ser administradas. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListOpenIDConnectProviderTags",
        "iam:TagOpenIDConnectProvider",
        "iam:UntagOpenIDConnectProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:oidc-provider/<OIDCProviderName>"
}
```

**Para permitir que una entidad de IAM (usuario o rol) agregue una etiqueta a un proveedor de identidad OIDC de IAM específico**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite agregar, pero no eliminar, etiquetas para un proveedor de identidad específico.

**nota**  
La acción `iam:TagOpenIDConnectProvider` requiere que también incluya la acción `iam:ListOpenIDConnectProviderTags`.

Para utilizar esta política, reemplace *<OIDCProviderName>* por el nombre del proveedor OIDC cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListOpenIDConnectProviderTags",
        "iam:TagOpenIDConnectProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:oidc-provider/<OIDCProviderName>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administrar etiquetas en proveedores de identidad OIDC de IAM (consola)
<a name="id_tags_oidc_procs-console"></a>

Puede administrar etiquetas para proveedores de identidad OIDC de IAM desde la Consola de administración de AWS.

**Para administrar etiquetas en proveedores de identidad OIDC (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola, elija **Identity providers (Proveedores de identidad)** y, a continuación, elija el nombre del proveedor de identidad que desea editar.

1. Seleccione la pestaña **Etiquetas** y luego, en la sección **Etiquetas**, seleccione **Administrar etiquetas** y realice una de las siguientes acciones:
   + Elija **Add tag (Agregar etiqueta)** si el proveedor de identidad OIDC aún no tiene etiquetas o para agregar una nueva etiqueta.
   + Edite las claves y los valores de etiqueta existentes.
   + Elija **Remove tag (Eliminar etiqueta)** para eliminar una etiqueta.

1. A continuación, elija **Guardar cambios**.

## Administrar etiquetas en proveedores de identidad OIDC de IAM (AWS CLI o API de AWS)
<a name="id_tags_oidc_procs-cli-api"></a>

Puede enumerar, adjuntar o quitar etiquetas para proveedores de identidad OIDC de IAM. Puede utilizar la AWS CLI o la API de AWS para administrar etiquetas para proveedores de identidad OIDC de IAM.

**Para enumerar las etiquetas actualmente asociadas a un proveedor de identidad OIDC de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-open id-connect-provider-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html)
+ API de AWS: [ListOpenIDConnectProviderTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**Para asociar etiquetas a un proveedor de identidad OIDC de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-open-id-connect-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html)
+ API de AWS: [TagOpenIDConnectProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**Para quitar etiquetas de un proveedor de identidad OIDC de IAM (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-open-id-connect-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html)
+ API de AWS: [UntagOpenIDConnectProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiquetado de proveedores de identidad SAML de IAM
<a name="id_tags_saml"></a>

Puede utilizar pares clave-valor de etiquetas de IAM para agregar atributos personalizados a proveedores de identidad SAML. Por ejemplo, para identificar un proveedor, puede agregar la clave de etiqueta **okta** y el valor de la etiqueta **saml**. Puede utilizar etiquetas para controlar el acceso a los recursos o para controlar qué etiquetas se pueden asociar a un objeto. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

## Permisos necesarios para etiquetar proveedores de identidad SAML
<a name="id_tags_saml_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuarios o roles) pueda etiquetar proveedores de identidad (IdP) basados en SAML 2.0. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListSAMLProviderTags`
+ `iam:TagSAMLProvider`
+ `iam:UntagSAMLProvider`

**Para permitir que una entidad de IAM (usuario o rol) agregue, enumere o elimine una etiqueta para un proveedor de identidad SAML**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita administrar etiquetas. Utilice su número de cuenta y reemplace *<SAMLProviderName>* por el nombre del proveedor SAML cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListSAMLProviderTags",
        "iam:TagSAMLProvider",
        "iam:UntagSAMLProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:saml-provider/<SAMLProviderName>"
}
```

**Para permitir que una entidad de IAM (usuario o rol) agregue una etiqueta a un proveedor de identidad SAML específico**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite agregar, pero no eliminar, etiquetas para un usuario específico.

**nota**  
La acción `iam:TagSAMLProvider` requiere que también incluya la acción `iam:ListSAMLProviderTags`.

Para utilizar esta política, reemplace *<SAMLProviderName>* por el nombre del proveedor SAML cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListSAMLProviderTags",
        "iam:TagSAMLProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:saml-provider/<SAMLProviderName>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administrar etiquetas en proveedores de identidad SAML de IAM (consola)
<a name="id_tags_saml_procs-console"></a>

Puede administrar etiquetas para proveedores de identidad SAML de IAM desde la Consola de administración de AWS.

**Para administrar etiquetas en proveedores de identidad SAML (consola)**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación, elija **Identity providers (Proveedores de identidad)** y, a continuación, elija el nombre del proveedor de identidad SAML que desea actualizar.

1. Seleccione la pestaña **Etiquetas** y luego, en la sección **Etiquetas**, seleccione **Administrar etiquetas** y realice una de las siguientes acciones:
   + Elija **Add tag (Agregar etiqueta)** si el proveedor de identidad SAML aún no tiene etiquetas o para agregar una nueva etiqueta.
   + Edite las claves y los valores de etiqueta existentes.
   + Elija **Remove tag (Eliminar etiqueta)** para eliminar una etiqueta.

1. Añada o elimine etiquetas para completar el conjunto de etiquetas. A continuación, elija **Guardar cambios**.

## Administrar etiquetas en proveedores de identidad SAML de IAM (AWS CLI o API de AWS)
<a name="id_tags_saml_procs-cli-api"></a>

Puede enumerar, asociar o quitar etiquetas para proveedores de identidad SAML de IAM. Puede utilizar la AWS CLI o la API de AWS para administrar etiquetas para proveedores de identidad SAML de IAM.

**Para enumerar las etiquetas actualmente asociadas a un proveedor de identidad SAML (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-saml-provider-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html)
+ API de AWS: [ListSAMLProviderTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**Para adjuntar etiquetas a un proveedor de identidades SAML (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-saml-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html)
+ API de AWS: [TagSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**Para quitar etiquetas de un proveedor de identidad SAML (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-saml-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html)
+ API de AWS: [UntagSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiquetado de perfiles de instancia para roles de Amazon EC2
<a name="id_tags_instance-profiles"></a>

Cuando lanza una instancia de Amazon EC2, usted especifica un rol de IAM que se asocia a la instancia. Un perfil de instancia es un contenedor de una función de IAM que se puede utilizar para transferir información de la función a una instancia de Amazon EC2 cuando la instancia se inicia. Puede etiquetar perfiles de instancia cuando utiliza la AWS CLI o la API de AWS.

Puede utilizar pares clave-valor de etiquetas de IAM para agregar atributos personalizados a un perfil de instancias. Por ejemplo, para agregar información de departamento a un perfil de instancia, puede agregar la clave de etiqueta **access-team** y el valor de etiqueta **eng**. Al hacer esto, las entidades principales con etiquetas coincidentes tienen acceso a perfiles de instancia con la misma etiqueta. Puede utilizar varios pares clave-valor de etiquetas para especificar un equipo y un proyecto: **access-team = eng ** y **project = peg**. Puede utilizar etiquetas para controlar el acceso de los usuarios a los recursos o para controlar qué etiquetas se pueden asociar a un usuario. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

## Permisos necesarios para etiquetar perfiles de instancia
<a name="id_tags_instance-profiles_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuario o rol) pueda etiquetar otros perfiles de instancia. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListInstanceProfileTags`
+ `iam:TagInstanceProfile`
+ `iam:UntagInstanceProfile`

**Para permitir que una entidad de IAM (usuario o rol) agregue, enumere o elimine una etiqueta para un perfil de instancias**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita administrar etiquetas. Utilice su número de cuenta y reemplace *<InstanceProfileName>* por el nombre del perfil de instancia cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListInstanceProfileTags",
        "iam:TagInstanceProfile",
        "iam:UntagInstanceProfile"
    ],
    "Resource": "arn:aws:iam::<account-number>:instance-profile/<InstanceProfileName>"
}
```

**Para permitir que una entidad de IAM (usuario o rol) agregue una etiqueta a un perfil de instancias específico**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite agregar, pero no eliminar, etiquetas para un perfil de instancias específico. 

**nota**  
La acción `iam:TagInstanceProfile` requiere que también incluya la acción `iam:ListInstanceProfileTags`.

Para utilizar esta política, reemplace *<InstanceProfileName>* por el nombre del perfil de instancia cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListInstanceProfileTags",
        "iam:TagInstanceProfile"
    ],
    "Resource": "arn:aws:iam::<account-number>:instance-profile/<InstanceProfileName>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administrar etiquetas en perfiles de instancia (AWS CLI o API de AWS)
<a name="id_tags_instance-profile_procs-cli-api"></a>

Puede enumerar, asociar o quitar etiquetas para perfiles de instancia. También puede utilizar la AWS CLI o la API de AWS para administrar etiquetas de perfiles de instancia.

**Para obtener una lista de las etiquetas asociadas actualmente a un perfil de instancia (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-instance-profile-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html)
+ API de AWS: [ListInstanceProfileTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfileTags.html)

**Para asociar etiquetas a un perfil de instancia (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html)
+ API de AWS: [TagInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html)

**Para quitar etiquetas de un perfil de instancia (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html)
+ API de AWS: [UntagInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagInstanceProfile.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiquetado de certificados de servidor
<a name="id_tags_server-certificates"></a>

Si utiliza IAM para administrar certificados SSL/TLS, puede etiquetar certificados de servidor de IAM mediante la AWS CLI o la API de AWS. Si se trata de una región compatible con AWS Certificate Manager (ACM), le recomendamos que utilice ACM en vez de IAM para aprovisionar, administrar e implementar los certificados de servidor. En las regiones no compatibles, debe utilizar IAM como Certificate Manager. Para saber qué regiones admite , consulte [puntos finales y cuotas de AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) en la *Referencia general de AWS*.

Puede utilizar pares clave-valor de etiquetas de IAM para agregar atributos personalizados a un certificado de servidor. Por ejemplo, para agregar información sobre el propietario o administrador de un certificado de servidor, agregue la clave de etiqueta **owner** y el valor de la etiqueta **net-eng**. También puede especificar un centro de costo al agregar la clave de etiqueta **CostCenter** y el valor de la etiqueta **1234**. Puede utilizar etiquetas para controlar el acceso a los recursos o para controlar qué etiquetas se pueden asociar a recursos. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

## Permisos necesarios para etiquetar certificados de servidor
<a name="id_tags_server-certificates_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuario o rol) pueda etiquetar certificados de servidor. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListServerCertificateTags`
+ `iam:TagServerCertificate`
+ `iam:UntagServerCertificate`

**Para permitir que una entidad de IAM (usuario o rol) agregue, enumere o elimine una etiqueta para un certificado de servidor**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita administrar etiquetas. Utilice su número de cuenta y reemplace *<CertificateName>* por el nombre del certificado del servidor cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListServerCertificateTags",
        "iam:TagServerCertificate",
        "iam:UntagServerCertificate"
    ],
    "Resource": "arn:aws:iam::<account-number>:server-certificate/<CertificateName>"
}
```

**Para permitir que una entidad de IAM (usuario o rol) agregue una etiqueta a un certificado de servidor específico**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite agregar, pero no eliminar, etiquetas para un certificado de servidor específico.

**nota**  
La acción `iam:TagServerCertificate` requiere que también incluya la acción `iam:ListServerCertificateTags`.

Para utilizar esta política, reemplace *<CertificateName>* por el nombre del certificado de servidor cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListServerCertificateTags",
        "iam:TagServerCertificate"
    ],
    "Resource": "arn:aws:iam::<account-number>:server-certificate/<CertificateName>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administrar etiquetas en certificados de servidor (AWS CLI o API de AWS)
<a name="id_tags_server-certificates_procs-cli-api"></a>

Puede enumerar, asociar o quitar etiquetas para certificados de servidor. También puede utilizar la AWS CLI o la API de AWS para administrar etiquetas de certificados de servidor.

**Para enumerar las etiquetas actualmente asociadas a un certificado de servidor (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-server-certificate-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-server-certificate-tags.html)
+ API de AWS: [ListServerCertificateTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificateTags.html)

**Para asociar etiquetas a un certificado de servidor (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-server-certificate.html)
+ API de AWS: [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html)

**Para quitar etiquetas de un certificado de servidor (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-server-certificate.html)
+ API de AWS: [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Etiquetado de dispositivos MFA virtuales
<a name="id_tags_virtual-mfa"></a>

Puede utilizar pares clave-valor de etiquetas de IAM para agregar atributos personalizados a un dispositivo MFA virtual. Por ejemplo, para agregar información del centro de costo para el dispositivo MFA virtual de un usuario, puede agregar la clave de etiqueta **CostCenter** y el valor de la etiqueta **1234**. Puede utilizar etiquetas para controlar el acceso a los recursos o para controlar qué etiquetas se pueden asociar a un objeto. Para obtener más información sobre cómo utilizar etiquetas de para controlar el acceso, consulte [Control de acceso a usuarios y roles de IAM y para ellos mediante etiquetas](access_iam-tags.md).

También puede utilizar etiquetas en AWS STS para añadir atributos personalizados cuando asuma un rol o federe un usuario. Para obtener más información, consulte [Transferencia de etiquetas de sesión en AWS STS](id_session-tags.md).

## Permisos necesarios para etiquetar dispositivos MFA virtuales
<a name="id_tags_virtual-mfa_permissions"></a>

Debe configurar permisos para permitir que una entidad de IAM (usuario o rol) pueda etiquetar otros dispositivos MFA virtuales. Puede especificar una o todas las acciones de etiqueta de IAM siguientes en una política de IAM:
+ `iam:ListMFADeviceTags`
+ `iam:TagMFADevice`
+ `iam:UntagMFADevice`

**Para permitir que una entidad de IAM (usuario o rol) agregue, enumere o elimine una etiqueta para un dispositivo MFA virtual**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesita administrar etiquetas. Utilice el número de cuenta y reemplace *<MFATokenID>* por el nombre del dispositivo MFA virtual cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListMFADeviceTags",
        "iam:TagMFADevice",
        "iam:UntagMFADevice"
    ],
    "Resource": "arn:aws:iam::<account-number>:mfa/<MFATokenID>"
}
```

**Para permitir que una entidad de IAM (usuario o rol) agregue una etiqueta a un dispositivo MFA virtual específico**  
Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite agregar, pero no eliminar, etiquetas para un dispositivo MFA específico.

**nota**  
La acción `iam:TagMFADevice` requiere que también incluya la acción `iam:ListMFADeviceTags`.

Para utilizar esta política, reemplace *<MFATokenID>* por el nombre del dispositivo MFA virtual cuyas etiquetas deben administrarse. Para obtener información sobre cómo crear una política mediante este documento de política JSON de ejemplo, consulte [Creación de políticas mediante el editor JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListMFADeviceTags",
        "iam:TagMFADevice"
    ],
    "Resource": "arn:aws:iam::<account-number>:mfa/<MFATokenID>"
}
```

También puede utilizar una política administrada de AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess) para proporcionar acceso completo a IAM.

## Administrar etiquetas en dispositivos MFA virtuales (AWS CLI o API de AWS)
<a name="id_tags_virtual-mfa_procs-cli-api"></a>

Puede enumerar, asociar o quitar etiquetas para un dispositivo MFA virtual. Puede utilizar la AWS CLI o la API de AWS para administrar etiquetas de un dispositivo MFA virtual.

**Para enumerar las etiquetas actualmente asociadas a un dispositivo MFA virtual (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam list-mfa-device-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html)
+ API de AWS: [ListMFADeviceTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html)

**Para asociar etiquetas a un dispositivo MFA virtual (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam tag-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html)
+ API de AWS: [TagMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html)

**Para quitar etiquetas de un dispositivo MFA virtual (AWS CLI o API de AWS)**
+ AWS CLI: [aws iam untag-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html)
+ API de AWS: [UntagMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html)

Para obtener información acerca de cómo asociar etiquetas a los recursos de otros servicios de AWS, consulte la documentación de dichos servicios. 

Para obtener información sobre el uso de etiquetas para establecer permisos pormenorizados con políticas de permisos de IAM, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md).

# Transferencia de etiquetas de sesión en AWS STS
<a name="id_session-tags"></a>

Las etiquetas de sesión son atributos de par clave-valor que se pasan al asumir un rol de IAM o federar un usuario en AWS STS. Para ello, realice una solicitud a la AWS CLI o API AWS a través de AWS STS o a través de su proveedor de identidad (IdP). Cuando se utiliza AWS STS para solicitar credenciales de seguridad temporales, se genera una sesión. Las sesiones caducan y tienen [credenciales](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html), como un par de claves de acceso y un token de sesión. Cuando utiliza las credenciales de sesión para realizar una solicitud posterior, el [contexto de solicitud](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext) incluye la `aws:PrincipalTag` clave de contexto. Puede utilizar la clave `aws:PrincipalTag` del elemento `Condition` de sus políticas para permitir o denegar el acceso basándose en esas etiquetas.

Cuando utiliza credenciales temporales para realizar una solicitud, la entidad principal puede incluir un conjunto de etiquetas. Estas etiquetas provienen de las siguientes fuentes:

1. **Etiquetas de sesión** - Estas etiquetas se pasaron cuando asumió el rol o se federó al usuario mediante la AWS CLI o API de AWS. Para obtener más información sobre estas operaciones, consulte [Operaciones de etiquetado de sesiones](#id_session-tags_operations).

1. **Etiquetas de sesión transitiva entrantes** - Estas etiquetas se heredaron de una sesión anterior en una cadena de roles. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining) más adelante en este tema.

1. **Etiquetas de IAM** — Las etiquetas adjuntas a su rol asumido de IAM.

**Topics**
+ [

## Operaciones de etiquetado de sesiones
](#id_session-tags_operations)
+ [

## Cosas que debe saber sobre las etiquetas de sesión
](#id_session-tags_know)
+ [

## Permisos necesarios para agregar etiquetas de sesión
](#id_session-tags_permissions-required)
+ [

## Traspaso de etiquetas de sesión mediante AssumeRole
](#id_session-tags_adding-assume-role)
+ [

## Traspaso de etiquetas de sesión mediante AssumeRoleWithSAML
](#id_session-tags_adding-assume-role-saml)
+ [

## Traspaso de etiquetas de sesión mediante AssumeRoleWithWebIdentity
](#id_session-tags_adding-assume-role-idp)
+ [

## Traspaso de etiquetas de sesión mediante GetFederationToken
](#id_session-tags_adding-getfederationtoken)
+ [

## Encadenamiento de roles con etiquetas de sesión
](#id_session-tags_role-chaining)
+ [

## Uso de etiquetas de sesión para ABAC
](#id_session-tags_using-abac)
+ [

## Ver las etiquetas de sesión en CloudTrail
](#id_session-tags_ctlogs)

## Operaciones de etiquetado de sesiones
<a name="id_session-tags_operations"></a>

Puede pasar etiquetas de sesión utilizando las siguientes operaciones de las API de AWS CLI o AWS en AWS STS. *La Consola de administración de AWS **[ tiene una función Cambiar rol](id_roles_use_switch-role-console.md)** que no permite pasar etiquetas de sesión.*

También puede establecer las etiquetas de sesión como transitivas. Las etiquetas transitivas persisten durante el encadenamiento de roles. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining).

En la siguiente tabla, se comparan métodos para pasar etiquetas de sesión.


|  Operación |  **¿Quién puede asumir el rol?**  | **Método para pasar etiquetas** |  **Método para establecer etiquetas transitivas**  | 
| --- | --- | --- | --- | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) de la API | Usuario o sesión de IAM | Parámetro Tags de la API u opción --tags de CLI | Parámetro TransitiveTagKeys de la API u opción --transitive-tag-keys de CLI | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) de la API | Cualquier usuario autenticado con un proveedor de identidad de SAML | Atributo PrincipalTag de SAML | Atributo TransitiveTagKeys de SAML | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) de la API | Cualquier usuario autenticado con OIDC | PrincipalTag Símbolo OIDC | TransitiveTagKeys Símbolo OIDC | 
| Operación [https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) de la CLI u operación [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) de la API | Usuario raíz o usuario de IAM | Parámetro Tags de la API u opción --tags de CLI | No admitido | 

Las operaciones que admiten el etiquetado de sesiones pueden fallar bajo alguna de las condiciones siguientes:
+ Pasa más de 50 etiquetas de sesión.
+ El texto sin formato de las claves de etiqueta de sesión supera los 128 caracteres.
+ El texto sin formato de los valores de las etiquetas de sesión supera los 256 caracteres.
+ El tamaño total del texto sin formato de las políticas de sesión supera los 2048 caracteres.
+ El tamaño total del paquete de las políticas de sesión y las etiquetas combinadas es demasiado grande. Si la operación falla, el mensaje de error indica, por porcentaje, qué tan cerca están las políticas y etiquetas combinadas al límite de tamaño superior.

## Cosas que debe saber sobre las etiquetas de sesión
<a name="id_session-tags_know"></a>

Antes de utilizar las etiquetas de sesión, revise los siguientes detalles sobre las sesiones y las etiquetas.
+ Cuando se utilizan etiquetas de sesión, las políticas de confianza para todos los roles conectados al proveedor de identidades (IdP) que pasa etiquetas deben tener el permiso [`sts:TagSession`](#id_session-tags_permissions-required). En el caso de los roles que no tienen este permiso en la política de confianza, la operación `AssumeRole` fallará.
+ Cuando solicita una sesión, puede especificar etiquetas principales como etiquetas de sesión. Las etiquetas se aplican a las solicitudes que realice con las credenciales de la sesión.
+ Las etiquetas de sesión usan pares clave/valor. Por ejemplo, para agregar información de contacto a una sesión, puede agregar la clave de etiqueta de sesión `email` y el valor de etiqueta `johndoe@example.com`.
+ Las etiquetas de sesión deben seguir las [reglas para asignar nombres a las etiquetas en IAM y AWS STS](id_tags.md#id_tags_rules_creating). Este tema incluye información sobre la distinción entre mayúsculas y minúsculas y los prefijos restringidos que se aplican a las etiquetas de sesión.
+ Las nuevas etiquetas de sesión anulan las etiquetas existentes de sesiones de rol asumido o de usuario federado que tengan la misma clave de etiqueta, sin importar el uso de mayúsculas o minúsculas.
+ No puede pasar las etiquetas de sesión con la Consola de administración de AWS.
+ Las etiquetas de sesión son válidas solo para la sesión actual. 
+ Las etiquetas de sesión admiten [el encadenamiento de roles](id_roles.md#iam-term-role-chaining). De forma predeterminada, AWS STS no pasa etiquetas a sesiones de rol posteriores. Sin embargo, puede establecer las etiquetas de sesión como transitivas. Las etiquetas transitivas persisten durante el encadenamiento de roles y reemplazan la coincidencia de los valores `ResourceTag` después de la evaluación de la política de confianza de rol. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining).
+ Puede utilizar etiquetas de sesión para controlar el acceso a los recursos o para controlar qué etiquetas se pueden pasar a una sesión posterior. Para obtener más información, consulte [Tutorial de IAM: utilizar etiquetas de sesión SAML para ABAC](tutorial_abac-saml.md).
+ Puede ver las etiquetas principales de la sesión, incluidas sus etiquetas de sesión, en los registros de AWS CloudTrail. Para obtener más información, consulte [Ver las etiquetas de sesión en CloudTrail](#id_session-tags_ctlogs).
+ Debe pasar un solo valor para cada etiqueta de sesión. AWS STS no admite etiquetas de sesión de varios valores. 
+ Puede pasar un máximo de 50 etiquetas de sesión. El número y el tamaño de recursos de IAM en una cuenta de AWS son limitados. Para obtener más información, consulte [IAM y cuotas de AWS STS](reference_iam-quotas.md).
+ Una conversión de AWS comprime las políticas de sesión pasadas y las etiquetas de sesión combinadas en un formato binario empaquetado con un límite separado. Si supera este límite, el mensaje de error de la API de AWS CLI o AWS indica, por porcentaje, qué tan cerca están las políticas y etiquetas combinadas del límite de tamaño superior.

## Permisos necesarios para agregar etiquetas de sesión
<a name="id_session-tags_permissions-required"></a>

Además de la acción que coincide con la operación de la API, debe tener la siguiente acción de solo permisos en la política:

```
sts:TagSession
```

**importante**  
Cuando se utilizan etiquetas de sesión, las políticas de confianza de roles para todos los roles conectados a un proveedor de identidades (IdP) deben tener el permiso `sts:TagSession`. La operación `AssumeRole` producirá un error para cualquier rol conectado a un proveedor de identidad que pase etiquetas de sesión sin este permiso. Si no desea actualizar la política de confianza de rol para cada rol, puede utilizar una instancia de proveedor de identidades independiente para pasar las etiquetas de sesión. A continuación, agregue el permiso `sts:TagSession` solo a los roles que están conectados al proveedor de identidades independiente.

Puede utilizar la acción `sts:TagSession` con las siguientes claves de condición.
+ `aws:PrincipalTag` – Compara la etiqueta asociada a la entidad principal que realiza la solicitud con la etiqueta que especifique en la política. Por ejemplo, puede permitir que una entidad principal pase las etiquetas de sesión solo si la entidad principal que realiza la solicitud tiene las etiquetas especificadas.
+ `aws:RequestTag` – Compara el par clave-valor de etiqueta que se transfirió en la solicitud con el par de etiquetas especificado en la política. Por ejemplo, puede permitir que la entidad principal pase las etiquetas de sesión especificadas, pero solo con los valores especificados.
+ `aws:ResourceTag` – Compara el par clave-valor de etiqueta que especifique en la política con el par clave-valor asociado al recurso. Por ejemplo, puede permitir que la entidad principal pase las etiquetas de sesión solo si el rol que asume incluye las etiquetas especificadas.
+ `aws:TagKeys` – Compara las claves de etiqueta de una solicitud con las claves que especifique en la política. Por ejemplo, puede permitir que la entidad principal pase solo las etiquetas de sesión con las claves de etiqueta especificadas. Esta clave de condición limita el conjunto máximo de etiquetas de sesión que se pueden pasar.
+ `sts:TransitiveTagKeys` - Compara las claves de etiqueta de sesión transitiva de la solicitud con las especificadas en la política. Por ejemplo, puede escribir una política para permitir que una entidad principal establezca solo etiquetas específicas como transitivas. Las etiquetas transitivas persisten durante el encadenamiento de roles. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining).

Por ejemplo, la siguiente [política de confianza de rol](id_roles.md#term_trust-policy) permite al usuario `test-session-tags` asumir el rol con la política asociada. Cuando ese usuario asume el rol, debe utilizar la API de AWS CLI o AWS para pasar las tres etiquetas de sesión requeridas y el [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id)requerido. Además, el usuario puede elegir establecer las etiquetas `Project` y `Department` como transitivas.

**Example Ejemplo de política de confianza de rol para etiquetas de sesión**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIamUserAssumeRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/test-session-tags"},
            "Condition": {
              "StringLike": {
                    "aws:RequestTag/Project": "*",
                    "aws:RequestTag/CostCenter": "*",
                    "aws:RequestTag/Department": "*"
                },
                "StringEquals": {"sts:ExternalId": "Example987"}
            }
        },
        {
            "Sid": "AllowPassSessionTagsAndTransitive",
            "Effect": "Allow",
            "Action": "sts:TagSession",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/test-session-tags"},
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/Project": "*",
                    "aws:RequestTag/CostCenter": "*"
                },
                "StringEquals": {
                    "aws:RequestTag/Department": [
                        "Engineering",
                        "Marketing"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "sts:TransitiveTagKeys": [
                        "Project",
                        "Department"
                    ]
                }
            }
        }
    ]
}
```

**¿Qué hace esta política?**
+ La instrucción `AllowIamUserAssumeRole` permite al usuario `test-session-tags` asumir el rol con la política asociada. Cuando ese usuario asume el rol, debe pasar las etiquetas de sesión requeridas y el [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id).
  + El primer bloque de condición de esta instrucción requiere que el usuario pase las etiquetas de sesión `Project`, `CostCenter` y `Department`. Los valores de etiqueta no importan en esta instrucción, por lo que puede utilizar comodines (\$1) para los valores de etiqueta. Este bloque garantiza que el usuario pase al menos estas tres etiquetas de sesión. De lo contrario, la operación no se llevará a cabo correctamente. El usuario puede pasar etiquetas adicionales.
  + El segundo bloque de condición requiere que el usuario pase un [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) con el valor `Example987`.
+ La instrucción `AllowPassSessionTagsAndTransitive` permite la acción `sts:TagSession` de solo permisos. Esta acción debe permitirse antes de que el usuario pueda pasar las etiquetas de sesión. Si la política incluye la primera instrucción sin la segunda sentencia, el usuario no puede asumir el rol.
  + El primer bloque de condición de esta sentencia permite al usuario pasar cualquier valor para las etiquetas de sesión `CostCenter` y `Project`. Para ello, se utilizan comodines (\$1) para el valor de etiqueta en la política, lo que requiere que utilice el operador de condición [StringLike](reference_policies_elements_condition_operators.md#Conditions_String) .
  + El segundo bloque de condición permite al usuario pasar solo el valor `Engineering` o `Marketing` para la etiqueta de sesión `Department`.
  + El tercer bloque de condición enumera el conjunto máximo de etiquetas que se puede establecer como transitivo. El usuario puede elegir establecer un subconjunto o ninguna etiqueta como transitivo. No pueden establecer etiquetas adicionales como transitivas. Puede requerir que establezcan al menos una de las etiquetas como transitiva agregando otro bloque de condición que incluya `"Null":{"sts:TransitiveTagKeys":"false"}`. 

## Traspaso de etiquetas de sesión mediante AssumeRole
<a name="id_session-tags_adding-assume-role"></a>

La operación `AssumeRole` devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Puede utilizar credenciales de usuario de IAM o credenciales de rol para llamar a `AssumeRole`. Para pasar etiquetas de sesión mientras asume un rol, utilice la opción `--tags` de AWS CLI o el parámetro `Tags` de la API de AWS. 

Para definir las etiquetas como transitivas, utilice la opción `--transitive-tag-keys` de AWS CLI o el parámetro `TransitiveTagKeys` de la API de AWS. Las etiquetas transitivas persisten durante el encadenamiento de roles. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining).

En el ejemplo siguiente se muestra una solicitud de ejemplo que utiliza `AssumeRole`. En este ejemplo, cuando se asume el rol `my-role-example`, se crea una sesión denominada `my-session`. Agregue los pares clave-valor de etiqueta de sesión `Project` = `Automation`, `CostCenter` = `12345` y `Department` = `Engineering`. También puede establecer las etiquetas `Project` y `Department` como transitivas especificando sus claves. Debe pasar un solo valor para cada etiqueta de sesión. AWS STS no admite etiquetas de sesión de varios valores.

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/my-role-example \
--role-session-name my-session \
--tags Key=Project,Value=Automation Key=CostCenter,Value=12345 Key=Department,Value=Engineering \
--transitive-tag-keys Project Department \
--external-id Example987
```

## Traspaso de etiquetas de sesión mediante AssumeRoleWithSAML
<a name="id_session-tags_adding-assume-role-saml"></a>

La operación `AssumeRoleWithSAML` se autentica mediante la federación basada en SAML. Esta operación devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Para obtener más información acerca del uso de la federación basada en SAML para el acceso a la Consola de administración de AWS, consulte [Concesión de acceso a la Consola de administración de AWS a las entidades principales federadas de SAML 2.0](id_roles_providers_enable-console-saml.md). Para obtener información detallada sobre el acceso a la API de AWS CLI o AWS, consulte [Federación SAML 2.0](id_roles_providers_saml.md). Para obtener un tutorial sobre cómo configurar la federación de SAML para los usuarios de Active Directory, consulte [Federated Authentication with Active Directory Federation Services (ADFS) de AWS](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) en el blog de seguridad de AWS. 

Como administrador, puede permitir que los miembros del directorio de su empresa se federen en AWS mediante la operación AWS STS `AssumeRoleWithSAML`. Para ello, debe completar las siguientes tareas:

1. [Configurar la red como proveedor SAML para AWS](id_roles_providers_saml_3rd-party.md).

1. [Crear un proveedor SAML en IAM](id_roles_providers_create_saml.md)

1. [Creación de un rol para una federación SAML 2.0 (consola)](id_roles_create_for-idp_saml.md)

1. [Finalizar la configuración del proveedor de identidad SAML y crear aserciones para la respuesta de autenticación SAML](id_roles_providers_create_saml_assertions.md)

AWS incluye proveedores de identidad que han certificado la experiencia integral para etiquetas de sesión con sus soluciones de identidad. Para obtener información sobre cómo utilizar estos proveedores de identidad para configurar etiquetas de sesión, consulte [Integración de proveedores de soluciones SAML externos con AWS](id_roles_providers_saml_3rd-party.md).

Para pasar los atributos de SAML como etiquetas de sesión, incluya el elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Utilice el elemento `AttributeValue` para especificar el valor de la etiqueta. Incluya un elemento `Attribute` separado para cada etiqueta de sesión.

Por ejemplo, suponga que desea pasar los siguientes atributos de identidad como etiquetas de sesión:
+ `Project:Automation`
+ `CostCenter:12345`
+ `Department:Engineering`

Para pasar estos atributos, incluya los siguientes elementos en su aserción de SAML.

**Example Ejemplo de fragmento de una aserción de SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Automation</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Department">
  <AttributeValue>Engineering</AttributeValue>
</Attribute>
```

Para establecer las etiquetas anteriores como transitivas, incluya otro elemento `Attribute` con el atributo `Name` establecido en `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. Las etiquetas transitivas persisten durante el encadenamiento de roles. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining).

Para establecer las etiquetas `Project` y `Department` como transitivas, utilice el siguiente atributo multivalor:

**Example Ejemplo de fragmento de una aserción de SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>Department</AttributeValue>
</Attribute>
```

## Traspaso de etiquetas de sesión mediante AssumeRoleWithWebIdentity
<a name="id_session-tags_adding-assume-role-idp"></a>

Utilice la federación de OpenID Connect (OIDC)-compliant para autenticar la operación `AssumeRoleWithWebIdentity`. Esta operación devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Para obtener más información acerca del uso de la federación de identidades web para el acceso a la Consola de administración de AWS, consulte [Federación OIDC](id_roles_providers_oidc.md).

Para pasar las etiquetas de sesión desde OpenID Connect (OIDC), debe incluir las etiquetas de sesión en token web JSON (JWT) cuando envía la solicitud `AssumeRoleWithWebIdentity`. Para obtener más información sobre los tokens y las notificaciones de OIDC, consulte [Uso de tokens con grupos de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) en la *Guía para desarrolladores de Amazon Cognito*.

AWS admite dos formatos de notificación para incluir etiquetas de sesión en el JWT: 
+ Formato de reclamación anidada
+ Formato de reclamación aplanada

### Formato de reclamación anidada
<a name="id_session-tags_adding-assume-role-idp-nested-format"></a>

El formato de reclamación anidada utiliza una estructura dentro del espacio de nombres `https://aws.amazon.com/tags` del JWT. En este formato:
+ Las etiquetas principales se representan como un objeto anidado debajo de la clave `principal_tags`.
+ Cada etiqueta principal es un valor de cadena único.
+ Las claves de etiquetas transitivas se representan en una matriz debajo de la clave `transitive_tag_keys`.
+ Ambas `principal_tags` y `transitive_tag_keys` están anidadas en el espacio de nombres `https://aws.amazon.com/tags`.

En el ejemplo siguiente se muestra un JWT decodificado mediante el formato de objeto anidado: 

**Example Ejemplo de token web JSON decodificado mediante el formato de reclamación anidada**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags": {
        "principal_tags": {
            "Project": ["Automation"],
            "CostCenter": ["987654"],
            "Department": ["Engineering"]
        },
        "transitive_tag_keys": [
            "Project",
            "CostCenter"
        ]
    }
}
```

### Formato de reclamación aplanada
<a name="id_session-tags_adding-assume-role-idp-flattened-format"></a>

El formato de reclamación aplanada es compatible con los proveedores de identidad que no admiten objetos anidados en las reclamaciones de JWT, como Microsoft Entra ID. En este formato:
+ Las etiquetas principales se representan como reclamaciones independientes con el prefijo `https://aws.amazon.com/tags/principal_tags/`. 
+ Cada etiqueta principal es un valor de cadena único.
+ Las claves de etiquetas transitivas se representan en una sola reclamación como una matriz de cadenas con el prefijo `https://aws.amazon.com/tags/transitive_tag_keys`.

Ahora, veamos cómo se representa la misma información utilizando el formato de reclamación aplanada:

**Example Ejemplo de token web JSON decodificado mediante el formato de reclamación aplanada**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags/principal_tags/Project": "Automation",
    "https://aws.amazon.com/tags/principal_tags/CostCenter": "987654",
    "https://aws.amazon.com/tags/principal_tags/Department": "Engineering",
    "https://aws.amazon.com/tags/transitive_tag_keys": [
        "Project",
        "CostCenter"
    ]
}
```

Ambos ejemplos de JWT decodificados muestran una llamada a `AssumeRoleWithWebIdentity` con las etiquetas de sesión `Project`, `CostCenter` y `Department`. Ambos tokens establecen las etiquetas `Project` y `CostCenter` como transitivas. Las etiquetas transitivas persisten durante el encadenamiento de roles. Para obtener más información, consulte [Encadenamiento de roles con etiquetas de sesión](#id_session-tags_role-chaining).

El formato de reclamación aplanada logra el mismo resultado que el formato de reclamación anidada, pero utiliza una estructura aplanada para las etiquetas. Permite incluir etiquetas de sesión en entornos en los que las reclamaciones de JWT no admiten objetos JSON anidados. Cuando utilice cualquiera de los dos formatos, asegúrese de que su proveedor de identidad esté configurado para emitir tokens con las estructuras de reclamación adecuadas. AWS admite ambos formatos de reclamación, por lo que puede elegir el que mejor se adapte a los requisitos específicos de su proveedor de identidad.

## Traspaso de etiquetas de sesión mediante GetFederationToken
<a name="id_session-tags_adding-getfederationtoken"></a>

`GetFederationToken` le permite federar a su usuario. Esta operación devuelve un conjunto de credenciales temporales que puede utilizar para tener acceso a los recursos de AWS. Para agregar etiquetas a la sesión de usuario federado, utilice la opción `--tags` de AWS CLI o el parámetro `Tags` de la API de AWS. No se pueden establecer las etiquetas de sesión como transitivas cuando se utiliza `GetFederationToken`, porque no puede utilizar las credenciales temporales para asumir un rol. No se puede utilizar el encadenamiento de roles en este caso. 

El ejemplo siguiente es una respuesta de ejemplo utilizando `GetFederationToken`. En este ejemplo, cuando se solicita el token, se crea una sesión denominada `my-fed-user`. Agregue los pares clave-valor de etiqueta de sesión `Project` = `Automation` y `Department` = `Engineering`.

**Example Ejemplo de solicitud de la CLI de GetFederationToken**  

```
aws sts get-federation-token \
--name my-fed-user \
--tags key=Project,value=Automation key=Department,value=Engineering
```

Cuando utiliza las credenciales temporales devueltas por la operación `GetFederationToken`, las etiquetas principales de la sesión incluyen las etiquetas del usuario y las etiquetas de sesión pasadas.

## Encadenamiento de roles con etiquetas de sesión
<a name="id_session-tags_role-chaining"></a>

Puede asumir un rol y, a continuación, utilizar las credenciales temporales para asumir otro rol. Puede continuar de una sesión a otra. Esto se llama [encadenamiento de roles](id_roles.md#iam-term-role-chaining). Cuando pasa las etiquetas de sesión mientras asume un rol, puede establecer las claves como transitivas. Esto garantiza que esas etiquetas de sesión pasen a sesiones posteriores en una cadena de roles. No se pueden establecer etiquetas de rol como transitivas. Para pasar estas etiquetas a sesiones posteriores, especifíquelas como etiquetas de sesión.

**nota**  
Las etiquetas transitivas persisten durante el encadenamiento de roles y reemplazan la coincidencia de los valores `ResourceTag` después de la evaluación de la política de confianza de rol.

El siguiente ejemplo muestra cómo AWS STS pasa las etiquetas de sesión, las etiquetas transitivas y las etiquetas de rol a sesiones posteriores en una cadena de roles.

En este escenario de encadenamiento de roles de ejemplo, utilice las claves de acceso de un usuario de IAM en el AWS CLI para asumir un rol denominado `Role1`. A continuación, utilice las credenciales de sesión resultantes para asumir un segundo rol denominado `Role2`. A continuación, puede utilizar las credenciales de la segunda sesión para asumir un tercer rol denominado `Role3`. Estas solicitudes se producen como tres operaciones separadas. Cada rol ya está etiquetado en IAM. Y durante cada solicitud, se pasan etiquetas de sesión adicionales.

![\[Encadenamiento de roles\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/session-tags-chaining-simple.png)


Al encadenar roles, puede asegurarse de que las etiquetas de una sesión anterior persisten en las sesiones posteriores. Para ello mediante el comando `assume-role` de CLI, debe pasar la etiqueta como una etiqueta de sesión y establecer la etiqueta como transitiva. Pase la etiqueta `Star` = `1` como una etiqueta de sesión. El comando también adjunta la etiqueta `Heart` = `1` al rol y se aplica como etiqueta principal cuando se utiliza la sesión. Sin embargo, también quiere que la etiqueta `Heart` = `1` pase automáticamente a la segunda o tercera sesión. Para ello, debe incluirla manualmente como una etiqueta de sesión. Las etiquetas principales de sesión resultantes incluyen ambas etiquetas y las establece como transitivas.

![\[Asumir el primer rol en una cadena de roles\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/session-tags-chaining-role1.png)


Realice esta solicitud mediante el siguiente comando de AWS CLI:

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role1 \
--role-session-name Session1 \
--tags Key=Star,Value=1 Key=Heart,Value=1 \
--transitive-tag-keys Star Heart
```

A continuación, utilice las credenciales para esa sesión para asumir `Role2`. El comando adjunta la etiqueta `Sun` = `2` al segundo rol y se aplica como etiqueta principal cuando se utiliza la segunda sesión. Las etiquetas `Heart` y `Star` heredan las etiquetas de sesión transitiva de la primera sesión. Las etiquetas principales resultantes de la segunda sesión son `Heart` = `1`, `Star` = `1` y `Sun` = `2`. `Heart` y `Star` seguirán siendo transitorias. La etiqueta `Sun` que se adjuntó a `Role2` no está marcada como transitiva porque no es una etiqueta de sesión. Las sesiones futuras no heredan esta etiqueta. 

![\[Asumir el segundo rol en una cadena de roles\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/session-tags-chaining-role2.png)


Realice esta segunda solicitud utilizando el siguiente comando de AWS CLI:

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role2 \
--role-session-name Session2
```

A continuación, utilice las credenciales de la segunda sesión para asumir `Role3`. Las etiquetas principales de la tercera sesión provienen de cualquier etiqueta de sesión nueva, de las etiquetas de sesión transitiva heredadas y de las etiquetas de rol. Las etiquetas `Heart` = `1` y `Star` = `1` de la segunda sesión se heredaron de la etiqueta de sesión transitiva de la primera sesión. Si intenta pasar la etiqueta de sesión `Sun` = `2`, la operación fallará. La etiqueta de sesión heredada `Star` = 1 anula la etiqueta rol `Star` = `3` . En el encadenamiento de roles, el valor de una etiqueta transitiva anula el rol que coincide con el valor `ResourceTag` después de la evaluación de la política de confianza de rol. En este ejemplo, si `Role3` utiliza `Star` como `ResourceTag` en la política de confianza de rol, y establece `ResourceTag` al valor de etiqueta transitiva de la sesión de rol de llamada. La etiqueta del rol `Lightning` también se aplica a la tercera sesión y no se establece como transitiva.

![\[Asumir el tercer rol en una cadena de roles\]](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/session-tags-chaining-role3.png)


Realice la tercera solicitud con el siguiente comando de AWS CLI:

**Example Ejemplo de solicitud de la CLI de AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role3 \
--role-session-name Session3
```

## Uso de etiquetas de sesión para ABAC
<a name="id_session-tags_using-abac"></a>

El control de acceso basado en atributos (ABAC) es una estrategia de autorización que define permisos basados en atributos de etiquetas. 

Si su empresa utiliza un proveedor de identidad (IdP) basado en OIDC o SAML para administrar las identidades de usuario, puede configurar su aserción SAML para que pase las etiquetas de sesión a AWS. Por ejemplo, con las identidades de usuario corporativo, cuando sus empleados se federan en AWS, AWSaplica sus atributos a su entidad principal resultante. Entonces puede utilizar ABAC para permitir o denegar permisos basados en esos atributos. Para obtener más información, consulte [Tutorial de IAM: utilizar etiquetas de sesión SAML para ABAC](tutorial_abac-saml.md).

Para obtener más información acerca del uso de IAM Identity Center con ABAC, consulte [Atributos para el control de acceso](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributesforaccesscontrol.html) en la *Guía del usuario de AWS IAM Identity Center*.

## Ver las etiquetas de sesión en CloudTrail
<a name="id_session-tags_ctlogs"></a>

Puede utilizar AWS CloudTrail para ver las solicitudes hechas para asumir roles o federar usuarios. El archivo de registro de CloudTrail incluye información sobre las etiquetas principales para la sesión de usuario federado o de rol asumido. Para obtener más información, consulte [Registro de llamadas a IAM y a la API de AWS STS con AWS CloudTrail](cloudtrail-integration.md).

Por ejemplo, suponga que realiza una solicitud AWS STS `AssumeRoleWithSAML`, pasa las etiquetas de sesión y establece esas etiquetas como transitivas. Puede encontrar la siguiente información en su registro de CloudTrail.

**Example Ejemplo de registro de CloudTrail de ASSumeroleWithSAML**  

```
    "requestParameters": {
        "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE",
        "roleSessionName": "MyRoleSessionName",
        "principalTags": {
            "CostCenter": "987654",
            "Project": "Unicorn"
        },
        "transitiveTagKeys": [
            "CostCenter",
            "Project"
        ],
        "durationSeconds": 3600,
        "roleArn": "arn:aws:iam::123456789012:role/SAMLTestRoleShibboleth",
        "principalArn": "arn:aws:iam::123456789012:saml-provider/Shibboleth"
    },
```

Puede ver los registros de CloudTrail de ejemplo siguientes para ver los eventos que utilizan etiquetas de sesión.
+ [Ejemplo de evento de API de encadenamiento de roles AWS STS en el archivo de registro de CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole)
+ [Ejemplo de evento API de AWS STS SAML en el archivo de registros de CloudTrail](cloudtrail-integration.md#stscloudtrailexample_saml)
+ [Ejemplo de evento de OIDC de AWS STS API en el archivo de registros de CloudTrail](cloudtrail-integration.md#stscloudtrailexample_web-identity)