本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配使用暫時憑證與 AWS 資源
您可以使用臨時安全登入資料,使用 AWS CLI 或 AWS API (使用 AWS SDK
-
當您使用臨時安全憑據進行呼叫時,調用必須包含會話令牌,該令牌與這些臨時憑據一起返回。 AWS 使用會話令牌來驗證臨時安全憑據。
-
暫時性憑證在指定的間隔時間後到期。暫時性憑證到期後,使用這些憑證進行的任何呼叫都將失敗,所以您必須產生一組新的暫時性憑證。暫時性憑證無法延期或重新整理超過原始指定間隔。
-
當您使用暫時憑證發出請求時,您的主體可能會包含一組標籤。這些標籤來自工作階段標籤和連接到您擔任角色的標籤。如需有關工作階段標籤的詳細資訊,請參閱 傳遞工作階段標籤 AWS STS。
如果您使用的是 AWS SDK
注意
您可以使用 AWS Security Token Service (AWS STS) 建立並為受信任的使用者提供可控制資源存取權的臨時安全登入 AWS 資料。如需有關的更多資訊 AWS STS,請參閱IAM 中的暫時安全憑證。 AWS STS 是具有預設端點的全域服務https://sts.amazonaws.com
。此端點位在美國東部 (維吉尼亞北部) 區域,但您從此端點和其他端點取得的憑證為全域有效。這些憑證可配合任何區域中的服務和資源使用。您也可以選擇對任何支援的區域中的端點進行 AWS STS API 呼叫。從地理位置較靠近您的區域的伺服器提出請求,可以降低延遲發生機率。無論您的憑證來自哪個區域,都能全域使用。如需詳細資訊,請參閱 AWS STS 在一個管理 AWS 區域。
在 Amazon EC2 執行個體中使用暫時憑證
如果您想要在 EC2 執行個體內執行 AWS CLI 命令或程式碼,建議取得登入資料的方式是使用 Amazon EC2 的角色。您建立 IAM 角色,指定要授予在 EC2 執行個體上執行之應用程式的許可。當您啟動執行個體時,會建立角色與執行個體的關聯。
然後 AWS CLI,在執行個體上執行的 Windows PowerShell 命令適用的應用程式、和工具可以從執行個體中繼資料取得自動暫時安全登入資料。您不必明確取得暫時安全憑證。適用於 Windows 的 AWS 開發套件和工具 PowerShell 會自動從 EC2 執行個體中繼資料服務 (IMDS) 取得登入資料並加以使用。 AWS CLI暫時性憑證擁有您為與執行個體定義關聯的角色所定義的許可。
如需詳細資訊及範例,請參閱下列:
-
使用 IAM 角色授予對 Amazon 彈性運算雲端上 AWS 資源的存取權 — AWS SDK for Java
-
使用 IAM 角色授予存取權限 — AWS SDK for .NET
-
建立角色 — AWS SDK for Ruby
使用暫時性安全憑證與 AWS 開發套件
要在代碼中使用臨時安全憑據,您可以通過編程方式調用類似的 AWS STS API AssumeRole
並提取生成的憑據和會話令牌。然後,您可以使用這些值作為後續呼叫的認證 AWS。下列範例顯示如何在使用 SDK 時使用臨時安全性憑證的虛擬程式碼: AWS
assumeRoleResult = AssumeRole(
role-arn
); tempCredentials = new SessionAWSCredentials( assumeRoleResult.AccessKeyId, assumeRoleResult.SecretAccessKey, assumeRoleResult.SessionToken); s3Request = CreateAmazonS3Client(tempCredentials);
如需使用 Python 撰寫的範例 (使用 AWS SDK for Python (Boto)AssumeRole
以取得暫時安全憑證,然後使用這些憑證呼叫 Amazon S3。
如需如何呼叫 AssumeRole
、GetFederationToken
以及其他 API 操作的詳細資訊,請參閱 AWS Security Token Service API 參考。有關從結果取得臨時安全憑證和工作階段權杖的詳細資訊,請參閱您正在使用的軟體開發套件的說明文件。您可以在主要文件頁面的 AWS SDK 和工具組區段中找到所有 SDK 的AWS
文件
您必須在舊的憑證到期之前,確實取得一組新的憑證。在某些軟體開發套件中,您可以使用為您管理重新整理憑證程序的提供者;檢查您正在使用的開發套件的文件。
使用暫時性安全憑證與 AWS CLI
您可以使用暫時性安全憑證與 AWS CLI。這很適合用於測試政策。
若使用 AWS CLI,您便可以呼叫 AWS STS API (例如 AssumeRole
或 GetFederationToken
),然後擷取產生的輸出。以下範例顯示對 AssumeRole
的呼叫,其會傳送輸出至檔案。在此範例中,會假設profile
參數是組態檔案中的設 AWS CLI 定檔。同時也假設會參考有權擔任角色之 IAM 使用者的憑證。
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/
role-name
--role-session-name "RoleSession1" --profileIAM-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 操作
如果您直接向 HTTPS API 請求發出 AWS,則可以使用從 AWS Security Token Service (AWS STS) 獲得的臨時安全登入資料來簽署這些請求。若要這麼做,您可以使用從中接收的存取金鑰 ID 和秘密存取金鑰 AWS STS。使用存取金鑰 ID 和私密存取金鑰簽署請求的方式,就和使用長期憑證簽署請求一樣。您還將從中接收的會話令牌添加到 API 請求中 AWS STS。您將工作階段權杖新增到 HTTP 標頭,或查詢名為 X-Amz-Security-Token
的字串參數。您將工作階段權杖新增到 HTTP 標頭「或」查詢字串參數,但不是兩者。如需簽署 HTTPS API 要求的詳細資訊,請參閱 AWS 一般參考. AWS
其他資訊
如需 AWS STS 與其他 AWS 服務搭配使用的詳細資訊,請參閱下列連結:
-
Amazon S3 請參閱 《Amazon Simple Storage Service 使用者指南》中的使用 IAM 使用者暫時憑證提出請求或使用聯合身分使用者暫時憑證提出請求。
-
Amazon SNS。請參閱 Amazon 簡單通知服務開發人員指南中的將身分型政策與 Amazon SNS 搭配使用。
-
Amazon SQS 請參閱 Amazon 簡單佇列服務開發人員指南中的 Amazon SQS 中的身分識別和存取管理。
-
Amazon SimpleDB。請參閱使用臨時安全憑證中的Amazon SimpleDB 開發人員指南。