

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

# 多值內容索引鍵範例
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

下列一組政策範例示範如何使用多值內容索引鍵建立政策條件。

## 範例：使用條件集運算子 ForAllValues 的拒絕政策
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

下列範例說明如何使用身分型政策，在請求中包含特定標籤索引鍵字首時，拒絕使用 IAM 標記動作。[`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) 的值包含用於部分字串比對的萬用字元 (\*)。此政策包含具有內容索引鍵 `aws:TagKeys` 的 `ForAllValues` 集運算子，因為請求內容索引鍵可以包含多值。為了使內容索引鍵 `aws:TagKeys` 符合，請求內容中的每個值都必須與政策中的至少一個值相符。

如果請求中沒有內容索引鍵，`ForAllValues` 集運算子也會傳回 true。

您可以透過在政策中包含一個值為 `false` 的 `Null` 條件運算子，來檢查請求中的內容索引鍵是否存在且其值不為 Null，從而防止遺失內容索引鍵或具有空值的內容索引鍵評估為 true。如需詳細資訊，請參閱[用於檢查條件索引鍵是否存在的條件運算子](reference_policies_elements_condition_operators.md#Conditions_Null)。

**重要**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

**Example 拒絕多值內容索引鍵的單一政策條件值**  
在下列範例中，該政策會拒絕請求，其中請求中的 `aws:TagKeys` 值不包含字首 **key1**。請求內容可以包含多個值，但由於使用了 `ForAllValues` 條件集運算子，請求內容中的所有標籤索引鍵值都必須以字首 **key1** 開頭。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": "key1*"
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  | **沒有相符項目**<br />可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **沒有相符項目**<br />可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | <pre>aws:TagKeys:<br />  – {{key2}}:audit</pre>  | **相符** | 
| <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": "key1*"<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。 | **相符** | 

**Example 拒絕多值內容索引鍵的多個政策條件值**  
在下列範例中，該政策會拒絕請求，其中請求中的 `aws:TagKeys` 值不包含字首 **key1** 或 **key2**。請求內容可以包含多個值，但由於使用了 `ForAllValues` 條件集運算子，請求內容中的所有標籤索引鍵值都必須以字首 **key1** 或 **key2** 開頭。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyRestrictedTags",
      "Effect": "Deny",
      "Action": [
        "iam:Tag*",
        "iam:UnTag*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "key1*",
            "key2*"
          ]
        }
      }
    }
  ]
}
```
下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。  


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAllValues:StringNotLike": {<br />  "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:legal</pre>  | **沒有相符項目**<br />可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key1:personnel</pre>  | **沒有相符項目**<br />可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – key1:hr<br />  – key2:audit</pre>  | **沒有相符項目**<br />可能由其他陳述式允許。 | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | <pre>aws:TagKeys:<br />  – {{key3}}:legal</pre>  | **相符** | 
| <pre>"ForAllValues:StringNotLike": {<br />   "aws:TagKeys": [<br />    "key1*",<br />    "key2*"<br />  ]<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。 | **相符** | 

## 範例：使用條件集運算子 ForAnyValue 拒絕政策
<a name="reference_policies_condition_examples-multi-valued-context-keys-2"></a>

如果使用政策中指定的其中一個標籤索引鍵 (`environment` 或 `webserver`) 標記任何快照，下列以身分為基礎的政策範例將拒絕建立 EC2 執行個體磁碟區的快照。此政策包含具有內容索引鍵 `aws:TagKeys` 的 `ForAnyValue` 集運算子，因為請求內容索引鍵可以包含多值。如果您的標記請求包含政策中指定的任何一個標籤索引鍵值，`aws:TagKeys` 內容索引鍵將傳回 true 以調用拒絕政策效果。

**重要**  
此政策不允許任何動作。將此政策與允許特定動作的其他政策結合使用。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateSnapshot",
        "ec2:CreateSnapshots"
      ],
      "Resource": "arn:aws:ec2:us-west-2::snapshot/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "webserver"
        }
      }
    }
  ]
}
```

------

下表顯示 如何根據請求中的條件索引鍵值來 AWS 評估此政策。對於拒絕陳述式，「相符」表示「遭拒」，「無相符項目」表示「未遭拒」，且可能由其他陳述式允許。


| 政策條件 | 請求內容 | 結果 | 
| --- | --- | --- | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – webserver</pre>  | **相符** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – webserver<br />  – test</pre>  | **相符** | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | <pre>aws:TagKeys:<br />  – environment<br />  – test</pre>  | **沒有相符項目**<br />可能由其他陳述式允許。 | 
|  <pre>"ForAnyValue:StringEquals": {<br />  "aws:TagKeys": "webserver"<br />}</pre>  | 請求內容中沒有 `aws:TagKeys`。 | **沒有相符項目**<br />可能由其他陳述式允許。 | 