Rotação de Secrets
A rotação regular de secrets é uma prática essencial de segurança. Aprenda a configurar e automatizar a rotação de variáveis de ambiente usando o CriptEnv.
Info
A rotação de secrets reduz a janela de exposição caso uma credencial seja comprometida. Recomendamos rodar a cada 30-90 dias, dependendo do nível de sensibilidade.
Por que rotacionar?
- Reduz o impacto de vazamentos e comprometimentos
- Atende a requisitos de compliance (SOC2, ISO 27001, LGPD)
- Remove acessos de funcionários que saíram da empresa
- Mantém boas práticas de higiene de segurança
Rotação Manual
1
Gere o novo secret
Gere o novo secret no serviço correspondente (banco de dados, API, etc.). Certifique-se de que o novo secret está funcionando antes de atualizar no CriptEnv.
2
Atualize no CriptEnv
Use o CLI para atualizar a variável com o novo valor:
Atualizar variável
# Atualizar uma variável específica
criptenv rotate API_KEY -v "novo-valor-seguro" -p <project-id>
# Rotacionar com valor auto-gerado
criptenv rotate API_KEY -p <project-id>3
Sincronize com as integrações
Se você tem integrações configuradas (Vercel, Render), sincronize manualmente:
Sincronizar integrações
# Sincronizar com Vercel
criptenv integrations sync vercel -p <project-id>
# Sincronizar com Render
criptenv integrations sync render -p <project-id>4
Verifique a aplicação
Confirme que a aplicação está funcionando corretamente com o novo secret. Monitore logs e métricas por alguns minutos.
Rotação Automatizada
Configure a rotação automática usando o GitHub Actions:
Rotação automática com GitHub Actions
name: Secret Rotation
on:
schedule:
# Executa todo dia 1 do mês às 3h UTC
- cron: '0 3 1 * *'
workflow_dispatch: # Permite execução manual
jobs:
rotate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Gerar novo secret
id: generate
run: |
NEW_SECRET=$(openssl rand -hex 32)
echo "secret=$NEW_SECRET" >> $GITHUB_OUTPUT
- name: Atualizar no CriptEnv
env:
CRIPTENV_TOKEN: ${{ secrets.CRIPTENV_TOKEN }}
run: |
pip install criptenv
criptenv ci login --token $CRIPTENV_TOKEN
criptenv rotate API_KEY -v "${{ steps.generate.outputs.secret }}" -p <project-id>
- name: Sincronizar com Vercel
run: |
criptenv integrations sync vercel -p <project-id>
- name: Notificar equipe
uses: slackapi/slack-github-action@v1
with:
payload: |
{"text": "✅ API Key rotacionada com sucesso no projeto"}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}Políticas de Rotação
Defina políticas de rotação por tipo de secret:
| Tipo de Secret | Frequência Recomendada | Prioridade |
|---|---|---|
| API Keys | A cada 30 dias | Alta |
| Database credentials | A cada 90 dias | Alta |
| JWT secrets | A cada 30 dias | Alta |
| Third-party tokens | A cada 90 dias | Média |
| Encryption keys | A cada 180 dias | Crítica |
Expiração e Alertas
Configure expiração automática e alertas para seus secrets:
Configurar expiração e alertas
# Definir expiração de 90 dias com política notify
criptenv secrets expire API_KEY --days 90 --policy notify -p <project-id>
# Configurar alerta 14 dias antes da expiração
criptenv secrets alert API_KEY --days 14 -p <project-id>
# Listar secrets próximos da expiração
criptenv rotation list --days 30 -p <project-id>Info
Ao rotacionar secrets em produção, certifique-se de que todos os serviços dependentes são atualizados simultaneamente para evitar downtime. Considere usar rotação com período de sobreposição (overlap) onde tanto o secret antigo quanto o novo são válidos por um período.
