本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
具有多個內容索引鍵或值的條件
您可以使用政策的 Condition
元素來測試請求中單一內容索引鍵的多個內容索引鍵或多個值。當您提出要求時 AWS,無論是以編程方式還是通過 AWS Management Console,您的請求包含有關主體、作業、標籤等的資訊。您可以使用內容索引鍵來測試請求中相符的內容索引鍵的值,以及政策條件中指定的內容索引鍵。若要了解請求中包含的資訊和資料,請參閱 請求內容。
多個內容索引鍵或值的評估邏輯
Condition
元素可以包含多個條件運算子,而且每個條件運算子都可以包含多個內容索引鍵值對。除非另有指定,否則大多數內容索引鍵都支援使用多個值。
-
如果您的政策陳述式有多個條件運算子,則使用邏輯
AND
評估條件運算子。 -
如果您的政策陳述式已將多個內容索引鍵連接至單一條件運算子,則使用邏輯
AND
評估內容索引鍵。 -
如果單一條件運算子包含一個內容索引鍵的多個值,則使用邏輯
OR
評估這些值。 -
如果單一否定相符條件運算子包含一個內容索引鍵的多個值,則使用邏輯
NOR
評估這些值。
條件元素區塊中的所有內容索引鍵都必須解析為 true 才能調用所需的 Allow
或 Deny
效果。下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。
例如,下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 StringEquals
和 ArnLike
,以及內容索引鍵 aws:PrincipalTag
和 aws:PrincipalArn
。若要調用所需的 Allow
或 Deny
效果,條件區塊中的所有內容索引鍵都必須解析為 true。發出請求的用戶必須同時具有部門和角色這兩個主體標籤索引鍵,其中包含政策中指定的其中一個標籤索引鍵值。此外,提出要求ARN的使用者的主體必須符合政策中指定的其中一個aws:PrincipalArn
值,才能評估為 true。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-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" ] } } } ] }
否定相符條件運算子的評估邏輯
部分條件運算子 (例如 StringNotEquals
或 ArnNotLike
) 使用否定相符將政策中的內容索引鍵值對與請求中的內容金鑰值對進行比較。使用否定相符條件運算子為政策中的單一內容索引鍵指定多個值時,有效許可的工作方式類似於邏輯 NOR
。在否定相符中,僅當所有值都評估為 false 時,邏輯 NOR
或 NOT
OR
才傳回 true。
下圖說明具有多個條件運算子和內容索引鍵值對的條件的計算邏輯。此圖包含內容索引鍵 3 的否定相符條件運算子。
例如,下列 S3 儲存貯體政策說明上圖在政策中的表示方式。條件區塊包含條件運算子 StringEquals
和 ArnNotLike
,以及內容索引鍵 aws:PrincipalTag
和 aws:PrincipalArn
。若要調用所需的 Allow
或 Deny
效果,條件區塊中的所有內容索引鍵都必須解析為 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:::amzn-s3-demo-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" ] } } } ] }