Registro de auditoría
Doggy ofrece capacidades de auditoría de operaciones del sistema de extremo a extremo: mediante AuditService registra todas las operaciones clave, almacenadas en App\Entity\System\AuditLog.
Descripción general
El sistema de registro de auditoría se compone de las siguientes partes:
- Entidad
AuditLog(src/Entity/System/AuditLog.php): persistencia de los registros AuditService(src/Service/System/AuditService.php): servicio de registro- El punto de entrada de la auditoría se encuentra en
App\Controller\Admin\SecurityConfigController
Contenido registrado
Cada registro de auditoría incluye:
action: tipo de operación (login_success,login_failure,create,update,delete)category: categoría (security,business,system)details: detalles de la operación (formato JSON)performer: usuario que ejecutó la operación
Uso
php
use App\Service\System\AuditService;
class SomeService
{
public function __construct(private AuditService $auditService) {}
public function doSomething(): void
{
// Inicio de sesión correcto
$this->auditService->log('login_success', 'security', [], $user);
// Fallo de inicio de sesión
$this->auditService->log('login_failure', 'security', [
'username' => $email,
'error' => $exception->getMessage(),
]);
// Operaciones de datos
$this->auditService->log('update', 'business', [
'entity' => Employee::class,
'id' => $employee->getId(),
'changes' => $changes,
]);
}
}Integración
El registro de auditoría ya está integrado automáticamente en los principales flujos de seguridad:
Autenticación de inicio de sesión
App\Security\AppCustomAuthenticator registra automáticamente:
php
// Al iniciar sesión correctamente
$this->auditService->log('login_success', 'security', [], $user);
// Al fallar el inicio de sesión
$this->auditService->log('login_failure', 'security', [
'username' => $email,
'error' => $exception->getMessage(),
]);Requisitos de seguridad
- Los registros de auditoría solo pueden verlos los auditores (
ROLE_AUDITOR, a través del permisoAUDIT_VIEWdeThreeOfficersVoter) - Los registros se almacenan en la base de datos y admiten trazabilidad y exportación
- Admite búsqueda por rango de tiempo, usuario y tipo de operación