Uso de credenciales temporales desde AWS STS en el SDK para PHP - AWS SDK para 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.

Uso de credenciales temporales desde AWS STS en el SDK para PHP

AWS Security Token Service (AWS STS) le permite solicitar privilegios limitados, credenciales temporales para los usuarios de IAM, o para los usuarios que se autentiquen a través de la identidad federada. 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 obtener acceso a la mayoría de los servicios de AWS. Para obtener una lista de los servicios que aceptan credenciales de seguridad temporales, consulte los serviciosAWS que funcionan con IAM en laGuía del usuario de IAM.

Un caso de uso común de las credenciales temporales consiste en conceder a las aplicaciones móviles o del lado del cliente acceso a los recursos de AWS autenticando a los usuarios a través de proveedores de identidad externos (consulte Identidades web federadas).

Obtención de credenciales temporales

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

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

El resultado para GetSessionToken y las operaciones AWS STS restantes siempre contiene un valor 'Credentials'. Si imprime $result (por ejemplo, mediante print_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 para PHP

Puede utilizar credenciales temporales con otro cliente de AWS creando una instancia del cliente y transfiriendo los valores que ha recibido desde AWS STS directamente.

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 resultado de AWS STS y crea el objeto Credentials para usted.

$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 acerca de por qué es posible que necesite utilizar credenciales temporales en su aplicación o proyecto, consulte Escenarios para conceder acceso temporal en la documentación de AWS STS.