

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 segredos codificados para AWS Secrets Manager
<a name="hardcoded"></a>

Caso você tenha segredos de texto simples no código, recomendamos alterná-los e armazená-los no Secrets Manager. Transferir o segredo para o Secrets Manager resolverá o problema de deixar o segredo visível para qualquer pessoa que visualizar o código, porque, a partir de então, seu código recuperará o segredo diretamente do Secrets Manager. Alternar o segredo revogará o segredo codificado atual para que não seja mais válido. 

Para obter segredos de credenciais de banco de dados, consulte [Mova as credenciais codificadas do banco de dados para AWS Secrets Manager](hardcoded-db-creds.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 o segredo em tempo de execução, por exemplo, neste tutorial que você usa*RoleToRetrieveSecretAtRuntime*. Seu código assume esse perfil para recuperar o segredo. Neste tutorial, você concede ao perfil apenas a permissão para recuperar um valor de segredo e concede permissão usando a política de recursos do segredo. Para conhecer as alternativas, consulte [Próximas etapas](#hardcoded_step-next).

**Topics**
+ [Etapa 1: criar o segredo](#hardcoded_step-1)
+ [Etapa 2: atualizar o código](#hardcoded_step-2)
+ [Etapa 3: atualizar o segredo](#hardcoded_step-3)
+ [Próximas etapas](#hardcoded_step-next)

## Etapa 1: criar o segredo
<a name="hardcoded_step-1"></a>

A primeira etapa é copiar o segredo codificado existente para o Secrets Manager. Se o segredo estiver relacionado a um AWS recurso, armazene-o na mesma região do recurso. Caso contrário, armazene-o na região com a menor latência para seu caso de uso.

**Para criar um segredo (console)**

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 **Tipo de segredo**, escolha **Outro tipo de segredo**.

   1. Digite seu segredo como **pares de chave-valor** ou em **texto não criptografado**. Alguns exemplos:

------
#### [ API key ]

      Insira como key/value pares:

      **ClientID** : *my\$1client\$1id*

      **ClientSecret** : *wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY*

------
#### [ OAuth token ]

      Insira como texto sem formatação:

      *AKIAI44QH8DHBEXAMPLE*

------
#### [ Digital certificate ]

      Insira como texto sem formatação:

      ```
      -----BEGIN CERTIFICATE-----
      EXAMPLE
      -----END CERTIFICATE-----
      ```

------
#### [ Private key ]

      Insira como texto sem formatação:

      ```
      –--- BEGIN PRIVATE KEY ----
      EXAMPLE
      ––-- END PRIVATE KEY –---
      ```

------

   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. Escolha **Próximo**.

1. Na página **Choose secret type** (Selecionar tipo de 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 ligada. 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_step-2"></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 de programação e copie o trecho de código.

Em sua aplicação, remova o segredo codificado 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 do segredo codificado.

## Etapa 3: atualizar o segredo
<a name="hardcoded_step-3"></a>

A última etapa é revogar e atualizar o segredo codificado. Consulte a origem do segredo para encontrar instruções para revogá-lo e atualizá-lo. Por exemplo, talvez seja necessário desativar o segredo atual e gerar um novo segredo.

**Para atualizar o segredo com o novo valor**

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) e depois **Edit** (Editar).

1. Atualize o segredo e escolha **Save** (Salvar). 

Em seguida, teste se a aplicação funciona conforme o esperado com o novo segredo.

## Próximas etapas
<a name="hardcoded_step-next"></a>

Depois de remover um segredo codificado de seu código, há algumas ideias a serem consideradas em seguida:
+ [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)
+ É 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).
+ Para segredos acessados de várias regiões, você pode replicar seu segredo para melhorar a latência. Para obter mais informações, consulte [Replique AWS Secrets Manager segredos em todas as regiões](replicate-secrets.md).
+ Neste tutorial, você concedeu *RoleToRetrieveSecretAtRuntime* somente a permissão para recuperar o valor secreto. Para conceder mais permissões ao perfil, por exemplo, para obter metadados sobre o segredo ou para visualizar uma lista de segredos, consulte [Políticas baseadas em recursos](auth-and-access_resource-policies.md). 
+ Neste tutorial, você concedeu permissão *RoleToRetrieveSecretAtRuntime* usando a política de recursos do segredo. Para saber outras formas de conceder permissão, consulte [Políticas baseadas em identidade](auth-and-access_iam-policies.md).