Mover credenciais de banco de dados codificadas para o AWS Secrets Manager - AWS Secrets Manager

Mover credenciais de banco de dados codificadas para o AWS Secrets Manager

Caso você tenha credenciais de banco de dados em texto simples no código, recomendamos mover as credencias para o Secrets Manager e alterná-las imediatamente. Mover as credenciais para o Secrets Manager resolverá o problema de deixar as credenciais visíveis para qualquer pessoa que visualizar o código, porque, a partir de então, seu código recuperará as credenciais diretamente do Secrets Manager. Alternar o segredo atualizará a senha e revogará a senha codificada atual para que não seja mais válida.

Para bancos de dados do Amazon RDS, Amazon Redshift e Amazon DocumentDB, use as etapas desta página para mover credenciais codificadas para o Secrets Manager. Para outros tipos de credenciais e outros segredos, consulte Mover segredos codificados para o AWS Secrets Manager.

Antes de começar, é necessário determinar quem precisa acessar o segredo. Recomendamos usar dois perfis do IAM para gerenciar a permissão para seu segredo:

  • Um perfil que gerencia os segredos da organização. Para mais informações, consulte Permissões de administrador do Secrets Manager. Você criará e alternará o segredo usando esse perfil.

  • Um perfil que pode usar as credenciais no tempo de execução, por exemplo, neste tutorial, RoleToRetrieveSecretAtRuntime. Seu código assume esse perfil para recuperar o segredo.

Etapa 1: criar o segredo

A primeira etapa é copiar as credenciais codificadas existentes para o Secrets Manager. Para obter a latência mais baixa, armazene o segredo na mesma região do banco de dados.

Para criar um segredo

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

  2. Selecione Store a new secret (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 o tipo de credenciais de banco de dados a armazenar:

      • Bancos de dados do Amazon RDS

      • Amazon DocumentDB database (Bancos de dados do Amazon DocumentDB)

      • Cluster do Amazon Redshift.

      • Para outros tipos de segredos, consulte Replace hardcoded secrets (Substituir segredos codificados).

    2. Em Credentials (Credenciais), insira as credenciais codificadas existentes para o banco de dados.

    3. Em Encryption key (Chave de criptografia), escolha aws/secretsmanager para usar a Chave gerenciada pela AWS para Secrets Manager. Não há custo para o uso dessa chave. Você também pode usar sua própria chave gerenciada pelo cliente, por exemplo, para acessar o segredo de outra Conta da AWS.

    4. Em Database (Banco de dados), escolha seu banco de dados.

    5. Escolha Next (Próximo).

  4. Na página Configure secret (Configurar segredo), faça o seguinte:

    1. Insira um Secret name (Nome de segredo) descritivo e uma Description (Descrição).

    2. Em Resource permissions (Permissões do recurso), escolha Edit permissions (Editar permissões). Cole a política a seguir para permitir que RoleToRetrieveSecretAtRuntime recupere o segredo, e escolha Save (Salvar).

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/RoleToRetrieveSecretAtRuntime" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
    3. Na parte inferior da página, selecione Próximo.

  5. Na página Configure rotation (Configurar alternância), mantenha a alternância desligada por enquanto. Você a ativará depois. Escolha Next (Próximo).

  6. Na página Review (Revisar), revise os detalhes do segredo e escolha Store (Armazenar).

Etapa 2: atualizar o código

Seu código deve assumir o perfil do IAM RoleToRetrieveSecretAtRuntime para conseguir recuperar o segredo. Para obter mais informações, consulte Switching to an IAM role (AWS API) (Alternância para um perfil do IAM [API da AWS]).

Em seguida, atualize o código para recuperar o segredo do Secrets Manager usando o código de exemplo fornecido pelo Secrets Manager.

Como encontrar o código de exemplo

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

  2. Na página Secrets (Segredos), escolha o segredo.

  3. Role para baixo até Sample code (Código de exemplo). Escolha a linguagem e copie o trecho de código.

Em sua aplicação, remova as credenciais codificadas e cole o trecho de código. Conforme o idioma do código, talvez seja necessário adicionar uma chamada ao perfil ou método no trecho de código.

Teste se sua aplicação funciona conforme o esperado com o segredo no lugar das credenciais codificadas.

Etapa 3: alternar o segredo

A última etapa é revogar as credenciais codificadas alternando o segredo. Alternância é o processo de atualizar periodicamente um segredo. Quando o Secrets Manager alterna um segredo, você atualiza as credenciais tanto no segredo como no banco de dados. O Secrets Manager pode alternar automaticamente um segredo para você em uma programação que você estabelecer.

Parte da configuração da alternância é garantir que a função de alternância do Lambda possa acessar o Secrets Manager e seu banco de dados. Quando você ativa a alternância automática, o Secrets Manager cria a função de alternância do Lambda na mesma VPC do banco de dados para acessar o banco de dados pela rede. A função de alternância do Lambda também deve conseguir fazer chamadas ao Secrets Manager para atualizar o segredo. Recomendamos criar um endpoint do Secrets Manager na VPC para que as chamadas do Lambda ao Secrets Manager não saiam da infraestrutura da AWS. Para mais informações, consulte Acesso à rede para a função de alternância. Para obter instruções, consulte Uso de um endpoint da VPC do AWS Secrets Manager.

Para ativar a alternância

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

  2. Na página Secrets (Segredos), escolha o segredo.

  3. Na página Secret details (Detalhes do segredo), na seção Rotation configuration (Configuração da alternância), escolha Edit rotation (Editar alternância).

  4. Na caixa de diálogo Edit rotation configuration (Editar configuração da alternância), siga estas etapas:

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

    2. Em Rotation schedule (Programação de alternância), insira a sua programação no fuso horário UTC.

    3. Escolha Rotate immediately when the secret is stored (Alternar imediatamente quando o segredo for armazenado) para alternar o segredo assim que suas alterações forem salvas.

    4. Em Rotation function (Função de alternância), escolha Create a new Lambda function (Criar uma nova função Lambda) e insira um nome para a nova função. O Secrets Manager adiciona "SecretsManager" no início do nome da função.

    5. Em Use separate credentials to rotate this secret (Usar credenciais separadas para alternar este segredo), escolha No (Não).

    6. Escolha Save (Salvar).

Para verificar se o segredo foi alternado

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

  2. Escolha Secrets (Segredos) e escolha o segredo.

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

    Se o valor do segredo foi alterado, a alternância funcionou. Se o valor do segredo não foi alterado, é necessário usar o Solucionar problemas de alternância observando o CloudWatch Logs para a função de alternância.

Teste se a aplicação funciona conforme o esperado com o segredo alternado.

Next steps (Próximas etapas)

Depois de remover um segredo codificado de seu código, há algumas ideias a serem consideradas em seguida: