本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用临时凭证来自于Amazon STS
Amazon Security Token Service(Amazon STS) 允许您申请有限权限,临时凭证适用于 IAM 用户,或者适用于您通过联合身份验证的用户。要更深入地理解,请参阅临时安全凭证中的IAM 用户指南. 可使用临时安全凭证访问大多数 Amazon 服务。有关接受临时安全凭证的服务的列表,请参阅Amazon使用 IAM 的服务中的IAM 用户指南.
一个常见的临时凭证使用案例是向移动或客户端应用程序授予对Amazon通过第三方身份提供商对用户进行身份验证来提供资源(参见Web 联合身份验证)。
获取临时凭证
Amazon STS 有多个操作可返回临时凭证,但对于演示用途而言,GetSessionToken
操作是最简单的。假设您有一个实例 Aws\Sts\StsClient
存储在 $stsClient
变量中,您可以调用它,如下所示。
$result = $stsClient->getSessionToken();
GetSessionToken
和其他 Amazon STS 操作的结果始终包含一个 'Credentials'
值。如果输出结果 (例如,print_r($result)
),则结果类似如下:
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>' ) ... )
向提供临时证书Amazon SDK for PHP
可将临时凭证用于其他Amazon客户端,方法是实例化客户端并从接收的值Amazon 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'] ] ]);
您还可以构建 Aws\Credentials\Credentials
对象并在实例化客户端时使用该对象。
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 ]);
但是,提供临时凭证的最佳 方式是使用 StsClient
随附的 createCredentials()
帮助程序方法。此方法会从 Amazon STS 结果中提取数据,然后为您创建 Credentials
对象。
$result = $stsClient->getSessionToken(); $credentials = $stsClient->createCredentials($result); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => $credentials ]);
有关为何需要在应用程序或项目中使用临时凭证的更多信息,请参阅 文档中的授予临时访问权限的情形Amazon STS。