

# 단일 값 컨텍스트 키 정책 예제
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

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

## 예: 단일 값 컨텍스트 키가 있는 다수의 조건 블록
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

조건 블록에 각각 단일 컨텍스트 키가 있는 다수의 조건이 있는 경우 모든 컨텍스트 키가 true로 확인되어야 원하는 `Allow` 또는 `Deny` 효과가 간접적으로 호출됩니다. 부정 일치 조건 연산자를 사용하면 조건 값의 평가 로직이 반전됩니다.

다음 예제에서는 사용자가 EC2 볼륨을 생성하고 볼륨 생성 도중 볼륨에 태그를 적용합니다. 요청 컨텍스트에는 컨텍스트 키 `aws:RequestTag/project`의 값이 포함되어야 하고, 컨텍스트 키 `aws:ResourceTag/environment`의 값은 프로덕션 이외의 모두 가능합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:volume/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/project": "*"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:CreateTags",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

요청 컨텍스트에는 프로젝트 태그-값이 포함되어야 하고 프로덕션 리소스가 `Allow` 효과를 간접적으로 호출하도록 생성할 수 없습니다. 프로젝트 이름이 `Feature3`이고 `QA` 리소스 태그가 있으므로 다음 EC2 볼륨이 생성됩니다.

```
aws ec2 create-volume \
    --availability-zone us-east-1a \
    --volume-type gp2 \
    --size 80 \
    --tag-specifications 'ResourceType=volume,Tags=[{Key=project,Value=Feature3},{Key=environment,Value=QA}]'
```

## 예: 다수의 단일 값 컨텍스트 키와 값이 있는 하나의 조건 블록
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

조건 블록에 다수의 컨텍스트 키가 있고 각 컨텍스트 키에 다수의 값이 있는 경우 각 컨텍스트 키가 true로 확인되어야 원하는 `Allow` 또는 `Deny` 효과에서 하나 이상의 키 값이 간접적으로 호출됩니다. 부정 일치 조건 연산자를 사용하면 컨텍스트 키 값의 평가 로직이 반전됩니다.

다음 예제를 통해 사용자는 Amazon Elastic Container Service 클러스터에서 작업을 시작하고 실행할 수 있습니다.
+ 요청 컨텍스트에는 `aws:RequestTag/environment` 컨텍스트 키 **AND**에 대해 `production` **또는** `prod-backup`가 포함되어야 합니다.
+ `ecs:cluster` 컨텍스트 키를 통해 작업이 `default1` **또는** `default2` ARN ECS 클러스터터에서 실행됩니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:RunTask",
        "ecs:StartTask"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": [
            "production",
            "prod-backup"
          ]
        },
        "ArnEquals": {
          "ecs:cluster": [
            "arn:aws:ecs:us-east-1:{{111122223333}}:cluster/default1",
            "arn:aws:ecs:us-east-1:{{111122223333}}:cluster/default2"
          ]
        }
      }
    }
  ]
}
```

------

다음 표에서는 AWS가 요청에 있는 조건 키 값을 기반으로 이 정책을 평가하는 방법을 보여줍니다.


| 정책 조건 | 요청 컨텍스트 | 결과 | 
| --- | --- | --- | 
|  <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default1</pre>  | 일치 항목 있음 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: environment:prod-backup<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 일치 항목 있음 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | <pre>aws:RequestTag: webserver:production<br />ecs:cluster:<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre>  | 일치 항목 없음 | 
| <pre>"StringEquals": {<br />  "aws:RequestTag/environment": [<br />    "production",<br />    "prod-backup"<br />  ]<br />},<br />"ArnEquals": {<br />  "ecs:cluster": [<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default1",<br />    "arn:aws:ecs:us-east-1:111122223333:cluster/default2"<br />  ]<br />}</pre>  | 요청 컨텍스트에 `aws:RequestTag`가 없습니다.<pre>ecs:cluster<br />  arn:aws:ecs:us-east-1:111122223333:cluster/default2</pre> | 일치 항목 없음 | 