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

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Solicitud de credenciales de seguridad temporales

Para solicitar credenciales de seguridad temporales, puede usar 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 IAM roles.

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 AWS Security Token Service API Reference. Por último, dos herramientas de línea de comandos admiten los comandos de AWS STS: AWS Command Line Interface y Herramientas de AWS para 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 usar 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 de la función 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 Paso 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 AWS regiones

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 seleccionar una región antes de realizar la llamada a la API. Si va a realizar manualmente solicitudes de API HTTP, debe enviar usted mismo la solicitud al punto de enlace correcto. Para obtener más información, consulte la AWS STS sección de Regiones y puntos de enlace y Administración de 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—de 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 un acceso privilegiado; por ejemplo, para proporcionar autenticación multifactor (MFA). Debe llamar a esta API con las credenciales de usuario de IAM existentes. Para obtener más información, consulte Creación de un rol para delegar permisos a un IAM usuario y Configuración del acceso a la API protegido por MFA.

Esta llamada debe realizarse con credenciales de seguridad de AWS válidas. Al realizar esta llamada, debe transferir 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 Ver la configuración de duración máxima de sesión de 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 al punto de enlace de federación de un token de inicio de sesión en la consola. Para obtener más información, consulte Habilitación del acceso del agente de identidades personalizado a la AWS consola.

  • Un nombre de sesión de rol, que es un valor de cadena que puede utilizar para identificar la sesión. 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 especifique su nombre de usuario de IAM como nombre de sesión cuando asuma el rol. ** Para obtener más información, consulte aws:RoleSessionName.

  • (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 de la función 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 de la función 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 Paso 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 conceder acceso a sus recursos de AWS a un tercero.

El siguiente ejemplo muestra una solicitud de ejemplo y una respuesta mediante AssumeRole. En esta solicitud de ejemplo se presupone que la demo para la duración especificada con el rol de incluido política de sesiónde etiquetas de sesión, y ID externo. 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 &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 Respuesta de ejemplo

<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleResult> <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 identidad basado en 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 Acerca de la identidad federada web.

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 lo siguiente: .

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, debe transferir 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 Ver la configuración de duración máxima de sesión de 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 al punto de enlace de federación de un token de inicio de sesión en la consola. Para obtener más información, consulte Habilitación del acceso del agente de identidades personalizado a la AWS consola.

  • Un nombre de sesión de rol, que es un valor de cadena que puede utilizar para identificar la sesión. 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 aws:RoleSessionName.

  • (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 de la función 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 de la función 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 (cifra). 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 tenga 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. i 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 identidad 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 Acerca de la federación basada en SAML 2.0.

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, debe transferir 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 Ver la configuración de duración máxima de sesión de 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 al punto de enlace de federación de un token de inicio de sesión en la consola. Para obtener más información, consulte Habilitación del acceso del agente de identidades personalizado a la AWS consola.

  • (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 de la función 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 de la función que se asume. Para obtener más información sobre los permisos de sesión de un rol, consulte Políticas de sesión.

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 Configuración de aserciones SAML para la respuesta de autenticación.

Cuando tenga 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 personalizado

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 usar 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. Para obtener más información, consulte Solicitud de credenciales de seguridad temporales.

Al realizar esta solicitud, se utilizan las credenciales de un usuario específico de IAM. Los permisos para las credenciales de seguridad temporales están determinados por las políticas de sesión que se pasan al llamar a GetFederationToken. Los permisos de sesión resultantes son la intersección de la IAM Las políticas de usuario de y las políticas de sesión que se pasan. 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 Paso de etiquetas de sesión en AWS STS.

La llamada a GetFederationToken devuelve credenciales de seguridad temporales que incluyen el token de seguridad, clave de acceso, clave secreta y 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). Para ver una aplicación de muestra que utiliza GetFederationToken, diríjase a Aplicación de la muestra de identidad federada para un caso de uso de Active Directory en Código de muestra y bibliotecas de AWS.

El siguiente ejemplo muestra una solicitud de ejemplo y una respuesta que utiliza GetFederationToken. Este ejemplo de solicitud federa el usuario que llama durante el tiempo especificado con el política de sesión El ARN y 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 descubrir 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 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 en el nivel de recursos (por ejemplo, adjuntar una política basada en recursos a un bucket 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 su 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 en entornos no fiables

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 GetSessionToken en la AWS Security Token Service API Reference.

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 de la cuenta raíz de AWS está limitado a una hora.

GetSessionToken devuelve credenciales de seguridad temporales que incluyen un token de seguridad, un ID de clave de acceso y una clave de acceso secreta. El siguiente ejemplo muestra una solicitud de ejemplo y una respuesta mediante GetSessionToken. La respuesta también incluye el tiempo 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 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 enlace global o a cualquiera de los puntos de enlace 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 la AWS STS Operaciones de API

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 IAM roles. Para obtener información sobre las diferentes operaciones de API de AWS STS que le permiten pasar etiquetas de sesión, consulte Paso de etiquetas de sesión en AWS STS.

Comparación de opciones de API
AWS STS Hello, World! Quién puede llamar Duración de las credenciales (mín | máx | predeterminada) Compatibilidad con 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 ¡Sí! ¡Sí!

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. ¡Sí!

No se puede llamar a GetFederationToken ni a GetSessionToken.

AssumeRoleWithWebIdentity Cualquier usuario: el intermediario debe transmitir un token de identidad web 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. ¡Sí!

No se puede llamar a GetFederationToken ni a GetSessionToken.

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

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

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

No. ¡Sí!

No se puede llamar a operaciones de IAM mediante la API de AWS CLI o AWS.

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

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

Usuario raíz: 15 m | 1 h | 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.⁶

¹ Soporte de 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 la API protegido por MFA.

² Compatibilidad 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 de la función 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 Ver la configuración de duración máxima de sesión de 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 estoy autorizado a realizar: 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 Habilitación de los usuarios federados de SAML 2.0 para obtener acceso a la Consola de administración de AWS 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 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 Habilitación del acceso del agente de identidades personalizado a la AWS consola.