Gerenciamento de Secrets¶
Gestão de credenciais e certificados no GovHub BR.
Princípios¶
- Nunca commitar credenciais no repositório
- Secrets criados via
kubectlou gerenciadores externos - Certificados digitais (SIAFI/SIAPE) são críticos e tratados separadamente
- Acesso por ambiente (preprod/prod) — consultar equipe de infra
Criação de Secrets¶
Via kubectl¶
kubectl -n <namespace> create secret generic <secret-name> \
--from-literal=username=<user> \
--from-literal=password=<pass>
Via arquivo¶
kubectl -n airflow create secret generic siape-cert \
--from-file=cert.pem=./certificado.pem \
--from-file=key.pem=./chave.pem
Secrets por Componente¶
Airflow¶
| Secret | Namespace | Uso |
|---|---|---|
airflow-db |
airflow | Conexão PostgreSQL do Airflow |
minio-credentials |
airflow | Acesso ao MinIO |
siape-cert |
airflow | Certificado Siape |
siafi-cert |
airflow | Certificado Siafi |
transferegov-api-key |
airflow | API Key TransfereGov |
PostgreSQL¶
| Secret | Namespace | Uso |
|---|---|---|
postgres-credentials |
postgres | User/password do banco |
Superset¶
| Secret | Namespace | Uso |
|---|---|---|
superset-secret-key |
superset | Flask SECRET_KEY |
superset-db |
superset | Conexão PostgreSQL |
MinIO¶
| Secret | Namespace | Uso |
|---|---|---|
minio-root-credentials |
minio | Root access/secret key |
Certificados Digitais¶
Certificados para acesso a sistemas governamentais (Siape, Siafi):
- Formato: PEM (certificado + chave privada)
- Validade: Verificar periodicamente
- Renovação: Processo manual junto ao órgão emissor
- Storage: Kubernetes Secrets (nunca em Git)
Crítico
Os nomes das secrets e chaves esperadas constam nos READMEs de Airflow
e JupyterHub no repo continuous-deployment. Consulte antes de fazer deploy.
Ambiente Local¶
Para desenvolvimento local, os valores padrão ficam em local.env e são
copiados para .env pelo make setup:
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_USER_DW: postgres_dw
POSTGRES_PASSWORD_DW: postgres_dw
POSTGRES_DB_DW: data_warehouse
Note
Credenciais locais são apenas para desenvolvimento. Nunca usar em produção.
Boas Práticas¶
- Rotacionar secrets periodicamente
- Usar least-privilege para service accounts
- Auditar acessos via logs do cluster
- Considerar Sealed Secrets ou External Secrets Operator para automação