Segurança no Amazon RDS Custom
Familiarize-se com as considerações de segurança do RDS Custom.
Tópicos
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 emAmazonRDSCustomServiceRolePolicy
, 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
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.
Tópicos
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ário do banco de dados | Criado por | Versões compatíveis do mecanismo | Observações |
---|---|---|---|
|
Oracle |
custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb | |
|
Oracle |
custom-oracle-ee custom-oracle-ee-cdb custom-oracle-se2 custom-oracle-se2-cdb | |
|
RDS |
custom-oracle-ee custom-oracle-se2 | |
|
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 |
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. |
|
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
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
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.
-
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. -
Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/
. -
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
eSYSTEM
. O exemplo de chave a seguir é para a instância de banco de dados com o ID do recurso de banco de dadosdb-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
, um para o usuário principal e outro paradb-resource-id
-numeric-string
RDSADMIN
,SYS
eSYSTEM
. 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 paraRDSADMIN
,SYS
eSYSTEM
. -
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
-dgEsse 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 dadosdb-ABCDEFG12HIJKLNMNOPQRS3TUVWX
:do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
-
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.
-
Se seu banco de dados for um banco de dados independente ou de origem em uma configuração do Oracle Data Guard:
-
Inicie seu cliente Oracle SQL e faça login como
SYS
. -
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 BYpwd-from-secrets-manager
ACCOUNT UNLOCK;Por exemplo, se a nova senha do
RDSADMIN
armazenada no Secrets Manager forpwd-123
, execute a seguinte instrução:ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
-
-
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.