Corrija automaticamente instâncias e clusters de banco de dados Amazon RDS não criptografados - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Corrija automaticamente instâncias e clusters de banco de dados Amazon RDS não criptografados

Criado por Ajay Rawat (AWS) e Josh Joy (AWS)

Ambiente: PoC ou piloto

Tecnologias: segurança, identidade, conformidade; bancos de dados

Serviços da AWS: AWS Config; AWS KMS; AWS Identity and Access Management; AWS Systems Manager; Amazon RDS

Resumo

Esse padrão descreve como corrigir automaticamente instâncias de banco de dados e clusters não criptografados do Amazon Relational Database Service (Amazon RDS) no Amazon Web Services (AWS) usando o AWS Config, runbooks do AWS Systems Manager e chaves do AWS Key Management Service (AWS KMS).

As instâncias criptografadas do RDS DB fornecem uma camada adicional de proteção de dados, protegendo seus dados contra o acesso não autorizado ao armazenamento subjacente. Use a criptografia do Amazon RDS para aumentar a proteção de dados nas aplicações implantadas na nuvem AWS e cumprir os requisitos de conformidade para criptografia em repouso. Você só pode habilitar a criptografia para uma instância do banco de dados do RDS ao criá-la, não depois de ela ter sido criada. No entanto, você pode adicionar criptografia a uma instância do banco de dados do RDS não criptografada criando um snapshot da sua instância de banco de dados e depois criando uma cópia criptografada desse snapshot. Você pode restaurar uma instância de banco de dados a partir do snapshot criptografado para ter uma cópia criptografada da sua instância de banco de dados original.

Esse padrão usa as regras do AWS Config para avaliar instâncias e clusters de banco de dados do RDS. Ele aplica a correção usando os runbooks do AWS Systems Manager, que definem as ações a serem executadas em recursos incompatíveis do Amazon RDS, e as chaves do AWS KMS para criptografar os snapshots de banco de dados. Em seguida, aplica políticas de controle de serviços (SCPs) para impedir a criação de novas instâncias de banco de dados e clusters sem criptografia.

O código desse padrão é fornecido em GitHub.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • Arquivos do repositório de GitHub código-fonte desse padrão baixados para o seu computador

  • Uma instância de banco de dados do RDS ou outro cluster

  • Uma chave do AWS KMS existente para criptografar instâncias e clusters de banco de dados do RDS

  • Acesso para atualizar a política de recursos principais do KMS

  • O AWS Config está habilitado em sua conta da AWS (consulte Conceitos básicos do AWS Config na documentação da AWS)

Limitações

  • Você só pode habilitar a criptografia para uma instância de banco de dados do RDS ao criá-la, não depois de ela ter sido criada.

  • Não é possível ter uma réplica de leitura criptografada de uma instância de banco de dados não criptografada nem uma réplica de leitura não criptografada de uma instância de banco de dados criptografada.

  • Não é possível restaurar um backup ou um snapshot não criptografado em uma instância de banco de dados criptografada.

  • A criptografia do Amazon RDS está disponível para a maioria das classes de instância de banco de dados. Para obter uma lista de exceções, consulte Criptografar recursos do Amazon RDS na documentação do Amazon RDS.

  • Para copiar um snapshot criptografado de uma região da AWS para outra, é necessário especificar a KMS na região da AWS de destino. Isso ocorre porque as chaves do KMS são específicas da região da AWS em que são criadas.

  • O snapshot de origem permanece criptografado ao longo do processo de cópia. O Amazon RDS usa criptografia envelopada para proteger os dados durante o processo de cópia. Para obter mais informações, consulte Criptografia envelopada na documentação do AWS KMS.

  • Não é possível descriptografar uma instância de banco de dados criptografada. No entanto, é possível exportar dados de uma instância de banco de dados criptografada e importar os dados para uma instância de banco de dados não criptografado.

  • Só exclua uma chave do KMS quando você tiver certeza de que não vai mais precisar dela. Caso não tenha certeza, desabilite a chave do KMS em vez de excluí-la. Você poderá reabilitar a chave do KMS desabilitada se precisar usá-la mais tarde, mas não poderá recuperar aquela que foi excluída. 

  • Se você não escolher reter backups automatizados, os backups automatizados que estiverem na mesma região da AWS que a instância de banco de dados serão excluídos. Eles não podem ser recuperados depois de excluir a instância de banco de dados.

  • Os backups automatizados são retidos pelo período de retenção definido na instância de banco de dados no momento em que você a exclui. Esse período de retenção definido ocorre independentemente de você optar ou não por criar um snapshot de banco de dados final.

  • Se a correção automática estiver ativada, essa solução criptografará todos os bancos de dados que tenham a mesma chave KMS.

Arquitetura

O diagrama a seguir ilustra a arquitetura da CloudFormation implementação da AWS. Observe que você também pode implementar esse padrão usando o AWS Cloud Development Kit (AWS CDK).

Ferramentas

Ferramentas

  • CloudFormationA AWS ajuda você a configurar automaticamente seus recursos da AWS. Ele permite que você use um arquivo de modelo para criar e configurar um conjunto de recursos da como uma unidade única (uma pilha).

  • AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software para definir sua infraestrutura de nuvem em código e provisioná-la usando linguagens de programação conhecidas.

Serviços e atributos da AWS

  • O AWS Config acompanha a configuração dos seus recursos da AWS e suas relações com seus outros recursos. Ela também pode avaliar a conformidade desses recursos da AWS. Esse serviço usa regras que podem ser configuradas para avaliar os recursos da AWS em relação às configurações desejadas. Você pode usar um conjunto de regras gerenciadas do AWS Config para cenários de conformidade comuns ou criar suas próprias regras para cenários personalizados. Quando um recurso da AWS for considerado incompatível, você pode especificar uma ação de correção por meio de um runbook do AWS Systems Manager e, opcionalmente, enviar um alerta por meio de um tópico do Amazon Simple Notification Service (Amazon SNS). Em outras palavras, você pode associar ações de correção às regras do AWS Config e optar por executá-las automaticamente para lidar com recursos não compatíveis sem intervenção manual. Se um recurso ainda não for compatível após a correção automática de não conformidade, você poderá definir a regra para tentar fazer a correção automática novamente.

  • Com o Amazon Relational Database Service (Amazon RDS), é mais fácil configurar, operar e escalar um banco de dados relacional na nuvem. O bloco de construção básico do Amazon RDS é a instância de banco de dados, que é um ambiente isolado de banco de dados na Nuvem AWS. O Amazon RDS fornece uma seleção de tipos de instância otimizadas para de adequarem a diferentes casos de uso de banco de dados relacional. Os tipos de instância incluem várias combinações de capacidade de CPU, memória, armazenamento e redes e oferecem a flexibilidade de escolher a combinação de recursos adequada para seu banco de dados. Cada tipo de instância inclui vários tamanhos de instância, permitindo que você escale seus bancos de dado de acordo com os requisitos de sua workload de destino.

  • AWS Key Management Service (AWS KMS) é um serviço gerenciado que facilita a criação e o controle de chaves do AWS KMS, que criptografam seus dados. Uma chave do KMS é uma representação lógica de uma chave raiz. A chave do KMS inclui metadados, como o ID da chave, a data de criação, a descrição e o estado da chave.

  • O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.

  • As políticas de controle de serviço (SCPs) oferecem controle central sobre as permissões máximas disponíveis para todas as contas da sua organização. As SCPs ajudam você a garantir que as suas contas permaneçam dentro das diretrizes de controle de acesso da sua organização. SCPs não afetam usuários ou funções na conta de gerenciamento. Elas afetam apenas as contas-membro de sua organização. É altamente recomendado que você não anexe SCPs à raiz de sua organização sem testar totalmente o impacto que a política tem nas contas. Em vez disso, crie uma unidade organizacional (UO) para a qual você possa mover suas contas, uma por vez, ou pelo menos em pequenas quantidades, para garantir que não seja possível bloquear acidentalmente usuários nos serviços principais.

Código

O código-fonte e os modelos desse padrão estão disponíveis em um GitHub repositório. O padrão fornece duas opções de implementação: você pode implantar um CloudFormation modelo da AWS para criar a função de remediação que criptografa instâncias e clusters de banco de dados do RDS ou usar o AWS CDK. O repositório tem pastas separadas para essas duas opções.

A seção Epics fornece step-by-step instruções para implantar o CloudFormation modelo. Se você quiser usar o AWS CDK, siga as instruções no arquivo README.md no repositório. GitHub

Práticas recomendadas

  • Ative a criptografia de dados em repouso e em trânsito.

  • Habilite o AWS Config em todas as contas e regiões da AWS.

  • Registre as alterações de configuração em todos os tipos de recursos.

  • Mude suas credenciais do IAM regularmente.

  • Aproveite a marcação para o AWS Config, o que torna fácil gerenciar, pesquisar e filtrar recursos.

Épicos

TarefaDescriçãoHabilidades necessárias

Baixe o CloudFormation modelo.

Baixe o unencrypted-to-encrypted-rds.template.json arquivo do GitHub repositório.

DevOps engenheiro

Crie a CloudFormation pilha.

  1. Faça login no AWS Management Console e abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/

  2. Inicie o modelo unencrypted-to-encrypted-rds.template.json para criar uma nova pilha.

Para obter mais informações sobre a implantação de modelos, consulte a CloudFormation documentação da AWS.

DevOps engenheiro

Revise CloudFormation os parâmetros e valores.

  1. Revise os detalhes da pilha e atualize os valores com base nos requisitos do seu ambiente.

  2. Selecione Criar pilha para implantar o modelo.

DevOps engenheiro

Analise os recursos.

O status mudará para CREATE_COMPLETE depois que a pilha tiver sido criada. Analise os recursos criados (função do IAM, runbook do AWS Systems Manager) no CloudFormation console.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Atualize sua política de chaves do KMS.

  1. Verifique se o alias da chave alias/RDSEncryptionAtRestKMSAlias existe. 

  2. A declaração de política de chave deve incluir a função de correção do IAM. (Confira os recursos criados pelo CloudFormation modelo que você implantou no épico anterior.) 

  3. Na política de chaves a seguir, atualize as partes que estão em negrito para corresponder à sua conta e ao perfil do IAM que foi criado.

{ "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:: <your-AWS-account-ID>”:role/<your-IAM-remediation-role>" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "rds.us-east-1.amazonaws.com", "kms:CallerAccount": "<your-AWS-account-ID>" } } }
DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Visualize recursos não compatíveis.

  1. Para ver uma lista de recursos não compatíveis, abra o console do AWS Config em https://console.aws.amazon.com/config/. 

  2. No painel de navegação, escolha Regras e, em seguida escolha a regra rds-storage-encrypted.

Os recursos não compatíveis listados no console do AWS Config serão instâncias, não clusters. A automação de correção criptografa instâncias e clusters e cria uma instância recém-criptografada ou um cluster recém-criado. No entanto, certifique-se de não corrigir simultaneamente várias instâncias que pertencem ao mesmo cluster.

Antes de corrigir quaisquer instâncias ou volumes de banco de dados do RDS, certifique-se de que a instância de banco de dados do RDS não esteja em uso. Confirme se não há operações de gravação ocorrendo enquanto o snapshot está sendo criado, para garantir que o snapshot contenha os dados originais. Considere aplicar uma janela de manutenção durante a qual a correção será executada.

DevOps engenheiro

Corrija recursos que não estejam em conformidade.

  1. Quando você estiver pronto e a janela de manutenção estiver em vigor, escolha o recurso a ser corrigido e, em seguida, escolha Corrigir.

    A coluna Status da ação agora deve exibir a Execução da ação na fila.

  2. Visualize o progresso e o status da correção no Systems Manager. Abra o console do AWS Systems Manager em https://console.aws.amazon.com/systems-manager/. No painel de navegação, escolha Automação e, em seguida, selecione o ID de execução da automação correspondente para ver mais detalhes.

DevOps engenheiro

Verifique se a instância de banco de dados do RDS está disponível.

Depois que a automação for concluída, a instância de banco de dados do RDS recém-criptografada ficará disponível. A instância de banco de dados do RDS criptografada terá o prefixo encrypted seguido pelo nome original. Por exemplo, se o nome da instância de banco de dados do RDS não criptografada fosse database-1, a instância de banco de dados do RDS recém-criptografada seria encrypted-database-1.

DevOps engenheiro

Encerre a instância não criptografada.

Depois que a correção for concluída e o recurso recém-criptografado tiver sido validado, você poderá encerrar a instância não criptografada. Certifique-se de confirmar se o recurso recém-criptografado corresponde ao recurso não criptografado antes de encerrar qualquer recurso.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Aplique os SCPs.

Aplique os SCPs para evitar que instâncias e clusters de banco de dados sejam criados sem criptografia no futuro. Use o rds_encrypted.json arquivo fornecido no GitHub repositório para essa finalidade e siga as instruções na documentação da AWS

Engenheiro de segurança

Recursos relacionados

Referências

Ferramentas

Guias e padrões

Mais informações

PERGUNTAS FREQUENTES

P: Como o AWS Config funciona?

R: Quando você ativa o AWS Config, primeiro ele descobre os recursos da AWS compatíveis que existem na sua conta e gera um item de configuração para cada recurso. O AWS Config também gera itens de configuração quando a configuração de um recurso muda, e mantém registros históricos dos itens de configuração dos seus recursos a partir do momento que você inicia o gravador de configuração. Por padrão, o AWS Config cria itens de configuração para todos os recursos com suporte na região da AWS. Se não quiser que o AWS Config crie itens de configuração para todos os recursos suportados, você pode especificar os tipos de recursos que deseja rastrear.

P: Como as regras do AWS Config e do AWS Config estão relacionadas ao AWS Security Hub?

R: O AWS Security Hub é um serviço de segurança e conformidade que fornece gerenciamento de postura de segurança e conformidade como um serviço. Ele usa o AWS Config e as regras do AWS Config como mecanismo principal para avaliar a configuração dos recursos da AWS. As regras do AWS Config também podem ser usadas para avaliar diretamente a configuração de recursos. As regras de configuração também são usadas por outros serviços da AWS, como o AWS Control Tower e o AWS Firewall Manager.