laravel-vuexy-admin/docs/Helpers/security-logger-helper-guide.md
2025-05-11 14:14:50 -06:00

3.0 KiB

Koneko Security Logger Helper Guide

⚖️ Auditoría de eventos de seguridad en tiempo real y bajo demanda.

El logger log_security() forma parte de la infraestructura central de seguridad de Koneko Vuexy Admin y te permite registrar eventos sensibles como accesos, fallos de login, intentos sospechosos, detecciones de VPN, entre otros.


Ventajas

  • No requiere instanciar clases.
  • Autoobtiene Request, IP, UserAgent, Geolocalización, etc.
  • Flexible para ejecutarse desde controladores, middleware, jobs o Livewire.
  • Compatible con SecurityEvent (modelo auditado).
  • Almacena contexto extendido con payload, is_proxy, user_id, etc.

Uso básico

log_security('login_failed');

Esto registra un fallo de login con todos los metadatos de seguridad: IP, ciudad, dispositivo, agente, URL y más.


⚖️ Sintaxis Completa

log_security(
    string $type,                    // Tipo de evento (ej: login_failed, login_success)
    ?Request $request = null,        // Puede inyectarse manualmente
    ?int $userId = null,             // Usuario relacionado (opcional)
    array $payload = [],             // Datos adicionales como intentos, cabeceras, etc.
    bool $isProxy = false            // ¿Fue detectado uso de proxy/VPN?
);

Ejemplo completo:

log_security(
    'login_failed',
    request(),
    $user?->id,
    ['intentos' => 3, 'via' => 'formulario'],
    detectaVpnProxy(request()->ip())
);

🔍 Eventos soportados por defecto

Puedes definirlos como constantes estáticas en tu código:

SecurityEvent::EVENT_LOGIN_FAILED
SecurityEvent::EVENT_LOGIN_SUCCESS

O usar strings arbitrarios con sentido:

'password_reset_attempt'
'blocked_login_from_blacklist'
'csrf_token_fail'
'geolocation_warning'

Modelo generado: SecurityEvent

El evento registrado se almacena en la tabla security_events, con campos como:

  • ip_address
  • user_id
  • event_type
  • payload
  • region, city, country
  • is_proxy, device_type, etc.

🌐 Geolocalización Automática

Si tienes habilitado el trait HasGeolocation, el sistema hace GeoIP Lookup por IP:

use Koneko\VuexyAdmin\Support\Traits\Helpers\HasGeolocation;

🔐 Buenas prácticas

  • Usa tipos semánticos: login_success, vpn_blocked, csrf_fail, etc.
  • Agrega contexto extra en payload para debugging posterior.
  • Detecta IPs sospechosas con isProxy (ideal para usar junto con sistemas de listas negras).

Extras

Puedes extender la lógica de logging desde:

Koneko\VuexyAdmin\Support\Logger\KonekoSecurityLogger

Este servicio puede adaptarse o sustituirse por otro para logs distribuidos o externos (ej: Sentry, Elastic, etc).


Conclusión

El helper log_security() es una herramienta robusta, flexible y elegante para capturar eventos sensibles en tu ERP. Evita trabajar directamente con el modelo, mantén la consistencia de tu registro, y delega la trazabilidad a una capa preparada para el contexto empresarial.