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ãoAUDIT_VIEWdoThreeOfficersVoter) - 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