Skip to content

Registo de auditoria

O Doggy fornece capacidades de auditoria de operações de sistema em toda a cadeia, registando todas as operações críticas através do AuditService, com armazenamento em App\Entity\System\AuditLog.

Visão geral

O sistema de registo de auditoria é composto pelas seguintes partes:

  • Entidade AuditLog (src/Entity/System/AuditLog.php): persistência de registos
  • AuditService (src/Service/System/AuditService.php): serviço de registo
  • A entrada do registo de auditoria fica em App\Controller\Admin\SecurityConfigController

Conteúdo registado

Cada registo de auditoria inclui:

  • action: tipo de operação (login_success, login_failure, create, update, delete)
  • category: categoria (security, business, system)
  • details: detalhes da operação (em formato JSON)
  • performer: utilizador que executou a operação

Como utilizar

php
use App\Service\System\AuditService;

class SomeService
{
    public function __construct(private AuditService $auditService) {}

    public function doSomething(): void
    {
        // Início de sessão bem-sucedido
        $this->auditService->log('login_success', 'security', [], $user);

        // Falha de início de sessão
        $this->auditService->log('login_failure', 'security', [
            'username' => $email,
            'error' => $exception->getMessage(),
        ]);

        // Operações de dados
        $this->auditService->log('update', 'business', [
            'entity' => Employee::class,
            'id' => $employee->getId(),
            'changes' => $changes,
        ]);
    }
}

Integração

O registo de auditoria já está integrado automaticamente nos principais fluxos de segurança:

Autenticação de início de sessão

App\Security\AppCustomAuthenticator regista automaticamente:

php
// No início de sessão bem-sucedido
$this->auditService->log('login_success', 'security', [], $user);

// Na falha de início de sessão
$this->auditService->log('login_failure', 'security', [
    'username' => $email,
    'error' => $exception->getMessage(),
]);

Requisitos de segurança

  • Os registos de auditoria são apenas visíveis pelos auditores (ROLE_AUDITOR, através da permissão AUDIT_VIEW do ThreeOfficersVoter)
  • Os registos são armazenados na base de dados, com suporte para rastreio e exportação
  • Suporta pesquisa por intervalo de tempo, utilizador e tipo de operação

Código aberto sob MIT | Copyright © 2026 Doggy