Gerenciamento de senhas com Amazon Aurora e AWS Secrets Manager - Amazon Aurora

Gerenciamento de senhas com Amazon Aurora e AWS Secrets Manager

O Amazon Aurora integra-se ao Secrets Manager para gerenciar senhas do usuário principal para suas .

Disponibilidade de região e versão

A disponibilidade e a compatibilidade de recursos variam entre versões específicas de cada mecanismo de banco de dados e entre Regiões da AWS. Para ter mais informações sobre a disponibilidade de versões e regiões com a integração do Secrets Manager com o Amazon Aurora, consulte Regiões e mecanismos de banco de dados do Aurora compatíveis com a integração com o Secrets Manager.

Limitações da integração do Secrets Manager com o Amazon Aurora

O gerenciamento de senhas do usuário principal com o Secrets Manager não é compatível com os seguintes recursos:

  • Implantações azul/verde do Amazon RDS

  • Clusters de banco de dados que fazem parte de um banco de dados global do Aurora.

  • Clusters de banco de dados do Aurora Serverless v1

  • Réplicas de leitura entre regiões do Aurora MySQL

  • Gerenciar a senha do usuário principal com o Secrets Manager para uma réplica de leitura

Visão geral do gerenciamento de senhas do usuário principal com AWS Secrets Manager

Com o AWS Secrets Manager, é possível substituir credenciais codificadas em seu código, inclusive senhas de banco de dados, por uma chamada de API ao Secrets Manager para recuperar o segredo de forma programática. Para ter mais informações sobre o Secrets Manager, consulte o Guia do usuário do AWS Secrets Manager.

Quando você armazena segredos de banco de dados no Secrets Manager, sua Conta da AWS incorre em cobranças. Para obter mais informações sobre definição de preços, consulte Definição de preço do AWS Secrets Manager.

Você pode especificar que o Aurora gerencie a senha de usuário principal no Secrets Manager para um cluster de banco de dados do Amazon Aurora ao realizar uma das seguintes operações:

  • Criar o cluster de banco de dados

  • Modificar o cluster de banco de dados

  • Restaurar o cluster de banco de dados do Amazon S3 (somente Aurora MySQL)

Quando você especifica que o Aurora gerencie a senha do usuário principal no Secrets Manager, o Aurora gera a senha e a armazena no Secrets Manager. Você pode interagir diretamente com o segredo para recuperar as credenciais do usuário principal. Você também pode especificar uma chave gerenciada pelo cliente para criptografar o segredo ou usar a chave do KMS fornecida pelo Secrets Manager.

O Aurora gerencia as configurações do segredo e o alterna a cada sete dias por padrão. Você pode modificar algumas configurações, como o cronograma de alternância. Se você excluir um cluster de banco de dados que gerencie um segredo no Secrets Manager, o segredo e seus metadados associados também serão excluídos.

Para conectar-se a uma com as credenciais em um segredo, você pode recuperar o segredo do Secrets Manager. Para ter mais informações, consulte Recuperar segredos do AWS Secrets Manager e Conecte-se a um banco de dados SQL com credenciais em um segredo do AWS Secrets Manager no Guia do usuário do AWS Secrets Manager.

Benefícios do gerenciamento de senhas do usuário principal com o Secrets Manager

O gerenciamento de senhas do usuário principal pelo Aurora com o Secrets Manager oferece os seguintes benefícios:

  • O Aurora gera automaticamente credenciais de banco de dados.

  • O Aurora armazena e gerencia automaticamente as credenciais do banco de dados no AWS Secrets Manager.

  • O Aurora alterna as credenciais do banco de dados regularmente, sem exigir alterações na aplicação.

  • O Secrets Manager protege as credenciais do banco de dados do acesso humano e da visualização de texto sem formatação.

  • O Secrets Manager permite a recuperação de credenciais do banco de dados em segredos para conexões de banco de dados.

  • O Secrets Manager permite um controle refinado do acesso às credenciais do banco de dados em segredos com o uso do IAM.

  • Você também pode separar a criptografia do banco de dados da criptografia de credenciais com chaves do KMS diferentes.

  • É possível eliminar o gerenciamento e a alternância manuais das credenciais do banco de dados.

  • Você pode monitorar facilmente as credenciais do banco de dados com o AWS CloudTrail e o Amazon CloudWatch.

Para obter mais informações sobre os benefícios do Secrets Manager, consulte o Guia do usuário do AWS Secrets Manager.

Permissões necessárias para a integração do Secrets Manager

Os usuários devem ter as permissões necessárias para realizar operações relacionadas à integração do Secrets Manager. É possível criar políticas do IAM que concedam permissões para realizar operações de API específicas nos recursos especificados necessários. Depois, você pode anexar essas políticas aos conjuntos de permissões do IAM ou às funções que exigem essas permissões. Para ter mais informações, consulte Gerenciamento de identidade e acesso no Amazon Aurora.

Para operações de criação, modificação ou restauração, o usuário que especifica que o Aurora gerencie a senha do usuário principal no Secrets Manager deve ter permissões para realizar as seguintes operações:

  • kms:DescribeKey

  • secretsmanager:CreateSecret

  • secretsmanager:TagResource

Para operações de criação, modificação ou restauração, o usuário que especifica a senha do usuário principal para criptografar o segredo no Secrets Manager deve ter permissões para realizar as seguintes operações:

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:CreateGrant

Para operações de modificação, o usuário que alterna a senha de usuário principal no Secrets Manager deve ter permissões para realizar a seguinte operação:

  • secretsmanager:RotateSecret

Impor o gerenciamento da senha do usuário principal pelo Aurora no AWS Secrets Manager

Você pode usar as chaves de condição do IAM para impor o gerenciamento pelo Aurora da senha do usuário principal no AWS Secrets Manager. A política a seguir não permite que os usuários criem nem restaurem instâncias de banco de dados ou clusters de banco de dados, a menos que a senha do usuário principal seja gerenciada pelo Aurora no Secrets Manager.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["rds:CreateDBInstance", "rds:CreateDBCluster", "rds:RestoreDBInstanceFromS3", "rds:RestoreDBClusterFromS3"], "Resource": "*", "Condition": { "Bool": { "rds:ManageMasterUserPassword": false } } } ] }
nota

Esta política impõe o gerenciamento de senhas no AWS Secrets Manager no momento da criação. No entanto, você ainda pode desativar a integração do Secrets Manager e definir manualmente uma senha principal modificando o cluster.

Para evitar isso, inclua rds:ModifyDBInstance e rds:ModifyDBCluster no bloco “Ação” da política. Esteja ciente de que isso impede que o usuário aplique quaisquer modificações adicionais aos clusters existentes que não têm a integração com o Secrets Manager habilitada.

Para ter mais informações sobre como usar as chaves de condição em políticas do IAM, consulte Chaves de condição de políticas do Aurora e Políticas de exemplo: usar chaves de condição.

Gerenciar a senha do usuário principal para um cluster de banco de dados com o Secrets Manager

Você pode configurar o gerenciamento pelo Aurora da senha do usuário principal no Secrets Manager ao realizar as seguintes ações:

Você pode usar o console do RDS, a AWS CLI ou a API do RDS para realizar essas ações.

Siga as instruções para criar ou modificar um cluster de banco de dados com o console do RDS:

Ao usar o console do RDS para realizar uma dessas operações, você pode especificar que a senha do usuário principal seja gerenciada pelo Aurora no Secrets Manager. Para fazer isso ao criar ou restaurar um cluster de banco de dados, selecione Gerenciar credenciais principais no AWS Secrets Manager em Configurações de credenciais. Quando estiver modificando um cluster de banco de dados, selecione Gerenciar credenciais principais no AWS Secrets Manager em Configurações.

A imagem a seguir é um exemplo da configuração Gerenciar credenciais principais no AWS Secrets Manager quando você está criando ou restaurando um cluster de banco de dados.

Gerenciar credenciais principais no AWS Secrets Manager

Quando você seleciona essa opção, o Aurora gera a senha do usuário principal e a gerencia durante todo o ciclo de vida no Secrets Manager.

Gerenciar credenciais principais no AWS Secrets Manager selecionado

Você pode optar por criptografar o segredo com uma chave do KMS fornecida pelo Secrets Manager ou com uma chave gerenciada pelo cliente criada por você. Depois que o Aurora estiver gerenciando as credenciais de banco de dados de um cluster de banco de dados, não será possível alterar a chave do KMS usada para criptografar o segredo.

Você pode escolher outras configurações para atender às suas necessidades.

Para ter mais informações sobre as configurações disponíveis ao criar um cluster de banco de dados, consulte Configurações de clusters de bancos de dados do Aurora. Para ter mais informações sobre as configurações disponíveis ao modificar um cluster de banco de dados, consulte Configurações do Amazon Aurora.

Para especificar que o Aurora gerencie a senha do usuário principal no Secrets Manager, especifique a opção --manage-master-user-password em um dos seguintes comandos:

Quando você especifica a opção --manage-master-user-password nesses comandos, o Aurora gera a senha do usuário principal e a gerencia durante todo o ciclo de vida no Secrets Manager.

Para criptografar o segredo, você pode especificar uma chave gerenciada pelo cliente ou usar a chave do KMS fornecida pelo Secrets Manager. Use a opção --master-user-secret-kms-key-id para especificar uma chave gerenciada pelo cliente. O identificador de chave do AWS KMS é o ARN da chave, o ID da chave, o ARN do alias ou o nome do alias da chave do KMS. Para usar uma chave do KMS em outra Conta da AWS, é necessário usar o ARN da chave ou o ARN do alias. Depois que o Aurora estiver gerenciando as credenciais de banco de dados de um cluster de banco de dados, não será possível alterar a chave do KMS usada para criptografar o segredo.

Você pode escolher outras configurações para atender às suas necessidades.

Para ter mais informações sobre as configurações disponíveis ao criar um cluster de banco de dados, consulte Configurações de clusters de bancos de dados do Aurora. Para ter mais informações sobre as configurações disponíveis ao modificar um cluster de banco de dados, consulte Configurações do Amazon Aurora.

Este exemplo cria um cluster de banco de dados e especifica que o Aurora gerencie a senha no Secrets Manager. O segredo é criptografado usando a chave do KMS fornecida pelo Secrets Manager.

Para Linux, macOS ou Unix:

aws rds create-db-cluster \ --db-cluster-identifier sample-cluster \ --engine aurora-mysql \ --engine-version 8.0 \ --master-username admin \ --manage-master-user-password

Para Windows:

aws rds create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --engine aurora-mysql ^ --engine-version 8.0 ^ --master-username admin ^ --manage-master-user-password

Para especificar que o Aurora gerencie a senha do usuário principal no Secrets Manager, defina o parâmetro ManageMasterUserPassword como true em uma das seguintes operações:

Quando você define o parâmetro ManageMasterUserPassword como true em uma dessas operações, o Aurora gera a senha do usuário principal e a gerencia durante todo o ciclo de vida no Secrets Manager.

Para criptografar o segredo, você pode especificar uma chave gerenciada pelo cliente ou usar a chave do KMS fornecida pelo Secrets Manager. Use o parâmetro MasterUserSecretKmsKeyId para especificar uma chave gerenciada pelo cliente. O identificador de chave do AWS KMS é o ARN da chave, o ID da chave, o ARN do alias ou o nome do alias da chave do KMS. Para usar uma chave do KMS em outra Conta da AWS, é necessário usar o ARN da chave ou o ARN do alias. Depois que o Aurora estiver gerenciando as credenciais de banco de dados de um cluster de banco de dados, não será possível alterar a chave do KMS usada para criptografar o segredo.

Alternar o segredo de uma senha principal do usuário para um cluster de banco de dados

Quando o Aurora alterna um segredo de senha do usuário principal, o Secrets Manager gera uma nova versão para o segredo existente. A nova versão do segredo contém a nova senha do usuário principal. O Aurora altera a senha do usuário principal do cluster de banco de dados para corresponder à nova versão do segredo.

Você pode alternar um segredo imediatamente em vez de esperar por uma alternância programada. Para alternar o segredo de uma senha do usuário principal no Secrets Manager, modifique o cluster de banco de dados . Para obter informações sobre como modificar um cluster de banco de dados, consulte Modificar um cluster de bancos de dados Amazon Aurora.

Você pode alternar o segredo de uma senha do usuário principal imediatamente com o console do RDS, a AWS CLI ou a API do RDS. A nova senha tem sempre 28 caracteres e contém pelo menos um caractere maiúsculo e um minúsculo, um número e um sinal de pontuação.

Para alternar o segredo de uma senha do usuário principal usando o console do RDS, modifique o cluster de banco de dados e selecione Rotate secret immediately (Alternar segredo imediatamente) em Settings (Configurações).

Alternar o segredo da senha do usuário principal imediatamente

Siga as instruções para modificar um cluster de banco de dados com o console do RDS em Modificar o cluster de banco de dados usando o console, a CLI e a API. Você deve escolher Apply immediately (Aplicar imediatamente) na página de confirmação.

Para alternar o segredo de uma senha do usuário principal usando a AWS CLI, utilize o comando modify-db-cluster e especifique a opção --rotate-master-user-password. Você deve especificar a opção --apply-immediately ao alternar a senha principal.

Este exemplo alterna o segredo de uma senha do usuário principal.

Para Linux, macOS ou Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --rotate-master-user-password \ --apply-immediately

Para Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --rotate-master-user-password ^ --apply-immediately

Você pode alternar o segredo de uma senha do usuário principal usando a operação ModifyDBCluster e definindo o parâmetro RotateMasterUserPassword como true. Você deve definir o parâmetro ApplyImmediately como true ao alternar a senha principal.

Visualizar os detalhes sobre um segredo para um cluster de banco de dados

É possível recuperar seus segredos usando o console (https://console.aws.amazon.com/secretsmanager/) ou a AWS CLI (comando get-secret-value do Secrets Manager).

Você pode encontrar o nome do recurso da Amazon (ARN) de um segredo gerenciado pelo Aurora no Secrets Manager com o console do RDS, a AWS CLI o ou a API do RDS.

Como ver os detalhes sobre um segredo gerenciado pelo Aurora no Secrets Manager
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Bancos de dados.

  3. Selecione o nome do cluster de banco de dados para mostrar os detalhes.

  4. Escolha a guia Configuração.

    Em Master Credentials ARN (ARN das credenciais principais), você pode ver o ARN do segredo.

    Ver os detalhes sobre um segredo gerenciado pelo Aurora no Secrets Manager

    Você pode seguir o link Manage in Secrets Manager (Gerenciar no Secrets Manager) para visualizar e gerenciar o segredo no console do Secrets Manager.

Você pode usar o comando describe-db-clusters da AWS CLI do RDS para encontrar as seguintes informações sobre um segredo gerenciado pelo Aurora no Secrets Manager:

  • SecretArn: o ARN do segredo

  • SecretStatus: o status do segredo

    Os valores de status possíveis são os seguintes:

    • creating: o segredo está sendo criado.

    • active: o segredo está disponível para uso e alternância normais.

    • rotating: o segredo está sendo alternado.

    • impaired: o segredo pode ser usado para acessar as credenciais do banco de dados, mas não pode ser alternado. Um segredo pode ter esse status se, por exemplo, as permissões forem alteradas para que o RDS não possa mais acessar o segredo nem a chave do KMS do segredo.

      Quando um segredo tem esse status, você pode corrigir a condição que o causou. Se você corrigir a condição que causou o status, ele permanecerá impaired até a próxima alternância. Como alternativa, você pode modificar o cluster de banco de dados para desativar o gerenciamento automático das credenciais do banco de dados e, depois, modificar o cluster de banco de dados novamente para ativar o gerenciamento automático das credenciais do banco de dados. Para modificar o cluster de banco de dados, use a opção --manage-master-user-password no comando modify-db-cluster.

  • KmsKeyId: o ARN da chave do KMS usada para criptografar o segredo

Especifique a opção --db-cluster-identifier para mostrar a saída de um cluster de banco de dados específico. Este exemplo mostra a saída de um segredo usado por um cluster de banco de dados.

aws rds describe-db-clusters --db-cluster-identifier mydbcluster

O exemplo a seguir mostra a saída de um segredo:

"MasterUserSecret": { "SecretArn": "arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx", "SecretStatus": "active", "KmsKeyId": "arn:aws:kms:eu-west-1:123456789012:key/0987dcba-09fe-87dc-65ba-ab0987654321" }

Quando você tiver o ARN do segredo, poderá visualizar detalhes sobre o segredo usando o comando da CLI get-secret-value do Secrets Manager.

Este exemplo mostra os detalhes do segredo na saída de exemplo anterior.

Para Linux, macOS ou Unix:

aws secretsmanager get-secret-value \ --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'

Para Windows:

aws secretsmanager get-secret-value ^ --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'

Você pode visualizar o ARN, o status e a chave do KMS de um segredo gerenciado pelo Aurora no Secrets Manager usando a operação DescribeDBClusters do RDS e definindo o parâmetro DBClusterIdentifier como um identificador de cluster de banco de dados. Detalhes sobre o segredo estão incluídos na saída.

Quando você tiver o ARN do segredo, poderá visualizar detalhes sobre o segredo usando o comando da CLI GetSecretValue do Secrets Manager.