

# Especificar condições: usar tags personalizadas
<a name="UsingWithRDS.IAM.SpecifyingCustomTags"></a>

O Amazon RDS oferece suporte para especificar condições em uma política do IAM usando tags personalizadas.

Por exemplo, suponha que você adicione uma tag chamada `environment` às suas instâncias de banco de dados com valores como `beta`, `staging`, `production` e assim por diante. Se fizer isso, você poderá criar uma política que restrinja determinados usuários a instâncias de banco de dados com base no valor da tag `environment`.

**nota**  
Os identificadores de tags personalizados diferenciam maiúsculas de minúsculas.

A tabela a seguir lista os identificadores de tags do RDS que você pode usar em um elemento `Condition`. 

<a name="rds-iam-condition-tag-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.SpecifyingCustomTags.html)

A sintaxe de uma condição de tag personalizada é a seguinte:

`"Condition":{"StringEquals":{"rds:rds-tag-identifier/tag-name": ["value"]} }` 

Por exemplo, o seguinte elemento `Condition` se aplica a instâncias de banco de dados com uma tag `environment` e um valor de tag de `production`. 

` "Condition":{"StringEquals":{"rds:db-tag/environment": ["production"]} } ` 

Para obter informações sobre como criar tags, consulte [Marcar recursos do do Amazon RDS](USER_Tagging.md).

**Importante**  
Se você gerenciar o acesso aos recursos do RDS usando tags, recomendamos proteger o acesso às tags para os seus recursos do RDS. Você pode gerenciar o acesso a tags, criando políticas para as ações `AddTagsToResource` e `RemoveTagsFromResource`. Por exemplo, a seguinte política nega aos usuários a capacidade de adicionar ou remover tags para todos os recursos. Você pode então criar políticas para permitir que usuários específicos adicionem ou removam tags.   

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyTagUpdates",
         "Effect":"Deny",
         "Action":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"*"
      }
   ]
}
```

Para obter uma lista de ações do Amazon RDS, consulte [Ações definidas pelo Amazon RDS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions)* na *Referência de autorização do serviço.

## Políticas de exemplo: usar tags personalizadas
<a name="UsingWithRDS.IAM.Conditions.Tags.Examples"></a>

Os seguintes exemplos mostram como você pode usar tags personalizadas em políticas de permissões do IAM do Amazon RDS. Para obter mais informações sobre como adicionar tags a um recurso do Amazon RDS, consulte [Nomes de recurso da Amazon (ARNs) no Amazon RDS](USER_Tagging.ARN.md). 

**nota**  
Todos os exemplos usam a região us-west-2 e contêm IDs de conta fictícios.

### Exemplo 1: conceder permissão para ações em um recurso com uma tag específica com dois valores diferentes
<a name="w2aac58c48c33c23c29b6"></a>

A política a seguir concede permissão para realizar a operação de API `CreateDBSnapshot` em instâncias de banco de dados com a etiqueta `stage` definida como `development` ou `test`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

A política a seguir concede permissão para realizar a operação de API `ModifyDBInstance` em instâncias de banco de dados com a etiqueta `stage` definida como `development` ou `test`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
          "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
            ]
       },
       {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
               "rds:db-tag/stage":[
                  "development",
                  "test"
                  ]
               }
            }
       }
    ]
}
```

------

### Exemplo 2: negar explicitamente a permissão para criar uma instância de banco de dados que usa grupos de parâmetros de banco de dados especificados
<a name="w2aac58c48c33c23c29b8"></a>

A seguinte política nega explicitamente a permissão para criar uma instância de banco de dados que usa grupos de parâmetros de banco de dados com valores de tag específicos. Você poderá aplicar essa política se precisar que um grupo de parâmetros de banco de dados específico criado pelo cliente sempre seja usado ao criar instâncias de bancos de dados. As políticas que utilizam `Deny` são mais frequentemente usadas para restringir o acesso que foi concedido por uma política mais ampla.

A negação explícita da permissão substitui quaisquer outras permissões concedidas. Isso garante que as identidades não obtenham acidentalmente permissão que você nunca deseja conceder.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyProductionCreate",
         "Effect":"Deny",
         "Action":"rds:CreateDBInstance",
         "Resource":"arn:aws:rds:*:123456789012:pg:*",
         "Condition":{
            "StringEquals":{
               "rds:pg-tag/usage":"prod"
            }
         }
      }
   ]
}
```

------

### Exemplo 3: conceder permissão para executar ações em uma instância de banco de dados com um nome de instância prefixado com um nome de usuário
<a name="w2aac58c48c33c23c29c10"></a>

A seguinte política permite chamar qualquer API (exceto para `AddTagsToResource` ou `RemoveTagsFromResource`) em uma instância de banco de dados que tem um nome prefixado com o nome do usuário e que tem uma tag `stage` igual a `devo` ou sem tag `stage`.

A linha `Resource` na política identifica um recurso pelo seu Nome de Recurso Amazon (ARN). Para obter mais informações sobre como usar ARNs com recursos do Amazon RDS, consulte [Nomes de recurso da Amazon (ARNs) no Amazon RDS](USER_Tagging.ARN.md). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowFullDevAccessNoTags",
         "Effect":"Allow",
         "NotAction":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*",
         "Condition":{
            "StringEqualsIfExists":{
               "rds:db-tag/stage":"devo"
            }
         }
      }
   ]
}
```

------