使用来自的临时证书 AWS STS - AWS SDK for PHP

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用来自的临时证书 AWS STS

AWS Security Token Service (AWS STS) 允许您为 IAM 用户或通过联合身份验证进行身份验证的用户申请有限权限、临时证书。有关深入了解,请参阅 IAM 用户指南中的临时安全凭证。您可以使用临时安全证书访问大多数 AWS 服务。有关接受临时安全凭证的服务列表,请参阅 IAM 用户指南中的使用 IAM 的AWS 服务

临时证书的一个常见用例是,通过第三方身份提供商对用户进行身份验证,授予移动或客户端应用程序访问 AWS 资源的权限(请参阅 Web 联合身份验证)。

获得临时凭证

AWS STS 有几个返回临时证书的GetSessionToken操作,但演示起来最简单。以下代码段通过调用 PHP SDK 的 STS getSessionToken 客户端的方法来检索临时证书。

$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 文档中的授予临时访问权限的场景