

# Configurar permissões do IAM para a integração do RDS para Oracle com o Amazon S3
<a name="oracle-s3-integration.preparing"></a>

Para que o RDS para Oracle se integre com o Amazon S3, a instância de banco de dados deve ter acesso a um bucket do Amazon S3. A Amazon VPC usada pela instância de banco de dados não precisa conceder acesso aos endpoints do Amazon S3.

O RDS para Oracle é compatível com a transferência de arquivos entre uma instância de banco de dados em uma conta e um bucket do Amazon S3 em uma conta diferente. Quando etapas adicionais forem necessárias, elas serão indicadas nas seções a seguir.

**Topics**
+ [Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS](#oracle-s3-integration.preparing.policy)
+ [Etapa 2: (opcional) Criar uma política do IAM para o bucket do Amazon S3](#oracle-s3-integration.preparing.policy-bucket)
+ [Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política](#oracle-s3-integration.preparing.role)
+ [Etapa 4: Associar um perfil do IAM à sua instância de banco de dados do RDS para Oracle](#oracle-s3-integration.preparing.instance)

## Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS
<a name="oracle-s3-integration.preparing.policy"></a>

Nessa etapa, crie uma política do AWS Identity and Access Management (IAM) com as permissões necessárias para transferir arquivos entre o bucket do Amazon S3 e a instância de banco de dados do RDS. Esta etapa pressupõe que você já tenha criado um bucket do S3.

Antes de criar a política, observe as seguintes informações:
+ Nome do recurso da Amazon (ARN) do bucket.
+ O ARN da chave do AWS KMS, se o bucket usar criptografia SSE-KMS ou SSE-S3
**nota**  
Uma instância de banco de dados do RDS para Oracle não pode acessar buckets do Amazon S3 criptografados com SSE-C.

Para ter mais informações, consulte [Como proteger dados usando criptografia do lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

### Console
<a name="oracle-s3-integration.preparing.policy.console"></a>

**Como criar uma política do IAM para permitir acesso do Amazon RDS a um bucket do Amazon S3**

1. Abra o [Console de Gerenciamento do IAM](https://console.aws.amazon.com/iam/home?#home).

1. Em **Access management (Gerenciamento de acesso)**, escolha **Policies (Políticas)**.

1. Escolha **Create Policy**.

1. Na guia **Editor visual**, selecione **Escolher um serviço** e, em seguida, escolha **S3**.

1. Em **Actions (Ações)**, escolha **Expand all (Expandir tudo)**e, em seguida, escolha as permissões de bucket e as permissões de objeto necessárias para transferir arquivos de um Amazon S3 bucket para Amazon RDS. Por exemplo, faça o seguinte:
   + Expanda **List (Lista)**e, em seguida, selecione **ListBucket**.
   + Expanda **Read (Ler) **e, em seguida, selecione **GetObject**.
   + Expanda **Gravação** e selecione **PutObject**, **DeleteObject**, **AbortMultipartUpload** e **ListMultipartUploadParts**. As permissões de upload fracionado são necessárias ao carregar arquivos grandes (100 MB ou mais) no Amazon S3.
   + Amplie **Permissions management** (Gerenciamento de permissões) e selecione **PutObjectAcl**. Essa permissão será necessária se você planejar o carregamento de arquivos em um bucket de propriedade de uma conta diferente, e essa conta precisar ter controle total do conteúdo do bucket.

   *Permissões de objetos* são permissões para operações de objetos no Amazon S3. Você deve concedê-las para objetos em um bucket, não para o próprio bucket. Para ter mais informações, consulte [Permissões para operações de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-objects).

1. Selecione **Recursos** e, depois, faça o seguinte:

   1. Selecione **Específico**.

   1. Para **bucket**, selecione **Adicionar ARN**. Insira o ARN de seu bucket. O nome do bucket é preenchido automaticamente. Em seguida, escolha **Adicionar**.

   1. Se o recurso do **objeto** for exibido, selecione **Adicionar ARN** para adicionar recursos manualmente ou escolha **Qualquer**.
**nota**  
É possível definir o **nome de recurso da Amazon (ARN)** como um valor de ARN mais específico para permitir que o Amazon RDS acesse apenas arquivos ou pastas específicos em um bucket do Amazon S3. Para ter mais informações sobre como definir uma política de acesso para o Amazon S3, consulte [Gerenciar permissões de acesso aos recursos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).

1. (Opcional) Escolha **Adicionar permissões adicionais** para adicionar recursos à política. Por exemplo, faça o seguinte:

   1. Se o bucket estiver criptografado com uma chave KMS personalizada, selecione **KMS** para o serviço. 

   1. Em **Ações manuais**, selecione o seguinte:
      + **Encrypt**
      + **Criptografar novamente de** e **Criptografar novamente para**
      + **Decrypt**
      + **DescribeKey**
      + **GenerateDataKey**

   1. Em **Recursos**, selecione **Específico**.

   1. Para **chave**, selecione **Adicionar ARN**. Insira o ARN de sua chave personalizada como o recurso e, depois, selecione **Adicionar**.

      Para ter mais informações, consulte [Como proteger os dados usando criptografia do lado do servidor com chaves do KMS armazenadas no AWS Key Management Service (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) do *Guia do usuário do Amazon Simple Storage Service*.

   1. Se você Amazon RDS quiser acessar outros bucket, adicione os ARNs para esses buckets. Opcionalmente, você também pode conceder acesso a todos os buckets e objetos no Amazon S3.

1. Escolha **Next: Tags (Próximo: tags)** e **Next: Review (Próximo: revisar)**.

1. Em **Name (Nome)**, insira um nome para a sua política do IAM, por exemplo `rds-s3-integration-policy`. Você usará esse nome ao criar um perfil do IAM a ser associado à sua instância de banco de dados. Você também pode adicionar um valor opcional para **Description (Descrição)**.

1. Escolha **Create policy** (Criar política).

### AWS CLI
<a name="oracle-s3-integration.preparing.policy.CLI"></a>

Crie uma política do AWS Identity and Access Management (IAM) que conceda ao Amazon RDS acesso a um bucket do Amazon S3. Depois de criar a política, anote o ARN da política. Você precisa do ARN para uma etapa subsequente.

Inclua as ações apropriadas na política com base no tipo de acesso necessário:
+ `GetObject` – necessário para transferir arquivos de um bucket do Amazon S3 para o Amazon RDS.
+ `ListBucket`: obrigatória para transferir arquivos de um bucket do Amazon S3 para o Amazon RDS.
+ `PutObject`: obrigatória para transferir arquivos do Amazon RDS para um bucket do Amazon S3.
+ `AbortMultipartUpload`: obrigatória para uploads fracionados ao transferir arquivos grandes (100 MB ou mais) do Amazon RDS para um bucket do Amazon S3.
+ `ListMultipartUploadParts`: obrigatória para uploads fracionados ao transferir arquivos grandes (100 MB ou mais) do Amazon RDS para um bucket do Amazon S3.

O comando da AWS CLI a seguir cria uma política do IAM denominada `rds-s3-integration-policy` com essas opções. Ele concede acesso a um bucket denominado `amzn-s3-demo-bucket`.

**Example**  
Para Linux, macOS ou Unix:  

```
aws iam create-policy \
   --policy-name rds-s3-integration-policy \
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
O exemplo a seguir inclui permissões para chaves KMS personalizadas.  

```
aws iam create-policy \
   --policy-name rds-s3-integration-policy \
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "kms:Decrypt",
           "kms:Encrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey",
           "kms:DescribeKey",
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```
Para Windows:  

```
aws iam create-policy ^
   --policy-name rds-s3-integration-policy ^
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
O exemplo a seguir inclui permissões para chaves KMS personalizadas.  

```
aws iam create-policy ^
   --policy-name rds-s3-integration-policy ^
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "kms:Decrypt",
           "kms:Encrypt",
           "kms:ReEncrypt",
           "kms:GenerateDataKey",
           "kms:DescribeKey",
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```

## Etapa 2: (opcional) Criar uma política do IAM para o bucket do Amazon S3
<a name="oracle-s3-integration.preparing.policy-bucket"></a>

Esta etapa é necessária somente nas seguintes condições:
+ Você planeja carregar arquivos para um bucket do Amazon S3 de uma conta (conta A) e acessá-los em uma conta diferente (conta B).
+ A conta B é a proprietária do bucket.
+ A conta B precisa ter controle total dos objetos carregados no bucket.

Se as condições anteriores não se aplicarem a você, avance para [Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política](#oracle-s3-integration.preparing.role).

Para criar a política de bucket, verifique se você tem o seguinte:
+ O ID da conta A
+ O nome do usuário da conta A
+ O valor do ARN do bucket do Amazon S3 na conta B

### Console
<a name="oracle-s3-integration.preparing.policy-bucket.console"></a>

**Para criar ou editar uma política de bucket**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Na lista **Buckets**, escolha o nome do bucket para o qual você deseja criar uma política de bucket ou cuja política de bucket você deseja editar.

1. Escolha **Permissions (Permissões)**.

1. Em **Bucket policy** (Política de bucket), escolha **Edit** (Editar). Isso abre a página Edit bucket policy (Editar política de bucket).

1. Na página **Editar política de buckets**, explore **Exemplos de políticas** no *Guia do usuário do Amazon S3*, escolha **Gerador de políticas** para gerar uma política automaticamente ou edite o JSON na seção **Politica**. 

   Se você escolher **Policy generator** (Gerador de políticas), o AWS Policy Generator será aberto em uma nova janela:

   1. Na página **AWS Policy Generator**, em **Select Type of Policy** (Selecionar tipo de política), **S3 Bucket Policy** (Política de bucket do S3).

   1. Adicione uma instrução inserindo as informações nos campos fornecidos e escolha **Add Statement** (Adicionar instrução). Repita para todas as instruções que deseja adicionar. Para ter mais informações sobre esses campos, consulte a [Referência de elementos de política JSON do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) no *Guia do usuário do IAM*. 
**nota**  
Por conveniência, a página **Edit bucket policy** (Editar política do bucket) exibe o **nome do recurso da Amazon (ARN) do bucket** atual acima do campo de texto **Policy** (Política). Você pode copiar este ARN para usá-lo nas instruções da página do **AWS Policy Generator**. 

   1. Depois de terminar de adicionar as instruções, escolha **Generate Policy** (Gerar política).

   1. Copie o texto da política gerada, escolha **Close** (Fechar) e retorne à página **Edit bucket policy** (Editar política de bucket) no console do Amazon S3.

1. Na caixa **Policy** (Política), edite a política existente ou cole a política de bucket do gerador de políticas. Solucione avisos de segurança, erros, avisos gerais e sugestões antes de salvar a política.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExamplePermissions",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/account-A-user"
         },
         "Action": [
           "s3:PutObject",
           "s3:PutObjectAcl"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket",
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
         ]
       }
     ]
   }
   ```

------

1. Escolha **Save changes** (Salvar alterações), o que o levará à página Bucket Permissions (Permissões do bucket).

## Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política
<a name="oracle-s3-integration.preparing.role"></a>

Esta etapa pressupõe que você tenha criado a política do IAM no [Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS](#oracle-s3-integration.preparing.policy). Nesta etapa, você cria um perfil para a instância de banco de dados do RDS para Oracle e anexa a política ao perfil.

### Console
<a name="oracle-s3-integration.preparing.role.console"></a>

**Como criar um perfil do IAM para permitir acesso do Amazon RDS a um bucket do Amazon S3**

1. Abra o [Console de Gerenciamento do IAM](https://console.aws.amazon.com/iam/home?#home).

1. No painel de navegação, escolha **Roles**.

1. Escolha **Criar Perfil**.

1. Selecione **Serviço da AWS**.

1. Em **Casos de uso de outros serviços da AWS:**, selecione **RDS** e, depois, **RDS: adicionar perfil ao banco de dados**. Escolha **Próximo**.

1. Em **Pesquisar**, em **Políticas de permissões**, insira o nome da política do IAM que você criou em [Etapa 1: Criar uma política do IAM para ser usada pelo perfil do Amazon RDS](#oracle-s3-integration.preparing.policy) e selecione a política quando ela aparecer na lista. Escolha **Próximo**.

1. Em **Nome do perfil**, insira um nome para seu perfil do IAM, por exemplo, `rds-s3-integration-role`. Você também pode adicionar um valor opcional para **Description** (Descrição).

1. Selecione **Criar perfil**.

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

**Como criar um perfil e anexar uma política a ele**

1. Crie um perfil do IAM que o Amazon RDS possa assumir em seu nome para acessar seus buckets do Amazon S3.

   Recomendamos usar as chaves de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o [problema "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

   Você pode usar as duas chaves de contexto de condição global e fazer com que o valor `aws:SourceArn` contenha o ID da conta. Nesses casos, verifique se o valor `aws:SourceAccount` e a conta no `aws:SourceArn` usa o mesmo ID de conta quando eles são usados na mesma instrução.
   + Use `aws:SourceArn` se quiser acesso entre serviços para um único recurso.
   + Use `aws:SourceAccount` se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

   Na relação de confiança, certifique-se de usar a chave de contexto de condição global `aws:SourceArn` com o nome do recurso da Amazon (ARN) completo dos recursos que acessam a função.

   O seguinte comando da AWS CLI cria a função chamada `rds-s3-integration-role` para essa finalidade.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws iam create-role \
      --role-name rds-s3-integration-role \
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "my_account_ID",
                    "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
                }
            }
          }
        ]
      }'
   ```

   Para Windows:

   ```
   aws iam create-role ^
      --role-name rds-s3-integration-role ^
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "my_account_ID",
                    "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
                }
            }
          }
        ]
      }'
   ```

   Para ter mais informações, consulte [Criar uma função para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.

1. Depois que a função for criada, observe seu ARN. Você precisa do ARN para uma etapa subsequente.

1. Anexe a política criada à função criada.

   O seguinte comando da AWS CLI anexa a política à função denominada `rds-s3-integration-role`.  
**Example**  

   Para Linux, macOS ou Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn your-policy-arn \
      --role-name rds-s3-integration-role
   ```

   Para Windows:

   ```
   aws iam attach-role-policy ^
      --policy-arn your-policy-arn ^
      --role-name rds-s3-integration-role
   ```

   Substitua `your-policy-arn` pelo ARN da política que você anotou em uma etapa anterior.

## Etapa 4: Associar um perfil do IAM à sua instância de banco de dados do RDS para Oracle
<a name="oracle-s3-integration.preparing.instance"></a>

A última etapa na configuração de permissões para a integração com o Amazon S3 é associar seu perfil do IAM à sua instância de banco de dados. Observe os seguintes requisitos:
+ Você precisa ter acesso a um perfil do IAM com a política de permissões do Amazon S3 necessária anexada a ele. 
+ Só é possível associar um perfil do IAM à instância de banco de dados do RDS para Oracle por vez.
+ Sua instância de banco de dados deve estar no estado **Disponível**.

### Console
<a name="oracle-s3-integration.preparing.instance.console"></a>

**Como associar um perfil do IAM à instância de banco de dados do RDS para Oracle**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Escolha **Databases (Bancos de dados)** no painel de navegação.

1. Selecione o nome da instância de banco de dados Oracle para exibir os detalhes.

1. Na guia **Connectivity & security** (Conectividade e segurança), role para baixo até a seção **Manage IAM roles** (Gerenciar funções do IAM) na parte inferior da página.

1. Em **Adicionar perfis do IAM a essa instância**, selecione o perfil que você criou em [Etapa 3: Criar um perfil do IAM para a instância de banco de dados e anexar a política](#oracle-s3-integration.preparing.role).

1. Em **Feature (Recurso)**, escolha **S3\$1INTEGRATION**.  
![\[Adicionar função S3_INTEGRATION\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. Escolha **Add role (adicionar função)**.

### AWS CLI
<a name="oracle-s3-integration.preparing.instance.CLI"></a>

O seguinte comando da AWS CLI adiciona a função a uma instância de banco de dados Oracle denominada `mydbinstance`.

**Example**  
Para Linux, macOS ou Unix:  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier mydbinstance \
   --feature-name S3_INTEGRATION \
   --role-arn your-role-arn
```
Para Windows:  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier mydbinstance ^
   --feature-name S3_INTEGRATION ^
   --role-arn your-role-arn
```

Substitua `your-role-arn` pelo ARN da função que você anotou em uma etapa anterior. `S3_INTEGRATION` deve ser especificado para a opção `--feature-name`.