

# Segurança no Amazon RDS Custom
<a name="custom-security"></a>

Familiarize-se com as considerações de segurança do RDS Custom.

Consulte mais informações sobre segurança do RDS Custom nos tópicos a seguir.
+ [Proteger o bucket do Amazon S3 contra o problema do substituto confuso](custom-security.confused-deputy.md)
+ [Alternar as credenciais do RDS Custom para Oracle para programas de conformidade](custom-security.cred-rotation.md)

## Como o RDS Custom gerencia com segurança as tarefas em seu nome
<a name="custom-security.security-tools"></a>

O RDS Custom utiliza as seguintes ferramentas e técnicas para executar operações com segurança em seu nome:

**Perfil vinculado a serviço AWSServiceRoleForRDSCustom**  
Um *perfil vinculado a serviço* é predefinido pelo serviço e inclui todas as permissões que o serviço precisa para chamar outros Serviços da AWS em seu nome. Para o RDS Custom, `AWSServiceRoleForRDSCustom` é um perfil vinculado a serviço que é definido de acordo com o princípio do privilégio mínimo. O RDS Custom usa as permissões em `AmazonRDSCustomServiceRolePolicy`, que é a política associada a esse perfil, para realizar a maioria das tarefas de provisionamento e todas as tarefas de gerenciamento fora do host. Para obter mais informações, consulte [AmazonRDSCustomServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomServiceRolePolicy.html).  
Ao executar tarefas no host, a automação do RDS Custom usa credenciais do perfil vinculado a serviço para executar comandos usando o AWS Systems Manager. Você pode auditar o histórico de comandos por meio do histórico de comandos do Systems Manager e pelo AWS CloudTrail. O Systems Manager se conecta à sua instância de banco de dados do RDS Custom usando sua configuração de rede. Para obter mais informações, consulte [Etapa 4: Configurar o IAM para RDS Custom para Oracle](custom-setup-orcl.md#custom-setup-orcl.iam-vpc).

**Credenciais temporárias do IAM**  
Ao provisionar ou excluir recursos, o RDS Custom às vezes utiliza credenciais temporárias derivadas das credenciais da entidade principal do IAM que realiza a chamada. Essas credenciais do IAM são restringidas pelas políticas do IAM anexadas a essa entidade principal e expiram após a conclusão da operação. Para saber mais sobre as permissões necessárias para entidades principais do IAM que usam o RDS Custom, consulte [Etapa 5: Conceder as permissões necessárias ao usuário ou ao perfil do IAM](custom-setup-orcl.md#custom-setup-orcl.iam-user).

**Perfil de instância do Amazon EC2**  
Um perfil de instância do EC2 é um contêiner para um perfil do IAM que pode ser usado para transmitir as informações do perfil para uma instância do EC2. Uma instância do EC2 é a base de uma instância de banco de dados do RDS Custom. Você fornece um perfil de instância ao criar uma instância de banco de dados do RDS Custom. O RDS Custom usa as credenciais do perfil de instância do EC2 ao executar tarefas de gerenciamento baseadas em host, como backups. Para obter mais informações, consulte [Criar seu perfil do IAM e perfil de instância manualmente](custom-setup-orcl.md#custom-setup-orcl.iam).

**Par de chaves SSH**  
Quando o RDS Custom cria a instância do EC2 como base de uma instância de banco de dados, ele cria um par de chaves SSH em seu nome. A chave utiliza o prefixo de nome `do-not-delete-rds-custom-ssh-privatekey-db-` ou `rds-custom!oracle-do-not-delete-db_resource_id-uuid-ssh-privatekey`. O AWS Secrets Manager armazena essa chave privada SSH como um segredo em sua Conta da AWS. O Amazon RDS não armazena, nem acessa, nem usa essas credenciais. Para obter mais informações, consulte [Pares de chaves do Amazon EC2 e instâncias do Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).

## Certificados SSL
<a name="custom-security.ssl"></a>

As instâncias de banco de dados personalizadas do RDS não comportam certificados SSL gerenciados. Se quiser implantar o SSL, você pode autogerenciar certificados SSL em sua própria carteira e criar um receptor SSL para proteger as conexões entre o banco de dados do cliente ou para a replicação do banco de dados. Para obter mais informações, consulte [Configuring Transport Layer Security Authentication](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-secure-sockets-layer-authentication.html#GUID-6AD89576-526F-4D6B-A539-ADF4B840819F) na documentação do Oracle Database.

# Proteger o bucket do Amazon S3 contra o problema do substituto confuso
<a name="custom-security.confused-deputy"></a>

Quando você cria uma versão de mecanismo personalizada (CEV) do Amazon RDS Custom para Oracle ou uma instância de banco de dados do RDS Custom para SQL Server, o RDS Custom cria um bucket do Amazon S3. O bucket do S3 armazena arquivos como artefatos de CEV, logs de redo (transação), itens de configuração para o perímetro de suporte e logs do AWS CloudTrail.

Você pode tornar esses buckets do S3 mais seguros usando as chaves de contexto de condição globais para evitar o *problema de representante confuso*. Para ter mais informações, consulte [Prevenção do problema do substituto confuso entre serviços](cross-service-confused-deputy-prevention.md).

O exemplo do RDS Custom para Oracle a seguir mostra o uso das chaves de contexto de condição globais `aws:SourceArn` e `aws:SourceAccount` em uma política de bucket do S3. Para o RDS Custom para Oracle, sempre inclua os nomes de recurso da Amazon (ARNs) das CEVs e das instâncias de banco de dados. Para o RDS Custom para SQL Server, inclua o ARN das instâncias de banco de dados.

```
...
{
  "Sid": "AWSRDSCustomForOracleInstancesObjectLevelAccess",
  "Effect": "Allow",
  "Principal": {
     "Service": "custom.rds.amazonaws.com"
  },
  "Action": [
     "s3:GetObject",
     "s3:GetObjectVersion",
     "s3:DeleteObject",
     "s3:DeleteObjectVersion",
     "s3:GetObjectRetention",
     "s3:BypassGovernanceRetention"
  ],
  "Resource": "arn:aws:s3:::do-not-delete-rds-custom-123456789012-us-east-2-c8a6f7/RDSCustomForOracle/Instances/*",
  "Condition": {
     "ArnLike": {
        "aws:SourceArn": [
            "arn:aws:rds:us-east-2:123456789012:db:*",
            "arn:aws:rds:us-east-2:123456789012:cev:*/*"
        ]
     },
     "StringEquals": {
        "aws:SourceAccount": "123456789012"
    }
  }
},
...
```

# Alternar as credenciais do RDS Custom para Oracle para programas de conformidade
<a name="custom-security.cred-rotation"></a>

Alguns programas de conformidade exigem que as credenciais do usuário do banco de dados sejam alteradas periodicamente, por exemplo, a cada 90 dias. O RDS Custom para Oracle alterna automaticamente as credenciais de alguns usuários predefinidos do banco de dados.

**Topics**
+ [Alternância automática de credenciais para usuários predefinidos](#custom-security.cred-rotation.auto)
+ [Diretrizes para alternância de credenciais de usuário](#custom-security.cred-rotation.guidelines)
+ [Alternar manualmente as credenciais do usuário](#custom-security.cred-rotation.manual)

## Alternância automática de credenciais para usuários predefinidos
<a name="custom-security.cred-rotation.auto"></a>

Se sua instância de banco de dados do RDS Custom para Oracle estiver hospedada no Amazon RDS, as credenciais dos seguintes usuários predefinidos da Oracle serão alternadas automaticamente a cada 30 dias. As credenciais dos usuários anteriores residem em AWS Secrets Manager.


| Usuário do banco de dados | Criado por | Versões compatíveis do mecanismo | Observações | 
| --- | --- | --- | --- | 
|  `SYS`  |  Oracle  |  custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb  |  | 
|  `SYSTEM`  |  Oracle  |  custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb  |  | 
|  `RDSADMIN`  |  RDS  |  custom-oracle-ee custom-oracle-se2  |  | 
|  `C##RDSADMIN`  |  RDS  |  custom-oracle-ee-cdb custom-oracle-se2-cdb  | Nomes de usuário com um prefixo C\$1\$1 só existem em CDBs. Para ter mais informações sobre CDBs, consulte [Visão geral da arquitetura do Amazon RDS Custom para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview). | 
|  `RDS_DATAGUARD`  |  RDS  |  custom-oracle-ee  | Esse usuário existe somente em réplicas de leitura, bancos de dados de origem para réplicas de leitura e bancos de dados que você migrou fisicamente para o RDS Custom usando o Oracle Data Guard. | 
|  `C##RDS_DATAGUARD`  |  RDS  |  custom-oracle-ee-cdb  | Esse usuário existe somente em réplicas de leitura, bancos de dados de origem para réplicas de leitura e bancos de dados que você migrou fisicamente para o RDS Custom usando o Oracle Data Guard. Nomes de usuário com um prefixo C\$1\$1 só existem em CDBs. Para ter mais informações sobre CDBs, consulte [Visão geral da arquitetura do Amazon RDS Custom para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.overview). | 

Uma exceção à alternância automática de credenciais é uma instância de banco de dados do RDS Custom para Oracle que você configurou manualmente como um banco de dados de espera. O RDS alterna somente as credenciais para réplicas de leitura que você criou usando o comando `create-db-instance-read-replica` DA CLI ou a API `CreateDBInstanceReadReplica`.

## Diretrizes para alternância de credenciais de usuário
<a name="custom-security.cred-rotation.guidelines"></a>

Para garantir que suas credenciais sejam alternadas de acordo com seu programa de conformidade, observe as seguintes diretrizes:
+ Se sua instância de banco de dados alternar as credenciais automaticamente, não altere nem exclua manualmente um segredo, um arquivo de senha ou uma senha para usuários listados em [Usuários predefinidos da Oracle](#auto-rotation). Caso contrário, o RDS Custom pode colocar sua instância de banco de dados fora do perímetro de suporte, o que suspende a alternância automática.
+ O usuário principal do RDS não é predefinido, então você é responsável por alterar a senha manualmente ou configurar a alternância automática no Secrets Manager. Para ter mais informações, consulte [Alternar segredos do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

## Alternar manualmente as credenciais do usuário
<a name="custom-security.cred-rotation.manual"></a>

Para as seguintes categorias de bancos de dados, o RDS não alterna automaticamente as credenciais dos usuários listados em [Usuários predefinidos da Oracle](#auto-rotation):
+ Um banco de dados que você configurou manualmente para funcionar como um banco de dados de espera.
+ Um banco de dados on-premises.
+ Uma instância de banco de dados que está fora do perímetro de suporte ou em um estado em que a automação do RDS Custom não pode ser executada. Nesse caso, o RDS Custom também não alterna as chaves.

Se seu banco de dados estiver em qualquer uma das categorias anteriores, você deverá alternar suas credenciais de usuário manualmente.

**Como alternar as credenciais do usuário manualmente para uma instância de banco de dados**

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. Em **Bancos de dados**, garanta que o RDS não esteja fazendo backup de sua instância de banco de dados nem realizando operações como configuração de alta disponibilidade.

1. Na página de detalhes do banco de dados, selecione **Configuração** e anote o ID do recurso para a instância de banco de dados. Você pode usar o comando `describe-db-instances` da AWS CLI.

1. Abra o console do Secrets Manager em [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Na caixa de pesquisa, insira o ID do recurso do seu banco de dados e pesquise um segredo usando uma das seguintes convenções de nomenclatura:

   ```
   do-not-delete-rds-custom-resource_id-uuid
   rds-custom!oracle-do-not-delete-resource_id-uuid
   ```

   Esse segredo armazena a senha para `RDSADMIN`, `SYS` e `SYSTEM`. As seguintes chaves de exemplo são para a instância de banco de dados com o ID de recurso `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX` e o UUID `123456`:

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
   ```
**Importante**  
Se sua instância de banco de dados for uma réplica de leitura e usar o mecanismo `custom-oracle-ee-cdb`, haverá dois segredos com o sufixo `db-resource_id-uuid`, um para o usuário principal e outro para `RDSADMIN`, `SYS` e `SYSTEM`. Para encontrar o segredo correto, execute o seguinte comando no host:  

   ```
   cat /opt/aws/rdscustomagent/config/database_metadata.json | python3 -c "import sys,json; print(json.load(sys.stdin)['dbMonitoringUserPassword'])"
   ```
O atributo `dbMonitoringUserPassword` indica o segredo para `RDSADMIN`, `SYS` e `SYSTEM`.

1. Se sua instância de banco de dados estiver em uma configuração do Oracle Data Guard, pesquise um segredo usando uma das seguintes convenções de nomenclatura:

   ```
   do-not-delete-rds-custom-resource_id-uuid-dg
   rds-custom!oracle-do-not-delete-resource_id-uuid-dg
   ```

   Esse segredo armazena a senha para `RDS_DATAGUARD`. As seguintes chaves de exemplo são para a instância de banco de dados com o ID de recurso `db-ABCDEFG12HIJKLNMNOPQRS3TUVWX` e o UUID **789012**:

   ```
   do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   rds-custom!oracle-do-not-delete-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
   ```

1. Para todos os usuários do banco de dados listados em [Usuários predefinidos da Oracle](#auto-rotation), atualize as senhas seguindo as instruções em [Modificar um segredo do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_update-secret.html).

1. Se seu banco de dados for um banco de dados independente ou de origem em uma configuração do Oracle Data Guard:

   1. Inicie seu cliente Oracle SQL e faça login como `SYS`.

   1. Execute uma instrução SQL no seguinte formato para cada usuário do banco de dados listado em [Usuários Oracle predefinidos](#auto-rotation):

      ```
      ALTER USER user-name IDENTIFIED BY pwd-from-secrets-manager ACCOUNT UNLOCK;
      ```

      Por exemplo, se a nova senha do `RDSADMIN` armazenada no Secrets Manager for `pwd-123`, execute a seguinte instrução:

      ```
      ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
      ```

1. Se sua instância de banco de dados executa o Oracle Database 12c Release 1 (12.1) e é gerenciada pelo Oracle Data Guard, copie manualmente o arquivo de senha (`orapw`) da instância de banco de dados primária para cada instância de banco de dados de espera. 

   Se sua instância de banco de dados estiver hospedada no Amazon RDS, o local do arquivo de senha será `/rdsdbdata/config/orapw`. Para bancos de dados que não estão hospedados no Amazon RDS, o local padrão é `$ORACLE_HOME/dbs/orapw$ORACLE_SID` no Linux e no UNIX e `%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora` no Windows.