本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用来自的临时证书 AWS STS
AWS Security Token Service (AWS STS) 允许您为IAM用户或通过联合身份验证进行身份验证的用户申请有限权限和临时证书。要更深入地了解,请参阅IAM用户指南中的临时安全证书。您可以使用临时安全证书访问大多数 AWS 服务。有关接受临时安全证书的服务的列表,请参阅《IAM用户指南》IAM中与之配合使用的AWS 服务。
临时证书的一个常见用例是,通过第三方身份提供商对用户进行身份验证,授予移动或客户端应用程序访问 AWS 资源的权限(请参阅 Web 联合身份验证)。
获得临时凭证
AWS STS 有几个返回临时证书的GetSessionToken
操作,但演示起来最简单。以下代码段通过调用客户端的getSessionToken
方法来检索临时证书。PHP SDK STS
$sdk = new Aws\Sdk([ 'region' => 'us-east-1', ]); $stsClient = $sdk->createSts(); $result = $stsClient->getSessionToken();
和其他 AWS STS 操作的GetSessionToken
结果始终包含一个'Credentials'
值。如果您打印$result
(例如通过使用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>' ) ... )
向提供临时证书 AWS SDK for PHP
您可以通过实例化 AWS 客户端并直接传入从 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'] ] ]);
您还可以构建 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()
帮助程序方法。此方法从 AWS STS 结果中提取数据并为您创建Credentials
对象。
$result = $stsClient->getSessionToken(); $credentials = $stsClient->createCredentials($result); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => $credentials ]);
有关为何可能需要在应用程序或项目中使用临时证书的更多信息,请参阅 AWS STS 文档中的授予临时访问权限的场景。