Die BPC Version 3.5 wird nicht mehr gewartet.

Sollten Sie diese BPC Version nutzen, empfehlen wir Ihnen eine Migration auf eine aktuelle Version. Die Dokumentation zur neusten BPC Version finden Sie hier. Sollten Sie Fragen haben, wenden Sie sich bitte an unseren Support.

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 ElasticSearch 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.

Beispiel: Alle 60 Minuten werden Einträge gelöscht welche älter als 1 Jahr sind
...
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

Über den Endpunkt /cxf/bpc-auditlog/auditlog/log können auch von außerhalb Audit-Log-Einträge erstellt werden. Dazu eine JSON-Nachricht per POST mit folgendem Aufbau gesendet werden:

{
    "level": "INFO",
    "originator": "[inubit]",
    "action": "TESTACTION",
    "description": "Nur ein Test über den Endpunkt",
    "oldValues": "5",
    "newValues": "10"
}

Der Endpunkt ist per Basic Auth abgesichert. Voreingestellt ist der Benutzer 'virtimo' mit dem Passwort 'berlin'. Dieser kann in der Konfigurationsdatei [karaf]/etc/de.virtimo.bpc.core.cfg gesetzt werden. Dazu die beiden folgenden Zeilen mit aufnehmen und die Werte anpassen (werden ohne Neustart übernommen).

...
de.virtimo.bpc.core.auditlog.endpoint.basic_auth_username = virtimo
de.virtimo.bpc.core.auditlog.endpoint.basic_auth_password = berlin
...

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 /replication/lastupdatetimestamp/{replicationJobId} aufgerufen.

-

-

Deployment

level originator action description old new

INFO

<Username>

Deployment

Deployment to target '<deployment target name>' (<deployment target id>) started

-

-

INFO

<Username>

Deployment

Deployment to target '<deployment target name>' (<deployment target id>) done

-

-

ERROR

<Username>

Deployment

Deployment to target '<deployment target name>' (<deployment target 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

+

+


Keywords: