🔐

NovaSaaS — Vault Security Dashboard

HashiCorp Vault · Kubernetes · GCP KMS · Generado 2026-06-12 19:25

10 CRITICAL rotations 4 servicios configurados 3 anomalías
Resumen ejecutivo
Secretos vencidos
10
Política 30d — acción inmediata
Servicios protegidos
4
payment / api-gateway / analytics / ci
Anomalías detectadas
3
1 HIGH · 2 MEDIUM (últimas 24h)
Fallos de acceso
5
unknown-actor@203.0.113.55
Entradas de audit log
20
6 identidades · 8 rutas únicas
Alertas de seguridad — últimas 24h
🚨
HIGH — failed_access
Source unknown-actor@203.0.113.55 registró 5 intentos fallidos consecutivos contra rutas de producción entre las 14:22–14:26 UTC. IP externa no reconocida. Revisar firewall y revocar cualquier token temporal.
⚠️
MEDIUM — multi_ip_access
Identidad k8s-payment-service accedió desde 3 IPs distintas (10.0.1.10, 10.0.1.11, 10.0.1.12). Puede indicar múltiples réplicas del pod — verificar que todas pertenecen al mismo namespace de producción.
🌙
MEDIUM — off_hours_access
Identidad devops-admin realizó 3 accesos entre las 02:30–03:10 UTC (fuera de horario: antes de las 06:00). Revisar si corresponde a mantenimiento planificado o acceso no autorizado. Considerar MFA para acceso nocturno.
Plan de rotación · Política 30d
🔄 Secretos por rotar — 10/10 vencidos
Secreto Tipo Urgencia Último rotado Días vencido Owner
prod-ssh-bastion-key ssh-key CRITICAL 2025-08-01 −286d devops-team
prod-stripe-api-key api-key CRITICAL 2025-09-15 −241d backend-team
prod-redis-session-password password CRITICAL 2025-10-30 −196d platform-team
prod-postgresql-analytics-worker database CRITICAL 2025-11-20 −175d platform-team
prod-analytics-encryption-key encryption-key CRITICAL 2025-12-10 −155d backend-team
prod-postgresql-payment-svc database CRITICAL 2026-01-05 −129d platform-team
prod-oauth-client-secret oauth-secret CRITICAL 2026-02-14 −89d backend-team
prod-api-gateway-tls-cert tls-cert CRITICAL 2026-04-01 −43d devops-team
staging-postgresql-api-gateway database CRITICAL 2026-05-01 −13d platform-team
ci-github-deploy-token service-token CRITICAL 2026-06-11 −1d devops-team
👥 Responsables
platform-team
4
backend-team
3
devops-team
3
📍 Rutas más accedidas
payment/api-keys
6
payment-svc db/creds
5
analytics db/creds
2
api-gateway config
2
analytics transit/enc
2
🕐 Distribución horaria
0
2
6
9
12
14
16
20
22
Fuera de horario   Horario laboral
Configuración Vault generada — 4 servicios
💳
payment-service
Auth: Kubernetes · NS: production · TTL: 1h
database/creds api-keys (KV v2) pki/issue TLS config
🌐
api-gateway
Auth: Kubernetes · NS: production · TTL: 1h
pki/issue TLS config
📊
analytics-worker
Auth: Kubernetes · NS: production · TTL: 1h
database/creds transit/encrypt config
⚙️
ci-runner
Auth: AppRole · TTL: 1h / max 4h · SecretID: 1-use
api-keys (KV v2) config (CI env)
📄 HCL Policy — payment-service
# Vault policy for payment-service # Generated: 2026-06-12 19:25:20 · Environment: production # Dynamic database credentials path "database/creds/payment-service-readonly" { capabilities = ["read"] } # Static API keys (KV v2) path "secret/data/production/payment-service/api-keys" { capabilities = ["read"] } # TLS certificate issuance path "pki/issue/payment-service-cert" { capabilities = ["create", "update"] } # Application configuration secrets path "secret/data/production/payment-service/config" { capabilities = ["read"] } # Deny admin paths path "sys/*" { capabilities = ["deny"] }
⚡ Auth commands — ci-runner (AppRole)
Crear AppRole
$ vault write auth/approle/role/ci-runner \
  token_ttl=1h token_max_ttl=4h \
  secret_id_num_uses=1 secret_id_ttl=10m \
  token_policies="ci-runner-policy"
Obtener RoleID y SecretID (single-use)
$ vault read auth/approle/role/ci-runner/role-id
$ vault write -f auth/approle/role/ci-runner/secret-id
🏗️ Arquitectura Vault — NovaSaaS
Modo HA + Raft storage (sin BD externa)
Auto-unseal GCP KMS
Namespace prod / staging / ci
Dual audit: file + syslog
Auth: Kubernetes (GKE) + AppRole (CI)
KV v2 · Database · PKI · Transit
External Secrets Operator (GitOps)
GitHub Actions OIDC (sin long-lived keys)
🛠️ Anti-patrones corregidos en NovaSaaS
Credenciales BD hardcodeadas en docker-compose Dynamic creds · TTL 1h
API key Stripe en variable CI (caída 3h) KV v2 + rotación 90d
Cuenta admin compartida para todo el equipo Per-service identity + OIDC
Sin política de rotación documentada rotation_planner · política 30d
Sin audit logs configurados File + syslog · retención 1 año
✅ Preparación SOC 2 Type II
Audit logs habilitados
Políticas least-privilege
Rotación automatizable
Secretos dinámicos BD
Per-service identities
Namespace blast-radius
10 secretos sin rotar (pendiente)
~ MFA off-hours (recomendado)