Skip to content

Journal d'audit

Doggy fournit des capacités d'audit de bout en bout des opérations système. Toutes les opérations clés sont enregistrées via AuditService et stockées dans App\Entity\System\AuditLog.

Aperçu

Le système de journal d'audit est composé des éléments suivants :

  • Entité AuditLog (src/Entity/System/AuditLog.php) : persistance des journaux
  • AuditService (src/Service/System/AuditService.php) : service d'enregistrement des journaux
  • Le point d'entrée de l'audit se trouve dans App\Controller\Admin\SecurityConfigController

Contenu enregistré

Chaque entrée de journal d'audit contient :

  • action : type d'opération (login_success, login_failure, create, update, delete)
  • category : catégorie (security, business, system)
  • details : détails de l'opération (format JSON)
  • performer : l'utilisateur ayant effectué l'opération

Utilisation

php
use App\Service\System\AuditService;

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

    public function doSomething(): void
    {
        // 登录成功
        $this->auditService->log('login_success', 'security', [], $user);

        // 登录失败
        $this->auditService->log('login_failure', 'security', [
            'username' => $email,
            'error' => $exception->getMessage(),
        ]);

        // 数据操作
        $this->auditService->log('update', 'business', [
            'entity' => Employee::class,
            'id' => $employee->getId(),
            'changes' => $changes,
        ]);
    }
}

Intégration

Le journal d'audit est automatiquement intégré aux principaux flux de sécurité :

Authentification

App\Security\AppCustomAuthenticator enregistre automatiquement :

php
// 登录成功时
$this->auditService->log('login_success', 'security', [], $user);

// 登录失败时
$this->auditService->log('login_failure', 'security', [
    'username' => $email,
    'error' => $exception->getMessage(),
]);

Exigences de sécurité

  • Les journaux d'audit ne sont consultables que par les auditeurs (ROLE_AUDITOR, via la permission AUDIT_VIEW de ThreeOfficersVoter)
  • Les journaux sont stockés en base de données, avec prise en charge de la traçabilité et de l'export
  • Prise en charge de la recherche par plage de temps, utilisateur et type d'opération

Open source sous licence MIT | Copyright © 2026 Doggy