

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

# Mova as credenciais codificadas do banco de dados para AWS Secrets Manager
<a name="hardcoded-db-creds"></a>

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 [Mova segredos codificados para AWS Secrets Manager](hardcoded.md).

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 obter mais informações, consulte [Permissões de administrador do Secrets Manager](auth-and-access.md#auth-and-access_admin). Você criará e alternará o segredo usando esse perfil.
+ Uma função que pode usar as credenciais em tempo de execução, *RoleToRetrieveSecretAtRuntime* neste tutorial. Seu código assume esse perfil para recuperar o segredo.

**Topics**
+ [Etapa 1: criar o segredo](#hardcoded-db-creds_step2)
+ [Etapa 2: atualizar o código](#hardcoded-db-creds_step3)
+ [Etapa 3: alternar o segredo](#hardcoded-db-creds_step5)
+ [Próximas etapas](#hardcoded-db-creds_nextsteps)

## Etapa 1: criar o segredo
<a name="hardcoded-db-creds_step2"></a>

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. 

**Como criar um segredo**

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

1. Selecione **Armazenar um novo segredo**.

1. 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)
      + **Data warehouse do Amazon Redshift**.
      + Para outros tipos de segredos, consulte [Replace hardcoded secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html) (Substituir segredos codificados).

   1. Em **Credenciais**, insira as credenciais codificadas existentes para o banco de dados.

   1. 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](auth-and-access_examples_cross.md). Para obter mais informações sobre os custos do uso de uma chave gerenciada pelo cliente, consulte [Preços](intro.md#asm_pricing).

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

   1. Escolha **Próximo**.

1. 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). 

   1. Em **Resource permissions** (Permissões do recurso), escolha **Edit permissions** (Editar permissões). Cole a política a seguir, que *RoleToRetrieveSecretAtRuntime* permite recuperar o segredo, e escolha **Salvar**.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/RoleToRetrieveSecretAtRuntime"
                  },
                  "Action": "secretsmanager:GetSecretValue",
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. Na parte inferior da página, selecione a opção **Próximo**.

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

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

## Etapa 2: atualizar o código
<a name="hardcoded-db-creds_step3"></a>

Seu código deve assumir a função *RoleToRetrieveSecretAtRuntime* do IAM para poder recuperar o segredo. Para obter mais informações, consulte [Mudar para uma função do IAM (AWS API)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html).

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/](https://console.aws.amazon.com/secretsmanager/).

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

1. 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 name="hardcoded-db-creds_step5"></a>

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 que você crie um endpoint do Secrets Manager na VPC para que as chamadas do Lambda para o Secrets Manager não saiam da infraestrutura. AWS Para instruções, consulte [Usando um AWS Secrets Manager VPC endpoint](vpc-endpoint-overview.md).

**Para ativar a alternância**

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

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

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

1. 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).

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

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

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

   1. Em **Estratégia de alternância**, escolha **Usuário único**.

   1. Escolha **Salvar**.

**Para verificar se o segredo foi alternado**

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

1. Escolha **Secrets** (Segredos) e escolha o segredo.

1. 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 secreto não mudou, você precisa [Solucionar problemas de alternância](troubleshoot_rotation.md) examinar os CloudWatch registros da função de rotação.

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

## Próximas etapas
<a name="hardcoded-db-creds_nextsteps"></a>

Depois de remover um segredo codificado de seu código, há algumas ideias a serem consideradas em seguida:
+ É possível melhorar a perfomance e reduzir custos armazenando segredos em cache. Para obter mais informações, consulte [Obtenha segredos de AWS Secrets Manager](retrieving-secrets.md).
+ É possível escolher uma programação de alternância diferente. Para obter mais informações, consulte [Programação de alternância](rotate-secrets_schedule.md).
+ [Para encontrar segredos codificados em seus aplicativos Java e Python, recomendamos o Amazon Reviewer. CodeGuru ](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)