> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Secrets

> Aprenda a armazenar chaves de API e outras informações sensíveis com segurança como variáveis de ambiente criptografadas.

A ferramenta Secrets armazena e criptografa **secrets**, as informações sensíveis do seu Replit App, como chaves de API, tokens de autenticação e strings de conexão de banco de dados.

Quando você adiciona um secret, a ferramenta automaticamente criptografa os dados e os disponibiliza para o seu Replit App como uma variável de ambiente.
Essa abordagem permite eliminar a codificação direta de secrets no seu código e reduzir o risco de expô-los.

<Frame>
  <iframe width="100%" height="400" src="https://www.youtube.com/embed/qE_2Z8ReyWI" title="Ferramenta Secrets do Project Editor" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />
</Frame>

Codificar secrets diretamente no seu código pode levar à exposição acidental nos seguintes cenários:

* Compartilhar seu código com outras pessoas por meio de um Replit App público ou por cópia e colagem
* Enviar seu código para controle de versão em um repositório público
* Fazer transmissão ao vivo ou compartilhar a tela com seu código

Use a ferramenta Secrets para compartilhar seu código com confiança sem se preocupar em expor credenciais.

<Frame caption="Ferramenta Secrets do Project Editor">
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workspace/secrets-tool.png?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=5e5454a3daaa5fc3f30d823e6c8c3c79" alt="captura de tela da ferramenta Secrets" width="2276" height="1136" data-path="images/workspace/secrets-tool.png" />
</Frame>

## Funcionalidades

A ferramenta Secrets inclui as seguintes funcionalidades:

* **Criptografia de ponta a ponta**: Proteja automaticamente seus dados usando criptografia AES-256 em repouso e criptografia TLS em trânsito
* **Secrets no nível do app**: Armazene e gerencie secrets específicos de um Replit App
* **Secrets no nível da conta**: Armazene e gerencie secrets que podem ser disponibilizados em todos os seus Replit Apps
* **Acesso por variáveis de ambiente**: Acesse seus secrets no código usando variáveis de ambiente
* **Acesso colaborativo**: Compartilhe secrets com colaboradores e membros da equipe

## Uso

<Note>
  Secrets estão disponíveis para todos os tipos de implantação, exceto Implantações Estáticas.
</Note>

Você pode acessar a ferramenta Secrets no Project Editor.

<Accordion title="Como acessar Secrets">
  Na **barra lateral de ferramentas** à esquerda:

  1. Selecione <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-all-tools-button.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=579643854fb13c402de516695e52c554" alt="Ícone de todas as ferramentas" width="16" height="16" data-path="images/icons/workspace-all-tools-button.svg" /> **All tools** para ver a lista de ferramentas do Project Editor.
  2. Selecione <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/lock.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=0ebba01cdc579bafd52c21b5053788bc" alt="Ícone de Secrets" width="16" height="16" data-path="images/icons/lock.svg" /> **Secrets**.

  Na **barra de pesquisa**:

  1. Selecione a <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-search-icon.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=d3feed840da2d19e1ee4873d137114dc" alt="ícone de lupa" width="16" height="16" data-path="images/icons/workspace-search-icon.svg" /> lupa na parte superior para abrir a ferramenta de pesquisa.
  2. Digite "Secrets" para localizar a ferramenta e selecione-a nos resultados.
</Accordion>

### Gerenciar Secrets do App

Você pode gerenciar os secrets no nível do app na aba **App Secrets** no painel **Secrets**.
Essa aba exibe uma lista de todos os secrets associados ao seu Replit App.

<Accordion title="Adicionar Secrets do App">
  Para adicionar um secret:

  1. Selecione **New Secret**.
  2. Insira uma **Key**, o nome do secret, e um **Value**, o próprio secret.
  3. Selecione **Add Secret** para salvar a entrada.
</Accordion>

<Accordion title="Editar Secrets do App">
  Para editar um secret:

  1. Selecione o menu <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" alt="ícone de três pontos verticais" height="16" width="16" data-path="images/icons/vertical-dots.svg" /> de três pontos verticais ao lado do secret.
  2. Selecione **Edit** no menu contextual.
  3. Atualize o texto no campo **Key** ou **Value** e selecione **Update Secret** para salvar as alterações ou **Cancel** para descartá-las.

  Você também pode modificar a lista completa de Secrets do App selecionando **Edit as JSON** ou **Edit as .env** na parte inferior da aba.
</Accordion>

<Accordion title="Visualizar Secrets do App">
  Para visualizar um secret, selecione o ícone de <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=ef4c8029c7e1a366680367b9aa573029" alt="ícone de olho" width="16" height="16" data-path="images/icons/eye.svg" /> olho ao lado do secret.

  Para ocultar o secret, selecione o ícone de <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye-slash.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=cccbc60ff55d519c89c7b4d2a3e0ee4a" alt="ícone de olho com barra" width="16" height="16" data-path="images/icons/eye-slash.svg" /> olho com barra.
</Accordion>

<Accordion title="Excluir Secrets do App">
  Para excluir um secret, selecione o menu <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" alt="ícone de três pontos verticais" height="16" width="16" data-path="images/icons/vertical-dots.svg" /> de três pontos verticais ao lado do secret e selecione **Delete**.
</Accordion>

### Gerenciar Secrets da Conta

Você pode gerenciar os secrets no nível da conta na aba **Account Secrets** no painel **Secrets**.
Essa aba exibe uma lista apenas dos secrets associados à sua conta Replit.

<Accordion title="Adicionar Secrets da Conta">
  Para adicionar um secret no nível da conta:

  1. Navegue até a aba **Account Secrets**.
  2. Selecione o ícone <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/settings-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=27601119959a9349e102c44c2adbd398" alt="ícone de engrenagem" width="16" height="16" data-path="images/icons/settings-icon.svg" /> para abrir **Settings** e gerenciar secrets no nível da conta.
  3. Selecione **New Secret** para adicionar um secret.
  4. Insira uma **Key**, o nome do secret, e um **Value**, o próprio secret.
  5. Selecione **Save** para salvar a entrada.
</Accordion>

<Accordion title="Editar Secrets da Conta">
  Para editar um secret:

  1. Selecione o ícone de <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/pencil-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=09de925e41efd3d1cfa199737639b5a6" alt="ícone de lápis" width="16" height="16" data-path="images/icons/pencil-icon.svg" /> lápis ao lado do secret.
  2. Atualize o texto no campo **Key** ou **Value** e selecione **Save** para salvar as alterações ou **Cancel** para descartá-las.
</Accordion>

<Accordion title="Visualizar Secrets da Conta">
  Para visualizar um secret, selecione o ícone de <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=ef4c8029c7e1a366680367b9aa573029" alt="ícone de olho" width="16" height="16" data-path="images/icons/eye.svg" /> olho ao lado do secret.

  Para ocultar o secret, selecione o ícone de <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye-slash.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=cccbc60ff55d519c89c7b4d2a3e0ee4a" alt="ícone de olho com barra" width="16" height="16" data-path="images/icons/eye-slash.svg" /> olho com barra.
</Accordion>

<Accordion title="Vincular Secrets da Conta">
  Para usar um secret no nível da conta em um Replit App, você deve vinculá-lo ao app.
  Para vincular um secret no nível da conta:

  1. Navegue até a aba **App Secrets**.
  2. Selecione a caixa de seleção à esquerda do secret.
  3. Selecione **Link to this App**.

  Para desvincular um secret:

  1. Navegue até a aba **App Secrets**.
  2. Selecione o menu <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" width="16" height="16" alt="ícone de três pontos verticais" data-path="images/icons/vertical-dots.svg" /> de três pontos verticais ao lado do secret.
  3. Selecione **Unlink**.
</Accordion>

<Accordion title="Excluir Secrets da Conta">
  1. Selecione o ícone de <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/pencil-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=09de925e41efd3d1cfa199737639b5a6" alt="ícone de lápis" width="16" height="16" data-path="images/icons/pencil-icon.svg" /> lápis ao lado do secret.
  2. Selecione **Delete**.
</Accordion>

### Acessar secrets no seu código

<CodeGroup>
  ```python Python theme={null}
  import os
  print(os.getenv("MY_SECRET"))
  ```

  ```javascript JavaScript theme={null}
  console.log(process.env.MY_SECRET);
  ```

  ```java Java theme={null}
  System.out.println(System.getenv("MY_SECRET"))
  ```

  ```csharp C# theme={null}
  using System;
  Console.WriteLine(Environment.GetEnvironmentVariable("MY_SECRET"));
  ```

  ```go Go theme={null}
  package main
  import (
      "fmt"
      "os"
  )
  func main() {
      fmt.Println(os.Getenv("MY_SECRET"))
  }
  ```

  ```ruby Ruby theme={null}
  puts ENV["MY_SECRET"]
  ```
</CodeGroup>

### Gerenciar a visibilidade dos secrets

A visibilidade dos secrets depende do seu acesso a um Replit App e se você é o autor dele.

Você pode usar uma das opções para compartilhar seu Replit App:

* **Multiplayer**: Convide usuários do Replit para colaborar em tempo real
* **Cover page**: Exiba uma prévia do seu Replit App com a opção de remixá-lo
* **Remix**: Torne o seu Replit App individual ou da organização público para que outras pessoas possam criar a própria versão

A tabela a seguir mostra a visibilidade do nome e do valor dos secrets nos diferentes cenários:

| Método de Acesso   | Quem                                                    | Pode Ver Nomes | Pode Ver Valores |
| ------------------ | ------------------------------------------------------- | -------------- | ---------------- |
| Multiplayer        | Colaborador Multiplayer                                 | ✓              | ✓                |
| Multiplayer        | Membro da organização (função de Proprietário)          | ✓              | ✓                |
| Multiplayer        | Membro da organização (sem função de Proprietário)      | ✓              |                  |
| Cover Page         | Qualquer visitante                                      |                |                  |
| Remix              | Proprietário/colaborador remixando o próprio Replit App | ✓              | ✓                |
| Remix              | Não proprietário/colaborador remixando Replit App       | ✓              |                  |
| Remix              | Qualquer pessoa remixando pela cover page               | ✓              |                  |
| Organization Remix | Membro da organização com função de Proprietário        | ✓              | ✓                |
| Organization Remix | Membro da organização sem função de Proprietário        | ✓              |                  |

<Warning>
  Membros da organização sem a função de Proprietário não podem visualizar os valores dos secrets em um Replit App, mas podem acessá-los imprimindo as variáveis de ambiente.
</Warning>

## Secrets relacionados ao banco de dados

Quando você adiciona o banco de dados da Replit, o Project Editor cria automaticamente o seguinte secret:

| Secret         | Descrição                               |
| -------------- | --------------------------------------- |
| `DATABASE_URL` | String de conexão do banco de dados SQL |

<Info>
  Bancos de dados de desenvolvimento Neon legados também podem incluir `PGHOST`, `PGUSER`, `PGPASSWORD`, `PGDATABASE` e `PGPORT`. Os bancos de dados de desenvolvimento atuais da Replit usam `DATABASE_URL` em vez disso.
</Info>

Para visualizar todas as variáveis de ambiente no seu Replit App, execute `printenv` na ferramenta Shell do Project Editor ou imprima-as a partir do seu código.

## Variáveis de ambiente predefinidas

A Replit define automaticamente as seguintes variáveis de ambiente que você pode acessar no seu app:

| Variável de Ambiente | Descrição                                                                                              |
| -------------------- | ------------------------------------------------------------------------------------------------------ |
| `REPLIT_DOMAINS`     | Lista separada por vírgulas de todos os domínios associados ao seu Replit App                          |
| `REPLIT_USER`        | Nome de usuário do editor atual, que pode variar em sessões Multiplayer                                |
| `REPLIT_DEPLOYMENT`  | Definido como `1` se o código estiver sendo executado em um app publicado; não definido caso contrário |
| `REPLIT_DEV_DOMAIN`  | URL de desenvolvimento no domínio `replit.dev`, que é diferente da URL de Implantação                  |

Essas variáveis não estão listadas na ferramenta Secrets, mas você pode acessá-las no seu código usando o objeto `os.environ` ou executando `printenv` no Shell.
