Use credenciais temporárias de AWS STS - AWS SDK for PHP

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use credenciais temporárias de AWS STS

AWS Security Token Service (AWS STS) permite que você solicite privilégios limitados e credenciais temporárias para usuários do IAM ou para usuários autenticados por meio da federação de identidades. Para uma compreensão mais profunda, consulte Credenciais de segurança temporárias no Guia do usuário do IAM. Você pode usar credenciais de segurança temporárias para acessar a maioria dos AWS serviços. Para obter uma lista de serviços que aceitam credenciais de segurança temporárias, consulte os serviços da AWS que funcionam com o IAM no Guia do usuário do IAM.

Um caso de uso comum para credenciais temporárias é conceder aos aplicativos móveis ou do lado do cliente acesso aos AWS recursos autenticando usuários por meio de provedores de identidade terceirizados (consulte Web Identity Federation).

Obtenção de credenciais temporárias

AWS STS tem várias operações que retornam credenciais temporárias, mas a GetSessionToken operação é a mais simples de demonstrar. O trecho a seguir recupera credenciais temporárias chamando o getSessionToken método do cliente STS do SDK do PHP.

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

O resultado de GetSessionToken e as outras AWS STS operações sempre contêm um 'Credentials' valor. Se você imprimir o $result (por exemplo, usandoprint_r($result)), ele terá a seguinte aparência.

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>' ) ... )

Fornecendo credenciais temporárias ao AWS SDK for PHP

Você pode usar credenciais temporárias com outro AWS cliente instanciando o cliente e transmitindo os valores recebidos diretamente. AWS STS

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'] ] ]);

Você também pode construir um objeto Aws\Credentials\Credentials e usá-lo ao instanciar o 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 ]);

No entanto, a melhor maneira de fornecer credenciais temporárias é usar o método auxiliar createCredentials() incluído com o StsClient. Esse método extrai os dados de um AWS STS resultado e cria o Credentials objeto para você.

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

Para obter mais informações sobre por que você pode precisar usar credenciais temporárias em seu aplicativo ou projeto, consulte Cenários para conceder acesso temporário na AWS STS documentação.