Skip to content

Configuração & segredos

Como cada serviço é configurado por ambiente e como os segredos são tratados — do dev (Docker Compose) à produção (k3s). Princípio base: config por variável de ambiente (12-Factor) e nenhum segredo em claro no Git.

Princípios

  • Config por ambiente (.env no dev; ConfigMap/Secret no k3s). Nada de valor fixo no código.
  • Segredo nunca no Git: nem em .env versionado, nem em values do Helm. Use Sealed Secrets ou External Secrets Operator.
  • .env.example versionado como referência (só chaves e valores fictícios).
  • Menor privilégio: cada credencial com o escopo mínimo (ex.: token Cloudflare só DNS:Edit).

Variáveis por serviço

Matriz de referência (nomes ilustrativos; o .env.example é a fonte definitiva).

Backend (Java)

VariávelExemploSegredo?
DB_URLjdbc:postgresql://db:5432/buscabuscanão
DB_USERbuscabuscanão
DB_PASSWORD***sim
RABBITMQ_URLamqp://rabbitmq:5672não
RABBITMQ_USER / RABBITMQ_PASSWORDapp / ***sim (senha)
REDIS_URLredis://redis:6379não
OAUTH_GOOGLE_CLIENT_ID / OAUTH_GOOGLE_CLIENT_SECRET***sim (secret)
OAUTH_GITHUB_CLIENT_ID / OAUTH_GITHUB_CLIENT_SECRET***sim (secret)
ACCESS_TOKEN_SECRET*** (assina o JWT de access, ~15min)sim
ACCESS_TOKEN_TTL / REFRESH_TOKEN_TTL15m / 30dnão
INGEST_API_TOKEN*** (auth da ingestão)sim

Collector (Python)

VariávelExemploSegredo?
INGEST_API_URLhttp://backend:8080/internal/ingestnão
INGEST_API_TOKEN***sim
CAIXA_CSV_BASE_URLURL oficial do CSVnão
SCHEDULE_CRON0 5 * * *não
LOG_LEVELINFOnão

Frontend (Angular)

Config em tempo de build/serve (via Nginx). Normalmente só API_BASE_URL. Não colocar segredo no frontend (tudo que vai ao browser é público).

Infra/plataforma

Variável/segredoOndeSegredo?
CLOUDFLARE_API_TOKEN (DNS-01)cert-managersim
Credenciais do Harbor (pull)imagePullSecretsim
Credenciais do Postgres (prod)CloudNativePG / Secretsim

Segredos no desenvolvimento

  • Copie .env.example.env e preencha localmente. .env está no .gitignore.
  • Compose injeta via env_file/environment. Ver Desenvolvimento (Docker).

Segredos em produção (k3s)

Duas opções (ver Kubernetes & GitOps):

  • Sealed Secrets: você cifra o segredo com a chave pública do controller e comita o cifrado no repo GitOps; só o cluster consegue decifrar. Simples e GitOps-friendly.
  • External Secrets Operator: os segredos vivem num cofre externo (ex.: Vault) e o operador os sincroniza como Secret no cluster. Melhor para rotação centralizada.

Regra de ouro: o repo GitOps nunca contém segredo em claro — só SealedSecret (cifrado) ou referência do External Secrets.

Rotação

  • Rotacionar ACCESS_TOKEN_SECRET, client secrets OAuth (Google/GitHub), tokens de ingestão e senha do banco periodicamente e após qualquer suspeita de vazamento. Refresh tokens são revogáveis por usuário (tabela token_atualizacao).
  • Token da Cloudflare: rotacionar pela dashboard e atualizar o Secret (sem downtime do TLS).

Ver também: Segurança · Rede e exposição · Backup & DR.