IAM和 AWS STS 條件上下文鍵 - AWS 身分和存取權管理

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

IAM和 AWS STS 條件上下文鍵

您可以使用JSON原則中的Condition元素來測試包含在所有要求之要 AWS 求內容中的索引鍵值。這些鍵提供有關請求本身或請求參考的資源的資訊。在允許使用者請求的動作之前,您可以檢查鍵是否有指定的值。這使您可以精確控制JSON政策聲明何時匹配或不匹配傳入請求。如需如何在JSON策略中使用Condition元素的詳細資訊,請參閱IAMJSON政策元素:Condition

本主題說明服務 (含前置詞) 和 () IAM 服務 (含iam:前置詞AWS STS) 所定義及提供的sts:金鑰。 AWS Security Token Service 其他一些 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。例如,您可以允許使用IAM者或角色將任何角色傳遞給 Amazon EC2 服務,以便與區域us-east-1或中的執行個體搭配使用us-west-1。不允許IAM使用者或角色將角色傳遞給其他服務。此外,它不允許 Amazon EC2 將角色用於其他區域中的執行個體。

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

AWS 支援 iam: 的服務PassedToService也支援此條件金鑰。

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: FIDO-認證

使用字串運算子

在註冊FIDO安全金鑰時檢查MFA裝置FIDO認證等級。裝置認證是從FIDO聯盟中繼資料服務 (MDS) 擷取。如果FIDO安全金鑰的認證狀態或等級發生變更,除非裝置已取消註冊並重新註冊以取得更新的認證資訊,否則它將不會更新。

L1、L1plus、L2、L2plus、L3、L3plus 的可能值

在此範例中,您註冊安全金鑰並擷取裝置的第 1 FIDO 級和認證。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-certification": "L1plus" } } } ] }
我:FIDO-FIPS -140-2-認證

使用字串運算子

在註冊安全金鑰時檢查MFA裝置 FIPS -140-2 驗證認證等級。FIDO裝置認證是從FIDO聯盟中繼資料服務 (MDS) 擷取。如果FIDO安全金鑰的認證狀態或等級發生變更,除非裝置已取消註冊並重新註冊以取得更新的認證資訊,否則它將不會更新。

L1、L2、L3、L4 的可能值

在此範例中,您會註冊安全金鑰並擷取裝置的 FIPS -140-2 Level 2 認證。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-2-certification": "L2" } } } ] }
我:FIDO-FIPS -140-認證

使用字串運算子

在註冊安全金鑰時檢查MFA裝置 FIPS -140-3 驗證認證等級。FIDO裝置認證是從FIDO聯盟中繼資料服務 (MDS) 擷取。如果FIDO安全金鑰的認證狀態或等級發生變更,除非裝置已取消註冊並重新註冊以取得更新的認證資訊,否則它將不會更新。

L1、L2、L3、L4 的可能值

在此範例中,您註冊安全金鑰並擷取裝置的 FIPS -140-3 第 3 級認證。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L3" } } } ] }
IAM:RegisterSecurityKey

使用字串運算子

檢查裝MFA置啟用的目前狀態。

可能值為 CreateActivate

在此範例中,您註冊安全金鑰並擷取裝置的 FIPS -140-3 第 1 級認證。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L1" } } } ] }
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 僅包含擔任角色的最終服務,而不是傳遞角色的中繼服務。

注意

有些服務不支援此條件鍵。

IAM:PermissionsBoundary

適用於ARN運營商

檢查指定的策略是否已附加為IAM主參與者資源的權限界限。如需詳細資訊,請參閱 IAM 實體的許可界限

IAM: 政策 ARN

適用於ARN運營商

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

IAM:ResourceTag/key-name

使用字串運算子

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

注意

IAM並 AWS STS 支持iam:ResourceTagIAM條件鍵和aws:ResourceTag全局條件鍵。

您可以使用鍵值配對的形式將自訂屬性新增至IAM資源。如需資源標籤的詳細IAM資訊,請參閱AWS Identity and Access Management 資源標籤。您可以用ResourceTag控制對資源 (包括 AWS IAM資源) 的存取。但是,由於IAM不支援群組的標籤,因此您無法使用標籤來控制群組的存取。

此範例會示範如何建立身分型政策,允許刪除具有 status=terminated 標籤的使用者。若要使用此原則,請取代 italicized placeholder text 在示例策略中使用您自己的信息。然後,遵循建立政策編輯政策中的指示進行操作。

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

AWS OIDC聯盟的可用金鑰

您可以使用OIDC聯合將臨時安全憑據提供給已通過 OpenID Connect 兼容身份提供程序(IdP)進行身份驗證的用戶提供給您 AWS 帳戶中的 IAM OpenID Connect(OIDC)身份提供程序。這些供應商的例子包括 GitHub, Amazon Cognito, Login with Amazon, 和谷歌. 您可以使用來自您自己 IdP 的身分權杖和存取權杖,以及授予 Amazon 彈性 Kubernetes 服務工作負載的服務帳戶權杖

您可以使用 AWS OIDC條件內容索引鍵來撰寫原則,限制同盟使用者只能存取與特定提供者、應用程式或使用者相關聯的資源。這些鍵通常用於角色的信任政策。使用OIDC提供者名稱 (token.actions.githubusercontent.com) 後跟宣告 (:aud): 來定義條件索引鍵token.actions.githubusercontent.com:aud

角色工作階段中可以使用某些OIDC聯合條件金鑰來授權資源存取。如果 [可在工作階段中使用] 欄中的值為 [是],您可以在策略中使用這些條件索引鍵來定義允許使用者在其他 AWS 服務中存取的項目。當宣告無法在工作階段中使用時,OIDC條件內容金鑰只能用於初始AssumeRoleWithWebIdentity驗證的角色信任原則中。

選取您的 IdP 以查看來自 IdP 的宣告如何對應至中的IAM條件內容索引鍵。 AWS

Default

預設值會列出標準OIDC宣告,以及它們如何對應至中的 AWS STS 條件內容索引鍵 AWS。您可以使用這些金鑰來控制角色的存取。若要這麼做,請將AWS STS 條件索引鍵IdP JWT 宣告欄中的值進行比較。如果您的 IdP 未列在索引標籤選項中,請使用此對應。

GitHub 操作工作流程和 Google 是在其 OIDC JWT ID 令牌中使用默認實現的一些示例。 IdPs

AWS STS 條件鍵 IdP 申請 JWT 工作階段中可用

amr

amr

aud

阿茲普

如果未為設定任何值azp,則aud條件鍵會對應至aud宣告。

email

email

oaud

aud

sub

sub

如需搭配使用OIDC條件前後關聯索引鍵的詳細資訊 GitHub,請參閱設定 GitHub OIDC身分識別提供者的角色。如需有關 Google audazp 欄位的詳細資訊,請參閱 Google Identity Platform OpenID Connect 指南。

amr

使用字串運算子。鍵是多值的,這表示您使用條件設定運算子在政策中對其進行測試。

範例token.actions.githubusercontent.com:amr

「驗證方法參照」包含使用者的登入資訊。鍵可以包含以下值:

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

  • 如果使用者經過驗證,索引鍵會包含呼叫 (accounts.google.com) 中使用的登入提供者的值authenticated和名稱。

aud

使用字串運算子

範例

  • accounts.google.com:aud

  • token.actions.githubusercontent.com:aud

使用aud條件索引鍵來確認對象是否符合您在策略中指定的對象。您可以使用 aud 金鑰搭配相同身分識別提供者的子金鑰。

此條件索引鍵是從下列權杖欄位中設定的:

  • aud為 OAuth 2.0 您的應用程序IDs的谷歌客戶端,當該azp字段未設置。設定 azp 欄位時,aud 欄位符合 accounts.google.com:oaud 條件鍵。

  • 設定 azp 欄位時為 azp。這可能發生在混合應用程序中,其中 Web 應用程序和 Android 應用程序具有不同的 OAuth 2.0 Google 客戶端 ID,但共享相同的 Google APIs 項目。

當您使用 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" } } } ] }
email

使用字串運算子

範例accounts.google.com:email

此條件金鑰會驗證使用者的電子郵件地址。此聲明的值可能不是此帳戶的唯一值,並且可能會隨著時間而改變,因此您不應使用此值作為驗證您的使用者記錄的主要識別碼。

oaud

使用字串運算子

範例accounts.google.com:oaud

此鍵指定此 ID 令牌旨在用於的其他對象(aud)。它必須是您應用程式的 OAuth 2.0 用戶端IDs之一。

sub

使用字串運算子

範例

  • accounts.google.com:sub

  • 令牌. 動作內容. COM: 子

使用這些金鑰來確認主旨是否符合您在原則中指定的主旨。您可以搭配相同身分提供者的 sub 鍵來使用 aud 鍵。

在下列角色信任原則中,sub條件索引鍵會將角色限制為名為的 GitHib 分支demo

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com", "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:ref:refs/heads/demo" } } ] }
Amazon Cognito

此索引標籤說明 Amazon Cognito 如何將OIDC宣告對應至中 AWS的 AWS STS 條件內容金鑰。您可以使用這些金鑰來控制角色的存取。若要這麼做,請將AWS STS 條件索引鍵IdP JWT 宣告欄中的值進行比較。

對於 Amazon Cognito 使用的角色,金鑰的定義方式使用宣告後的 cognito-identity.amazonaws.com

如需身分集區宣告對應的詳細資訊,請參閱 Amazon Cognito 開發人員指南中的預設提供者對應。如需有關使用者集區宣告對應的詳細資訊,請參閱 Amazon Cognito 開發人員指南中的使用 ID 權杖

AWS STS 條件鍵 IdP 申請 JWT 工作階段中可用

amr

amr

aud

aud

oaud

aud

sub

sub

amr

使用字串運算子。鍵是多值的,這表示您使用條件設定運算子在政策中對其進行測試。

範例cognito-identity.amazonaws.com:amr

「驗證方法參照」包含使用者的登入資訊。鍵可以包含以下值:

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

  • 如果使用者經過驗證,索引鍵會包含呼叫 (cognito-identity.amazonaws.com) 中使用的登入提供者的值authenticated和名稱。

例如,Amazon Cognito 角色的信任政策中的下列條件會測試使用者是否未經驗證。

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

使用字串運算子

範例cognito-identity.amazonaws.com:aud

對您的使用者進行身分驗證的使用者集區應用程式用戶端。Amazon Cognito 會在存取權杖 client_id 宣告中呈現相同的值。

oaud

使用字串運算子

範例cognito-identity.amazonaws.com:oaud

對您的使用者進行身分驗證的使用者集區應用程式用戶端。Amazon Cognito 會在存取權杖 client_id 宣告中呈現相同的值。

sub

使用字串運算子

範例cognito-identity.amazonaws.com:sub

已驗證使用者的唯一識別碼 (UUID) 或主旨。使用者名稱在您的使用者集區中可能不是唯一的。sub 聲明是識別給定用戶的最佳方法。您可以搭配相同身分提供者的 sub 鍵來使用 aud 鍵。

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "cognito-identity.amazonaws.com:sub": [ "us-east-1:12345678-1234-1234-1234-123456790ab", "us-east-1:98765432-1234-1234-1243-123456790ab" ] } } ] }
Login with Amazon

此索引標籤說明如何 Login with Amazon 將OIDC宣告對應至 AWS STS 條件中的內容金鑰 AWS。您可以使用這些金鑰來控制角色的存取。若要這麼做,請將AWS STS 條件索引鍵IdP JWT 宣告欄中的值進行比較。

AWS STS 條件鍵 IdP 申請 JWT 工作階段中可用

app_id

申請識別碼

sub

使用者 ID

user_id

使用者 ID

應用程式識別碼

使用字串運算子

範例www.amazon.com:app_id

此索引鍵會指定與其他身分識別提供者所使用之aud欄位相符的對象內容。

sub

使用字串運算子

範例www.amazon.com:sub

此機碼會驗證使用者識別碼是否符合您在策略中指定的使用者識別碼。您可以搭配相同身分提供者的 sub 鍵來使用 aud 鍵。

使用者識別碼

使用字串運算子

範例www.amazon.com:user_id

此索引鍵會指定與其他身分識別提供者所使用之aud欄位相符的對象內容。您可以將user_id金鑰與相同身分識別提供者的id金鑰搭配使用。

Facebook

此選項卡解釋了 Facebook 如何將OIDC聲明映射到中的 AWS STS 條件上下文鍵 AWS。您可以使用這些金鑰來控制角色的存取。若要這麼做,請將AWS STS 條件索引鍵IdP JWT 宣告欄中的值進行比較。

AWS STS 條件鍵 IdP 申請 JWT 工作階段中可用

app_id

申請識別碼

id

id

應用程式識別碼

使用字串運算子

範例graph.facebook.com:app_id

此金鑰會驗證對象內容是否符合其他身分識別提供者所使用的aud欄位。

id

使用字串運算子

範例graph.facebook.com:id

此機碼會驗證應用程式 (或網站) ID 與您在策略中指定的 ID 相符。

關於OIDC同盟的更多資訊

SAML以 AWS STS 聯合為基礎的可用金鑰

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

SAML角色信任原則

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

saml:aud

使用字串運算子

SAML宣告所呈現的端點URL。此鍵值來自聲明中的 SAML Recipient 欄位,而不是 Audience 欄位。

薩姆爾:commonName[]

使用字串運算子

這是 commonName 屬性。

saml:cn[]

使用字串運算子

這是 eduOrg 屬性。

saml:doc

使用字串運算子

這代表用來擔任該角色的主體。格式為 account-ID/provider-friendly-name,例如123456789012/SAMLProviderName帳戶識別碼值是指擁有提供者的帳戶。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 屬性。

薩姆爾:givenName[]

使用字串運算子

這是 givenName 屬性。

saml:iss

使用字串運算子

發行人,這是由一個表示URN.

saml:mail[]

使用字串運算子

這是 mail 屬性。

saml:name[]

使用字串運算子

這是 name 屬性。

saml:namequalifier

使用字串運算子

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

  1. Issuer 回應值 (saml:iss)

  2. AWS 帳戶 ID

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

帳戶 ID 和SAML提供者的易記名稱串連可用於IAM策略作為金鑰saml:doc。如需詳細資訊,請參閱以唯一方式識別以聯盟SAML為基礎

薩姆爾:organizationStatus[]

使用字串運算子

這是 organizationStatus 屬性。

薩姆爾:primaryGroupSID[]

使用字串運算子

這是 primaryGroupSID 屬性。

saml:sub

使用字串運算子

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

saml:sub_type

使用字串運算子

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

saml:surname[]

使用字串運算子

這是 surnameuid 屬性。

saml:uid[]

使用字串運算子

這是 uid 屬性。

樣本:500 倍 UniqueIdentifier []

使用字串運算子

這是 x500UniqueIdentifier 屬性。

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

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

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

跨服務SAML型 AWS STS 聯合內容金鑰

某些SAML基於聯合條件的金鑰可用於後續要求中,以授權其他服務和AssumeRole呼叫中的 AWS 作業。當聯合主參與者擔任其他角色時,可在角色信任原則中使用這些條件金鑰,以及在來自其他 AWS 服務的資源策略中,以授權同盟主參與者存取資源時,這些條件金鑰可用於角色信任原則中。如需有關使用這些金鑰的詳細資訊,請參閱關於 SAML 2.0 型聯合

選取條件鍵以查看描述。

注意

在初始外部身分識別提供者 (IdP) 驗證回應之後,沒有其他SAML基於聯合條件的金鑰可供使用。

可用的按鍵 AWS STS

對於假定使用 AWS Security Token Service (AWS STS) 作業的IAM角色,您可以在角色信任原則中使用下列條件金鑰。

saml:sub

使用字串運算子

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

STS: AWSServiceName

使用字串運算子

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

可用性 – 此鍵會呈現在取得持有人權杖的請求中。您不能直接調用以 AWS STS 獲取承載令牌。當您在其他服務中執行某些操作時,服務會代表您請求持有人權杖。

某些 AWS 服務需要您具有獲得 AWS STS 服務承載令牌的權限,然後才能以編程方式訪問其資源。例如, AWS CodeArtifact 需要主體使用持有人權杖來執行某些操作。aws codeartifact get-authorization-token 命令會傳回一個持有人權杖。然後,您可以使用承載令牌來執行 AWS CodeArtifact 操作。如需有關持有人權杖的詳細資訊,請參閱服務承載令牌

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

STS: DurationSeconds

適用於數字運算子

使用此索引鍵可指定主體在取得 AWS STS 承載權杖時可使用的持續時間 (以秒為單位)。

可用性 – 此鍵會呈現在取得持有人權杖的請求中。您不能直接調用以 AWS STS 獲取承載令牌。當您在其他服務中執行某些操作時,服務會代表您請求持有人權杖。 AWS STS assume-role 操作不會呈現鍵。

某些 AWS 服務需要您具有獲得 AWS STS 服務承載令牌的權限,然後才能以編程方式訪問其資源。例如, AWS CodeArtifact 需要主體使用持有人權杖來執行某些操作。aws codeartifact get-authorization-token 命令會傳回一個持有人權杖。然後,您可以使用承載令牌來執行 AWS CodeArtifact 操作。如需有關持有人權杖的詳細資訊,請參閱服務承載令牌

STS: ExternalId

使用字串運算子

使用此索引鍵可要求主參與者在擔任IAM角色時提供特定的識別元。

可用 — 當主參與者提供外部 ID,同時假設角色使用 AWS CLI 或時,此索引鍵會出現在要求中 AWS API。

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

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

sts:RequestContext/上下文鍵

使用字串運算子

使用此鍵,可將內嵌在請求中所傳遞的受信任權杖發行者簽署之內容聲明的工作階段內容鍵/值對,與角色信任政策中指定的內容鍵/值進行比較。

可用 — 當在要求參數中提供內容宣告,同時假設使用 AWS STS AssumeRoleAPI作業的角色時,此索引鍵會出現在ProvidedContexts要求中。

此內容鍵會格式化為 "sts:RequestContext/context-key":"context-value",其中位 context-keycontext-value 為內容鍵/值對。如果請求中傳遞簽署內容聲明中內嵌了多個內容鍵,則每一組鍵/值對都有一個內容鍵。您必須為角色信任政策中的 sts:SetContext 動作授予許可,才能允許主體在產生的工作階段權杖中設定內容鍵。若要深入瞭解可與此金鑰搭配使用的支援 IAM Identity Center 內容金鑰,請參閱使用AWS IAM Identity Center 者指南中的 IAM Identity Center AWS STS 條件金鑰

您可以在角色信任政策中使用此鍵,以便在使用者或其屬性擔任角色時,能根據使用者或其屬性實行精細的存取控制。假設角色之後,活動會出現在AdditionalEventData屬性內的 AWS CloudTrail 記錄檔中,其中包含由前後關聯提供者在假設角色請求中設定的工作階段前後關聯索引鍵值配對。當不同的主體使用角色時,這可讓系統管理員更容易區分角色工作階段。索引鍵值配對是由指定的內容提供者所設定,而不是由 AWS CloudTrail 或 AWS STS設定。這可讓內容提供者控制 CloudTrail 記錄檔和工作階段資訊中包含的內容。

STS: RequestContextProviders

適用於ARN運營商

使用此索引鍵可將要求ARN中的前後關聯提供者與角色信任原則中ARN指定的前後關聯提供者進行比較。

可用 — 當在要求參數中提供內容宣告,同時假設使用 AWS STS AssumeRoleAPI作業的角色時,此索引鍵會出現在ProvidedContexts要求中。

下列範例條件會檢查要求中ARN傳遞的前後關聯提供者是否符合角色信任原則條件中ARN指定的。

"Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] } }
STS: RoleSessionName

使用字串運算子

使用此鍵,比較使用政策中指定的值擔任角色時,主體指定的工作階段名稱。

可用 — 當主體使用 AWS Management Console、任何 assume-role CLI 命令或任何作業擔任角色時,此索引鍵會出現在要求中。 AWS STS AssumeRole API

您可以在角色信任政策中使用此鍵,請求您的使用者在擔任角色時提供特定的工作階段名稱。例如,您可以要求使IAM用者指定自己的使用者名稱作為其工作階段名稱。IAM使用者擔任該角色之後,活動會顯示在AWS CloudTrail 記錄中,且工作階段名稱與其使用者名稱相符。當不同的主體使用角色時,這可讓系統管理員更容易區分角色工作階段。

下列角色信任原則要求帳IAM戶中的使用IAM者在擔任角色時,111122223333提供其使用者名稱作為工作階段名稱。使用條件鍵中的 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" }

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

STS: SourceIdentity

使用字串運算子

使用此鍵,比較使用政策中指定的值擔任角色時,主體指定的來源身分。

可用 — 當主體提供來源識別,同時使用任何 AWS STS assume-role CLI 命令或 AWS STS AssumeRoleAPI作業假設角色時,此索引鍵會出現在要求中。

您可以在角色信任政策中使用此鍵,請求您的使用者在擔任角色時設定特定的來源身分。例如,您可以要求人力或聯合身分來指定來源身分的值。您可以將身分提供者 (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 內容鍵。此鍵包含工作階段標籤的清單、可轉移工作階段標籤和角色標籤。可轉移工作階段標籤是在您使用工作階段憑證擔任另一個角色時,保存到所有後續工作階段的標籤。從另一個角色取得及擔任角色稱為角色鏈結

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