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.
- HTTPS obligatorio
- HSTS habilitado
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 X-Idempotency-Key aceptado en POST, PUT y PATCH. Columna única en subscription_item_changes y tablas críticas.
- Previene duplicación por retry de red
- Retención de 24 horas
- 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 separados para lectura y escritura. RateLimiterService usa Redis para contador distribuido.
- Lectura y escritura con límites propios
- Límites mayores bajo consulta
- 429 con Retry-After
Crear un rol personalizado vía API
bash
curl -X POST https://api.billing.kobana.com.br/v1/team_roles \
-H "Authorization: Bearer $KOBANA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Operador Soporte",
"slug": "operador_soporte",
"permissions": [
"customers.list",
"customers.show",
"subscriptions.list",
"subscriptions.show",
"invoices.list",
"invoices.show",
"audit.list"
]
}'response
{
"data": {
"id": "5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
"name": "Operador Soporte",
"slug": "operador_soporte",
"is_system": false,
"is_active": true,
"users_count": 0
}
}