使用來自 的臨時憑證 AWS STS - AWS SDK for PHP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用來自 的臨時憑證 AWS STS

AWS Security Token Service (AWS STS) 可讓您為IAM使用者,或您透過身分聯合身分驗證的使用者請求有限權限、臨時憑證。如需更深入的了解,請參閱 IAM 使用者指南 中的暫時安全憑證。您可以使用臨時安全憑證來存取大多數 AWS 服務。如需接受臨時安全憑證的服務清單,請參閱 IAM 使用者指南 中的AWS 使用 的服務IAM

臨時憑證的一個常見使用案例是透過第三方身分提供者驗證使用者,授予行動或用戶端應用程式對 AWS 資源的存取權 (請參閱 Web Identity Federation )。

取得臨時憑證

AWS STS 有數個 操作會傳回臨時憑證,但GetSessionToken操作是最簡單的示範。下列程式碼片段會透過呼叫 PHP SDKSTS用戶端getSessionToken的方法擷取臨時憑證。

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

GetSessionToken 和其他 AWS STS 操作的結果一律包含 '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 ]);

不過,提供臨時登入資料的最佳方式是使用隨附於 StsClientcreateCredentials() helper 方法。此方法會從 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 文件中的授予臨時存取權的案例