Solicitud de credenciales de seguridad temporales - AWS Identity and Access Management

Solicitud de credenciales de seguridad temporales

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. Para obtener más información sobre los distintos métodos que puede utilizar para solicitar credenciales de seguridad temporales asumiendo un rol, consulte Uso de roles de IAM.

Para llamar a las operaciones de la API, puede utilizar uno de los SDK de AWS. 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. Por último, dos herramientas de línea de comandos admiten los comandos de AWS STS: AWS Command Line Interface y AWS Tools for Windows 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. Para obtener más información acerca de las etiquetas de sesión, consulte Transferencia de etiquetas de sesión en AWS STS.

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

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 y Administrar AWS STS en una Región de AWS.

Las siguientes son operaciones de API que puede utilizar para obtener credenciales temporales para su uso en aplicaciones y entornos de AWS.

AssumeRole: delegación y federación entre cuentas a través de un agente de identidades personalizado

La operación de API AssumeRole 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 las operaciones de la API de AWS STS. Para obtener más información, consulte Creación de un rol para delegar permisos a un usuario de IAM y Configuración del acceso a una API protegido por MFA.

Esta llamada debe realizarse con credenciales de seguridad de AWS válidas. Al realizar esta llamada, transfiere la siguiente información:

  • El Nombre de recurso de Amazon (ARN) del rol que la aplicación debe asumir.

  • (Opcional) La duración, que especifica cuánto tiempo son válidas las credenciales de seguridad temporales. 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 Cómo consultar la configuración de la duración máxima de la sesión para un rol. Si no pasa este parámetro, las credenciales temporales caducan en una hora. El parámetro DurationSeconds de esta API es distinto del parámetro HTTP SessionDuration que se utiliza para especificar la duración de una sesión de consola. Utilice el parámetro HTTP SessionDuration en la solicitud del punto de conexión de federación para un token de inicio de sesión en la consola. Para obtener más información, consulte Permitir el acceso del agente de identidades personalizadas a la consola de AWS.

  • Nombre de sesión de rol. Utilice este valor de cadena para identificar la sesión cuando un rol es utilizado por diferentes entidades. Por motivos de seguridad, los administradores pueden ver este campo en registros de AWS CloudTrail para ayudar a identificar quién realizó una acción en AWS. Es posible que el administrador requiera que especifique su nombre de usuario de IAM como nombre de sesión cuando asuma el rol. Para obtener más información, consulte sts:RoleSessionName.

  • (Opcional) Identidad de origen. Puede exigir a los usuarios que especifiquen una identidad de origen cuando asuman un rol. Una vez establecida la identidad de origen, el valor no se puede cambiar. Está presente en la solicitud de todas las acciones que se realizan durante la sesión de rol. El valor de identidad de origen persiste en sesiones de rol encadenado. Puede utilizar la información de identidad de origen en registros de AWS CloudTrail para determinar quién realizó acciones con un rol. Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

  • (Opcional) Políticas de sesión administradas o insertadas. Estas políticas limitan los permisos de la política basada en identidades del rol que están asignados a la sesión de rol. 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.

  • (Opcional) Etiquetas de sesión. Puede asumir un rol y, a continuación, utilizar las credenciales temporales para realizar una solicitud. Cuando lo haga, las etiquetas principales de la sesión incluyen las etiquetas del rol y las etiquetas de sesión pasadas. Si realiza esta llamada con credenciales temporales, la nueva sesión también hereda las etiquetas de sesión transitivas de la sesión de llamada. Para obtener más información acerca de las etiquetas de sesión, consulte Transferencia de etiquetas de sesión en AWS STS.

  • (Opcional) Información sobre MFA. Si se configura para utilizar Multi-Factor Authentication (MFA), incluya el identificador de un dispositivo MFA y el código de un solo uso proporcionado por dicho dispositivo.

  • (Opcional) Un valor ExternalId que se puede utilizar al delegar el acceso a su cuenta a un tercero. Este valor permite garantizar que solo el tercero especificado pueda obtener acceso al rol. Para obtener más información, consulte Cómo utilizar un ID externo al otorgar acceso a los recursos de AWS a terceros.

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 incluida, las etiquetas de sesión, el ID externo y la identidad de origen. La sesión resultante se denomina John-session.

ejemplo 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:

{"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 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 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.

ejemplo Ejemplo de respuesta
<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.

AssumeRoleWithWebIdentity: federación a través de un proveedor de identidades basado en la web

La operación de API AssumeRoleWithWebIdentity devuelve un conjunto de credenciales de seguridad temporales para los usuarios federados autenticados a través de un proveedor de identidad público. Entre los ejemplos de proveedores de identidad públicos se incluyen Login with Amazon, Facebook, Google o cualquier proveedor de identidad compatible con OpenID Connect (OIDC). Esta operación es útil para crear aplicaciones móviles o aplicaciones web basadas en el cliente que requieren acceso a AWS. El uso de esta operación significa que los usuarios no tienen sus propias identidades de AWS o IAM. Para obtener más información, consulte Federación OIDC.

En lugar de llamar directamente a AssumeRoleWithWebIdentity, le recomendamos que utilice Amazon Cognito y las credenciales del proveedor de Amazon Cognito con los SDK de AWS para el desarrollo de aplicaciones móviles. Para obtener más información, consulte Autenticación con Amplify en la documentación de Amplify.

Si no usa Amazon Cognito, llame a la acción AssumeRoleWithWebIdentity de AWS STS. Se trata de una llamada sin firma, lo que significa que la aplicación no necesita tener acceso a las credenciales de seguridad de AWS para realizar la llamada. Al realizar esta llamada, transfiere la siguiente información:

  • El Nombre de recurso de Amazon (ARN) del rol que la aplicación debe asumir. Si su aplicación admite varias formas de inicio de sesión para los usuarios, debe definir varios roles, uno por cada proveedor de identidad. La llamada a AssumeRoleWithWebIdentity debe incluir el ARN del rol que es específico para el proveedor a través del que el usuario ha iniciado sesión.

  • El token que la aplicación obtiene del proveedor de identidad (IdP) después de que la aplicación autentique al usuario.

  • Puede configurar su IdP para que pase atributos a su token como etiquetas de sesión.

  • (Opcional) La duración, que especifica cuánto tiempo son válidas las credenciales de seguridad temporales. 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 Cómo consultar la configuración de la duración máxima de la sesión para un rol. Si no pasa este parámetro, las credenciales temporales caducan en una hora. El parámetro DurationSeconds de esta API es distinto del parámetro HTTP SessionDuration que se utiliza para especificar la duración de una sesión de consola. Utilice el parámetro HTTP SessionDuration en la solicitud del punto de conexión de federación para un token de inicio de sesión en la consola. Para obtener más información, consulte Permitir el acceso del agente de identidades personalizadas a la consola de AWS.

  • Nombre de sesión de rol. Utilice este valor de cadena para identificar la sesión cuando un rol es utilizado por diferentes entidades. Por motivos de seguridad, los administradores pueden ver este campo en registros de AWS CloudTrail para saber quién realizó una acción en AWS. Es posible que el administrador requiera que proporcione un valor específico para el nombre de la sesión cuando asuma el rol. Para obtener más información, consulte sts:RoleSessionName.

  • (Opcional) Identidad de origen. Puede requerir que los usuarios federados especifiquen una identidad de origen cuando asuman un rol. Una vez establecida la identidad de origen, el valor no se puede cambiar. Está presente en la solicitud de todas las acciones que se realizan durante la sesión de rol. El valor de identidad de origen persiste en sesiones de rol encadenado. Puede utilizar la información de identidad de origen en registros de AWS CloudTrail para determinar quién realizó acciones con un rol. Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

  • (Opcional) Políticas de sesión administradas o insertadas. Estas políticas limitan los permisos de la política basada en identidades del rol que están asignados a la sesión de rol. 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.

    nota

    Una llamada a AssumeRoleWithWebIdentity 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.

Si llama a AssumeRoleWithWebIdentity, AWS verifica la autenticidad del token. Por ejemplo, en función del proveedor de AWS, se podría realizar una llamada al proveedor e incluir el token que la aplicación ha transmitido. Suponiendo que el proveedor de identidad valida el token, 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 SubjectFromWebIdentityToken que incluye el ID de usuario único.

Cuando tiene las credenciales de seguridad temporales, puede utilizarlas 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. Tal y como se ha mencionado, las credenciales caducan después de una hora de forma predeterminada. Si no utiliza la operación AmazonSTSCredentialsProvider en el SDK de AWS, depende de usted y de su aplicación volver a llamar a AssumeRoleWithWebIdentity. Llame a esta operación para obtener un nuevo conjunto de credenciales de seguridad temporales antes de que caduquen las antiguas.

AssumeRoleWithSAML: federación a través de un proveedor de identidades empresarial compatible con SAML 2.0

La operación de API AssumeRoleWithSAML devuelve un conjunto de credenciales de seguridad temporales para los usuarios federados que se autentican a través del sistema de identidad existente de su organización. Los usuarios también deben utilizar SAML 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.

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.

Se trata de una llamada sin firma, lo que significa que la aplicación no necesita tener acceso a las credenciales de seguridad de AWS para realizar la llamada. Al realizar esta llamada, transfiere la siguiente información:

  • El Nombre de recurso de Amazon (ARN) del rol que la aplicación debe asumir.

  • El ARN del proveedor SAML creado en IAM que describe el proveedor de identidad.

  • La aserción SAML, codificada en base 64, que el proveedor de identidad SAML ha proporcionado en su respuesta de autenticación a la solicitud de inicio de sesión de la aplicación.

  • Puede configurar su IdP para que pase atributos a su aserción SAML como etiquetas de sesión.

  • (Opcional) La duración, que especifica cuánto tiempo son válidas las credenciales de seguridad temporales. 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 Cómo consultar la configuración de la duración máxima de la sesión para un rol. Si no pasa este parámetro, las credenciales temporales caducan en una hora. El parámetro DurationSeconds de esta API es distinto del parámetro HTTP SessionDuration que se utiliza para especificar la duración de una sesión de consola. Utilice el parámetro HTTP SessionDuration en la solicitud del punto de conexión de federación para un token de inicio de sesión en la consola. Para obtener más información, consulte Permitir el acceso del agente de identidades personalizadas a la consola de AWS.

  • (Opcional) Políticas de sesión administradas o insertadas. Estas políticas limitan los permisos de la política basada en identidades del rol que están asignados a la sesión de rol. 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.

  • Nombre de sesión de rol. Utilice este valor de cadena para identificar la sesión cuando un rol es utilizado por diferentes entidades. Por motivos de seguridad, los administradores pueden ver este campo en registros de AWS CloudTrail para saber quién realizó una acción en AWS. Es posible que el administrador requiera que proporcione un valor específico para el nombre de la sesión cuando asuma el rol. Para obtener más información, consulte sts:RoleSessionName.

  • (Opcional) Identidad de origen. Puede requerir que los usuarios federados especifiquen una identidad de origen cuando asuman un rol. Una vez establecida la identidad de origen, el valor no se puede cambiar. Está presente en la solicitud de todas las acciones que se realizan durante la sesión de rol. El valor de identidad de origen persiste en sesiones de rol encadenado. Puede utilizar la información de identidad de origen en registros de AWS CloudTrail para determinar quién realizó acciones con un rol. Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

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 combina con el elemento Subject, pueden identificar exclusivamente al usuario federado.

  • 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.

Cuando tiene las credenciales de seguridad temporales, puede utilizarlas 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 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.

GetFederationToken: federación a través de un agente de identidades personalizadas

La operación de API GetFederationToken devuelve un conjunto de credenciales de seguridad temporales para los usuarios federados. 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.

Al realizar esta solicitud, se utilizan las credenciales de un usuario específico de IAM. Los permisos para las credenciales de seguridad temporales los determinan las políticas de sesión que se transfieren cuando se llama a GetFederationToken. Los permisos de la sesión resultantes son la intersección de las políticas de usuario de IAM y las políticas de sesión que transfiere. 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 usuario de IAM que solicita la federación. Para obtener más información sobre los permisos de sesión de un rol, consulte Políticas de sesión.

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. Para obtener más información acerca de las etiquetas de sesión, consulte Transferencia de etiquetas de sesión en AWS STS.

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 y las etiquetas de sesión. La sesión resultante se denomina Jane-session.

ejemplo 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 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 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.

ejemplo Ejemplo de respuesta
<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. No obstante, si no incluye una política para el usuario federado, las credenciales de seguridad temporales no concederán los permisos. 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.

GetSessionToken: credenciales temporales para usuarios de entornos que no son de confianza

La operación de API GetSessionToken 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. Para obtener más información, consulte Solicitud de credenciales de seguridad temporales o GetBucketEncryption en la Referencia de la API de AWS Security Token Service.

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.

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. 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.

ejemplo 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 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 en la Referencia general de Amazon Web Services para averiguar cómo firmar una solicitud.

ejemplo Ejemplo de respuesta
<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.

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 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 en la Referencia general de Amazon Web Services para averiguar cómo firmar una solicitud.

Comparación de las operaciones de la API de AWS STS

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 Uso de roles de IAM. 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.

Comparación de opciones de API
API de AWS STS Quién puede llamar Duración de las credenciales (mín | máx | predeterminada) Soporte de MFA¹ Compatibilidad con políticas de sesión² Restricciones aplicables a las credenciales temporales obtenidas
AssumeRole Usuario de IAM o rol de IAM con credenciales de seguridad temporales existentes 15 min | configuración de la duración máxima de la sesión³ | 1 h

No se puede llamar a GetFederationToken ni a GetSessionToken.

AssumeRoleWithSAML 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 | configuración de la duración máxima de la sesión³ | 1 h No

No se puede llamar a GetFederationToken ni a GetSessionToken.

AssumeRoleWithWebIdentity 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 | configuración de la duración máxima de la sesión³ | 1 h No

No se puede llamar a GetFederationToken ni a GetSessionToken.

GetFederationToken Usuario de IAM o Usuario raíz de la cuenta de AWS

Usuario de IAM: 15 m | 36 h | 12 h

Usuario raíz: 15 m | 1 h | 1 h

No

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 Usuario de IAM o Usuario raíz de la cuenta de AWS

Usuario de IAM: 15 m | 36 h | 12 h

Usuario raíz: 15 m | 1 h | 1 h

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 Configuración del acceso a una API protegido por MFA.

² Soporte con políticas de sesión. Las políticas de sesión son políticas avanzadas que se pasan como parámetro cuando se crea una sesión temporal mediante programación para un rol o un usuario federado. 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.

³ 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 Cómo consultar la configuración de la duración máxima de la sesión para un rol.

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.

.⁶. 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 AWS Management Console a los usuarios federados SAML 2.0 y 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 AWS Management Console 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.