Control granular, auditoría completa, cifrado en reposo.
151 permisos en el dashboard, RBAC con roles personalizables, AuditLog con diff completo, AES-256-GCM en credenciales. LGPD listo.
Funcionalidad

151
permisos en dashboard
AES-256-GCM
datos sensibles
TLS 1.3
en tránsito
LGPD
export + delete nativos
Qué está siendo protegido
RBAC con Roles Personalizables
4 roles estándar (Admin, Financiero, Operacional, Visualización). Crea roles personalizados combinando cualquier permiso.
- DashboardRole por organización
- DashboardUserToRole many-to-many
- Herencia via groups
- API para automatización
Autenticación Multi-Método
NextAuth con Google OAuth (admin), Kobana OAuth (dashboard/portal), magic link (portal), contraseña + 2FA opcional.
- Sesiones con timeout configurable
- Bloqueo automático por intentos fallidos
- Recovery codes para 2FA
Cifrado en Reposo
lib/crypto.ts con AES-256-GCM. Aplicado en credenciales de gateway, NFe.io API key, webhook secrets, certificate PFX, portal tokens.
- Clave de 32 bytes en variable de entorno
- IV único por encrypt
- Authentication tag verifica integridad
- safeDecrypt para migración gradual
TLS 1.3 en Tránsito
Toda comunicación HTTPS obligatorio. HSTS habilitado. Certificate pinning opcional para SDKs.
- HTTPS obligatorio
- HSTS habilitado
- Certificate pinning opcional
AuditLog Detallado
Toda mutación registrada con userEmail, ipAddress, userAgent, action, resourceType, resourceId, previousValues, newValues.
- 200+ tipos de acción rastreados
- Retención configurable (default 2 años)
- Export para SIEM
- Inmutable (append-only)
Eventos Internos (Event Model)
Capa adicional de tracking. Cada cambio de estado genera Event para webhook + replay.
- Persistido por organización
- Filtro por tipo, recurso, período
- API de retry
Idempotencia en Mutaciones
Header Idempotency-Key aceptado en todas las mutaciones. Columna única en subscription_item_changes y tablas críticas.
- Previene duplicación por retry de red
- TTL configurable
- Misma key retorna misma respuesta
2FA (TOTP)
Google Authenticator, Authy, Microsoft Authenticator compatibles. Opcional por usuario, obligatorio por rol.
- Códigos de recuperación (10 códigos de un solo uso)
- Renovación vía dashboard
- Notificación de uso
Compliance LGPD
DataPurgeService implementa derecho al olvido. ExportService genera dump completo.
- Worker data-purge ejecuta exclusión programada
- Soft delete + anonimización preservando historial fiscal
- Registro de consentimiento en metadata
- Retención configurable
Webhooks Firmados
Todos los webhooks firmados con HMAC-SHA256. Secret cifrado. Validación timing-safe.
- X-Kobana-Signature header
- Algoritmo HMAC-SHA256
- Replay protection vía timestamp
IP Allowlist (Enterprise)
RateLimitConfig por API key soporta restricción por IP. Bloqueo por país vía IP geolocation.
- Restricción por IP
- Bloqueo por país
- Solo Enterprise
Rate Limiting
Límites por API key y endpoint. RateLimiterService usa Redis para contador distribuido.
- Default 100 req/s por org
- Burst configurable
- 429 con Retry-After
Crear rol personalizado vía API
bash
curl -X POST https://api.billing.kobana.com.br/v1/dashboard-roles \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Operador Soporte",
"slug": "operador-soporte",
"description": "Puede ver todo y responder dudas, no puede tocar finanzas",
"permissions": [
"billing.dashboard.customers.list",
"billing.dashboard.customers.show",
"billing.dashboard.subscriptions.list",
"billing.dashboard.subscriptions.show",
"billing.dashboard.invoices.list",
"billing.dashboard.invoices.show",
"billing.dashboard.audit.list"
]
}'response
{
"id": "role_xyz",
"slug": "operador-soporte",
"permissions_count": 7,
"users_count": 0
}