Audit Log Service
Über den Audit Log Service werden und können System- bzw. Benutzeraktionen wie z.B. "Benutzer 'xyz' hat eine Datenbankverbindung gelöscht" in einen OpenSearch Index geschrieben. Zur Abfrage der Einträge stellt das BPC einen vorgefertigten Process Monitor zur Verfügung.
Der Audit Log Service bietet folgende Funktionalitäten:
-
Elasticsearch wird als Ziel verwendet
-
Neue Logger können ohne großen Aufwand hinzugefügt werden
-
Die Log Levels können für jeden Logger einzeln festgelegt werden
-
Alle Bundles/Module können den Dienst benutzen
-
3rd Party Entwickler können bei Bedarf ihren eigenen Logger registrieren
-
Im Core sind die wichtigsten Aktionen "ge-audit logged"
-
Kann auch über einen Endpunkt angesprochen werden
Daten eines Audit Logs
Feld |
Inhalt |
level |
DEBUG, INFO, WARNING, ERROR |
originator |
<Username>, [SYSTEM] oder [UNKNOWN] |
action |
Schlüsselwort zur Gruppierung |
description |
Beschreibung der Aktion |
old |
die alten Daten |
new |
die neuen Daten |
timestamp |
der Zeitstempel an dem die Aktion ausgeführt wurde |
Elasticsearch Logger
Ist per Default aktiviert und schreibt seine Daten in den Elasticsearch Index mit dem Alias 'bpc-auditlog'. Als Log Level ist 'INFO' voreingestellt.
Per Default werden keine alten Einträge gelöscht.
Dies kann über die beiden Einstellungen in der Konfigurationsdatei [karaf]/etc/de.virtimo.bpc.core.cfg
aktiviert werden.
...
de.virtimo.bpc.core.auditlog.ElasticsearchAuditLogger.auditlog.cleanupPeriodInMinutes=60
de.virtimo.bpc.core.auditlog.ElasticsearchAuditLogger.auditlog.deleteEntriesOlderThan=1 year ago
...
Das Löschen wird nur durchgeführt, wenn die beiden Einstellungen gesetzt sind. Weitere sinnvolle Werte für 'deleteEntriesOlderThan': 14 days ago, 3 weeks ago, 1 month ago, 3 months ago, 6 years ago
Backups/Snapshots werden in der Voreinstellung jeden Tag erstellt (seit dem letzten durchgeführten Backup) und es werden alle Backups die älter als 30 Tage sind gelöscht. Dies kann in der Konfigurationsdatei [karaf]/etc/de.virtimo.bpc.core.cfg
angepasst werden.
...
de.virtimo.bpc.core.auditlog.ElasticsearchAuditLogger.auditlog.backupIntervalInSeconds=86400
de.virtimo.bpc.core.auditlog.ElasticsearchAuditLogger.auditlog.keepBackupsDurationInSeconds=2592000
...
1 Tag = (24 * 60 * 60) = 86400 Sekunden | 30 Tage = (30 * 24 * 60 * 60) = 2592000 Sekunden
Log Level festlegen
Dies wird über die Konfigurationsdatei [karaf]/etc/de.virtimo.bpc.core.cfg
gemacht. Hierzu gibt es eine Namenskonvention welche auch bei weiteren Logger angewendet wird: Der vollständige Klassenname wird um den Postfix .auditlog.level
erweitert.
Beispiel:
Unser Elasticsearch Logger hat den Klassennamen de.virtimo.bpc.core.auditlog.ElasticsearchAuditLogger
und wird dann z.B. so auf den Log Level DEBUG
gesetzt.
...
de.virtimo.bpc.core.auditlog.ElasticsearchAuditLogger.auditlog.level=DEBUG
...
Verwendung im Code
Im Core sowie in anderen Bundles können Audit Logs über statische Methoden der Klassen SystemAuditLog
sowie UserAuditLog
aufgerufen werden.
Die Methoden der SystemAuditLog
Klasse werden für vom System getriggerte Aktionen verwenden.
Bei der UserAuditLog
Klasse um vom Benutzer getriggerte Aktionen.
import de.virtimo.bpc.api.auditlog.SystemAuditLog;
...
SystemAuditLog.info("UserDeleted", "User deleted due to too many login failures");
...
UserAuditLog.debug("<username>", "ProcessUpdated", "Process updated", "old values", "new values");
Endpunkt
Method | Endpoint |
---|---|
|
|
Description To create a new audit log entry, send a JSON message with the following structure:
|
|
Returns HTTP Status Code
|
|
Required Access Rights The logged in user or API Key must have either the following role or right.
|
Core Audit Logs
Benutzer
level |
originator |
action |
description |
old |
new |
DEBUG |
<Username> |
UserAuthenticated |
Login was successful |
- |
- |
WARNING |
<Username> |
UserAuthenticationFailed |
Login failed |
- |
- |
ERROR |
<Username> |
UserAuthenticationFailed |
Login failed: <Reason> |
- |
- |
DEBUG |
<Username> |
UserLogout |
Logout |
- |
- |
Backups
level |
originator |
action |
description |
old |
new |
INFO |
<Username> |
BackupCreated |
Backup with the snapshot name '<name> created |
- |
- |
INFO |
BackupCreated |
Backup with the snapshot name '<name>' created |
- |
- |
|
INFO |
<Username> |
BackupDeleted |
Backup with the snapshot name '<name>' deleted |
- |
- |
INFO |
BackupDeleted |
Backup with the snapshot name '<name>' deleted |
- |
- |
|
INFO |
<Username> |
BackupRestored |
Backup with the snapshot name '<name>' restored |
- |
- |
INFO |
<Username> |
BackupRestored |
Backup with the snapshot name '<name>' restored to the index '<name>' |
- |
- |
Modul- und Modulkomponenten-Konfigurationen
level |
originator |
action |
description |
old |
new |
INFO |
<Username> |
ConfigurationUploaded |
Configuration uploaded and imported |
- |
- |
INFO |
<Username> |
ModuleInstanceCreated |
Module instance '<instance name>' (<instance id>) of module '<name>' (<id>) created |
- |
- |
INFO |
<Username> |
ModuleUpdated |
Settings of module '<name>' (<id>) updated: <setting names> |
+ |
+ |
INFO |
<Username> |
ModuleInstanceUpdated |
Settings of module instance '<instance name>' (<instance id>) of module '<name>' (<id>) updated: <setting names> |
+ |
+ |
INFO |
<Username> |
ModuleInstanceDeleted |
Module instance '<instance name>' (<instance id>) of module '<name>' (<id>) deleted |
- |
- |
INFO |
<Username> |
ModuleSettingDeleted |
Setting of module '<name>' (<id>) deleted: <setting name> |
+ |
- |
INFO |
<Username> |
ModuleInstanceSettingDeleted |
Setting of module instance '<instance name>' (<instance id>) of module '<name>' (<id>) deleted: <setting name> |
+ |
- |
Replikation
level |
originator |
action |
description |
old |
new |
INFO |
<Username> |
ReplicationJobRestart |
Restarted the replication job with the id: <id> Wenn über den Endpunkt |
- |
- |
Deployment
level |
originator |
action |
description |
old |
new |
INFO |
<Username> |
Deployment |
Deployment to target '<deployment system name>' (<deployment system id>) started |
- |
- |
INFO |
<Username> |
Deployment |
Deployment to target '<deployment system name>' (<deployment system id>) done |
- |
- |
ERROR |
<Username> |
Deployment |
Deployment to target '<deployment system name>' (<deployment system id>) failed:<reason> |
- |
- |
INFO |
<Username> |
BackupCreated |
Backup with the snapshot name '<name>' created |
- |
- |
INFO |
<Username> |
BackupRestored |
Backup with the snapshot name '<name>' restored |
- |
- |
INFO |
<Username> |
Deployment |
Deployment import start |
- |
- |
INFO |
<Username> |
Deployment |
Deployment import done |
- |
- |
ERROR |
<Username> |
Deployment |
Deployment import failed: <reason> |
- |
- |
INFO |
<Username> |
ModuleInstanceDeleted |
Module instance '<module instance name>' (<module instance id>) of module '<module name>' (<module id>) deleted |
- |
- |
INFO |
<Username> |
ModuleSettingDeleted |
Setting of module '<module name>' (<module id>) deleted: <setting name> |
+ |
- |
INFO |
<Username> |
ModuleSettingDeleted |
Setting of module '<module name>' (<module id>) to delete does not exist: <setting name> |
- |
- |
INFO |
<Username> |
ModuleInstanceSettingDeleted |
Setting of module instance '<module instance name>' (<module instance id>) and module '<module name>' (<module id>) deleted: <setting name> |
+ |
- |
INFO |
<Username> |
ModuleInstanceSettingDeleted |
Setting of module instance '<module instance name>' (<module instance id>) and module '<module name>' (<module id>) to delete does not exist: <setting name> |
- |
- |
INFO |
<Username> |
ModuleUpdated |
Settings of module '<module name>' (<module id>) updated: <setting names> |
+ |
+ |
INFO |
<Username> |
ModuleInstanceCreated |
Module instance '<module instance name>' (<module instance id>) of module '<module name>' (<module id>) created |
- |
- |
INFO |
<Username> |
ModuleInstanceUpdated |
Settings of module instance '<module instance name>' (<module instance id>) of module '<module name>' (<module id>) updated: <setting names> |
+ |
+ |
Maintenance Mode
level |
originator |
action |
description |
old |
new |
WARNING |
MaintenanceModeEnabled |
Requested while reaching the file system limit of <limit> MB |
- |
- |
|
INFO |
<Username> |
MaintenanceModeEnabled |
Requested while performing a deployment |
- |
- |
INFO |
MaintenanceModeEnabled |
Requested from other BPC server (Active/Active) |
- |
- |
|
INFO |
MaintenanceModeDisabled |
Requested from other BPC server (Active/Active) |
- |
- |
|
INFO |
<Username> |
MaintenanceModeEnabled |
Requested by using the configuration endpoint (e.g. BPC Frontend) |
- |
- |
INFO |
<Username> |
MaintenanceModeDisabled |
Requested by using the configuration endpoint (e.g. BPC Frontend) |
- |
- |
INFO |
MaintenanceMode |
Maintenance mode configuration setting updated: [karaf]/etc/de.virtimo.bpc.core.cfg |
+ |
+ |