選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

請求臨時安全憑證

焦點模式
請求臨時安全憑證 - AWS Identity and Access Management

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

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

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

若要呼叫 API 操作,您可以使用其中一個 AWS 軟體開發套件。適用於多種程式設計語言和環境的軟體開發套件,包括 Java、.NET、Python、Ruby、Android 和 iOS。開發套件會負責的工作諸如以密碼演算法簽署請求,必要時重試請求,以及處理錯誤回應。您也可以使用 AWS STS 查詢 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 SDKs,請在進行 API 呼叫之前使用該 SDK 方法來指定區域。如果您手動建構 HTTP API 請求,則必須您自己將請求直接導向到正確的端點。如需詳細資訊,請參閱區域與端點的AWS STS 一節在 AWS STS 中管理 AWS 區域

以下是 API 操作,您可以用來取得臨時登入資料,以便在 AWS 環境和應用程式中使用。

透過自訂身分經紀人請求跨帳戶委派和聯合身分的憑證

AssumeRole API 操作有助於讓現有的 IAM 使用者存取他們尚未存取 AWS 的資源。例如,使用者可能需要存取另一個 AWS 帳戶中的資源。它也能夠用來暫時獲得特殊許可,例如,提供多重要素驗證 (MFA)。您必須使用作用中的登入資料呼叫此 API。若要了解誰可以呼叫此操作,請參閱 比較 AWS STS 憑證。如需詳細資訊,請參閱 建立角色以授予許可給 IAM 使用者透過 MFA 實現安全的 API 存取

透過自訂身分經紀人請求跨帳戶委派和聯合身分的臨時安全憑證
  1. 使用您的 AWS 安全登入資料進行驗證。必須使用有效的 AWS 安全憑證進行此呼叫。

  2. 呼叫 AssumeRole 操作。

以下範例顯示使用 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 請求,請參閱 中的使用簽章版本 4 簽署 AWS 請求Amazon Web Services 一般參考,以了解如何簽署請求。

除了暫時性安全憑證外,回應包含聯合身分使用者的 Amazon Resource Name (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 回應元素會按百分比指出請求的政策和標籤與大小上限的距離。

透過 OIDC 提供者請求憑證

AssumeRoleWithWebIdentity API 操作會傳回一組臨時 AWS 安全憑證,以換取 JSON Web 權杖 (JWT)。其中包括公有身分提供者 (例如 Login with Amazon、Facebook、Google),以及發行與 OpenID Connect (OIDC) 探索相容的 JWT 的提供者 (例如 GitHub actions 或 Azure Devops)。如需詳細資訊,請參閱OIDC 聯合身分

注意

AssumeRoleWithWebIdentity 請求未經簽名,且不需要 AWS 憑證。

透過 OIDC 提供者請求憑證
  1. 呼叫 AssumeRoleWithWebIdentity 操作。

    當您呼叫 時AssumeRoleWithWebIdentity, 會使用 IdP 的 JSON Web 金鑰集 (JWKS) 提供的公有金鑰驗證數位簽章,以 AWS 驗證顯示的字符。如果字符有效,且符合 IAM 角色信任政策中規定的所有條件, 會 AWS 傳回下列資訊給您:

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

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

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

  2. 然後,您的應用程式可能會使用回應中傳回的臨時安全登入資料來進行 AWS API 呼叫。這與使用長期安全登入資料進行 AWS API 呼叫的程序相同。差別在於您必須包含工作階段權杖,這可讓 AWS 驗證臨時安全登入資料是否有效。

您的應用程式應快取 傳回的登入資料 AWS STS ,並視需要重新整理。如果您的應用程式是使用 AWS SDK 建置的,則 SDK 具有憑證提供者,可以在憑證過期之前處理呼叫AssumeRoleWithWebIdentity和重新整理 AWS 憑證。如需詳細資訊,請參閱 AWS SDKs and Tools Reference Guide 中的 AWS SDKs and Tools standardized credential providers

透過 SAML 2.0 身分提供者請求憑證

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

  1. 呼叫 AssumeRoleWithSAML 操作。

    這是未簽署的呼叫,這表示您不需要在提出請求之前驗證 AWS 安全登入資料。

    注意

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

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

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

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

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

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

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

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

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

  3. 使用回應中傳回的臨時安全登入資料來進行 AWS API 呼叫。這與使用長期安全登入資料進行 AWS API 呼叫的程序相同。差別在於您必須包含工作階段權杖,這個權杖可讓 AWS 驗證臨時安全憑證是否有效。

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

透過自訂身分經紀人請求憑證

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

  1. 使用特定 IAM 使用者 AWS 的安全登入資料進行驗證。此呼叫必須使用有效的 AWS 安全登入資料進行。

  2. 呼叫 GetFederationToken 操作。

GetFederationToken 呼叫會傳回暫時性安全憑證,該憑證由工作階段字符、存取金鑰、私密金鑰和過期時間組成。如果您想要管理您組織內的許可 (例如,使用 Proxy 應用程式以指派許可),您可以使用 GetFederationToken

以下範例顯示使用 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 請求,請前往 中的使用簽章版本 4 簽署 AWS 請求Amazon Web Services 一般參考,了解如何簽署請求。

除了暫時性安全憑證外,回應包含聯合身分使用者的 Amazon Resource Name (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 API 操作會傳回一組臨時安全憑證供現有 IAM 使用者使用。這有助於提供增強的安全性,例如僅在 IAM 使用者啟用 MFA 時允許 AWS 請求。因為憑證為暫時性,它們可在您有透過較不安全環境存取您資源的 IAM 使用者時,提供增強的安全性。較不安全環境的範例包含行動裝置或 Web 瀏覽器。

  1. 使用特定 IAM 使用者 AWS 的安全登入資料進行驗證。此呼叫必須使用有效的 AWS 安全登入資料進行。

  2. 呼叫 GetSessionToken 操作。

  3. GetSessionToken 會傳回暫時性安全憑證,其由工作階段字符、存取金鑰 ID 和私密存取金鑰組成。

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

以下範例顯示使用 GetSessionToken 的範例請求及回應。回應還包括暫時性安全憑證的過期時間。

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

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

範例 回應範例
<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請求可以包含 AWS 多重要素驗證 (MFA) 驗證的 SerialNumberTokenCode值。如果提供的值有效, AWS STS 會提供包含 MFA 身分驗證狀態的臨時安全登入資料。只要 MFA 身分驗證有效,即可使用臨時安全登入資料來存取受 MFA 保護的 API 操作或 AWS 網站。

以下範例顯示 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 請求,請參閱 中的使用簽章版本 4 簽署 AWS 請求Amazon Web Services 一般參考,以了解如何簽署請求。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。