Audit Logging
Audit Logging kann verwendet werden, um automatisch Audit-Logs für API-Anfragen zu erstellen und zu speichern. Die Konfiguration ist auf drei Ebenen aufgeteilt:
- Globale Ebene, die hier beschrieben wird. Die globale Konfiguration gilt für alle APIs.
- API-Ebene, die unter API-Konfiguration ausführlicher beschrieben wird. Die Konfiguration auf API-Ebene dient dazu, die Konfiguration für eine bestimmte API zu verfeinern.
- Provider-Ebene, die aus der Schema-Option
auditbesteht, die unter Schema-Definitionen ausführlicher beschrieben wird. Sie wird verwendet, um anzugeben, welchepropertiesgeloggt werden sollen.
Nachfolgend ist eine detaillierte Beschreibung der globalen Konfigurationsoptionen, Hinweise zur Speicherung und ein Beispiel, das die relevanten Teile aller Konfigurationsebenen enthält.
Optionen
| Name | Default | Beschreibung | Typ | Seit |
|---|---|---|---|---|
enabled | false | Wenn true, wird das Audit-Logging für alle APIs eingeschaltet. Einzelne APIs können in der API-Konfiguration explizit deaktiviert werden. Audit-Logging ist global deaktiviert, wenn false. | boolean | 4.8 |
retries | 3 | Gibt an, wie oft der Schreibprozess bei Fehlern wiederholt werden soll. Sollte auf 0 gesetzt werden, falls keine Wiederholungen erwünscht sind. Wenn das Schreiben nach der angegebenen Anzahl von Wiederholungen fehlschlägt, wird der Log-Eintrag ins Anwendungsprotokoll geschrieben. | number | 4.8 |
pathPrefix | {api}/{date} | Gibt den Pfad an, der der Log-Datei vorangestellt werden soll. Dabei werden {api} und {date} jeweils mit der API-ID bzw. dem ISO-Datum der Anfrage ersetzt. Beispielsweise könnten die Log-Dateien für {api}/foo/{date}/bar unter logs/audit/vineyards/foo/2026-06-03/bar gespeichert werden. | string | 4.8 |
type | JSON | Gibt an, in welchem Format die Logs gespeichert werden. Unterstützt werden momentan JSON und JSON_PRETTY (formatiertes JSON). | string | 4.8 |
headers | included: [ '*' ], excluded: [] | Die included-Liste gibt an, welche Header geloggt werden sollen. Die excluded-Liste gibt an, welche Header aus included nicht geloggt werden sollen. Der spezielle Wert * kann für beide Listen verwendet werden und umfasst alle Header. Wenn excluded: [ '*' ], werden keine Header geloggt. | object | 4.8 |
claims | included: [], excluded: [] | Gibt an, welche Claims aus dem Token geloggt werden sollen und welche explizit nicht geloggt werden sollen. Verwendet die gleiche included/excluded-Logik wie headers. | object | 4.8 |
httpStatus | included: [ '200' ], excluded: [] | Gibt an, für welche HTTP-Statuscodes Anfragen geloggt werden sollen und welche explizit nicht geloggt werden sollen. Verwendet die gleiche included/excluded-Logik wie headers. | object | 4.8 |
Speicherung
Die Log-Einträge werden im Ressourcen-Store im Verzeichnis logs/audit abgelegt. Der Dateiname entspricht der Request-ID aus dem Anwendungsprotokoll.
Beispiele
Im Folgenden werden Beispiele für die globale, API- und Provider-Konfiguration gezeigt sowie ein Audit-Log-Beispiel, das sich aus diesen Konfigurationen ergeben kann. Hier wurde die Vineyards-API aus den Demos verwendet.
Globale Konfiguration:
auditLog:
enabled: true
retries: 3
type: JSON_PRETTY
pathPrefix: "mysubdirectory/{api}/{date}"
headers:
included: [ "User-Agent", "Host" ]
excluded: [ ]
claims:
included: [ "realm_access", "resource_access" ]
excluded: [ ]
httpStatus:
included: [ "200" ]
excluded: [ ]
API-Konfiguration:
auditLog:
enabled: true
operations:
- "data:read::vineyards"
- "write"
Provider-Konfiguration:
types:
vineyards:
sourcePath: /Weinlagen
type: OBJECT
properties:
registerId:
sourcePath: wlg_nr
type: INTEGER
role: ID
label: Vineyard register number
audit: true
name:
sourcePath: wlg_name
type: STRING
label: Vineyard name
audit: true
Als Ergebnis der obigen Konfigurationen entsteht beispielsweise das folgende Audit-Log, das als logs/audit/mysubdirectory/vineyards/2026-06-15/48f4923c-b52c-4dfb-b45e-3e892995a473.json gespeichert werden würde:
{
"id" : "48f4923c-b52c-4dfb-b45e-3e892995a473",
"started" : "2026-06-15T08:27:05.372819295Z",
"finished" : "2026-06-15T08:27:05.416584477Z",
"api" : "vineyards",
"actor" : {
"type" : "USER",
"id" : "johndoe",
"claims" : {
"realm_access" : {
"roles" : [
"offline_access",
"authorization"
]
},
"resource_access" : {
"roles" : [
"read",
"manage-account",
"manage-account-links",
"view-profile"
]
}
}
},
"operation" : {
"method" : "GET",
"path" : "/collections/vineyards/items",
"headers" : {
"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0",
"Host" : "localhost:7080"
},
"parameter" : {
"f" : "json"
},
"status" : "200"
},
"target" : {
"features" : [
{
"id" : "460258",
"name" : "Kupp"
},
{
"id" : "511109",
"name" : "Höll"
}
]
}
}