Uso de credenciales temporales con recursos de AWS
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 losSDK de AWS
-
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.
Si está utilizando los SDK 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. 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.
Contenido
Uso de credenciales temporales en instancias Amazon EC2
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. 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) — AWS SDK for Java
-
Granting Access Using an IAM Role — AWS SDK for .NET
-
Crear un rol: AWS SDK for Ruby
Uso de credenciales de seguridad temporales con los SDK de AWS
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 for Python (Boto)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. 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
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
Puede utilizar las de credenciales de seguridad temporales con AWS CLI. Esto puede resultar útil para probar políticas.
Mediante la AWS CLI, puede llamar a una API de AWS STS 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" --profileIAM-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
Si está realizando solicitudes directas de la API HTTPS a AWS, puede firmar dichas solicitudes con las credenciales de seguridad temporales que obtiene de 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 en la Referencia general de AWS.
Más información
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 o Realización de solicitudes con credenciales temporales de usuario federado en la Guía del usuario de Amazon Simple Storage Service.
-
Amazon SNS. Consulte Uso de políticas basadas en identidades con Amazon SNS en la Guía para desarrolladores de Amazon Simple Queue Service.
-
Amazon SQS. Consulte Administración de identidades y acceso en Amazon SQS en la Guía para desarrolladores de Amazon Simple Queue Service.
-
Amazon SimpleDB. Consulte Utilizar credenciales de seguridad temporales en la Guía para desarrolladores de Amazon SimpleDB.