GH GambleHub

Gerenciamento de configurações e segredos

Gerenciamento de configurações e segredos

1) Por que é necessário

Configurações e segredos são plataformas de prod de sangue. O erro no configh cai em p95, o segredo que correu é um incidente de nível P1. O objetivo é fazer config/segredo:
  • Previsíveis (esquemas, validação, versões).
  • Seguro (criptografia, direitos mínimos, rotação).
  • Gerenciáveis (GitOps, auditoria, reversões).
  • Dinâmicas onde isso for justificado (função flags, configuração de limites).

2) Classificação de artefatos

Configs públicos: fichas, liminares, timeouts, função flags (sem segredos).
Configs sensíveis: parâmetros que alteram o comportamento de caminhos críticos (como limites de pagamento).
Segredos: senhas/chaves/tokens/certificados/materiais de encriptação.
Artefatos de confiança: certificados de raiz/intermediário, políticas PKI, chaves KMS.

O princípio da separação de direitos é segredos públicos ≠ sensíveis ≠.

3) Hierarquia de configurações

Construa a «pirâmide» das camadas:

1. Global defaults (org-wide).

2. Environment (`prod/stage/dev`).

3. Region (`eu-central-1`, `us-east-1`).

4. Tenant/Brand (para multi-tenentes).

5. Serviço (microsserviço específico).

6. Override - alternadores de tempo.

Regras de fusão: «Abaixo vence», conflito somente por MR/approval.

Exemplo (YAML)

yaml defaults:
http:
timeout_ms: 800 retry: 2 prod:
http:
timeout_ms: 1200 service: payments-api overrides:
eu-central-1:
http:
timeout_ms: 1500

4) Esquemas e validação

Cada config é um contrato com o esquema (JSON Schema/OPA/validadores em CI).

Tipos, faixas, campos obrigatórios, valores padrão.
Regras Guard (não é possível colocar 'retry> 5', 'p95 _ target <50ms').
Verificação automática na CI e na aplicação (admision-webhook/KRM).

Fatia do JSON Schema

json
{
"type":"object",
"properties":{
"http":{"type":"object","properties":{"timeout_ms":{"type":"integer","minimum":100,"maximum":10000},"retry":{"type":"integer","minimum":0,"maximum":5}},"required":["timeout_ms"]},
"feature_flags":{"type":"object","additionalProperties":{"type":"boolean"}}
},
"required":["http"]
}

5) Modelos de entrega de configs

Static (imagem-baked): confiável, mas requer restartes.
Push/Watch: agentes/sidecar recebem atualizações (stream/poll) e sinalizam para o aplicativo.
Pull on startup: Recebemos um snapshot quando começamos (simplificar hot-path).
Edge cachê/proxy para cargas geo-distribuídas.

Principal: atômica e versionização de snapshots, controle de compatibilidade e reversão rápida.

6) Ferramentas e papéis

Armazéns de configs: Git + GitOps (Argo/Flux), Parameter Store/Config Service.
Armazéns de segredos: Vault, AWS Secret Management/SSM, GCP Secret, Azure KV.
Criptografia: KMS/HSM, SOPS (age/GPG/KMS), Sealed Secret, Criptografia Transit (Vault).
Entrega: CSI Secrets Store, Vault Agente Injector/Sidecar, contêineres init.
Bandeiras/dinâmicas: plataforma de bandeiras de fich (colar kill-switch de emergência).

7) Criptografia: modelos e práticas

At rest: chaves KMS projeto/ambiente, criptografia envelope.
In transit: TLS/mTLS com autenticação mútua.
At use: decodificação o mais tarde possível, preferencialmente na memória de processo/sidecar (sem gravação em disco).
Hierarquia chave: root (HSM) → KMS CMK → data keys (DEK).
Rotação: calendário (90/180 dias) + por evento (comprometimento/saída do funcionário).

8) Gerenciamento de segredos: pattern

8. 1 GitOps + SOPS (esmalte estático)

O Git só armazena a cifra.
Criptografia em CI/CD ou em cluster (KMS/age).
Aplicar através do controlador (Flux/Argo) → Kubernetes Secret.

yaml apiVersion: v1 kind: Secret metadata: { name: psp-keys, namespace: payments }
type: Opaque data:
apiKey: ENC[AES256_GCM,data:...,sops]

8. 2 Vault Agente Injector (emissão dinâmica)

A conta de serviço (JWT/SA) é autenticada no Vault.
Sidecar coloca os créditos em tmpfs e atualiza por TTL.
Suporte de crédito dinâmico (DB, cloud - isolamento e curta duração).

yaml annotations:
vault. hashicorp. com/agent-inject: "true"
vault. hashicorp. com/role: "payments-api"
vault. hashicorp. com/agent-inject-secret-db: "database/creds/payments"

8. 3 CSI Secrets Store

Personalizar o segredo como volume, a rotação é transparente.
Para PKI - Atualização automática de certificados/chaves.

9) Kubernetes: aspectos práticos

ConfigMap são apenas dados públicos/insensíveis.
Secret - sensível (com base64 - não criptografia; inclua Encrypition at Rest para etcd).
Anotações Checksum: Restart Deployment quando o config é alterado.
Controle Advision: Proibir a montagem de segredos não da lista branca, proibir senhas plain em manifestos.
NetworkPolicy: limitar o acesso aos provedores de segredos (Vault/CSI).

Checksum exemplo (Helm)

yaml annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}

10) Políticas de acesso (RBAC/ABAC)

Least privege: O serviço só vê seus segredos; acesso por namespace/label/prefix.
Split duties: criação de segredo ≠ leitura de conteúdo; uma auditoria de qualquer leitura.
Acertos de tempo: logins dinâmicos (DB, cloud) com TTL e rotação automática.
Segmentação: prod/estágio em diferentes projetos/contas/chaves KMS.

11) Auditoria, registro, observação

Logs de leitura/emissão de segredos: quem/quando/o que/de onde; correlação com lançamentos e incidentes.
Métricas: taxa de consulta, segredos vencidos, certificados vencidos, proporção de créditos dinâmicos.
Eventos de segurança: excesso de quotas, anomalias IP/tempo, múltiplas autenticações indevidas.

12) Rotação de segredos e certificados

Normalize os prazos: chaves API de 90 dias, senhas DB de 30 dias e sertões TLS de 60 a 90 dias.
Rotação: geração → teste → dupla publicação (grace) → alternação → revisão do antigo → de verificação.
Discernimento: dupla gravação de configs/segredos, compatibilidade de clientes (accept new + old).
PKI: seu próprio CA ou integração com o exterior; atualização automática de materiais MTLS por CSI/Vault.

13) Configs dinâmicos e função flags

As opções «quentes» (limites, temporizações) são tiradas de um serviço de config/plataforma-bandeira.
Dinheiro local e stickiness (cálculo da opção por hashtag), TTL curtos.
Guardas SLO para alteração de parâmetros sensíveis (auto-revezamento e kill-switch).

14) Integração com CI/CD e GitOps

Pré-commit/CI: Linterners de circuito, verificações SOPS, proibição de segredos «nus» (gitleaks/trufflehog).
Policy Gate: OPA/Conftest - a proibição de configurs sem padrão/sem anotações do proprietário/sem marcas do ambiente.
Progressive delivery: promoção de configs como artefatos (semver), canary para alteração de parâmetros.
Anotações de lançamento: quem/qual config/segredo mudou; correlação rápida com p95/5xx.

15) Exemplos

15. 1 Política OPA: proibição de SG abertos no config

rego package policy. config

deny[msg] {
input. kind == "SecurityGroupRule"
input. cidr == "0. 0. 0. 0/0"
input. port = = 5432 msg: = "Postgres open internet banned"
}

15. 2 Exemplo de «snapshot» config (versionável)

yaml version: 1. 12. 0 owner: payments-team appliesTo: [ "payments-api@prod" ]
http:
timeout_ms: 1200 retry: 2 withdraw:
limits:
per_txn_eur: 5000 per_day_eur: 20000 flags:
new_withdrawal_flow: false

15. 3 Vault - credos dinâmicos de BD

hcl path "database/creds/payments" {
capabilities = ["read"]
}
role issues user/password with TTL = 1h and auto-rollover

16) Anti-pattern

Segredos em Git em aberto/em variáveis Helm/Anxibe sem criptografia.
Um único «mega-segredo» para todos os serviços/ambientes.
Tokens de longa vida sem TTL/rotação; certificados «imortais».
Configs dinâmicos sem circuitos/validação e nenhuma auditoria de alterações.
Falta Encrypition at Rest para etcd/KMS e rede sem mTLS.
Edição manual de configs na venda (contornar GitOps).
Acesso dos desenvolvedores aos segredos de prod, por precaução.

17) Folha de cheque de implementação (0-60 dias)

0-15 dias

Incluir esquemas/validadores para configs; ter um repo «configs» e um fluxo de Ops GitOps.
Levantar KMS e criptografia: SOPS/Sealed Secret/Encrypition at Rest em etcd.
Proibir segredos plaintexto em CI (scanners), digitar owners/approvals.

16 a 30 dias

Separar armazéns: configs públicos vs segredos sensíveis vs.
Implantar o Vault/Secret Gerente e selecionar o caminho de entrega (Agente/CSI/SOPS).
Ajustar a rotação TLS/DB/PSP; dashboards de vida/vencimento.

31 a 60 dias

Configs dinâmicos e bandeiras com SLO-gating e auto-recuo.
Políticas OPA/Conftest; zero-trust (namespace/label-scoped).
Game-day: Simulação de fuga de segredo e rotatividade de força.

18) Métricas de maturidade

% dos segredos criptografados e sem acesso direto do Git = 100%.
A cobertura de configs com esquemas/validação ≥ 95%.
Tempo médio de rotação de segredos críticos (alvo: relógio, não dias).
A taxa de crédito dinâmico (DB/cloud) ≥ de 80%.
0 incidentes por «plain secret «/certificados vencidos.
MTTR com erro de config com retração <5 minutos.

19) Papéis de comando e processos

Config Owner: dono de domínio/esquema/política.
Segurança: políticas, hierarquia-chave, auditoria de acesso.
Plataforma/SRE: GitOps, fornecimento/injecção, telemetria.
App Teams: consumo de configs/segredos, testes de compatibilidade.

20) Conclusão

Um circuito confiável de configurações e segredos são esquemas + GitOps + criptografia + rotação + política. Divida o público e o secreto, criptografe tudo, aplique configs atômico e versionável, minimize os direitos e a vida dos créditos, automatize rotações e auditoria. As mudanças serão rápidas e seguras, e o risco de fugas e baixas será mínimo.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.