Logging
# Logging

Als Logging bezeichnet man in der Informatik die automatische Erstellung eines Protokolls (englisch log) von Softwareprozessen.

Logging dient der Aufzeichnung und Nachvollziehbarkeit von Fehlerzuständen des Softwareprozesses. Da eine Auswertung durch Administratoren und Softwareentwickler vorgesehen ist und der Inhalt gesetzlichen Einschränkungen unterliegt, darf keine vertrauliche Information enthalten sein. Zudem sollte die Softwareanwendung auch dann störungsfrei weiterarbeiten können, wenn das Logging fehlschlägt.

Die Aufzeichnung kann hierbei beispielsweise auf der Kommandozeile, in einer Logdatei, dem Ereignisprotokoll unter Windows bzw. syslogd und klogd unter Linux, einer spezialisierten Datenbank oder einem Webservice erfolgen. Im Server-Umfeld ist insbesondere die Aufzeichnung in einer Logdatei üblich. Diese können mittels eines Log-Scrapers gesammelt und zentral ausgewertet werden. Bei verteilten, sowie mobil genutzten, Anwendungen ist es hingegen üblich, einen zentralen Webservice anzusprechen.

Einige Logging-Frameworks unterstützen zudem die Aufzeichnung in mehreren Zielen (englisch: sinks) gleichzeitig. Zudem unterstützen einige Logging-Frameworks optional auch das Auditing, indem Schreibgarantien getätigt werden.

## Abgrenzung

### Auditing

    Dient für sicherheitskritische Informationen, etwa An- und Abmeldungen von Benutzern, Rechteausweitungen, sowie den Zugriff auf und Änderungen an sensiblen Daten.

### Service-Monitoring

    Dient der Analyse des Anwendungsverhaltens, insbesondere der Performance, in Echtzeit. (z. B. Performance Counters und collected (system statistics collection daemon) unter Linux)

### Tracing

    Dient der Nachvollziehbarkeit des Programmflusses. Da hier sehr viele Informationen in kurzer Zeit aufgezeichnet werden, eignet sich Tracing nicht für die dauerhafte Aufzeichnung in einer Datei oder Datenbank, sondern dient der Beobachtung des Prozesses in Echtzeit. (z. B. Event Tracing for Windows (ETW) unter Windows)

### Operations-Monitoring

    Dient für die Analyse von anwendungsübergreifenden Geschäftsprozessen.

## Logging als Auditing

Beim Auditing geht es um das automatische Protokollieren von Datensätzen durch Dienste, die angeben, welcher Benutzer bzw. welche Person in Computersystemen zu welchem Zeitpunkt was getan hat. Die zu speichernden Datensätze beziehen sich auf sicherheitsrelevante Ereignisse in IT-Systemen. Die Protokollierung kann durch einen Audit Monitor oder durch die Geschäftslogik implementiert werden. Die Sicherung der Audit-Daten muss aber auf einem externen und geeignet gesicherten System erfolgen.

### Sicherheitsaspekte

Da Auditing sicherheitskritische Operationen von Softwareprozessen aufzeichnet, muss die Operation abgebrochen werden, falls das Auditing fehlschlägt.

Zudem muss das Audit, mittels Verschlüsselung, elektronischer Signierung und ggf. kryptographischer Verkettung, kryptographisch abgesichert werden, falls vertrauliche Daten enthalten sind. Einzelne Einträge können beispielsweise als Security Event Token (SET) übermittelt und gesichert werden. Wenn die Daten kryptographisch verkettet sind, können sie nicht gelöscht werden. Stattdessen kann jedoch der kryptographische Schlüssel gelöscht werden, damit die Daten nicht mehr entschlüsselt werden können.

Da die Daten für das Auditing teilweise über Jahre hinweg aufbewahrt werden müssen, müssen diese im Gegensatz zu Logdateien sicher verwahrt werden.

### Nutzen

* Ermöglicht Recherche der historischen Versionen eines Datensatzes, die bei jeder Änderung abgespeichert wurden (Sonderform der Logdatei)
* Ermöglicht die Aufarbeitung von Sicherheitsvorfällen im Rahmen der IT-Forensik.
* Durch aus dem Auditing gewonnene Kenntnissen können Sicherheitsvorfälle präventiv verhindert werden.
* Monitoring (d. H. Überwachung in Echtzeit) von Zugriffen auf sicherheitsrelevante Funktionen bzw. Daten, sofern ein entsprechendes Monitoring vorgesehen wird.

### Beispiele

* Anlegen oder Löschen eines Users in einem Directory
* Änderungen der Bankverbindung eines Kunden in einer Anwendung
