使用臨時登入資料 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操作是最簡單的演示。下列程式碼片段會呼叫 PHP SDK STS 用戶端的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 文件中的授予暫時存取權的案例