具有多個內容索引鍵或值的條件 - AWS Identity and Access Management

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

具有多個內容索引鍵或值的條件

您可以使用政策的 Condition 元素來測試請求中單一內容索引鍵的多個內容索引鍵或多個值。當您對 AWS 提出請求時,不論是透過程式設計方式或透過 AWS Management Console,您的請求會包含主體、操作、標籤等的相關資訊。您可以使用內容索引鍵來測試請求中相符的內容索引鍵的值,以及政策條件中指定的內容索引鍵。若要了解請求中包含的資訊和資料,請參閱 請求內容

多個內容索引鍵或值的評估邏輯

Condition 元素可以包含多個條件運算子,而且每個條件運算子都可以包含多個內容索引鍵值對。除非另有指定,否則大多數內容索引鍵都支援使用多個值。

  • 如果您的政策陳述式有多個條件運算子,則使用邏輯 AND 評估條件運算子。

  • 如果您的政策陳述式已將多個內容索引鍵連接至單一條件運算子,則使用邏輯 AND 評估內容索引鍵。

  • 如果單一條件運算子包含一個內容索引鍵的多個值,則使用邏輯 OR 評估這些值。

  • 如果單一否定相符條件運算子包含一個內容索引鍵的多個值,則使用邏輯 NOR 評估這些值。

條件元素區塊中的所有內容索引鍵都必須解析為 true 才能調用所需的 AllowDeny 效果。下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。


        條件區塊顯示如何將 AND 和 OR 套用到多個內容索引鍵和值

例如,下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 StringEqualsArnLike,以及內容索引鍵 aws:PrincipalTagaws:PrincipalArn。若要調用所需的 AllowDeny 效果,條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有部門角色這兩個主體標籤索引鍵,其中包含政策中指定的其中一個標籤索引鍵值。此外,發出請求的使用者的主體 ARN 必須符合要評估為 true 的政策中指定的其中一個 aws:PrincipalArn 值。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:PrincipalTag/department": [ "finance", "hr", "legal" ], "aws:PrincipalTag/role": [ "audit", "security" ] }, "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:user/Ana", "arn:aws:iam::222222222222:user/Mary" ] } } } ] }

否定相符條件運算子的評估邏輯

部分條件運算子 (例如 StringNotEqualsArnNotLike) 使用否定相符將政策中的內容索引鍵值對與請求中的內容金鑰值對進行比較。使用否定相符條件運算子為政策中的單一內容索引鍵指定多個值時,有效許可的工作方式類似於邏輯 NOR。在否定相符中,僅當所有值都評估為 false 時,邏輯 NORNOT OR 才傳回 true。

下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。此圖包含內容索引鍵 3 的否定相符條件運算子。


        條件區塊顯示在使用否定相符條件運算子時如何將 AND 和 OR 套用到多個內容索引鍵和值

例如,下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 StringEqualsArnNotLike,以及內容索引鍵 aws:PrincipalTagaws:PrincipalArn。若要調用所需的 AllowDeny 效果,條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有部門角色這兩個主體標籤索引鍵,其中包含政策中指定的其中一個標籤索引鍵值。由於 ArnNotLike 條件運算子使用否定相符,因此發出請求的使用者的主體 ARN 必須符合要評估為 true 的政策中指定的任何 aws:PrincipalArn 值。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:PrincipalTag/department": [ "finance", "hr", "legal" ], "aws:PrincipalTag/role": [ "audit", "security" ] }, "ArnNotLike": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:user/Ana", "arn:aws:iam::222222222222:user/Mary" ] } } } ] }