

# Políticas de permissão para criar, modificar e excluir recursos no Amazon RDS
<a name="security_iam_id-based-policy-examples-create-and-modify-examples"></a>

As seções a seguir apresentam exemplos de políticas de permissão que concedem e restringem o acesso aos recursos:

## Permitir que um usuário crie instâncias de Bancos de Dados em uma conta da AWS
<a name="security_iam_id-based-policy-examples-create-db-instance-in-account"></a>

Veja a seguir um exemplo de política que permite à conta com o ID `123456789012` criar instâncias de banco de dados para a sua conta da AWS. A política exige que o nome da nova instância de banco de dados comece com `test`. A nova instância de banco de dados também deve usar o mecanismo de banco de dados MySQL e a classe de instância de banco de dados `db.t2.micro`. Além disso, a nova instância de banco de dados deve usar um grupo de opções e um grupo de parâmetros de banco de dados que começa com `default` e deve usar o grupo de sub-redes `default`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowCreateDBInstanceOnly",
         "Effect": "Allow",
         "Action": [
            "rds:CreateDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:db:test*",
            "arn:aws:rds:*:123456789012:og:default*",
            "arn:aws:rds:*:123456789012:pg:default*",
            "arn:aws:rds:*:123456789012:subgrp:default"
         ],
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql",
               "rds:DatabaseClass": "db.t2.micro"
            }
         }
      }
   ]
}
```

------

A política inclui uma única instrução que especifica as seguintes permissões para o usuário do :
+ A política permite que a conta crie uma instância de banco de dados usando a operação de API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) (isso também se aplica ao comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) da AWS CLI e ao Console de gerenciamento da AWS).
+ O elemento `Resource` especifica que o usuário pode realizar ações em ou com recursos. Você especifica recursos usando um nome de recurso da Amazon (ARN). O ARN inclui o nome do serviço ao qual o recurso pertence (`rds`), a região da AWS (`*` indica qualquer região neste exemplo), o número de conta da AWS (`123456789012` é o número de conta neste exemplo) e o tipo de recurso. Para obter mais informações sobre como criar ARNs, consulte [Nomes de recurso da Amazon (ARNs) no Amazon RDS](USER_Tagging.ARN.md).

  O elemento `Resource` neste exemplo especifica as restrições da política a seguir em recursos para o usuário:
  + O identificador de instância de banco de dados para a nova instância de banco de dados deve começar com `test` (por exemplo, `testCustomerData1`, `test-region2-data`).
  + O grupo de opções para a nova instância de banco de dados deve começar com `default`.
  + O grupo de parâmetros de banco de dados para a nova instância de banco de dados deve começar com `default`.
  + O grupo de sub-redes para a nova instância de banco de dados deve ser o grupo de sub-redes `default`.
+ O elemento `Condition` especifica que o mecanismo de banco de dados deve ser MySQL e a classe da instância de banco de dados deve ser `db.t2.micro`. O elemento `Condition` especifica as condições quando uma política deve entrar em vigor. Você pode adicionar permissões ou restrições usando o elemento `Condition`. Para obter mais informações sobre como especificar condições, consulte [Chaves de condição de políticas do Amazon RDS](security_iam_service-with-iam.md#UsingWithRDS.IAM.Conditions). Este exemplo especifica condições `rds:DatabaseEngine` e `rds:DatabaseClass`. Para obter informações sobre valores de condição válidos para o `rds:DatabaseEngine`, consulte a lista no parâmetro `Engine` em [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html). Para obter informações sobre os valores de condição válidos para `rds:DatabaseClass`, consulte [Mecanismos de banco de dados compatíveis para classes de instância de banco de dados](Concepts.DBInstanceClass.Support.md) . 

A política não especifica o elemento `Principal` porque, em uma política baseada em identidade, não se especifica o principal que obtém as permissões. Quando você anexar uma política um usuário, o usuário será a entidade principal implícita. Quando você anexa uma política de permissão a um perfil do IAM, o principal identificado na política de confiança do perfil obtém as permissões.

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.

## Permitir que um usuário execute qualquer ação de descrição em qualquer recurso do RDS
<a name="IAMPolicyExamples-RDS-perform-describe-action"></a>

A seguinte política de permissões concede permissões a um usuário para executar todas as ações que começam com `Describe`. Essas ações mostram informações sobre um recurso do RDS, como uma instância de banco de dados. O caractere curinga (\$1) no elemento `Resource` indica que as ações são permitidas para todos os recursos do Amazon RDS que pertencem à conta. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowRDSDescribe",
         "Effect": "Allow",
         "Action": "rds:Describe*",
         "Resource": "*"
      }
   ]
}
```

------

## Permitir que um usuário crie uma instância de banco de dados que usa o grupo de parâmetros de banco de dados e o grupo de sub-redes especificados.
<a name="security_iam_id-based-policy-examples-create-db-instance-specified-groups"></a>

A seguinte política de permissões concede permissões para permitir que um usuário crie apenas uma instância de banco de dados que deve usar o grupo de parâmetros de banco de dados `mydbpg` e o grupo de sub-rede de banco de dados `mydbsubnetgroup`. 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": [
            "arn:aws:rds:*:*:pg:mydbpg",
            "arn:aws:rds:*:*:subgrp:mydbsubnetgroup"
         ]
      }
   ]
}
```

------

## Conceder permissão para ações em um recurso com uma tag específica com dois valores diferentes
<a name="security_iam_id-based-policy-examples-grant-permissions-tags"></a>

Você pode usar condições em sua política baseada em identidade para controlar o acesso aos recursos do Amazon RDS com base em tags. 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"
               ]
            }
         }
      }
   ]
}
```

------

## Impedir que um usuário exclua uma instância de banco de dados
<a name="IAMPolicyExamples-RDS-prevent-db-deletion"></a>

A seguinte política de permissões concede permissões para impedir que um usuário exclua uma instância de banco de dados específica. Por exemplo, você pode querer negar a capacidade de excluir suas instâncias de banco de dados de produção para qualquer usuário que não seja um administrador.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyDelete1",
         "Effect": "Deny",
         "Action": "rds:DeleteDBInstance",
         "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}
```

------

## Negar todo o acesso a um recurso
<a name="IAMPolicyExamples-RDS-deny-all-access"></a>

É possível negar acesso explicitamente a um recurso. As políticas de negação têm precedência sobre as políticas de permissão. A política a seguir nega explicitamente a um usuário a capacidade de gerenciar um recurso:

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": "rds:*",
         "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb"
      }
   ]
}
```

------