

# Usar chaves de condição do IAM com o Amazon Aurora DSQL
<a name="using-iam-condition-keys"></a>

O elemento `Condition` (ou bloco `Condition`) especifica as condições sob as quais uma declaração de política é válida. Você cria expressões condicionais usando [operadores de condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), como `StringEquals` ou `StringLike`, para comparar chaves na política com valores na solicitação. As chaves de condição são diferentes do escopo de ARN de recursos, que restringe ações a recursos específicos usando o elemento `Resource`.

O Amazon Aurora DSQL é compatível tanto com chaves de condição específicas do serviço quanto com chaves de condição globais da AWS. É possível usar essas chaves para refinar as condições sob as quais suas declarações de política do IAM são aplicadas. Consulte mais informações sobre as chaves de condição globais da AWS em [Chaves de contexto de condição globais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) no *Guia do usuário do IAM*.

## Chaves de condição disponíveis para o Amazon Aurora DSQL
<a name="using-iam-condition-keys-available"></a>

O Amazon Aurora DSQL é compatível com as chaves de condição específicas do serviço `dsql:WitnessRegion`, `dsql:FisActionId` e `dsql:FisTargetArns`. Também é possível usar chaves de condição globais da AWS, como `aws:RequestTag`, `aws:ResourceTag` e `aws:TagKeys`. Consulte uma lista completa das ações, chaves de condição e recursos do Amazon Aurora DSQL que podem ser especificados em políticas, em [Ações, recursos e chaves de condição para o Amazon Aurora DSQL](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonauroradsql.html#amazonauroradsql-policy-keys) na *Referência de Autorização de Serviço*.

## Exemplo: restringir a região testemunha para clusters multirregionais
<a name="using-iam-condition-keys-create-cluster"></a>

A política a seguir usa a chave de condição `dsql:WitnessRegion` para restringir a criação de clusters multirregionais aos casos em que a região testemunha seja Oeste dos EUA (Oregon). Sem essa condição, é possível especificar qualquer região como região testemunha.

------
#### [ 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/*"
        }
    ]
}
```

------

A primeira declaração aplica a condição `dsql:WitnessRegion` às ações compatíveis com ela (`dsql:CreateCluster` e `dsql:PutWitnessRegion`). A segunda declaração concede `dsql:PutMultiRegionProperties` e `dsql:AddPeerCluster` sem a condição, pois a chave de condição `dsql:WitnessRegion` se aplica somente a `dsql:CreateCluster` e `dsql:PutWitnessRegion`.

## Exemplo: exigir tags ao criar clusters
<a name="using-iam-condition-keys-tag-on-create"></a>

A política a seguir usa as chaves de condição `aws:RequestTag` e `aws:TagKeys` para exigir uma tag `Environment` ao criar clusters.

------
#### [ 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"
                    ]
                }
            }
        }
    ]
}
```

------

Essa política usa duas chaves de condição em conjunto. A condição `aws:RequestTag/Environment` exige que a tag `Environment` tenha um dos valores permitidos. A condição `aws:TagKeys` com o operador de conjunto `ForAllValues` garante que a solicitação inclua somente as chaves de tag `Environment` e `Owner`.

## Exemplo: restringir a injeção de falhas a clusters específicos
<a name="using-iam-condition-keys-fis"></a>

A política a seguir usa as chaves de condição `dsql:FisActionId` e `dsql:FisTargetArns` para restringir a injeção de falhas do AWS FIS a uma ação específica e a um cluster de destino específico.

------
#### [ 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/*"
                }
            }
        }
    ]
}
```

------

A condição `dsql:FisActionId` restringe as ações de injeção de falhas que você pode executar. A condição `dsql:FisTargetArns` usa o operador de conjunto `ForAllValues` e o operador `ArnLike`. Juntos, eles garantem que cada ARN de cluster na solicitação corresponda ao padrão permitido. Isso bloqueia qualquer solicitação que inclua ARNs de cluster fora do escopo pretendido.