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 permissionAUDIT_VIEWdeThreeOfficersVoter) - 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