Configurar alternância de usuários alternados para o AWS Secrets Manager - AWS Secrets Manager

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

Configurar alternância de usuários alternados para o AWS Secrets Manager

Neste tutorial, você aprenderá como configurar a alternância de usuários alternados para um segredo que contenha credenciais de banco de dados. Alternância de usuários alternados é uma estratégia de alternância em que o Secrets Manager clona o usuário e, em seguida, alterna quais credenciais do usuário são atualizadas. Essa estratégia é uma boa opção se você precisar de alta disponibilidade para seu segredo, porque um dos usuários alternados tem credenciais atuais para o banco de dados enquanto o outro está sendo atualizado. Para ter mais informações, consulte Estratégia de alternância: usuários alternados.

Para configurar a alternância de usuários alternados, você precisa de dois segredos:

  • Um segredo com as credenciais que você deseja alternar.

  • Um segundo segredo que tem credenciais de administrador.

    Esse usuário tem permissões para clonar o primeiro usuário e alterar a senha do primeiro usuário. Neste tutorial, o Amazon RDS cria esse segredo para um usuário administrador. O Amazon RDS também gerencia a alternância da senha do administrador. Para ter mais informações, consulte Alternância gerenciada para segredos do AWS Secrets Manager.

A primeira parte deste tutorial está configurando um ambiente realista. Para mostrar como funciona a alternância, este tutorial usa um exemplo de banco de dados MySQL do Amazon RDS. Por segurança, o banco de dados está em uma VPC que não permite acesso de entrada à internet. Para se conectar ao banco de dados do computador local pela Internet, você usa um bastion host, um servidor na VPC que pode se conectar ao banco de dados, mas que também permite conexões SSH pela internet. O bastion host neste tutorial é uma instância do Amazon EC2, e os grupos de segurança da instância impedem outros tipos de conexões.

Depois de concluir o tutorial, recomendamos limpar os recursos do tutorial. Não os use em um ambiente de produção.

A alternância do Secrets Manager usa uma função do AWS Lambda para atualizar o segredo e o banco de dados. Para obter mais informações sobre os custos do uso de uma função do Lambda, consulte Definição de preço.

Permissões

Para os pré-requisitos do tutorial, você precisa de permissões administrativas para sua Conta da AWS. Em uma configuração de produção, é uma prática recomendada usar funções diferentes para cada uma das etapas. Por exemplo, uma função com permissões de administrador de banco de dados criaria o banco de dados do Amazon RDS, e uma função com permissões de administrador de rede configuraria a VPC e os grupos de segurança. Para as etapas do tutorial, recomendamos que você continue usando a mesma identidade.

Para obter mais informações sobre como configurar permissões em um ambiente de produção, consulte Autenticação e controle de acesso para o AWS Secrets Manager.

Pré-requisitos

Pré-requisito A: Amazon VPC

Nesta etapa, crie uma VPC na qual você pode iniciar um banco de dados do Amazon RDS e uma instância do Amazon EC2. Em uma etapa posterior, você usará seu computador para se conectar pela Internet ao bastion e depois ao banco de dados, portanto, precisará permitir que o tráfego saia da VPC. Para fazer isso, o Amazon VPC conecta um gateway da Internet à VPC e adiciona uma rota na tabela de rotas de modo que o tráfego com destino para fora da VPC seja enviado para o gateway da Internet.

Dentro da VPC, você cria um endpoint do Secrets Manager e um endpoint do Amazon RDS. Quando você configura a alternância automática em uma etapa posterior, o Secrets Manager cria uma função de alternância do Lambda dentro da VPC para que ela possa acessar o banco de dados. A função de alternância do Lambda também chama o Secrets Manager para atualizar o segredo e chama o Amazon RDS para obter as informações de conexão do banco de dados. Ao criar endpoints dentro da VPC, você garante que as chamadas de função do Lambda para o Secrets Manager e o Amazon RDS não saiam da infraestrutura da AWS. Em vez disso, elas são encaminhadas para os endpoints dentro da VPC.

Para criar uma VPC
  1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. Escolha Criar VPC.

  3. Na página Create VPC (Criar VPC), escolha VPC and more (VPC e muito mais).

  4. Em Name tag auto-generation (Geração automática de tags de nome), em Auto-generate (Gerar automaticamente), insira SecretsManagerTutorial.

  5. Em DNS options (Opções de DNS), escolha Enable DNS hostnames e Enable DNS resolution.

  6. Escolha Criar VPC.

Para criar um endpoint do Secrets Manager na VPC
  1. No console do Amazon VPC, em Endpoints, escolha Create Endpoint (Criar endpoint).

  2. Em Endpoint settings (Configurações de endpoint), em API Name (Nome da API), insira SecretsManagerTutorialEndpoint.

  3. Em Services (Serviços), insira secretsmanager para filtrar a lista e, em seguida, selecione o endpoint do Secrets Manager na sua Região da AWS. Por exemplo, no Leste dos EUA (Norte da Virgínia), escolha com.amazonaws.us-east-1.secretsmanager.

  4. Em VPC, escolha vpc**** (SecretsManagerTutorial).

  5. Em Sub-redes, selecione todas as Availability Zones (Zonas de disponibilidade) e, em seguida, para cada uma, escolha um Subnet ID (ID de sub-rede) para incluir.

  6. Em IP address type (Tipo de endereço IP), escolha IPv4.

  7. Em Security groups (Grupos de segurança), escolha o grupo de segurança padrão.

  8. Em Policy (Política), selecione Full access.

  9. Escolha Criar endpoint.

Para criar um endpoint do Amazon RDS na VPC
  1. No console do Amazon VPC, em Endpoints, escolha Create Endpoint (Criar endpoint).

  2. Em Endpoint settings (Configurações de endpoint), em API Name (Nome da API), insira RDSTutorialEndpoint.

  3. Em Services (Serviços), insira rds para filtrar a lista e, em seguida, selecione o endpoint do Amazon RDS na sua Região da AWS. Por exemplo, no Leste dos EUA (Norte da Virgínia), escolha com.amazonaws.us-east-1.rds.

  4. Em VPC, escolha vpc**** (SecretsManagerTutorial).

  5. Em Sub-redes, selecione todas as Availability Zones (Zonas de disponibilidade) e, em seguida, para cada uma, escolha um Subnet ID (ID de sub-rede) para incluir.

  6. Em IP address type (Tipo de endereço IP), escolha IPv4.

  7. Em Security groups (Grupos de segurança), escolha o grupo de segurança padrão.

  8. Em Policy (Política), selecione Full access.

  9. Escolha Criar endpoint.

Pré-requisito B: instância do Amazon EC2

O banco de dados do Amazon RDS que você criar em uma etapa posterior estará na VPC, portanto, para acessá-lo, você precisa de um bastion host. O bastion host também está na VPC, mas em uma etapa posterior, você configura um grupo de segurança de modo que seu computador local se conecte ao bastion host com SSH.

Para criar uma instância do EC2 para um bastion host
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Escolha Instances (Instâncias) e, em seguida, escolha Launch Instances (Iniciar instâncias).

  3. Em Name and tags (Nome e etiquetas), em Name (Nome), insira SecretsManagerTutorialInstance.

  4. Em Application and OS Images (Imagens do aplicativo e do sistema operacional), mantenha o padrão Amazon Linux 2 AMI (HMV) Kernel 5.10.

  5. Em Instance type (Tipo de instância), mantenha o padrão t2.micro.

  6. Em Key pair (Par de chaves), escolha Create key pair (Criar par de chaves).

    Na caixa de diálogo Create Key Pair (Criar par de chaves), em Key pair name (Nome do par de chaves), insira SecretsManagerTutorialKeyPair e selecione Create key pair (Criar par de chaves).

    O download do par de chaves será realizado automaticamente.

  7. Em Network settings (Configurações da rede), escolha Edit (Editar), e faça o seguinte:

    1. Em VPC, escolha vpc-**** SecretsManagerTutorial.

    2. Em Auto-assign Public IP (Atribuir IP público automaticamente), selecione Enable.

    3. Em Firewall, escolha Select existing security group (Selecionar grupo de segurança existente).

    4. Em Common security groups (Grupos de segurança comuns), escolha default.

  8. Escolha Iniciar instância.

Pré-requisito C: banco de dados do Amazon RDS e um segredo do Secrets Manager para as credenciais do administrador

Nesta etapa, você cria um banco de dados do Amazon RDS MySQL e o configura de modo que o Amazon RDS crie um segredo para conter as credenciais do administrador. Em seguida, o Amazon RDS gerencia automaticamente a alternância do segredo do administrador para você. Para ter mais informações, consulte Alternância gerenciada.

Como parte da criação do seu banco de dados, você especifica o bastion host que criou na etapa anterior. Em seguida, o Amazon RDS configura grupos de segurança para que o banco de dados e a instância possam se acessar. Você adiciona uma regra ao grupo de segurança anexado à instância para permitir que seu computador local também se conecte a ela.

Para criar um banco de dados Amazon RDS com um segredo do Secrets Manager que contém as credenciais de administrador
  1. No console do Amazon RDS, escolha Create database (Criar banco de dados).

  2. Na seção Engine options (Opções de mecanismo), em Engine type (Tipo de mecanismo), escolha MySQL.

  3. Na seção Templates (Modelos), escolha Free tier.

  4. Na seção Settings (Configurações), faça o seguinte:

    1. Para DB instance identifier (Identificador de instância de banco de dados), insira SecretsManagerTutorial.

    2. Em Credential settings (Configurações de credenciais), selecione Manage master credentials in AWS Secrets Manager (Gerenciar credenciais principais em).

  5. Na seção Connectivity (Conectividade), em Computer resource (Recurso do computador), escolha Connect to an EC2 computer resource (Conectar a um recurso de computador do EC2) e, em seguida, em EC2 Instance (Instância do EC2), escolha SecretsManagerTutorialInstance.

  6. Selecione Criar banco de dados.

Pré-requisito D: Permita que seu computador local se conecte à instância do EC2

Nesta etapa, você configura a instância do EC2 criada no Pré-requisito B para permitir que seu computador local se conecte a ela. Para fazer isso, você edita o grupo de segurança que o Amazon RDS adicionou no Pré-requisito C para incluir uma regra que permite que o endereço IP do seu computador se conecte ao SSH. A regra permite que seu computador local (identificado pelo seu endereço IP atual) se conecte ao bastion host usando SSH pela Internet.

Para permitir que seu computador local se conecte à instância do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Na instância do EC2 SecretsManagerTutorialInstance, na guia Security (Segurança), em Security groups (Grupos de segurança), escolha sg-*** (ec2-rds-X).

  3. Em Input Rules (Regras de entrada), selecione Edit inbound rules (Editar regras de entrada).

  4. Selecione Add Rule (Adicionar regra) e, na regra, e faça o seguinte:

    1. Em Type (Tipo), escolha SSH.

    2. Em Source type (Tipo de fonte), selecione My IP.

Etapa 1: criar um usuário do banco de dados do Amazon RDS

Primeiro, você precisa de um usuário cujas credenciais serão armazenadas no segredo. Para criar o usuário, faça login no banco de dados do Amazon RDS com credenciais de administrador. Para simplificar, no tutorial, você cria um usuário com permissão total para um banco de dados. Em um ambiente de produção, isso não é típico. Recomendamos que você siga o princípio de privilégio mínimo.

Para se conectar ao banco de dados, você usa uma ferramenta cliente de MySQL. Neste tutorial, você usa o MySQL Workbench, uma aplicação baseada em GUI. Baixe o MySQL Workbench em Download MySQL Workbench (Baixar MySQL Workbench).

Para se conectar ao banco de dados, crie uma configuração de conexão no MySQL Workbench. Para a configuração, você precisa de algumas informações do Amazon EC2 e do Amazon RDS.

Para criar uma conexão de banco de dados no MySQL Workbench
  1. No MySQL Workbench, ao lado de MySQL Connections (Conexões do MySQL), escolha o botão (+).

  2. Na caixa de diálogo Setup New Connection (Configurar uma nova conexão), faça o seguinte:

    1. Em Connection Name (Nome da conexão), insira SecretsManagerTutorial.

    2. Em Connection Method (Método de conexão), escolha Standard TCP/IP over SSH.

    3. Na guia Parameters (Parâmetros), faça o seguinte:

      1. Em SSH Hostname (Nome do host de SSH), insira o endereço IP público da instância do Amazon EC2.

        Você pode encontrar o endereço IP no console do Amazon EC2 escolhendo a instância SecretsManagerTutorialInstance. Copie o endereço IP em Public IPv4 DNS (DNS IPv4 público).

      2. Em SSH Username (Nome de usuário do SSH), insira ec2-user.

      3. Em SSH Keyfile (Arquivo de chave do SSH), escolha o arquivo do par de chaves SecretsManagerTutorialKeyPair.pem que você baixou no pré-requisito anterior.

      4. Em MySQL Hostname (Nome do host do MySQL), insira o endereço do endpoint do Amazon RDS.

        Você pode encontrar o endereço do endpoint no console do Amazon RDS escolhendo a instância do banco de dados secretsmanagertutorialdb. Copie o endereço em Endpoint.

      5. Em Username (Nome do usuário), insira admin.

    4. Escolha OK.

Para recuperar a senha do administrador
  1. No Console do Amazon RDS, navegue até o seu banco de dados.

  2. Na guia Configuration (Configuração), em Master Credentials ARN (ARN das credenciais principais), escolha Manage in Secrets Manager (Gerenciar no Secrets Manager).

    O Console do Secrets Manager é aberto.

  3. Na página de detalhes do seu segredo, escolha Retrieve secret value (Recuperar valor do segredo).

  4. A senha aparece na seção Secret value (Valor do segredo).

Para criar um usuário de banco de dados
  1. No MySQL Workbench, escolha a conexão SecretsManagerTutorial.

  2. Digite a senha de administrador que você recuperou do segredo.

  3. Em MySQL Workbench, na janela Query (Consultar), insira os seguintes comandos (incluindo uma senha forte) e, depois, escolha Execute (Executar). A função de alternância testa o segredo atualizado usando SELECT, portanto, appuser deve ter esse privilégio, no mínimo.

    CREATE DATABASE myDB; CREATE USER 'appuser'@'%' IDENTIFIED BY 'EXAMPLE-PASSWORD'; GRANT SELECT ON myDB . * TO 'appuser'@'%';

    Na janela Output (Saída), você verá os comandos com êxito.

Etapa 2: criar um segredo para as credenciais do usuário

Em seguida, crie um segredo para armazenar as credenciais do usuário que acabou de criar. Este é o segredo que você estará alternando. Você ativa a alternância automática e, para indicar a estratégia de usuários alternados, você escolhe um segredo de superusuário separado que tenha permissão para alterar a senha do primeiro usuário.

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

  2. Selecione Armazenar um novo segredo.

  3. Na página Choose secret type (Selecionar tipo de segredo), faça o seguinte:

    1. Em Secret type (Tipo de segredo), escolha Credentials for Amazon RDS database (Credenciais para o banco de dados do Amazon RDS).

    2. Em Credentials (Credenciais), insira o nome do usuário appuser e a senha inserida para o usuário do banco de dados que você criou usando o MySQL Workbench.

    3. Em Database (Banco de dados), escolha secretsmanagertutorialdb.

    4. Escolha Próximo.

  4. Na página Configure secret (Configurar segredo) , em Secret name (Nome de segredo), insira SecretsManagerTutorialAppuser e, depois, escolha Next (Próximo).

  5. Na página Configure rotation (Configurar alternância), faça o seguinte:

    1. Ative a Automatic rotation (Alternância automática).

    2. Em Rotation schedule (Programação da alternância), defina uma programação de Days (Dias):2 dias com Duration (Duração): 2h. Mantenha Rotate immediately (Alternar imediatamente) selecionado.

    3. Em Rotation function (Função de alternância), escolha Create a rotation function (Criar uma função de alternância), e, em seguida, para nome da função, insira tutorial-alternating-users-rotation.

    4. Em Estratégia de alternância, escolha Usuários alternados e, em Segredo da credencial do administrador, escolha o segredo com o nome rds!cluster... e cuja Descrição inclui o nome do banco de dados que você criou neste tutorial secretsmanagertutorial, por exemplo, Secret associated with primary RDS DB instance: arn:aws:rds:Region:AccountId:db:secretsmanagertutorial.

    5. Escolha Próximo.

  6. Na página Review (Análise), escolha Store (Armazenar).

    O Secrets Manager retorna à página de detalhes do segredo. Na parte superior da página, você pode ver o status da configuração de alternância. O Secrets Manager usa o CloudFormation para criar recursos como a função de alternância do Lambda e uma função de execução que executa a função Lambda. Quando o CloudFormation termina, o banner muda para Secret scheduled for rotation (Segredo programado para alternância). A primeira alternância está completa.

Etapa 3: testar o segredo alternado

Agora que o segredo está alternado, você pode verificar se o segredo contém credenciais válidas. A senha no segredo mudou a partir das credenciais originais.

Para recuperar a nova senha do segredo
  1. Abra o console do Secrets Manager em https://console.aws.amazon.com/secretsmanager/.

  2. Escolha Secrets (Segredos) e, em seguida, escolha o segredo SecretsManagerTutorialAppuser.

  3. Na página Secret details (Detalhes do segredo), role para baixo e escolha Retrieve secret value (Recuperar valor do segredo).

  4. Na tabela Key/value (Chave/valor), copie o Secret value (Valor do segredo) para password.

Para testar as credenciais
  1. No MySQL Workbench, clique com o botão direito do mouse na conexão SecretsManagerTutorial e, depois, escolha Edit Connection (Editar conexão).

  2. Na caixa de diálogo Manage Server Connections (Gerenciar conexões do servidor), em Username (Nome do usuário), insira appuser e, depois, escolha Close (Fechar).

  3. De volta ao MySQL Workbench, escolha a conexão SecretsManagerTutorial.

  4. Na caixa de diálogo Open SSH Connection (Abrir conexão de SSH), em Password (Senha), cole a senha que você recuperou do segredo e escolha OK.

    Se as credenciais forem válidas, o MySQL Workbench será aberto na página de design do banco de dados.

Isso mostra que a alternância secreta é bem-sucedida. As credenciais no segredo foram atualizadas, e ele é uma senha válida para se conectar ao banco de dados.

Etapa 4: Limpar os recursos

Se você quiser tentar outra estratégia de alternância, a single user rotation (alternância de usuários alternados), pule a limpeza de recursos e vá para Configurar a alternância de usuário único para o AWS Secrets Manager.

Ou então, para evitar possíveis cobranças e remover a instância do EC2 que tem acesso à Internet, exclua os seguintes recursos criados neste tutorial e seus pré-requisitos:

  • Instância de bancos de dados do Amazon RDS. Para obter instruções, consulte Deleting a DB instance (Como excluir uma instância de banco de dados) no Amazon RDS User Guide (Guia do usuário do Amazon RDS).

  • Instância do Amazon EC2. Para obter instruções, consulte Encerrar uma instância, no Guia do usuário do Amazon EC2.

  • Segredo SecretsManagerTutorialAppuser do Secrets Manager. Para obter instruções, consulte Exclusão de um segredo do AWS Secrets Manager.

  • Endpoint do Secrets Manager. Para obter instruções, consulte Delete a VPC endpoint (Excluir um endpoint da VPC) no AWS PrivateLink Guide (Guia da ).

  • VPC endpoint. Para obter instruções, consulte Delete your VPC (Excluir sua VPC) no AWS PrivateLink Guide (Guia da ).

Próximas etapas