請求暫時性安全憑證 - AWS Identity and Access Management

請求暫時性安全憑證

若要請求暫時性安全憑證,您可以在 AWS Security Token Service API 使用 AWS STS (AWS) 操作。這些包含可建立並提供信任的使用者暫時安全憑證,控制對於 AWS 資源存取的操作。如需有關 AWS STS 的詳細資訊,請參閱 IAM 中的暫時安全憑證。若要了解可用來在擔任角色時請求暫時性安全憑證的不同方法,請參閱使用 IAM 角色

若要呼叫 API 操作,您可以使用其中一個 AWS 軟體開發套件。適用於多種程式設計語言和環境的軟體開發套件,包括 Java、.NET、Python、Ruby、Android 和 iOS。開發套件會負責的工作諸如以密碼演算法簽署請求,必要時重試請求,以及處理錯誤回應。您也可以使用 AWS STS Query API,這在《AWS Security Token Service API 參考》中會加以說明。最後,兩個命令列工具都支援 AWS STS 命令:AWS Command Line Interface 以及 AWS Tools for Windows PowerShell

AWS STS API 操作會建立使用暫時安全憑證的全新工作階段,這些憑證包含存取金鑰對和工作階段權杖。存取金鑰對包含存取金鑰 ID 和秘密金鑰。使用者 (或使用者執行的應用程式) 可以使用這些憑證來存取您的資源。您可以建立角色工作階段,以及透過編寫程式的方式,使用 AWS STS API 操作傳遞工作階段政策和工作階段標籤。所產生工作階段許可會是角色的以身分為基礎的政策和工作階段政策的交集。如需有關工作階段政策的詳細資訊,請參閱 工作階段政策。如需有關工作階段標籤的詳細資訊,請參閱 在 AWS STS 中傳遞工作階段標籤

注意

AWS STS API 操作傳回的工作階段字符大小不固定。我們強烈建議您不對大小上限做出任何假設。一般權杖大小小於 4096 個位元組,但有可能會不同。

使用 AWS STS 和 AWS 區域

您可以將 AWS STS API 呼叫傳送到全域端點或其中一個區域端點。如果您選擇比較靠近您的端點,您可以減少延遲並改善您的 API 呼叫的效能。如果可以不再與原始端點通訊,您也可以選擇將您的呼叫導向至其他區域性端點。如果您使用的是各種 AWS 開發套件之一,則使用該 SDK 的方法來指定區域,之後再進行 API 呼叫。如果您手動建構 HTTP API 請求,則必須您自己將請求直接導向到正確的端點。如需詳細資訊,請參閱區域與端點的 AWS STS 一節在 AWS STS 區域中管理 AWS

以下是 API 操作,您可以用於您的 AWS 環境和應用程式中獲取暫時性憑證。

AssumeRole — 跨帳戶委派和透過自訂身分經紀人的聯合

AssumeRole API 操作適合讓現有的 IAM 使用者存取其尚無權存取的 AWS 資源。例如,使用者可能需要存取另一個 AWS 帳號中的資源。它也能夠用來暫時獲得特殊許可,例如,提供多重要素驗證 (MFA)。您必須使用作用中的登入資料呼叫此 API。若要了解誰可以呼叫此操作,請參閱 AWS STS API 操作的比較。如需更多詳細資訊,請參閱 建立角色以委派許可給 IAM 使用者設定受 MFA 保護的 API 存取

必須使用有效的 AWS 安全憑證進行此呼叫。當您進行此呼叫時,您傳遞了下列資訊:

  • 應用程式應擔任角色的 Amazon 資源名稱 (ARN)。

  • (選用) 持續時間,指定暫時安全憑證的持續時間。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 查看角色的最大工作階段持續時間設定。如果您不傳遞此參數,暫時性憑證會在一個小時內到期。此 API 的 DurationSeconds 參數不同於您用來指定主控台工作階段持續時間的 SessionDuration HTTP 參數。在主控台登入權杖的聯合端點請求中使用 SessionDuration HTTP 參數。如需詳細資訊,請參閱 使自訂身分經紀人存取 AWS 主控台

  • 角色工作階段名稱。當不同委託人使用角色時,請使用此字串值來識別工作階段。基於安全考量,管理員可以在 AWS CloudTrail 日誌中檢視此欄位,以協助識別在 AWS 中執行動作的人員。當您擔任該角色時,系統管理員可能會請求您將 IAM 使用者名稱指定為工作階段名稱。如需詳細資訊,請參閱 sts:RoleSessionName

  • (選用) 來源身分。您可以要求使用者在擔任角色時指定來源身分。設定來源身分之後,就無法變更值。針對在角色工作階段期間所採取的所有動作,這會出現在請求中。來源身分值在鏈結的角色工作階段間會持續存在。您可以使用 AWS CloudTrail 日誌中的來源身分資訊來判斷哪些人員使用角色執行了動作。如需有關使用來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作

  • (選用) 內嵌或受管的工作階段政策。這些政策會限制角色工作階段獲派自角色的以身分為基礎政策的許可。所產生工作階段的許可會是角色的以身分為基礎的政策和工作階段政策的交集。工作階段政策不能用來授予超出即將擔任角色之以身分為基礎政策所允許的許可。如需有關角色工作階段許可的詳細資訊,請參閱 工作階段政策

  • (選用) 工作階段標籤。您可以承擔角色,然後使用暫時憑證提出請求。當您這麼做時,工作階段的委託人標籤會包括角色標籤和傳遞的工作階段標籤。如果您使用暫時憑證發起呼叫,新的工作階段也會繼承來自呼叫發起工作階段的轉移工作階段標籤。如需有關工作階段標籤的詳細資訊,請參閱 在 AWS STS 中傳遞工作階段標籤

  • (選用) MFA 資訊。如果設定為使用多重要素驗證 (MFA),則包含 MFA 裝置的識別符,以及該裝置所提供的一次性程式碼。

  • (選用) ExternalId 值,可在將您的帳戶存取權委派給第三方時使用。這個值有助於確保只有指定的第三方可以存取角色。如需詳細資訊,請參閱 將 AWS 資源的存取權授予第三方時如何使用外部 ID。

以下範例顯示使用 AssumeRole 的範例請求及回應。此範例請求假設指定時間內的 demo 角色具有已包含的工作階段政策工作階段標籤外部 ID來源身分。產生的工作階段名為 John-session

範例請求

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=John-session &RoleArn=arn:aws::iam::123456789012:role/demo &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &ExternalId=123ABC &SourceIdentity=DevUser123 &AUTHPARAMS

在上述範例中顯示的政策值是以下政策的 URL 編碼版本:

{"Version":"2012-10-17","Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}

範例中的 AUTHPARAMS 參數是簽章的預留位置。簽章是您必須使用 AWS HTTP API 請求包含的身分驗證資訊。我們建議使用 AWS 開發套件來建立 API 請求。執行此作業的其中一個好處是開發套件會為您處理請求簽署。如果您必須手動建立和簽署 API 請求,請參閱《Amazon Web Services 一般參考》中的使用 Signature 第 4 版簽署 AWS 請求,以了解如何簽署請求。

除了暫時性安全憑證外,回應包含聯合身分使用者的 Amazon 資源名稱 (ARN) 和憑證過期時間。

範例 回應範例

<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleResult> <SourceIdentity>DevUser123</SourceIdentity> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2019-07-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> <AssumedRoleUser> <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn> <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId> </AssumedRoleUser> <PackedPolicySize>8</PackedPolicySize> </AssumeRoleResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </AssumeRoleResponse>
注意

AWS 轉換會將傳遞的工作階段政策和工作階段標籤壓縮成具有個別限制的封裝二進位格式。即使您的純文字符合其他需求,您的請求也可能因不符限制而失敗。PackedPolicySize 回應元素會按百分比指出請求的政策和標籤與大小上限的距離。

AssumeRoleWithWebIdentity - 透過以 Web 為基礎的身分供應商的聯合

這個 AssumeRoleWithWebIdentity API 操作會傳回資料聯合身分使用者的一組臨時安全登入操作,該使用者透過公有身分提供者進行驗證。公有身分提供者的範例包含 Login with Amazon、Facebook、Google 或任何與身分提供者相容的 OpenID Connect (OIDC)。此操作適用於建立行動應用程式或以用戶端為基礎的 Web 應用程式,這類應用程式會需要 AWS 的存取權。使用此操作表示您的使用者不需自己的 AWS 或 IAM 身分。如需詳細資訊,請參閱 關於 Web 聯合身分

除了直接呼叫 AssumeRoleWithWebIdentity,我們建議您使用 Amazon Cognito 和 Amazon Cognito 憑證提供者以及 AWS 開發套件進行行動開發。如需詳細資訊,請參閱下列內容:

如果您不是使用 Amazon Cognito,則呼叫 AWS STS 的 AssumeRoleWithWebIdentity 動作。這是一個未簽署的呼叫,表示應用程式不需要存取任何 AWS 安全憑證,就能進行呼叫。當您進行此呼叫時,您傳遞了下列資訊:

  • 應用程式應擔任角色的 Amazon 資源名稱 (ARN)。如果您的應用程式支援多種方式讓使用者登入,您必須定義多個角色,每個身分提供者一個角色。呼叫 AssumeRoleWithWebIdentity 應該包含角色的 ARN,其特定於使用者登入時所使用的提供者。

  • 在應用程式驗證使用者後應用程式從 IdP 取得的權杖。

  • 您可以設定 IdP,將屬性傳遞至權杖做為工作階段標籤

  • (選用) 持續時間,指定暫時安全憑證的持續時間。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 查看角色的最大工作階段持續時間設定。如果您不傳遞此參數,暫時性憑證會在一個小時內到期。此 API 的 DurationSeconds 參數不同於您用來指定主控台工作階段持續時間的 SessionDuration HTTP 參數。在主控台登入權杖的聯合端點請求中使用 SessionDuration HTTP 參數。如需詳細資訊,請參閱 使自訂身分經紀人存取 AWS 主控台

  • 角色工作階段名稱。當不同委託人使用角色時,請使用此字串值來識別工作階段。基於安全考量,管理員可以在 AWS CloudTrail 日誌中檢視此欄位,以了解在 AWS 中執行動作的人員。當您擔任角色時,系統管理員可能會請求您提供工作階段名稱的特定值。如需詳細資訊,請參閱 sts:RoleSessionName

  • (選用) 來源身分。您可以要求聯合身分使用者在擔任角色時指定來源身分。設定來源身分之後,就無法變更值。針對在角色工作階段期間所採取的所有動作,這會出現在請求中。來源身分值在鏈結的角色工作階段間會持續存在。您可以使用 AWS CloudTrail 日誌中的來源身分資訊來判斷哪些人員使用角色執行了動作。如需有關使用來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作

  • (選用) 內嵌或受管的工作階段政策。這些政策會限制角色工作階段獲派自角色的以身分為基礎政策的許可。所產生工作階段的許可會是角色的以身分為基礎的政策和工作階段政策的交集。工作階段政策不能用來授予超出即將擔任角色之以身分為基礎政策所允許的許可。如需有關角色工作階段許可的詳細資訊,請參閱 工作階段政策

    注意

    AssumeRoleWithWebIdentity 呼叫未簽署 (加密)。因此,如果請求是透過信任的媒介傳輸,您應該只包含選用的工作階段政策。在這種情況下,有人可以更改政策以移除限制。

當您呼叫 AssumeRoleWithWebIdentity 時,AWS 會驗證權杖的真偽。例如,依提供者而定,AWS 可能呼叫提供者並包含應用程式已傳遞的權杖。假設身分提供者驗證您的權杖,AWS 傳回以下資訊給您:

  • 一組暫時性安全憑證。這些包含存取金鑰 ID、私密存取金鑰和工作階段權杖。

  • 所擔任角色的角色 ID 和 ARN。

  • SubjectFromWebIdentityToken 值,其中包含唯一的使用者 ID。

當您具有暫時性安全憑證時,您可以使用它們來進行 AWS API 呼叫。這個程序與使用長期安全憑證進行 AWS API 呼叫的程序相同。差別在於您必須包含工作階段權杖,這個權杖可讓 AWS 驗證臨時安全憑證是否有效。

您的應用程式應該快取憑證。預設情況下,如上所述,憑證在一小時後到期。如果您未使用 AWS 開發套件中的 AmazonSTSCredentialsProvider 操作,則取決於您和您的應用程式是否再次呼叫 AssumeRoleWithWebIdentity。呼叫此操作,或取得一組新的暫時性安全憑證,之後舊的憑證才會過期。

AssumeRoleWithSAML - 透過相容於 SAML 2.0 的企業身分供應商的聯合

這個 AssumeRoleWithSAML API 操作會傳回聯合身分使用者的一組臨時安全憑證,該使用者透過您組織現有的身分系統進行驗證。使用者還必須使用 SAML 2.0 (安全聲明標記語言) 來將身分驗證和授權資訊傳遞至 AWS。這個 API 操作適用於整合他們自己的身分系統的組織 (例如,Windows Active Directory 或 OpenLDAP),而軟體可以產生 SAML 聲明。這種整合會提供有關使用者身分和許可 (例如 Active Directory Federation Services 或 Shibboleth) 的資訊。如需詳細資訊,請參閱 關於以 SAML 2.0 為基礎的聯合身分

注意

AssumeRoleWithSAML 呼叫未簽署 (加密)。因此,如果請求是透過信任的媒介傳輸,您應該只包含選用的工作階段政策。在這種情況下,有人可以更改政策以移除限制。

這是一個未簽署的呼叫,表示應用程式不需要存取任何 AWS 安全憑證,就能進行呼叫。當您進行此呼叫時,您傳遞了下列資訊:

  • 應用程式應擔任角色的 Amazon 資源名稱 (ARN)。

  • 在描述身分提供者的 IAM 中建立的 SAML 提供者的 ARN。

  • SAML 身分提供者會在其對您應用程式的登入請求的身分驗證回應中,提供以基數 64 編碼的 SAML 聲明。

  • 您可以設定 IdP,將屬性傳遞至 SAML 聲明做為工作階段標籤

  • (選用) 持續時間,指定暫時安全憑證的持續時間。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 查看角色的最大工作階段持續時間設定。如果您不傳遞此參數,暫時性憑證會在一個小時內到期。此 API 的 DurationSeconds 參數不同於您用來指定主控台工作階段持續時間的 SessionDuration HTTP 參數。在主控台登入權杖的聯合端點請求中使用 SessionDuration HTTP 參數。如需詳細資訊,請參閱 使自訂身分經紀人存取 AWS 主控台

  • (選用) 內嵌或受管的工作階段政策。這些政策會限制角色工作階段獲派自角色的以身分為基礎政策的許可。所產生工作階段的許可會是角色的以身分為基礎的政策和工作階段政策的交集。工作階段政策不能用來授予超出即將擔任角色之以身分為基礎政策所允許的許可。如需有關角色工作階段許可的詳細資訊,請參閱 工作階段政策

  • 角色工作階段名稱。當不同委託人使用角色時,請使用此字串值來識別工作階段。基於安全考量,管理員可以在 AWS CloudTrail 日誌中檢視此欄位,以了解在 AWS 中執行動作的人員。當您擔任角色時,系統管理員可能會請求您提供工作階段名稱的特定值。如需詳細資訊,請參閱 sts:RoleSessionName

  • (選用) 來源身分。您可以要求聯合身分使用者在擔任角色時指定來源身分。設定來源身分之後,就無法變更值。針對在角色工作階段期間所採取的所有動作,這會出現在請求中。來源身分值在鏈結的角色工作階段間會持續存在。您可以使用 AWS CloudTrail 日誌中的來源身分資訊來判斷哪些人員使用角色執行了動作。如需有關使用來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作

當您呼叫 AssumeRoleWithSAML 時,AWS 會驗證 SAML 聲明的真偽。假設身分提供者驗證聲明,AWS 傳回以下資訊給您:

  • 一組暫時性安全憑證。這些包含存取金鑰 ID、私密存取金鑰和工作階段權杖。

  • 所擔任角色的角色 ID 和 ARN。

  • Audience 值,其包含 SAML 聲明的 Recipient 元素的 SubjectConfirmationData 屬性值。

  • Issuer 值,其包含 SAML 聲明的 Issuer 元素的值。

  • NameQualifier 元素,包含從 Issuer 值建構的雜湊值、AWS 帳戶 ID 和 SAML 提供者的易記名稱。當結合 Subject 元素時,他們可唯一識別聯合身分使用者。

  • Subject 元素,其包含 SAML 聲明的 NameID 元素的 Subject 元素值。

  • SubjectType 元素指出 Subject 元素的格式。此值可以是 persistenttransient 或在您的 SAML 聲明中使用的 FormatSubject 元素的完整 NameID URI。如需 NameID 元素的 Format 屬性的詳細資訊,請參閱 為身分驗證回應配置 SAML 聲明

當您具有暫時性安全憑證時,您可以使用它們來進行 AWS API 呼叫。這個程序與使用長期安全憑證進行 AWS API 呼叫的程序相同。差別在於您必須包含工作階段權杖,這個權杖可讓 AWS 驗證臨時安全憑證是否有效。

您的應用程式應該快取憑證。預設情況下,憑證會在一小時後到期。如果您不是使用 開發套件中的 AmazonSTSCredentialsProviderAWS 動作,則取決於您和您的應用程式是否再次呼叫 AssumeRoleWithSAML。呼叫此操作,或取得一組新的暫時性安全憑證,之後舊的憑證才會過期。

GetFederationToken - 透過自訂身分經紀人的聯合

這個 GetFederationToken API 操作會傳回一組臨時安全憑證供聯合身分使用者使用。此 API 與 AssumeRole 不同,其中的預設過期時段是實質上比較長 (12 小時,而不是 1 小時)。此外,您可以使用 DurationSeconds 參數來指定暫時性安全憑證的持續時間,以保持有效。產生的憑證有效期為指定的期間,在 900 秒 (15 分鐘) 到 129,600 秒 (36 小時) 之間。較長的過期時段可協助降低 AWS 呼叫的數量,因為您不需要如常地取得新的憑證。如需詳細資訊,請參閱 請求暫時性安全憑證

當您提出此請求時,您可以使用特定 IAM 使用者的憑證。臨時安全憑證的許可,取決於您呼叫 GetFederationToken 時傳遞的工作階段政策。所產生工作階段的許可會是 IAM 使用者政策和您傳遞之工作階段政策的交集。工作階段政策不能用來授予超出即將請求聯合的 IAM 使用者之以身分為基礎政策所允許的許可。如需有關角色工作階段許可的詳細資訊,請參閱 工作階段政策

當您使用 GetFederationToken 操作傳回的暫時憑證時,工作階段的委託人標籤會包含使用者的標籤和傳遞的工作階段標籤。如需有關工作階段標籤的詳細資訊,請參閱 在 AWS STS 中傳遞工作階段標籤

GetFederationToken 呼叫會傳回暫時性安全憑證,該憑證由工作階段字符、存取金鑰、私密金鑰和過期時間組成。如果您想要管理您組織內的許可 (例如,使用 Proxy 應用程式以指派許可),您可以使用 GetFederationToken。若要檢視使用 GetFederationToken 的範例應用程式,請移至 AWS 範本程式碼與程式庫中的適用於 Active Directory 使用案例的聯合身分範例應用程式

以下範例顯示使用 GetFederationToken 的範例請求及回應。此範例請求會將指定期間的呼叫發起使用者與工作階段政策 ARN 和工作階段標籤聯合在一起。產生的工作階段名為 Jane-session

範例請求

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jane-session &PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy &DurationSeconds=1800 &Tags.member.1.Key=Project &Tags.member.1.Value=Pegasus &Tags.member.2.Key=Cost-Center &Tags.member.2.Value=12345 &AUTHPARAMS

上述範例中顯示的政策 ARN 包含以下 URL 編碼 ARN:

arn:aws:iam::123456789012:policy/Role1policy

此外,請注意範例中的 &AUTHPARAMS 參數表示身分驗證資訊的預留位置。這是「簽章」,必須隨附於 AWS HTTP API 請求。我們建議使用 AWS 開發套件來建立 API 請求。執行此作業的其中一個好處是開發套件會為您處理請求簽署。如果您必須手動建立和簽署 API 請求,請參閱《Amazon Web Services 一般參考》中的使用 Signature 第 4 版簽署 AWS 請求,以了解如何簽署請求。

除了暫時性安全憑證外,回應包含聯合身分使用者的 Amazon 資源名稱 (ARN) 和憑證過期時間。

範例 回應範例

<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetFederationTokenResult> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2019-04-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId> </Credentials> <FederatedUser> <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn> <FederatedUserId>123456789012:Jean</FederatedUserId> </FederatedUser> <PackedPolicySize>4</PackedPolicySize> </GetFederationTokenResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </GetFederationTokenResponse>
注意

AWS 轉換會將傳遞的工作階段政策和工作階段標籤壓縮成具有個別限制的封裝二進位格式。即使您的純文字符合其他需求,您的請求也可能因不符限制而失敗。PackedPolicySize 回應元素會按百分比指出請求的政策和標籤與大小上限的距離。

AWS 建議,如果您想要在資源層級授予許可 (例如,將以資源為基礎的政策連接到 Amazon S3 儲存貯體),您可以省略 Policy 參數。不過,如果您不包含聯合身分使用者的政策,暫時性安全憑證將不會授予任何許可。在這種情況下,您「必須」使用資源政策,來授予聯合身分使用者存取您 AWS 資源的許可。

例如,假設您的 AWS 帳戶號碼是 111122223333,而您擁有想要允許 Susan 存取的 Amazon S3 儲存貯體。Susan 的暫時性安全憑證不包含儲存貯體的政策。在這種情況下,您需要確保儲存貯體具有其 ARN 與 Susan 的 ARN 相符的政策,例如 arn:aws:sts::111122223333:federated-user/Susan

GetSessionToken - 不信任環境中使用者的暫時性憑證

這個 GetSessionToken API 操作會傳回一組臨時安全憑證供現有 IAM 使用者使用。這適用於提供增強的安全,例如,將 AWS 請求限制在 IAM 使用者啟用 MFA 時。因為憑證為暫時性,它們可在您有透過較不安全環境存取您資源的 IAM 使用者時,提供增強的安全性。較不安全環境的範例包含行動裝置或 Web 瀏覽器。如需詳細資訊,請參閱 請求暫時性安全憑證 或《AWS Security Token Service API 參考》中的 GetSessionToken

在預設情況下,IAM 使用者的暫時性安全憑證的有效期最長為 12 小時。但是,您可以使用 DurationSeconds 參數請求持續時間最短為 15 分鐘最長為 36 小時。基於安全考量,AWS 帳戶 根使用者的權杖的持續時間限制在一個小時。

GetSessionToken 會傳回暫時性安全憑證,其由工作階段字符、存取金鑰 ID 和私密存取金鑰組成。以下範例顯示使用 GetSessionToken 的範例請求及回應。回應還包括暫時性安全憑證的過期時間。

範例請求

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=1800 &AUTHPARAMS

範例中的 AUTHPARAMS 參數是簽章的預留位置。簽章是您必須使用 AWS HTTP API 請求包含的身分驗證資訊。我們建議使用 AWS 開發套件來建立 API 請求。執行此作業的其中一個好處是開發套件會為您處理請求簽署。如果您必須手動建立和簽署 API 請求,請參閱《Amazon Web Services 一般參考》中的使用 Signature 第 4 版簽署 AWS 請求,以了解如何簽署請求。

範例 回應範例

<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetSessionTokenResult> <Credentials> <SessionToken> AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2011-07-11T19:55:29.611Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> </GetSessionTokenResult> <ResponseMetadata> <RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId> </ResponseMetadata> </GetSessionTokenResponse>

或者,GetSessionToken 請求可以包含 SerialNumber 多重要素驗證 (MFA) 驗證的 TokenCode 與 AWS 值。如果提供的值有效,AWS STS 會提供暫時性安全憑證,其包括 MFA 身分驗證的狀態。然後,暫時性安全憑證可用來存取受 MFA 保護的 API 操作或 AWS 網站,只要 MFA 身分驗證有效。

以下範例顯示 GetSessionToken 請求,其中包含 MFA 驗證碼和裝置序號。

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=7200 &SerialNumber=YourMFADeviceSerialNumber &TokenCode=123456 &AUTHPARAMS
注意

呼叫 AWS STS 的施作對象,可以是全域端點或任何您啟用 AWS 帳戶的區域端點。如需詳細資訊,請參閱區域與端點的 AWS STS 一節

範例中的 AUTHPARAMS 參數是簽章的預留位置。簽章是您必須使用 AWS HTTP API 請求包含的身分驗證資訊。我們建議使用 AWS 開發套件來建立 API 請求。執行此作業的其中一個好處是開發套件會為您處理請求簽署。如果您必須手動建立和簽署 API 請求,請參閱《Amazon Web Services 一般參考》中的使用 Signature 第 4 版簽署 AWS 請求,以了解如何簽署請求。

AWS STS API 操作的比較

下表比較 AWS STS 中 API 操作的功能,其會傳回暫時性安全憑證。若要了解可用來在擔任角色時請求暫時性安全憑證的不同方法,請參閱使用 IAM 角色。若要了解讓您傳遞工作階段標籤的不同 AWS STS API 操作,請參閱在 AWS STS 中傳遞工作階段標籤

比較您的 API 選項
AWS STS API 誰可以呼叫 憑證存留期 (最小 | 最大 | 預設) MFA 支援¹ 工作階段政策支援² 產生的暫時憑證限制
AssumeRole 具現有暫時性安全憑證的 IAM 使用者或 IAM 角色 15 分鐘 | 最大工作階段持續時間設定³ | 1 小時

無法呼叫 GetFederationTokenGetSessionToken

AssumeRoleWithSAML 任何使用者;呼叫者必須傳遞 SAML 身分驗證回應,指出通過已知身分提供者的身分驗證 15 分鐘 | 最大工作階段持續時間設定³ | 1 小時

無法呼叫 GetFederationTokenGetSessionToken

AssumeRoleWithWebIdentity 任何使用者;呼叫者必須傳遞 Web 身分權杖,指出通過已知身分提供者的身分驗證 15 分鐘 | 最大工作階段持續時間設定³ | 1 小時

無法呼叫 GetFederationTokenGetSessionToken

GetFederationToken IAM 使用者或 AWS 帳戶 根使用者

IAM 使用者:15 分鐘 | 36 小時 | 12 小時

根使用者:15 分鐘 | 1 小時 | 1 小時

無法使用 AWS CLI 或 AWS API 呼叫 IAM 操作。

無法呼叫 AWS STS 以外的 GetCallerIdentity 作業。

允許 SSO 到主控台。⁵

GetSessionToken IAM 使用者或 AWS 帳戶 根使用者

IAM 使用者:15 分鐘 | 36 小時 | 12 小時

根使用者:15 分鐘 | 1 小時 | 1 小時

除非請求包含 MFA 資訊,否則無法呼叫 IAM API 操作。

無法直接呼叫 AWS STS API 操作,AssumeRoleGetCallerIdentity 除外。

不允許 SSO 到主控台。⁶

¹ MFA 支援。您可以在您呼叫 AssumeRole 和 GetSessionToken API 操作時,包含有關 多重要素驗證 (MFA) 裝置的資訊。這可確保 API 呼叫所產生的暫時性安全憑證,僅可由使用 MFA 裝置進行身分驗證的使用者使用。如需詳細資訊,請參閱 設定受 MFA 保護的 API 存取

² 工作階段政策支援。工作階段政策是一種政策,且您會在以程式設計方式建立角色或聯合身分使用者的臨時工作階段時,做為參數進行傳遞。這個政策會限制工作階段獲派自角色或使用者之以身分為基礎政策的許可。所產生工作階段的許可會是實體的身分類型政策和工作階段政策的交集。工作階段政策不能用來授予超出即將擔任角色之以身分為基礎政策所允許的許可。如需有關角色工作階段許可的詳細資訊,請參閱 工作階段政策

³ 最大工作階段持續時間設定。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 查看角色的最大工作階段持續時間設定

GetCallerIdentity。執行此操作不需要任何許可。如果管理員將明確拒絕存取 sts:GetCallerIdentity 動作的政策新增到 IAM 使用者或角色,您仍然可以執行此操作。不需要許可,因為當 IAM 使用者或角色被拒絕存取時,會傳回相同的資訊。若要檢視範例回應,請參閱 我未獲得授權,不得執行:iam:DeleteVirtualMFADevice

Single sign-on (SSO) 至主控台。為了支援 SSO,AWS 可讓您呼叫聯合端點 (https://signin.aws.amazon.com/federation),以及傳遞暫時安全憑證。端點會傳回權杖,您可用來建構 URL,直接將使用者登入主控台,而不需要密碼。如需詳細資訊,請參閱 使 SAML 2.0 聯合身分使用者能夠存取 AWS Management Console 和 AWS 安全部落格中的如何啟用跨帳戶存取 AWS 管理主控台

⁶ 在您擷取暫時憑證後,您無法透過將憑證傳遞到聯合單一登入端點,來存取 AWS Management Console。如需詳細資訊,請參閱 使自訂身分經紀人存取 AWS 主控台