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

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

請求暫時性安全憑證

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

若要呼叫作API業,您可以使用其中一個 AWS SDKs. 可用SDKs於各種程式設計語言和環境,包括 Java、. NET, Python, 紅寶石, 安卓, 和 iOS. 負責處理諸如密碼編譯簽名請求,必要SDKs時重試請求以及處理錯誤響應等任務。您也可以使用「AWS Security Token Service API參考」中所述的「 AWS STS 查詢API」。最後,有兩個指令行工具支援這些 AWS STS 指令:AWS Command Line Interface、和 AWS Tools for Windows PowerShell.

這些 AWS STS API作業會建立新的工作階段,其中包含存取 key pair 和工作階段 Token 的臨時安全認證。存取金鑰對包含存取金鑰 ID 和秘密金鑰。使用者 (或使用者執行的應用程式) 可以使用這些憑證來存取您的資源。您可以建立角色工作階段,並使用作業以程式設計方式傳遞工作階段原則和工 AWS STS API作 所產生工作階段許可會是角色的以身分為基礎的政策和工作階段政策的交集。如需有關工作階段政策的詳細資訊,請參閱 工作階段政策。如需有關工作階段標籤的詳細資訊,請參閱 傳遞工作階段標籤 AWS STS

注意

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

AWS STS 與 AWS 區域搭配使用

您可以將 AWS STS API呼叫傳送至全域端點或其中一個區域端點。如果您選擇離您更近的端點,則可以減少延遲並提高API通話效能。如果可以不再與原始端點通訊,您也可以選擇將您的呼叫導向至其他區域性端點。如果您使用的是其中一種 AWS SDKs,請在API撥打電話之前使用該SDK方法來指定 Region。如果您手動建構要HTTPAPI求,則必須自行將要求導向至正確的端點。如需詳細資訊,請參閱區域與端點的AWS STS 一節AWS STS 在一個管理 AWS 區域

以下是您可用來取得暫時認證的API作業,以便在您的 AWS 環境和應用程式中使用。

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

AssumeRoleAPI作業對於允許現有IAM使用者存取他們尚未擁有存取權限的 AWS 資源非常有用。例如,使用者可能需要存取另一個 AWS 帳戶中的資源。作為暫時取得特權存取的方法也很有用,例如,提供多重要素驗證 ()。MFA您必須API使用活動憑據調用此信息。若要了解誰可以呼叫此操作,請參閱 比較操 AWS STS API作。如需詳細資訊,請參閱 建立角色以將權限委派給IAM使用者使用安全API存取 MFA

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

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

  • (選用) 持續時間,指定暫時安全憑證的持續時間。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 更新角色的工作階段持續時間上限。如果您不傳遞此參數,暫時性憑證會在一個小時內到期。此DurationSeconds參數與您API用來指定主控台工作階段持續時間的SessionDurationHTTP參數不同。在向聯合端點發出請求中的SessionDurationHTTP參數用於控制台登錄令牌。如需詳細資訊,請參閱啟用自訂身分識別代理存取主 AWS 控台

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

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

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

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

  • (可選)MFA信息。如果配置為使用多因素身份驗證(MFA),則您將包含設備的標識符以及該MFA設備提供的一次性代碼。

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

以下範例顯示使用 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 HTTPAPI要求中的驗證資訊。我們建議您使用建立AWS SDKs要API求,而這樣做的一個好處就是為您簽署SDKs處理要求。如果您必須手動建立和簽署API請求,AWS 請參閱中的「使用簽名版本 4 簽署請求」Amazon Web Services 一般參考以瞭解如何簽署請求。

除了臨時安全登入資料之外,回應還包括聯合身分使用者的 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 為基礎的身分提供者聯合

AssumeRoleWithWebIdentityAPI作業會針對透過公用身分識別提供者驗證的聯合身分使用者傳回一組臨時安全性登入資料。公共身份提供商的例子包括使用亞馬遜,Facebook,谷歌或任何 OpenID Connect(OIDC)兼容的身份提供商進行登錄。此作業對於建立需要存取的行動應用程式或以用戶端為基礎的 Web 應用程式非常有用 AWS。使用此操作意味著您的用戶不需要自己的IAM身份 AWS 或身份。如需詳細資訊,請參閱OIDC 聯盟

建議您不要直接撥打電話AssumeRoleWithWebIdentity,而是使用 Amazon Cognito 和 Amazon Cognito 登入資料提供者搭配進行行動開 AWS SDKs發。如需詳細資訊,請參閱 Amplify 文件 中的 Amplify 身分驗證

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

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

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

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

  • (選用) 持續時間,指定暫時安全憑證的持續時間。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 更新角色的工作階段持續時間上限。如果您不傳遞此參數,暫時性憑證會在一個小時內到期。此DurationSeconds參數與您API用來指定主控台工作階段持續時間的SessionDurationHTTP參數不同。在向聯合端點發出請求中的SessionDurationHTTP參數用於控制台登錄令牌。如需詳細資訊,請參閱啟用自訂身分識別代理存取主 AWS 控台

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

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

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

    注意

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

打電話時AssumeRoleWithWebIdentity, AWS 驗證令牌的真實性。例如,視提供者而定, AWS 可能會呼叫提供者,並包含應用程式已傳遞的權杖。假設身份提供程序驗證令牌, AWS 則將以下信息返回給您:

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

  • 角色 ID 和假ARN定角色的。

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

當您擁有臨時安全登入資料時,您可以使用它們撥 AWS API打電話。這與使用長期安全登入資料 AWS API撥打電話相同的程序。差別在於您必須包含工作階段權杖,這個權杖可讓 AWS 驗證臨時安全憑證是否有效。

您的應用程式應該快取憑證。預設情況下,如上所述,憑證在一小時後到期。如果您未在中使用 A mazonSTSCredentials Provider 操作 AWS SDK,則由您和您的應用程序AssumeRoleWithWebIdentity再次調用。呼叫此操作,或取得一組新的暫時性安全憑證,之後舊的憑證才會過期。

AssumeRoleWithSAML-通過與 2.0 兼容的SAML企業身份提供商進行聯盟

AssumeRoleWithSAMLAPI作業會針對已由組織現有身分識別系統驗證的聯合身分使用者傳回一組臨時安全登入資料。用戶還必須使用 SAML2.0(安全斷言標記語言)將身份驗證和授權信息傳遞給 AWS。這SAML項API作業在已整合其識別系統 (例如 Windows 作用中目錄或開啟LDAP) 與可產生宣告的軟體的組織非常有用。這種整合會提供有關使用者身分和許可 (例如 Active Directory Federation Services 或 Shibboleth) 的資訊。如需詳細資訊,請參閱 SAML联邦

注意

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

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

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

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

  • 以 base64 編碼的SAML斷言,該斷言是由身份提供者在對您應用程序的登錄請求的SAML身份驗證響應中提供的。

  • 您可以配置 IdP 以將屬性作為會話標籤傳遞到SAML斷言中。

  • (選用) 持續時間,指定暫時安全憑證的持續時間。使用 DurationSeconds 參數來指定 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定之間的角色工作階段持續時間。若要了解如何檢視角色的最大值,請參閱 更新角色的工作階段持續時間上限。如果您不傳遞此參數,暫時性憑證會在一個小時內到期。此DurationSeconds參數與您API用來指定主控台工作階段持續時間的SessionDurationHTTP參數不同。在向聯合端點發出請求中的SessionDurationHTTP參數用於控制台登錄令牌。如需詳細資訊,請參閱啟用自訂身分識別代理存取主 AWS 控台

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

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

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

當你打電話時AssumeRoleWithSAML, AWS 驗證SAML斷言的真實性。假設身分識別提供者驗證宣告, AWS 則會將下列資訊傳回給您:

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

  • 角色 ID 和假ARN定角色的。

  • 包含SAML宣告之SubjectConfirmationData元素之Recipient屬性值的值。Audience

  • 包含SAML宣告之Issuer元素值的值。Issuer

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

  • 包含SAML宣告NameID元素中元素值的Subject元素。Subject

  • SubjectType 元素指出 Subject 元素的格式。該值可以是 persistenttransient,或者完整FormatURI來自SAML斷言中使用的SubjectNameID元素。如需 NameID 元素的 Format 屬性的詳細資訊,請參閱 設定驗證回SAML應的宣告

當您擁有臨時安全登入資料時,您可以使用它們撥 AWS API打電話。這與使用長期安全登入資料 AWS API撥打電話相同的程序。差別在於您必須包含工作階段權杖,這個權杖可讓 AWS 驗證臨時安全憑證是否有效。

您的應用程式應該快取憑證。預設情況下,憑證會在一小時後到期。如果您未在中使用「A mazonSTSCredentials Provider」動作 AWS SDK,則由您和您的應用程式AssumeRoleWithSAML重新呼叫。呼叫此操作,或取得一組新的暫時性安全憑證,之後舊的憑證才會過期。

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

GetFederationTokenAPI作業會傳回同盟使用者的一組暫時安全登入資料。這API與預設到期期限相當長 (12 小時而非一小時) 的不同之處AssumeRole在於。此外,您可以使用 DurationSeconds 參數來指定暫時性安全憑證的持續時間,以保持有效。產生的認證在指定的持續時間內有效,介於 900 秒 (15 分鐘) 到 129,600 秒 (36 小時) 之間。較長的到期時間有助於減少呼叫次數, AWS 因為您不需要經常取得新的認證。

當您提出此要求時,您會使用特定使用IAM者的認證。臨時安全憑證的許可,取決於您呼叫 GetFederationToken 時傳遞的工作階段政策。產生的工作階段權限是IAM使用者原則與您傳遞的工作階段原則的交集。工作階段原則無法用來授與比要求聯合之使用IAM者之身分型原則所允許的權限更多。如需有關角色工作階段許可的詳細資訊,請參閱 工作階段政策

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

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 HTTPAPI請求中。我們建議您使用建立AWS SDKs要API求,而這樣做的一個好處就是為您簽署SDKs處理要求。如果您必須手動建立並簽署API請求,AWS 請前往中的「Amazon Web Services 一般參考使用簽名版本 4 簽署請求」,瞭解如何簽署請求。

除了臨時安全登入資料之外,回應還包括聯合身分使用者的 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,而且您有一個想要允許蘇珊訪問的 Amazon S3 存儲桶。Susan 的暫時性安全憑證不包含儲存貯體的政策。在這種情況下,您需要確保存儲桶具有與 Susan 匹配ARN的策略ARN,例如arn:aws:sts::111122223333:federated-user/Susan

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

GetSessionTokenAPI作業會將一組暫時的安全性登入資料傳回給現有的IAM使用者。這對於提供增強的安全性非常有用,例如僅在MFA為使用IAM者啟用時允許 AWS 要求。由於認證是暫時的,因此當您有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 HTTPAPI要求中的驗證資訊。我們建議您使用建立AWS SDKs要API求,而這樣做的一個好處就是為您簽署SDKs處理要求。如果您必須手動建立並簽署API請求,AWS 請前往中的「Amazon Web Services 一般參考使用簽名版本 4 簽署請求」,瞭解如何簽署請求。

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

下列範例顯示包含MFA驗證碼和裝置序號的GetSessionToken要求。

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

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

範例中的 AUTHPARAMS 參數是簽章的預留位置。簽章是您必須包含在 AWS HTTPAPI要求中的驗證資訊。我們建議您使用建立AWS SDKs要API求,而這樣做的一個好處就是為您簽署SDKs處理要求。如果您必須手動建立和簽署API請求,AWS 請參閱中的「使用簽名版本 4 簽署請求」Amazon Web Services 一般參考以瞭解如何簽署請求。

比較操 AWS STS API作

下表比較傳回暫時安全登入資料 AWS STS 之API作業的功能。若要了解可用來在擔任角色時請求暫時性安全憑證的不同方法,請參閱假定角色的方法。若要瞭解可讓您傳遞工 AWS STS API作階段標籤的不同作業,請參閱傳遞工作階段標籤 AWS STS

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

無法呼叫 GetFederationTokenGetSessionToken

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

無法呼叫 GetFederationTokenGetSessionToken

AssumeRoleWithWebIdentity 任何使用者;呼叫者必須傳遞OIDC合規的 JWT Token,以指示來自已知身分提供者的驗證 15 分鐘 | 最大工作階段持續時間設定³ | 1 小時

無法呼叫 GetFederationTokenGetSessionToken

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

IAM用戶:15 米 | 36 小時

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

無法使用 AWS CLI 或呼叫IAM作業 AWS API。此限制不適用主控台工作階段。

無法調用除 GetCallerIdentity .以外的 AWS STS 操作

SSO允許控制台。

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

IAM用戶:15 米 | 36 小時

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

除非請求中包含MFA信息,否則無法調用IAMAPI操作。

除了AssumeRole或之外,無法呼叫 AWS STS API作業GetCallerIdentity

SSO不允許控制台。

¹ MFA支援服務。當您呼叫 AssumeRole 和 GetSessionToken API作業時,您可以包含多因素驗證 (MFA) 裝置的相關資訊。這可確保API呼叫產生的臨時安全登入資料只能由經過MFA裝置驗證的使用者使用。如需詳細資訊,請參閱使用安全API存取 MFA

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

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

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

單點登錄(SSO)到控制台。若要支援SSO, AWS 可讓您呼叫同盟端點 (https://signin.aws.amazon.com/federation) 並傳遞臨時安全登入資料。端點返回一個令牌,您可以用它來構建一URL個直接將用戶簽署到控制台,而無需密碼。如需詳細資訊,請參閱 AWS 安全性部落格中的啟用 SAML 2.0 聯合身分的使用者存取 AWS Management Console如何啟用 AWS 管理主控台的跨帳戶存取

擷取臨時登入資料後,您無法透 AWS Management Console 過將認證傳遞至同盟單一登入端點來存取。如需詳細資訊,請參閱啟用自訂身分識別代理存取主 AWS 控台