

# 다중 값 컨텍스트 키 예제
<a name="reference_policies_condition_examples-multi-valued-context-keys"></a>

다음은 다중 값 컨텍스트 키로 정책 조건을 만드는 방법을 보여주는 일련의 정책 예제입니다.

## 예: 조건 집합 연산자 ForAllValues를 포함한 거부 정책
<a name="reference_policies_condition_examples-multi-valued-context-keys-1"></a>

다음 예제에서는 ID 기반 정책을 사용하여 요청에 특정 태그 키 접두사가 포함된 경우 IAM 태깅 작업의 사용을 거부하는 방법을 보여줍니다. [`aws:TagKeys`](reference_policies_condition-keys.md#condition-keys-tagkeys) 값에는 부분 문자열 일치를 위한 와일드카드(\*)가 포함됩니다. 정책에는 컨텍스트 키 `aws:TagKeys`가 포함된 `ForAllValues` 집합 연산자가 포함되는데, 요청 컨텍스트 키에 여러 값이 포함될 수 있기 때문입니다. 컨텍스트 키 `aws:TagKeys`가 일치하려면 요청 컨텍스트의 모든 값이 정책에서 하나 이상의 값과 일치해야 합니다.

요청에 컨텍스트 키가 없는 경우에도 `ForAllValues` 세트 연산자는 true를 반환합니다.

요청의 컨텍스트 키가 존재하고 그 값이 null이 아닌지 확인하기 위해 정책에 값이 `false`인 `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 />다른 문에서 허용될 수 있습니다. | 