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 caducarán después de un intervalo de tiempo especificado. Una vez que caduquen las credenciales, se producirá un error en las llamadas que realice con dichas credenciales, de modo que debe obtener un nuevo conjunto de credenciales.
-
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
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 extremo se encuentra en la región EE.UU. Este (Ohio), aunque las credenciales
que obtiene de éste y otros puntos de enlace son válidas globalmente. 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 Herramientas para 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 Herramientas para 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 — AWS SDK for Java
-
Conceder acceso mediante roles de IAM — AWS SDK para .NET
-
Creación de un rol — AWS SDK parar 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 usar 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 AWS Security Token Service API Reference. 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 la 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 de profile
en el comando, el AWS CLI omite las variables de entorno. En su lugar, AWS CLI mira
el archivo de configuración, que le permite anular las credenciales en las variables
de entorno si es 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=AKIAI44QH8DHBEXAMPLE
$
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$
export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
$
aws ec2 describe-instances --region us-west-1
Windows
C:\>
SET AWS_ACCESS_KEY_ID=AKIAI44QH8DHBEXAMPLE
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 AWS General Reference.
Más información
Para obtener más información acerca del uso de AWS STS con otros servicios de AWS, consulte los vínculos siguientes:
-
Amazon S3. Consulte Making Requests Using IAM User Temporary Credentials o Making Requests Using Federated User Temporary Credentials en la Guía para desarrolladores de Amazon Simple Storage Service .
-
Amazon SNS. Consulte Uso de credenciales de seguridad temporales en la Guía para desarrolladores de Amazon Simple Notification Service.
-
Amazon SQS. Consulte Uso de credenciales de seguridad temporales en la Guía para desarrolladores de Amazon Simple Queue Service.
-
Amazon SimpleDB. Consulte Uso de credenciales de seguridad temporales en la Guía para desarrolladores de Amazon SimpleDB.