使用臨時登入資料與 AWS 資源 - AWS Identity and Access Management

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

使用臨時登入資料與 AWS 資源

您可以使用臨時安全登入資料,使用 AWS CLI 或 AWS API (使用 AWS SDKs) 對 AWS 資源進行程式設計要求。臨時登入資料提供與長期安全登入資料相同的權限,例如IAM使用者認證。不過,有幾個差異:

  • 當您使用臨時安全憑據進行呼叫時,調用必須包含會話令牌,該令牌與這些臨時憑據一起返回。 AWS 使用會話令牌來驗證臨時安全憑據。

  • 暫時性憑證在指定的間隔時間後到期。暫時性憑證到期後,使用這些憑證進行的任何呼叫都將失敗,所以您必須產生一組新的暫時性憑證。暫時性憑證無法延期或重新整理超過原始指定間隔。

  • 當您使用暫時憑證發出請求時,您的主體可能會包含一組標籤。這些標籤來自工作階段標籤和連接到您擔任角色的標籤。如需有關工作階段標籤的詳細資訊,請參閱 在 中傳遞工作階段標籤 AWS STS

如果您使用的是AWS SDKsAWS Command Line Interface(AWS CLI) 或 Windows PowerShell 專用工具,取得及使用臨時安全性認證的方式會隨上下文而有所不同。如果您在執行個體內EC2執行程式碼或 Windows 工具 PowerShell 命令,您可以利用 Amazon 的角色EC2。 AWS CLI否則,您可以呼叫 a AWS STS API以取得臨時登入資料,然後明確使用它們來呼叫 AWS 服務。

注意

您可以使用 AWS Security Token Service (AWS STS) 建立並為受信任的使用者提供可控制資源存取權的臨時安全登入 AWS 資料。如需有關的更多資訊 AWS STS,請參閱臨時安全登入資料 IAM。 AWS STS 是在具有預設端點的全域服務https://sts.amazonaws.com。此端點位在美國東部 (維吉尼亞北部) 區域,但您從此端點和其他端點取得的憑證為全域有效。這些憑證可配合任何區域中的服務和資源使用。您也可以選擇在任何支援的區域中 AWS STS API撥打電話給端點。從地理位置較靠近您的區域的伺服器提出請求,可以降低延遲發生機率。無論您的憑證來自哪個區域,都能全域使用。如需詳細資訊,請參閱Manage (管理) AWS STS 在一個 AWS 區域

在 Amazon EC2 執行個體中使用臨時登入

如果您想要在執行個EC2體內執行 AWS CLI 命令或程式碼,建議取得登入資料的方法是使用 Amazon 的角色EC2。您可以建立一個IAM角色,指定要授與在執行個EC2體上執行的應用程式的權限。當您啟動執行個體時,會建立角色與執行個體的關聯。

然後 AWS CLI,在執行個體上執行的 Windows PowerShell 命令適用的應用程式、和工具可以從執行個體中繼資料取得自動暫時安全登入資料。您不必明確取得暫時安全憑證。Windows 適用的 AWS SDKs AWS CLI、和工具 PowerShell 會自動從EC2執行個體中繼資料服務 (IMDS) 取得認證並加以使用。暫時性憑證擁有您為與執行個體定義關聯的角色所定義的許可。

如需詳細資訊及範例,請參閱下列:

使用臨時安全登入資料搭配 AWS SDKs

要在代碼中使用臨時安全憑據,您可以以編程方式調用 AWS STS API like AssumeRole 並提取生成的憑據和會話令牌。然後,您可以使用這些值作為後續呼叫的認證 AWS。下列範例會顯示如何在您使用的情況下使用臨時安全性登入資料的虛擬程式碼: AWS SDK

assumeRoleResult = AssumeRole(role-arn); tempCredentials = new SessionAWSCredentials( assumeRoleResult.AccessKeyId, assumeRoleResult.SecretAccessKey, assumeRoleResult.SessionToken); s3Request = CreateAmazonS3Client(tempCredentials);

如需使用 Python 撰寫的範例 (使用 AWS SDK for Python (Boto)),請參閱切換到IAM角色 (AWS API)。此範例會示範如何呼叫 AssumeRole 以取得暫時安全憑證,然後使用這些憑證呼叫 Amazon S3。

如需有關如何呼叫AssumeRoleGetFederationToken、和其他API作業的詳細資訊,請參閱AWS Security Token Service API參考資料。有關從結果中獲取臨時安全憑據和會話令牌的信息,請參閱您SDK正在使用的文檔。您可以在主要AWS 文件頁面SDKs和工具組一節中找到所有文件。 AWS SDKs

您必須在舊的憑證到期之前,確實取得一組新的憑證。在某些情況下SDKs,您可以使用提供程序來管理您重新整理憑證的程序;請查看SDK您正在使用的文件。

使用暫時性安全憑證與 AWS CLI

您可以使用暫時性安全憑證與 AWS CLI。這很適合用於測試政策。

使用 AWS CLI,您可以呼叫 AWS STS APIlike AssumeRole 或,GetFederationToken然後擷取產生的輸出。以下範例顯示對 AssumeRole 的呼叫,其會傳送輸出至檔案。在此範例中,會假設profile參數是組態檔案中的設 AWS CLI 定檔。此外,也會假設參考具有擔任該角色之權限之IAM使用者的認證。

aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt

當命令完成時,您可以從您路由的任何地方擷取存取金鑰 ID、私密存取金鑰和工作階段權杖。您可以手動或使用指令碼執行這項作業。然後,您可以將這些值指派給環境變數。

當您執行 AWS CLI 命令時,會以特定順序 AWS CLI 尋找認證 — 首先在環境變數中,然後在組態檔案中尋找認證。因此,在您將暫存認證放入環境變數之後,依預設 AWS CLI 會使用這些認證。(如果您在指令中指定profile參數,則會 AWS CLI 略過環境變數。 相反地,會在組態檔案中 AWS CLI 尋找,如果需要,可讓您覆寫環境變數中的認證。)

下列範例顯示如何設定暫時安全性登入資料的環境變數,然後呼叫 AWS CLI 命令。由於 AWS CLI 命令中未包含任何profile參數,因此會先在環境變數中 AWS CLI 尋找認證,因此會使用暫時認證。

Linux

$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token> $ aws ec2 describe-instances --region us-west-1

Windows

C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> C:\> aws ec2 describe-instances --region us-west-1

使用臨時安全登入資料與API作業

如果您直接向這些HTTPSAPI要求提出 AWS,您可以使用從 AWS Security Token Service (AWS STS) 取得的臨時安全性登入資料來簽署這些要求。若要這麼做,您可以使用從中接收的存取金鑰 ID 和秘密存取金鑰 AWS STS。使用存取金鑰 ID 和私密存取金鑰簽署請求的方式,就和使用長期憑證簽署請求一樣。您還將從中接API收的會話令牌添加到請求中 AWS STS。您可以將工作階段權杖新增至HTTP標頭或名為的查詢字串參數X-Amz-Security-Token。您可以將工作階段權杖新增至標HTTP頭查詢字串參數,但不能同時新增兩者。如需簽署HTTPSAPI要求的詳細資訊,AWS API請參閱 AWS 一般參考.

其他資訊

如需 AWS STS 與其他 AWS 服務搭配使用的詳細資訊,請參閱下列連結: