Segurança no Amazon RDS Custom - Amazon Relational Database Service

Segurança no Amazon RDS Custom

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

Como o RDS Custom gerencia com segurança as tarefas em seu nome

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.

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 ter mais informações, consulte Etapa 4: Configurar o IAM para RDS Custom para Oracle.

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.

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 ter mais informações, consulte Criar seu perfil do IAM e perfil de instância manualmente.

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 do-not-delete-rds-custom-ssh-privatekey-db-. 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.

Certificados SSL

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 na documentação do Oracle Database.

Proteger o bucket do Amazon S3 contra o problema do substituto confuso

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.

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

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.

Alternância automática de credenciais para usuários predefinidos

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ários predefinidos da Oracle
Usuário do banco de dadosCriado porVersões compatíveis do mecanismoObservaçõ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## só existem em CDBs. Para ter mais informações sobre CDBs, consulte Visão geral da arquitetura do Amazon RDS Custom para Oracle.

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## só existem em CDBs. Para ter mais informações sobre CDBs, consulte Visão geral da arquitetura do Amazon RDS Custom para Oracle.

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

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. 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.

Alternar manualmente as credenciais do usuário

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:

  • 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 AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. 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.

  3. 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.

  4. Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/.

  5. Na caixa de pesquisa, insira o ID do recurso de banco de dados e localize o segredo no seguinte formato:

    do-not-delete-rds-custom-db-resource-id-numeric-string

    Esse segredo armazena a senha para RDSADMIN, SYS e SYSTEM. O exemplo de chave a seguir é para a instância de banco de dados com o ID do recurso de banco de dados db-ABCDEFG12HIJKLNMNOPQRS3TUVWX:

    do-not-delete-rds-custom-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-numeric-string, 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.

  6. Se sua instância de banco de dados existir em uma configuração do Oracle Data Guard, encontre o segredo no seguinte formato:

    do-not-delete-rds-custom-db-resource-id-numeric-string-dg

    Esse segredo armazena a senha para RDS_DATAGUARD. O exemplo de chave a seguir é para a instância de banco de dados com o ID do recurso de banco de dados db-ABCDEFG12HIJKLNMNOPQRS3TUVWX:

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
  7. Para todos os usuários do banco de dados listados em Usuários predefinidos da Oracle, atualize as senhas seguindo as instruções em Modificar um segredo do AWS Secrets Manager.

  8. 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.

    2. Execute uma instrução SQL no seguinte formato para cada usuário do banco de dados listado em Usuários Oracle predefinidos:

      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;
  9. 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.