Utilice credenciales temporales de AWS STS - AWS SDK for PHP

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice credenciales temporales de AWS STS

AWS Security Token Service (AWS STS) le permite solicitar credenciales temporales con privilegios limitados para los usuarios de IAM o para los usuarios que se autentiquen mediante una federación de identidades. Para obtener más información, consulte Credenciales de seguridad temporales en la guía del usuario de IAM. Puede utilizar credenciales de seguridad temporales para acceder a la mayoría AWS de los servicios. Para obtener una lista de los servicios que aceptan credenciales de seguridad temporales, consulte los servicios AWS que funcionan con IAM en laGuía del usuario de IAM.

Un caso de uso habitual de las credenciales temporales consiste en conceder a las aplicaciones móviles o del lado del cliente acceso a AWS los recursos mediante la autenticación de los usuarios a través de proveedores de identidad externos (consulte Web Identity Federation).

Obtención de credenciales temporales

AWS STS tiene varias operaciones que devuelven credenciales temporales, pero la GetSessionToken operación es la más sencilla de demostrar. El siguiente fragmento recupera las credenciales temporales llamando al getSessionToken método del cliente STS del SDK de PHP.

$sdk = new Aws\Sdk([ 'region' => 'us-east-1', ]); $stsClient = $sdk->createSts(); $result = $stsClient->getSessionToken();

El resultado de las AWS STS operaciones GetSessionToken y las demás siempre contienen un valor. 'Credentials' Si imprime el $result (por ejemplo, utilizandoprint_r($result)), tendrá el siguiente aspecto.

Array ( ... [Credentials] => Array ( [SessionToken] => '<base64 encoded session token value>' [SecretAccessKey] => '<temporary secret access key value>' [Expiration] => 2013-11-01T01:57:52Z [AccessKeyId] => '<temporary access key value>' ) ... )

Proporcionar credenciales temporales al AWS SDK for PHP

Puede usar credenciales temporales con otro AWS cliente creando una instancia del cliente y transfiriendo los valores recibidos directamente de AWS STS él.

use Aws\S3\S3Client; $result = $stsClient->getSessionToken(); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => [ 'key' => $result['Credentials']['AccessKeyId'], 'secret' => $result['Credentials']['SecretAccessKey'], 'token' => $result['Credentials']['SessionToken'] ] ]);

También puede crear un objeto Aws\Credentials\Credentials y utilizarlo cuando cree una instancia del cliente.

use Aws\Credentials\Credentials; use Aws\S3\S3Client; $result = $stsClient->getSessionToken(); $credentials = new Credentials( $result['Credentials']['AccessKeyId'], $result['Credentials']['SecretAccessKey'], $result['Credentials']['SessionToken'] ); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => $credentials ]);

Sin embargo, la mejor manera de proporcionar credenciales temporales es utilizar el método de ayudante createCredentials() incluido con StsClient. Este método extrae los datos de un AWS STS resultado y crea el Credentials objeto automáticamente.

$result = $stsClient->getSessionToken(); $credentials = $stsClient->createCredentials($result); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => $credentials ]);

Para obtener más información sobre por qué podría necesitar usar credenciales temporales en su aplicación o proyecto, consulte Escenarios para la concesión de acceso temporal en la AWS STS documentación.