

# 単一値のコンテキストキーポリシーの例
<a name="reference_policies_condition_examples-single-valued-context-keys"></a>

次の一連のポリシーの例では、単一値のコンテキストキーを使用してポリシー条件を作成する方法を示しています。

## 例：単一値のコンテキストキーを持つ、複数の条件ブロック
<a name="reference_policies_condition_examples-single-valued-context-keys-1"></a>

条件ブロックに複数の条件があり、それぞれにコンテキストキーが 1 つしかない場合、目的の `Allow` または `Deny` 効果を呼び出すには、すべてのコンテキストキーが true になる必要があります。否定一致条件演算子を使用すると、条件の値を評価するロジックが反転します。

次の例では、ユーザーが 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` 効果を呼び出すことはできません。プロジェクト名に `QA` リソースタグがついて `Feature3` となっているため、次の 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}]'
```

## 例：単一値のコンテキストキーと値が複数ある、1 つの条件ブロック
<a name="reference_policies_condition_examples-single-valued-context-keys-2"></a>

条件ブロックに複数のコンテキストキーが含まれていて、それぞれのコンテキストキーに複数の値がある場合、目的の `Allow` または `Deny` 効果を呼び出すには、少なくとも 1 つのキーバリューが true になる必要があります。否定一致条件演算子を使用すると、コンテキストキーの値を評価するロジックが反転します。

次の例では、ユーザーが Amazon Elastic Container Service クラスターで、タスクを開始して実行できるようにします。
+ リクエストコンテキストには、**AND** `aws:RequestTag/environment` コンテキストキー用に、`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>  | 一致なし | 