Guias
Onde guardar configurações e segredos
Separe configurações comuns de credenciais e escolha onde armazená-las no desenvolvimento local, na CI e em produção, de acordo com quem precisa acessá-las.
Qual formato você deve escolher?
Escolha conforme a função de cada arquivo no fluxo de trabalho.
- Padrões compartilhados → Versione exemplos sem valores secretos
- Configurações locais de cada pessoa → Use .env se a ferramenta aceitar e deixe o arquivo fora do Git
- Credenciais de CI → Use o armazenamento de segredos do provedor e restrinja o acesso
- Produção e contêineres → Use o recurso de segredos da plataforma e conceda acesso apenas quando necessário
- Possível vazamento → Revogue ou troque a credencial; apagar o arquivo não basta
Separe configurações de segredos
Trate de forma diferente configurações não sensíveis, como URLs de serviços e opções de recursos, e credenciais, como senhas, chaves de API e chaves privadas. Não inclua credenciais reais no código nem envie arquivos com esses dados para um repositório compartilhado. Primeiro, confira quais mecanismos de configuração o aplicativo aceita.
Mantenha arquivos .env locais fora do Git
Se as ferramentas aceitarem, guarde os valores locais de cada pessoa em um arquivo .env e compartilhe um .env.example com apenas nomes de variáveis e valores fictícios. Inclua o .env real no .gitignore e confirme que o Git já não o está rastreando. Uma regra de exclusão do Git não é um armazenamento seguro e não remove valores do histórico existente.
Use o armazenamento de segredos da CI com permissões mínimas
Em sistemas de CI, como o GitHub Actions, cadastre credenciais pelo recurso de segredos do provedor, em vez de colocá-las nos arquivos de workflow. Restrinja o acesso aos repositórios, ambientes e tarefas que precisam delas, conceda aos tokens apenas as permissões necessárias e evite imprimir os valores. A ocultação nos logs não garante que todo valor transformado ou saída de comando ficará escondido.
Disponibilize segredos pelo ambiente de produção
Em produção, prefira o armazenamento de segredos do provedor de hospedagem ou da nuvem e limite quais implantações e serviços podem ler cada valor. O Docker Compose pode montar segredos como arquivos para serviços autorizados explicitamente; recursos e limitações variam conforme a plataforma, então consulte a documentação do ambiente usado. Quando houver suporte, considere credenciais de curta duração, como OIDC, em vez de chaves válidas por muito tempo.
Revogue ou troque credenciais após uma exposição
Se um segredo pode ter aparecido em um commit, log de CI ou conversa, apagar a cópia visível não é suficiente. Primeiro, revogue ou troque a chave ou o token afetado; depois, examine os logs de acesso e os possíveis usos. Em seguida, trate o histórico do repositório e os logs conforme necessário e reforce os controles de acesso para evitar que aconteça de novo.
Formatos a considerar
.env
Indicado para: Carregar valores locais em ferramentas compatíveis com arquivos .env
Menos indicado para: Compartilhar ou armazenar segredos sem proteção
.gitignore
Indicado para: Evitar que arquivos .env locais ainda não rastreados sejam adicionados por engano
Menos indicado para: Revogar segredos ou apagar do histórico valores já rastreados pelo Git
Antes de exportar
- .env e .gitignore, por si só, não protegem segredos; confira o rastreamento do Git, os logs de CI, os backups e o armazenamento do ambiente de execução.
- A ocultação pode não esconder valores transformados nem todas as saídas de comandos.
- Se houver suspeita de vazamento, revogue ou troque a credencial; não basta apagar o arquivo.
Guias
Referências e especificações
- The Twelve-Factor App — The Twelve-Factor App: Config
- Git Project — gitignore — Specifies intentionally untracked files to ignore
- Docker — Manage sensitive data securely with secrets
- Docker — Best practices for working with environment variables in Docker Compose
- GitHub — Using secrets in GitHub Actions
- GitHub — Secure use reference