使用臨時登入資料 AWS STS - AWS SDK for PHP

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

使用臨時登入資料 AWS STS

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

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

取得臨時認證

AWS STS 有幾項操作可傳回臨時登入資料,但使用 GetSessionToken 操作做示範是最簡單的方法。假設您有儲存於 Aws\Sts\StsClient 變數的 $stsClient 執行個體,請以如下所示的方法呼叫它。

$result = $stsClient->getSessionToken();

GetSessionToken 以及其他 AWS 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>' ) ... )

提供臨時憑據 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。