IAM 與 AWS STS 條件內容索引鍵 - AWS Identity and Access Management

IAM 與 AWS STS 條件內容索引鍵

您可以在 JSON 政策中使用 Condition 元素來測試包含在所有 AWS 請求內容中的金鑰值。這些索引鍵提供有關請求本身或請求參考的資源的資訊。在允許使用者請求的動作之前,您可以檢查索引鍵是否有指定的值。這可讓您可以在 JSON 政策陳述式符合或不符合傳入請求時進行精細控制。如需有關如何 JSON 政策中使用 Condition 元素的資訊,請參閱 IAM JSON 政策元素:Condition

本主題說明由 IAM 服務 (含有 iam: 字首) 及 AWS Security Token Service (AWS STS) 服務 (含有 sts: 字首) 所定義和提供的索引鍵。其他幾種 AWS 服務還提供與該服務所定義的動作和資源相關的服務特定的索引鍵。如需詳細資訊,請參閱適用於 AWS 服務的動作、資源和條件索引鍵。支援條件索引鍵的服務文件通常包含其他資訊。例如,如需可在 Amazon S3 資源政策中使用之金鑰的資訊,請參閱 Amazon Simple Storage Service 使用者指南中的 Amazon S3 政策金鑰

IAM 的可用金鑰

您可以在控制存取 IAM 資源的政策中使用以下條件索引鍵:

iam:AssociatedResourceArn

使用 ARN 運算子

指定將在目標服務與此角色建立關聯之資源的 ARN。資源通常屬於委託人者傳遞角色的目標服務。有時候,資源也可能屬於第三個服務。例如,您可以將角色傳遞給他們在 Amazon EC2 執行個體上使用的 Amazon EC2 Auto Scaling。在這種情況下,條件可能會符合 Amazon EC2 執行個體的 ARN。

此條件索引鍵僅適用於政策中的 PassRole 動作。不能用來限制任何其他動作。

在政策中使用此條件索引鍵以允許實體傳遞角色,但只有在該角色與指定的資源相關聯時才行。您可以使用萬用字元 (*),允許對特定類型的資源執行操作,而不限制區域或資源 ID。例如,您可以允許使用者或角色將任何角色傳遞給 Amazon EC2 服務,此服務會搭配區域 us-east-1us-west-1 中的執行個體使用。不允許 IAM 使用者或角色將角色傳遞給其他服務。此外,它不允許 Amazon EC2 將該角色搭配其他區域中的執行個體使用。

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": {"iam:PassedToService": "ec2.amazonaws.com"}, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
注意

支援 iam:PassedToService 的 AWS 服務也支援此條件索引鍵。

iam:AWSServiceName

使用字串運算子

指定此角色所連接的 AWS 服務。

在此範例中,若服務名稱為 access-analyzer.amazonaws.com,您可允許實體建立服務連結角色。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "access-analyzer.amazonaws.com" } } }] }
iam:OrganizationsPolicyId

使用字串運算子

檢查含指定 AWS Organizations ID 的政策與請求中使用的政策是否相符。如要檢視使用此條件索引鍵的範例 IAM 政策,請參閱 IAM:檢視 Organizations 政策上次存取的服務資訊

iam:PassedToService

使用字串運算子

指定可以將角色傳遞到的服務的服務委託人。此條件索引鍵僅適用於政策中的 PassRole 動作。不能用來限制任何其他動作。

當您在政策中使用此條件索引鍵時,請使用服務委託人指定服務。服務委託人是可以在政策的 Principal 元素中指定的服務名稱。這是通常的格式:SERVICE_NAME_URL.amazonaws.com

您可以使用 iam:PassedToService 限制使用者,以便他們只能將角色傳遞給特定服務。例如,使用者可能會建立服務角色,它信任 CloudWatch 代他們將日誌資料寫入 Amazon S3 儲存貯體。然後,使用者必須將許可政策和信任政策連接到新的服務角色。在這種情況下,信任政策必須在 cloudwatch.amazonaws.com 元素中指定 Principal。若要檢視允許使用者將該角色傳遞至 CloudWatch 的政策,請參閱 IAM:將 IAM 角色傳遞到特定 AWS 服務

透過使用此條件索引鍵,您可以確保使用者僅為您指定的服務建立服務角色。例如,如果具有上述政策的使用者嘗試為 Amazon EC2 建立服務角色,操作將會失敗。發生失敗的原因是使用者沒有將角色傳遞至 Amazon EC2 的許可。

有時您會將角色傳遞給服務,然後將角色傳遞給不同服務。iam:PassedToService 僅包含擔任角色的最終服務,而不是傳遞角色的中繼服務。

注意

有些服務 (例如 AWS CodeBuild 和 AWS CodeCommit) 不支援此條件金鑰。

iam:PermissionsBoundary

使用字串運算子

檢查指定的政策連接為 IAM 委託人資源上的許可界限。如需詳細資訊,請參閱IAM 實體的許可界限

iam:PolicyARN

使用 ARN 運算子

在涉及受管政策的請求中檢查託管政策的 Amazon 資源名稱 (ARN) 。如需詳細資訊,請參閱 控制對政策的存取

iam:ResourceTag/key-name

使用字串運算子

檢查連接至身分資源 (使用者或角色) 的標籤是否符合指定的索引鍵名稱和值。

注意

IAM 和 AWS STS 支援 iam:ResourceTag IAM 條件索引鍵和 aws:ResourceTag 全域條件索引鍵。

您可以將自訂屬性以金鑰/值組的形式新增至 IAM 資源。如需有關 IAM 資源標籤的詳細資訊,請參閱 標記 IAM 資源。您可以使用 ResourceTag 控制對 AWS 資源的存取,包括 IAM 資源。但是,由於 IAM 不支援群組的標籤,因此您無法使用標籤來控制群組的存取。

此範例會示範如何建立身份型政策,允許刪除具有 status=terminated 標籤的使用者。若要使用此政策,請將範例政策中的斜體預留位置文字取代為您自己的資訊。然後,遵循建立政策編輯政策中的指示進行操作。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringEquals": {"iam:ResourceTag/status": "terminated"}} }] }

AWS Web 聯合身分的可用索引鍵

您可以使用 Web 聯合身分,向已透過身分提供者 (IdP) 進行驗證的使用者提供暫時安全憑證。身分提供者包括 Login with Amazon、Amazon Cognito、Google、Facebook 等。在這種情況下,當使用臨時安全憑證發出請求時,可以使用其他條件索引鍵。您可以使用這些索引鍵編寫政策,將聯合身分使用者的存取限制在與特定提供者、應用程式或使用者建立關聯的資源。這些索引鍵通常用於角色的信任政策。

amr

使用字串運算子

範例cognito-identity.amazonaws.com.com:amr

如果您使用 Amazon Cognito 進行 Web 聯合身分驗證,則 cognito-identity.amazonaws.com:amr 索引鍵 (身分驗證方法參考) 會包含有關該使用者的登入資訊。索引鍵是多值的,這表示您使用條件設定運算子在政策中對其進行測試。索引鍵可以包含以下值:

  • 如果使用者未經身分驗證,則索引鍵只包含 unauthenticated

  • 如果使用者已通過身分驗證,則索引鍵包含值 authenticated 和呼叫中所使用的登入提供者的名稱 (graph.facebook.comaccounts.google.comwww.amazon.com)。

舉例來說,Amazon Cognito 角色的信任政策中的以下條件測試使用者是否未經身分驗證:

"Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-2:identity-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } }
aud

使用字串運算子

使用 aud 條件索引鍵來驗證 Google 用戶端 ID 或 Amazon Cognito 身分集區 ID 是否符合您在政策中指定的 ID。您可以搭配相同身分提供者的 aud 索引鍵來使用 sub 索引鍵。

範例:

  • accounts.google.com:aud

  • cognito-identity.amazonaws.com:aud

accounts.google.com:aud 條件索引鍵符合下列 Google ID 權杖欄位。

  • 未設定 aud 欄位時,您應用程式的 OAuth 2.0 Google 用戶端 ID 的 azp。設定 azp 欄位時,aud 欄位符合 accounts.google.com:oaud 條件金鑰。

  • 設定 azp 欄位時為 azp。這可能發生於混合式應用程式,其中,Web 應用程式和 Android 應用程式具有不同的 OAuth 2.0 Google 用戶端 ID,但共用相同的 Google API 專案。

如需有關 Google audazp 欄位的詳細資訊,請參閱 Google Identity Platform OpenID Connect 指南。

當您使用 accounts.google.com:aud 條件索引鍵撰寫政策時,您必須知道應用程式是否為設定 azp 欄位的混合式應用程式。

azp Field Not Set

下列範例政策適用於未設定 azp 欄位的非混合式應用程式。在這種情況下,Google ID 權杖 aud 欄位值符合 accounts.google.com:audaccounts.google.com:oaud 條件索引鍵值。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "aud-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }

azp Field Set

下列範例政策適用於已設定 azp 欄位的混合式應用程式。在這種情況下,Google ID 權杖 aud 欄位值只符合 accounts.google.com:oaud 條件索引鍵值。azp 欄位值符合 accounts.google.com:aud 條件索引鍵值。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "azp-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
id

使用字串運算子

範例:

  • graph.facebook.com:app_id

  • graph.facebook.com:id

  • www.amazon.com:app_id

  • www.amazon.com:user_id

使用這些索引鍵來驗證應用程式 (或網站) ID 或使用者 ID 是否符合您在政策中指定的 ID。這適用於 Facebook 或 Login with Amazon。您可以搭配相同身分提供者的 app_id 索引鍵來使用 id 索引鍵。

oaud

使用字串運算子

範例accounts.google.com:oaud

如果您使用 Google 進行 Web 聯合身分,此索引鍵指定此 ID 權杖適用的 Google 對象 (aud)。必須是您應用程式的其中一個 OAuth 2.0 用戶端 ID。

sub

使用字串運算子

範例:

  • accounts.google.com:sub

  • cognito-identity.amazonaws.com:sub

使用這些索引鍵來驗證使用者 ID 是否符合您在政策中指定的 ID。您可以搭配相同身分提供者的 sub 索引鍵來使用 aud 索引鍵。

Web 聯合身分的詳細資訊

如需有關 Web 聯合身分的詳細資訊,請參閱下列內容:

SAML AWS STS 聯合身分的可用索引鍵

如果您以 AWS Security Token Service (AWS STS) 使用以 SAML 為基礎的聯合身分,則可以在政策中包含其他條件索引鍵。

SAML 角色信任政策

在角色的信任政策中,您可以包含以下索引鍵,這些索引鍵可幫助您確定是否允許呼叫者擔任該角色。除了 saml:doc 外,所有值均來自 SAML 聲明。當您建立或編輯具有條件的政策時,在 IAM 主控台視覺化編輯器中可使用清單中的所有項目。標示為 [] 的項目可以具有一個值,該值是指定類型的清單。

saml:aud

使用字串運算子

顯示 SAML 聲明的端點 URL。此索引鍵值來自聲明中的 SAML Recipient 欄位,而不是 Audience 欄位。

saml:commonName[]

使用字串運算子

這是 commonName 屬性。

saml:cn[]

使用字串運算子

這是 eduOrg 屬性。

saml:doc

使用字串運算子

這代表用來擔任該角色的委託人。格式為 account-ID/provider-friendly-name,例如 123456789012/SAMLProviderNameaccount-ID 值是指擁有 SAML 提供者的帳戶。

saml:edupersonaffiliation[]

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonassurance[]

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonentitlement[]

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonnickname[]

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonorgdn

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonorgunitdn[]

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonprimaryaffiliation

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonprimaryorgunitdn

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonprincipalname

使用字串運算子

這是 eduPerson 屬性。

saml:edupersonscopedaffiliation[]

使用字串運算子

這是 eduPerson 屬性。

saml:edupersontargetedid[]

使用字串運算子

這是 eduPerson 屬性。

saml:eduorghomepageuri[]

使用字串運算子

這是 eduOrg 屬性。

saml:eduorgidentityauthnpolicyuri[]

使用字串運算子

這是 eduOrg 屬性。

saml:eduorglegalname[]

使用字串運算子

這是 eduOrg 屬性。

saml:eduorgsuperioruri[]

使用字串運算子

這是 eduOrg 屬性。

saml:eduorgwhitepagesuri[]

使用字串運算子

這是 eduOrg 屬性。

saml:givenName[]

使用字串運算子

這是 givenName 屬性。

saml:iss

使用字串運算子

發行者,由 URN 代表。

saml:mail[]

使用字串運算子

這是 mail 屬性。

saml:name[]

使用字串運算子

這是 name 屬性。

saml:namequalifier

使用字串運算子

以 SAML 提供者易記名稱為基礎的雜湊值。該值是下列值的串連,依照順序且以 '/' 字元區隔:

  1. Issuer 回應值 (saml:iss)

  2. AWS 帳戶 ID

  3. IAM 中 SAML 提供者的易記名稱 (ARN 的最後一個部分)

帳戶 ID 與 SAML 提供者的易記名稱的串聯可作為索引鍵 saml:doc 供 IAM 政策使用。如需詳細資訊,請參閱 單獨辨識以 SAML 為基礎的聯合身分中的使用者

saml:organizationStatus[]

使用字串運算子

這是 organizationStatus 屬性。

saml:primaryGroupSID[]

使用字串運算子

這是 primaryGroupSID 屬性。

saml:sub

使用字串運算子

這是該陳述的主題,其中包含單獨辨識組織中某個使用者的值 (例如 _cbb88bf52c2510eabe00c1642d4643f41430fe25e3)。

saml:sub_type

使用字串運算子

此索引鍵可以具有值 persistenttransient 或者由 SAML 聲明中使用的 FormatSubject 元素的完整 NameID URI 組成。persistent 的值表示 saml:sub 中的值對於工作階段之間的使用者是相同的。如果值為 transient,則使用者在每個工作階段中擁有不同的 saml:sub 值。如需 NameID 元素的 Format 屬性的詳細資訊,請參閱 為身分驗證回應配置 SAML 聲明

saml:surname[]

使用字串運算子

這是 surnameuid 屬性。

saml:uid[]

使用字串運算子

這是 uid 屬性。

saml:x500UniqueIdentifier[]

使用字串運算子

這是 x500UniqueIdentifier 屬性。

如需 eduPersoneduOrg 屬性的一般資訊,請參閱 REFEDS Wiki 網站。如需 eduPerson 屬性的清單,請參閱 eduPerson 物件類別規格 (201602)

類型為清單的條件索引鍵可包括多個值。若要在清單值的政策中建立條件,可以使用設定運算子 (ForAllValuesForAnyValue)。例如,若要允許關係為「教職員」或「員工」 (但不是「學生」) 的任何使用者,您可以使用如下條件:

"Condition": { "ForAllValues:StringLike": { "saml:edupersonaffiliation":[ "faculty", "staff"] } }

SAML 角色許可政策

在 SAML 聯合角色的許可政策中,該政策定義允許使用者在 AWS 中存取的內容,您可以包含下列索引鍵:

saml:namequalifier

使用字串運算子

它包含一個雜湊值,表示 saml:docsaml:iss 值的組合。它用作命名空間限定詞;saml:namequalifiersaml:sub 的組合唯一地識別使用者。

saml:sub

使用字串運算子

這是該陳述的主題,其中包含單獨辨識組織中某個使用者的值 (例如 _cbb88bf52c2510eabe00c1642d4643f41430fe25e3)。

saml:sub_type

使用字串運算子

此索引鍵可以具有值 persistenttransient 或者由 SAML 聲明中使用的 FormatSubject 元素的完整 NameID URI 組成。persistent 的值表示 saml:sub 中的值對於工作階段之間的使用者是相同的。如果值為 transient,則使用者在每個工作階段中擁有不同的 saml:sub 值。如需 NameID 元素的 Format 屬性的詳細資訊,請參閱 為身分驗證回應配置 SAML 聲明

如需有關使用這些索引鍵的詳細資訊,請參閱 關於以 SAML 2.0 為基礎的聯合身分

AWS STS 的可用索引鍵

您可以針對使用 AWS Security Token Service (AWS STS) 操作所擔任的角色,使用 IAM 角色信任政策中的以下條件索引鍵:

sts:AWSServiceName

使用字串運算子

使用此索引鍵來指定可以使用持有人權杖的服務。當您在政策中使用此條件索引鍵時,請使用服務委託人指定服務。服務委託人是可以在政策的 Principal 元素中指定的服務名稱。例如,codeartifact.amazonaws.com 是 AWS CodeArtifact 服務委託人。

某些 AWS 服務要求您具有取得 AWS STS 服務持有人權杖的許可,才能以程式設計方式存取其資源。例如,AWS CodeArtifact 需要委託人使用持有人權杖來執行某些操作。aws codeartifact get-authorization-token 命令會傳回一個持有人權杖。然後,您可以使用持有人權杖來執行 AWS CodeArtifact 操作。如需有關持有人權杖的詳細資訊,請參閱使用持有人權杖

可用性 – 此索引鍵會呈現在取得持有人權杖的請求中。你無法直接呼叫 AWS STS 來取得持有人權杖。當您在其他服務中執行某些操作時,服務會代表您請求持有人權杖。

您可以使用此條件索引鍵來允許委託人取得持有人權杖,以與特定服務搭配使用。

sts:DurationSeconds

適用於數字運算子

使用此索引鍵來指定委託人在取得 AWS STS 持有人權杖時可以使用的持續時間 (以秒為單位)。

某些 AWS 服務要求您具有取得 AWS STS 服務持有人權杖的許可,才能以程式設計方式存取其資源。例如,AWS CodeArtifact 需要委託人使用持有人權杖來執行某些操作。aws codeartifact get-authorization-token 命令會傳回一個持有人權杖。然後,您可以使用持有人權杖來執行 AWS CodeArtifact 操作。如需有關持有人權杖的詳細資訊,請參閱使用持有人權杖

可用性 – 此索引鍵會呈現在取得持有人權杖的請求中。你無法直接呼叫 AWS STS 來取得持有人權杖。當您在其他服務中執行某些操作時,服務會代表您請求持有人權杖。AWS STS assume-role 操作不會呈現索引鍵。

sts:ExternalId

使用字串運算子

使用此索引鍵來請求委託人在擔任 IAM 角色時提供特定的識別碼。

可用性 – 當委託人使用 AWS CLI 或 AWS API 擔任角色時,若提供外部 ID,則此索引鍵會呈現在請求中。

當您在其他帳戶擔任角色時,可能需要此唯一識別符。若帳戶管理員 (該角色所屬的帳戶) 提供給您外部 ID,請將該數值填入 ExternalId ​參數。該值可為任何字串,例如密碼短語或帳號。外部 ID 的主要功能是解決並防止「混淆代理人」問題。如需有關外部 ID 和混淆代理人問題的詳細資訊,請參閱 將 AWS 資源的存取權授予第三方時如何使用外部 ID。

ExternalId 值必須最少為 2 個字元,最多為 1,224 個字元。該值必須為英數字元,且不包含空格。也可以包含下列符號:加號 (+)、等號 (=)、逗號 (,)、句號 (.)、小老鼠 (@)、冒號 (:)、正斜線 (/) 和連字號 (-)。

sts:RoleSessionName

使用字串運算子

使用此索引鍵,比較使用政策中指定的值擔任角色時,委託人指定的工作階段名稱。

可用性 – 當委託人使用 AWS Management Console、任何 assume-role CLI 命令或任何 AWS STS AssumeRole API 操作擔任角色時,此索引鍵會呈現在請求中。

您可以在角色信任政策中使用此索引鍵,請求您的使用者在擔任角色時提供特定的工作階段名稱。例如,您可以請求 IAM 使用者將自己的使用者名稱指定為其工作階段名稱。在 IAM 使用者擔任角色之後,活動會出現在 AWS CloudTrail 日誌中,其工作階段名稱與其使用者名稱相符。當不同的委託人使用角色時,這可讓系統管理員更容易區分角色工作階段。

下列角色信任政策會請求 111122223333 帳戶中的 IAM 使用者在擔任角色時,提供其 IAM 使用者名稱作為工作階段名稱。使用條件索引鍵中的 aws:username 條件變數強制執行此需求。此政策允許 IAM 使用者擔任政策所連接的角色。此政策不允許使用暫時憑證的任何人擔任該角色,因為 username 變數僅供 IAM 使用者使用。

重要

您可以使用任何單一值條件金鑰作為變數。您無法使用多重值條件金鑰做為變數。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyRequireUsernameForSessionName", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Condition": { "StringLike": {"sts:RoleSessionName": "${aws:username}"} } } ] }

當系統管理員檢視動作的 AWS CloudTrail 日誌時,他們可以比較工作階段名稱與帳戶中的使用者名稱。在下列範例中,名為 matjac 的使用者使用名為 MateoRole 的角色執行作業。然後,管理員可以聯絡 Mateo Jackson,他擁有名為 matjac 的使用者。

"assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:matjac", "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole/matjac" }

如果您允許使用角色進行跨帳戶存取,則某個帳戶中的使用者可以在另一個帳戶中擔任角色。CloudTrail 中列出的假設角色使用者 ARN 包含角色存在的帳號。它不包括擔任角色的使用者帳戶。使用者僅在帳戶中是唯一的。因此,建議您只使用這個方法來檢查所管理帳戶中使用者假設之角色的 CloudTrail 日誌。您的使用者可能會在多個帳戶中使用相同的使用者名稱。

sts:SourceIdentity

使用字串運算子

使用此索引鍵,比較使用政策中指定的值擔任角色時,委託人指定的來源身分。

可用性 –當委託人在使用任何 AWS STS 擔任角色 CLI 命令或 AWS STS AssumeRole API 操作承擔角色時提供來源身分時,請求中即會出現此索引鍵。

您可以在角色信任政策中使用此索引鍵,請求您的使用者在擔任角色時設定特定的來源身分。例如,您可以要求人力或聯合身分來指定來源身分的值。您可以將身分提供者 (IdP) 設定為使用與使用者相關聯的其中一個屬性,例如使用者名稱或電子郵件作為來源身分。IdP 接著會將來源身分作為其傳遞給 AWS 之聲明或宣告中的屬性。來源身分屬性的值可識別擔任該角色的使用者或應用程式。

在使用者擔任該角色之後,活動會出現在具有已設定來源身分值的 AWS CloudTrail 日誌中。這可讓系統管理員更容易判斷何者在 AWS 中執行具有角色的動作。您必須對 sts:SetSourceIdentity 動作授予許可,允許身分以設定來源身分。

sts:RoleSessionName 不同,在設定來源身分之後,就無法變更值。這會出現在由角色以來源身分所採取的所有動作的請求內容中。當您使用工作階段憑證來擔任另一個角色時,此值仍然存在於後續角色工作階段。從另一個角色取得及擔任角色稱為角色鏈結

您可以使用 aws:SourceIdentity 全域條件索引鍵,在後續請求中根據來源身分值進一步控制 AWS 資源的存取。

下列角色信任政策允許 IAM 使用者 AdminUser 擔任帳戶 111122223333 中的角色。它也會對 AdminUser 許可授予來設定來源身分,只要來源身分識別設定為 DiegoRamirez

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdminUserAssumeRole", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"} } } ] }

若要進一步了解有關使用來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作

sts:TransitiveTagKeys

使用字串運算子

使用此金鑰來將請求中的可轉移工作階段標籤鍵與政策中指定的內容進行比較。

可用性 – 當您使用臨時安全憑證提出請求時,此索引鍵會呈現在請求中。這些包括使用任何 assume-role 操作或 GetFederationToken 操作所建立的憑證。

當您使用暫時安全憑證提出請求時,請求內容會包含 aws:PrincipalTag 內容金鑰。此金鑰包含工作階段標籤的清單、可轉移工作階段標籤和角色標籤。可轉移工作階段標籤是在您使用工作階段憑證擔任另一個角色時,保存到所有後續工作階段的標籤。從另一個角色取得及擔任角色稱為角色鏈結

您可以在政策中使用此條件索引鍵,要求在擔任角色或與使用者聯合身分時將特定工作階段標籤設為可轉移。