Pular para o conteúdo principal

Secret Health Analytics

A partir da v4.5, o CipherVault tem um dashboard de analítica de saúde dos secrets — métricas agregadas para entender postura geral de segurança do tenant.

UI: Dashboard → Analytics. API: /analytics/health.

Métricas calculadas

Distribuição de idade

Histograma de now - last_rotated_at por bucket:

0-7 dias ████████████████ 320 (54%)
7-30 dias ██████████ 180 (30%)
30-90 dias ████ 65 (11%)
90-180 dias █ 20 (3%)
180+ dias ▌ 10 (2%)

Risk Score average por vault

VaultAvg ScoreMedianWorst
producao231887 (stripe-master-key)
producao-billing413892 (postgres-master)
staging121035

Top 10 secrets nunca rotacionados

Lista de secrets com last_rotated_at IS NULL (apenas created_at), ordenado por idade.

Top 10 com Risk Score crítico

score >= 80, com link direto para investigar.

Compliance distribution

Compliance tagCount
pii124
pci47
pii + pci12
Untagged215 (⚠️ 36% — auditar)

API

curl "https://cv.acme.com.br/analytics/health?vault=producao&since=30d" \
-H "Authorization: Bearer $CV_TOKEN"

Resposta:

{
"summary": {
"total_secrets": 595,
"active_secrets": 587,
"avg_risk_score": 24.3,
"median_age_days": 12,
"fresh_percent": 84.2
},
"age_distribution": {
"0-7d": 320,
"7-30d": 180,
"30-90d": 65,
"90-180d": 20,
"180d+": 10
},
"by_vault": [
{ "vault": "producao", "count": 247, "avg_score": 23.0, "max_score": 87 },
...
],
"never_rotated": [
{ "id": "sec_...", "path": "...", "age_days": 423, "score": 91 },
...
],
"critical_secrets": [...],
"compliance_tags": {
"pii": 124,
"pci": 47,
"untagged": 215
},
"generated_at": "2026-05-12T14:00:00Z"
}

CSV export

GET /analytics/health/export?format=csv&vault=producao&since=90d

Devolve CSV com uma row por secret (para análise em Excel/Power BI). Inclui colunas: id, path, vault, type, environment, age_days, last_rotated_days_ago, risk_score, classification, owner_email.

Use cases

1. Relatório trimestral de compliance

CSV export → análise em Excel → highlight secrets sem rotação > 90d para tickets de remediation.

2. Detecção de "secret graveyard"

Vaults com avg_age_days > 180 provavelmente têm secrets ativos abandonados — candidatos para audit + cleanup.

3. SLA interno

KPI: "% de secrets em produção rotacionados nos últimos 90 dias > 95%". Track em Grafana via:

sum(cv_secrets_rotated_in_window{window="90d", env="prd"}) /
sum(cv_secrets_total{env="prd"})

Caching

Dashboard calcula lazy + cache 1h. Use ?nocache=1 para forçar recálculo em tenants grandes (custo: ~30s em tenants com 10k+ secrets).

Métricas Prometheus relacionadas

cv_secrets_total{tenant, vault, environment, status}
cv_secrets_age_seconds{tenant, vault} histogram
cv_secrets_risk_score{tenant, vault} gauge
cv_secrets_compliance_tagged{tenant, tag}
cv_secrets_rotated_total{tenant, vault} counter

Boas práticas

  • Schedule export CSV mensalmente — base para audit interno
  • KPI dashboard em Grafana — torne visível para o time
  • Highlights em standups SRE — top 3 piores secrets por Risk Score
  • Definir SLA interno — rotações em < 90d para prd, < 180d para staging
  • Tag compliance imediatamenteuntagged deve cair com tempo