

# Amazon Aurora DSQL での IAM 条件キーの使用
<a name="using-iam-condition-keys"></a>

`Condition` 要素 (または `Condition` ブロック) は、ポリシーのステートメントが有効となる条件を指定します。`StringEquals` や `StringLike` などの[条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)を使用して条件式を構築し、ポリシー内のキーをリクエスト内の値と照合します。条件キーは、`Resource` 要素を使用してアクションを特定のリソースに制限するリソース ARN スコープとは異なります。

Amazon Aurora DSQL は、サービス固有の条件キーと AWS グローバル条件キーの両方をサポートしています。これらのキーを使用して、IAM ポリシーステートメントが適用される条件を絞り込むことができます。AWS グローバル条件キーの詳細については、「*IAM ユーザーガイド*」の「[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。

## Amazon Aurora DSQL で使用できる条件キー
<a name="using-iam-condition-keys-available"></a>

Amazon Aurora DSQL は、サービス固有の条件キー `dsql:WitnessRegion`、`dsql:FisActionId`、および `dsql:FisTargetArns` をサポートしています。`aws:RequestTag`、`aws:ResourceTag`、`aws:TagKeys` などの AWS グローバル条件キーを使用することもできます。Amazon Aurora DSQL アクションの完全なリストとポリシーで指定できるリソースについては、「*サービス認可リファレンス*」の「[Amazon Aurora DSQL のアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonauroradsql.html#amazonauroradsql-policy-keys)」を参照してください。

## 例: マルチリージョンクラスターの監視リージョンを制限する
<a name="using-iam-condition-keys-create-cluster"></a>

次のポリシーでは、`dsql:WitnessRegion` 条件キーを使用して、監視リージョンが米国西部 (オレゴン) の場合にのみ、マルチリージョンクラスターの作成を許可しています。この条件がない場合、任意のリージョンを監視リージョンとして指定できます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreateWithSpecificWitness",
            "Effect": "Allow",
            "Action": [
                "dsql:CreateCluster",
                "dsql:PutWitnessRegion"
            ],
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*",
            "Condition": {
                "StringEquals": {
                    "dsql:WitnessRegion": "us-west-2"
                }
            }
        },
        {
            "Sid": "AllowMultiRegionSetup",
            "Effect": "Allow",
            "Action": [
                "dsql:PutMultiRegionProperties",
                "dsql:AddPeerCluster"
            ],
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*"
        }
    ]
}
```

------

最初のステートメントは、`dsql:WitnessRegion` 条件を、それをサポートするアクション (`dsql:CreateCluster` および `dsql:PutWitnessRegion`) に適用します。2 番目のステートメントは、条件なしで `dsql:PutMultiRegionProperties` と `dsql:AddPeerCluster` を許可します。これは、`dsql:WitnessRegion` 条件キーが `dsql:CreateCluster` および `dsql:PutWitnessRegion` にのみ適用されるためです。

## 例: クラスターの作成時にタグを必須にする
<a name="using-iam-condition-keys-tag-on-create"></a>

次のポリシーでは、`aws:RequestTag` および `aws:TagKeys` 条件キーを使用して、クラスターの作成時に `Environment` タグを必須にしています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreateWithRequiredTag",
            "Effect": "Allow",
            "Action": "dsql:CreateCluster",
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Environment": [
                        "production",
                        "staging",
                        "development"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "Environment",
                        "Owner"
                    ]
                }
            }
        }
    ]
}
```

------

このポリシーは 2 つの条件キーを一緒に使用します。`aws:RequestTag/Environment` 条件では、`Environment` タグが許可された値のいずれかを持つことが求められます。`ForAllValues` 集合演算子を使用した `aws:TagKeys` 条件は、リクエストに `Environment` および `Owner` タグキーのみが含まれるようにします。

## 例: 特定のクラスターへのフォールトインジェクションを制限する
<a name="using-iam-condition-keys-fis"></a>

次のポリシーでは、`dsql:FisActionId` および `dsql:FisTargetArns` 条件キーを使用して、AWS FIS によるフォールトインジェクションを特定のアクションとターゲットクラスターに制限します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSpecificFaultInjection",
            "Effect": "Allow",
            "Action": "dsql:InjectError",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "dsql:FisActionId": "aws:dsql:cluster-connection-failure"
                },
                "ForAllValues:ArnLike": {
                    "dsql:FisTargetArns": "arn:aws:dsql:us-east-1:123456789012:cluster/*"
                }
            }
        }
    ]
}
```

------

この `dsql:FisActionId` 条件は、実行できるフォールトインジェクションアクションを制限します。`dsql:FisTargetArns` 条件は `ForAllValues` 集合演算子と `ArnLike` 演算子を使用します。これにより、リクエスト内のすべてのクラスター ARN が許可されたパターンと一致するようになります。これにより、意図した範囲外のクラスター ARN を含むリクエストがブロックされます。