

# 将 IAM 条件键与 Amazon Aurora DSQL 结合使用
<a name="using-iam-condition-keys"></a>

`Condition` 元素（或 `Condition` 块）指定策略语句生效的条件。您可以使用[条件运算符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)（例如 `StringEquals` 或 `StringLike`）构建条件表达式，来将策略中的键与请求中的值进行匹配。条件键不同于资源 ARN 范围界定，后者使用 `Resource` 元素将操作限制为特定的资源。

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 全局条件键，例如 `aws:RequestTag`、`aws:ResourceTag` 和 `aws:TagKeys`。有关您可以在策略中指定的 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`）。第二条语句授予 `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"
                    ]
                }
            }
        }
    ]
}
```

------

此策略同时使用两个条件键。`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 的请求。