Grundlegendes zu SQL Server Audit

Bei der Überwachung einer Instanz von SQL Server oder einer SQL Server-Datenbank werden Ereignisse im System verfolgt und protokolliert. Sie können mehrere Methoden der Überwachung für SQL Server verwenden, wie in Überwachung (Datenbankmodul) beschrieben. Seit SQL Server 2008 Enterprise können Sie auch eine automatische Überwachung mit SQL Server Audit einrichten.

Es gibt mehrere Ebenen der Überwachung für SQL Server, die von gesetzlichen oder standardspezifischen Anforderungen für die Installation abhängig sind. SQL Server Audit enthält die Tools und Prozesse, die Sie zum Aktivieren, Speichern und Anzeigen von Überwachungen auf verschiedenen Server- und Datenbankobjekten benötigen.

Bei Servern können Sie Überwachungsaktionsgruppen instanzweise aufzeichnen, bei Datenbanken entweder Überwachungsaktionsgruppen oder Überwachungsaktionen jeweils pro Datenbank. Das Überwachungsereignis tritt jedes Mal auf, wenn die überwachbare Aktion erkannt wird.

SQL Server Audit-Komponenten

Eine Überwachung besteht aus mehreren Elementen, die in einem einzelnen Paket für eine bestimmte Gruppe von Serveraktionen oder Datenbankaktionen zusammengefasst werden. Die Komponenten von SQL Server Audit geben zusammen eine Ausgabe aus, die als Überwachung bezeichnet wird, genauso wie aus der Kombination von Berichtsdefinitionen mit Grafiken und Datenelementen ein Bericht erstellt wird.

SQL Server Audit verwendet Extended Events, um eine Überwachung zu erstellen. Weitere Informationen zu Extended Events finden Sie unter Einführung in SQL Server Extended Events.

SQL Server Audit

Das SQL Server Audit-Objekt listet eine einzelne Instanz an Aktionen oder Aktionsgruppen auf Server- oder Datenbankebene auf, die überwacht werden soll. Die Überwachung wird auf SQL Server-Instanzebene ausgeführt. Es können mehrere Überwachungen pro SQL Server-Instanz vorliegen.

Wenn Sie eine Überwachung definieren, geben Sie den Speicherort für die Ausgabe der Ergebnisse an. Dies ist das Überwachungsziel. Die Überwachung wird in einem deaktivierten Zustand erstellt und überwacht Aktionen nicht automatisch. Nachdem die Überwachung aktiviert wurde, empfängt das Überwachungsziel Daten von der Überwachung.

Serverüberwachungsspezifikation

Das Serverüberwachungsspezifikation-Objekt gehört zu einer Überwachung. Sie können eine Serverüberwachungsspezifikation pro Überwachung erstellen, da beide im SQL Server-Instanzbereich erstellt werden.

Die Serverüberwachungsspezifikation listet viele Aktionsgruppen auf Serverebene auf, die von Extended Events ausgelöst werden. Sie können Überwachungsaktionsgruppen in eine Serverüberwachungsspezifikation einschließen. Überwachungsaktionsgruppen sind vorab definierte Gruppen von Aktionen, bei denen es sich um atomare Ereignisse handelt, die in Database Engine (Datenbankmodul) stattfinden. Diese Aktionen werden an die Überwachung gesendet, die sie im Ziel aufzeichnet.

Überwachungsaktionsgruppen auf Serverebene werden im Thema SQL Server Audit-Aktionsgruppen und -Aktionen beschrieben.

Datenbank-Überwachungsspezifikation

Das Datenbank-Überwachungsspezifikation-Objekt gehört ebenfalls zu SQL Server Audit. Sie können eine Datenbank-Überwachungsspezifikation pro SQL Server-Datenbank und pro Überwachung erstellen.

Die Datenbank-Überwachungsspezifikation listet viele Überwachungsaktionen auf Datenbankebene auf, die von Extended Events ausgelöst werden. Sie können entweder Überwachungsaktionsgruppen oder Überwachungsereignisse einer Datenbank-Überwachungsspezifikation hinzufügen. Überwachungsereignisse sind die atomaren Aktionen, die vom SQL Server-Modul überwacht werden können. Überwachungsaktionsgruppen sind vorab definierte Aktionsgruppen. Beide befinden sich im SQL Server-Datenbankbereich. Diese Aktionen werden an die Überwachung gesendet, die sie im Ziel aufzeichnet. Beziehen Sie in einer Benutzerdatenbank-Überwachungsspezifikation keine Objekte mit Serverbereich ein, wie Systemsichten.

Überwachungsaktionsgruppen auf Datenbankebene und Überwachungsaktionen werden im Thema SQL Server Audit-Aktionsgruppen und -Aktionen beschrieben.

Ziel

Die Ergebnisse einer Überwachung werden an ein Ziel gesendet, wobei es sich um eine Datei, das Windows-Sicherheitsereignisprotokoll oder das Windows-Anwendungsereignisprotokoll handelt. (Das Schreiben in das Sicherheitsprotokoll ist unter Windows XP nicht verfügbar.) Protokolle müssen regelmäßig überprüft und archiviert werden, um sicherzustellen, dass das Ziel über ausreichend Platz verfügt, um zusätzliche Datensätze anzulegen.

Wichtiger HinweisWichtig

Jeder authentifizierte Benutzer kann das Windows-Anwendungsereignisprotokoll lesen und Datensätze darin schreiben. Für das Anwendungsereignisprotokoll sind niedrigere Berechtigungen als für das Windows-Sicherheitsereignisprotokoll erforderlich, daher ist es jedoch auch weniger sicher als das Windows-Sicherheitsereignisprotokoll.

Wenn Sie einen Datensatz im Windows-Sicherheitsprotokoll schreiben möchten, muss das SQL Server-Dienstkonto der Richtlinie Generieren von Sicherheitsüberwachungen hinzugefügt werden. Standardmäßig sind das lokale System, der lokale Dienst und der Netzwerkdienst ein Teil dieser Richtlinie. Diese Einstellung kann mit dem Sicherheitsrichtlinien-Snap-In (secpol.msc) konfiguriert werden. Darüber hinaus muss die Sicherheitsrichtlinie Objektzugriffsversuche überwachen sowohl für Erfolg als auch für Fehler aktiviert sein. Diese Einstellung kann mit dem Sicherheitsrichtlinien-Snap-In (secpol.msc) konfiguriert werden. In Windows Vista oder Windows Server 2008 können Sie die automatisch generierte Richtlinie mit feinerer Granularität über die Befehlszeile mit dem Überwachungsrichtlinienprogramm (AuditPol.exe) festlegen. Weitere Informationen zu den Schritten zum Aktivieren des Schreibens in das Windows-Sicherheitsprotokoll finden Sie unter Vorgehensweise: Schreiben von Serverüberwachungsereignissen in das Sicherheitsprotokoll. Weitere Informationen über das Auditpol.exe-Programm finden Sie im Knowledge Base-Artikel 921469, How to use Group Policy to configure detailed security auditing (in Englisch). Die Windows-Ereignisprotokolle gelten global für das Windows-Betriebssystem. Weitere Informationen zu den Windows-Ereignisprotokollen finden Sie unter Event Viewer Overview. Wenn Sie präzisere Berechtigungen für die Überwachung benötigen, verwenden Sie das Binärdateiziel.

Um beim Speichern von Überwachungsinformationen in eine Datei Manipulationen zu verhindern, können Sie den Zugriff auf deren Speicherort auf folgende Weisen einschränken:

  • Das SQL Server-Dienstkonto muss über Lese- und Schreibberechtigungen verfügen.

  • Für Überwachungsadministratoren sind in der Regel Lese- und Schreibberechtigungen erforderlich. Dabei wird angenommen, dass Überwachungsadministratoren Windows-Konten für die Verwaltung von Überwachungsdateien (u. a. das Kopieren der Dateien auf andere Freigaben und das Erstellen von Sicherungen) darstellen.

  • Für das Lesen von Überwachungsdateien autorisierte Überwachungsleser müssen über eine Leseberechtigung verfügen.

Selbst wenn Database Engine (Datenbankmodul) in eine Datei schreibt, können andere Windows-Benutzer mit entsprechender Berechtigung die Überwachungsdatei lesen. Database Engine (Datenbankmodul) lässt eine exklusive Sperre, die Lesevorgänge verhindert, nicht zu.

Da Database Engine (Datenbankmodul) auf die Datei zugreifen kann, können SQL Server-Anmeldungen mit SERVER STEUERN-Berechtigungen über Database Engine (Datenbankmodul) auf Überwachungsdateien zugreifen. Um alle Benutzer aufzuzeichnen, die die Überwachungsdatei lesen, definieren Sie eine Überwachung in master.sys.fn_get_audit_file. Dadurch werden die Anmeldungen mit SERVER STEUERN-Berechtigung aufgezeichnet, die über SQL Server auf die Überwachungsdatei zugreifen.

Wenn ein Überwachungsadministrator die Datei an einen anderen Speicherort kopiert (zur Archivierung usw.), sollten die ACLs des neuen Speicherorts auf die folgenden Berechtigungen beschränkt werden:

  • Überwachungsadministrator - Lesen/Schreiben

  • Überwachungsleser - Lesen

Es wird empfohlen, Überwachungsberichte auf einer separaten Instanz von SQL Server zu erstellen, z. B. einer Instanz von SQL Server Express, auf die nur Überwachungsadministratoren und -leser Zugriff haben. Durch Verwenden einer separaten Instanz von Database Engine (Datenbankmodul) zur Berichterstellung können Sie dazu beitragen, unautorisierte Benutzer am Zugriff auf die Überwachungsdatei zu hindern.

Zusätzlichen Schutz gegen unautorisierten Zugriff erhalten Sie, indem Sie den Ordner mit der Überwachungsdatei mit Windows BitLocker Drive Encryption oder Windows Encrypting File System verschlüsseln.

Weitere Informationen zu den Überwachungsdatensätzen, die in das Ziel geschrieben werden, finden Sie unter SQL Server Audit-Datensätze.

Übersicht über die Verwendung von SQL Server Audit

Sie können SQL Server Management Studio oder Transact-SQL verwenden, um eine Überwachung zu definieren. Nachdem die Überwachung erstellt und aktiviert wurde, empfängt das Ziel die Einträge.

Sie können die Windows-Ereignisprotokolle mit dem Windows-Dienstprogramm Ereignisanzeige lesen. Bei Dateizielen können Sie zum Lesen der Zieldatei entweder den Protokolldatei-Viewer in SQL Server Management Studio oder die fn_get_audit_file-Funktion verwenden.

Im Allgemeinen wird eine Überwachung folgendermaßen erstellt und verwendet:

  1. Erstellen Sie eine Überwachung, und definieren Sie das Ziel.

  2. Erstellen Sie eine Serverüberwachungsspezifikation oder eine Datenbank-Überwachungsspezifikation, die der Überwachung zugeordnet wird. Aktivieren Sie die Überwachungsspezifikation.

  3. Aktivieren Sie die Überwachung.

  4. Lesen Sie die Überwachungsereignisse mit der Windows-Ereignisanzeige, dem Protokolldatei-Viewer oder der fn_get_audit_file-Funktion.

Das Thema Themen zur Vorgehensweise zu SQL Server Audit enthält Beispiele zur Verwendung der Überwachungsfeatures für SQL Server Management Studio und Transact-SQL.

Weitere Überlegungen

Wenn während der Überwachungseinleitung ein Fehler auftritt, wird der Server nicht gestartet. In diesem Fall kann der Server gestartet werden, indem Sie in die Befehlszeile die Option –f eingeben.

Wenn aufgrund eines Überwachungsfehlers der Server heruntergefahren wird oder nicht startet, da für die Überwachung ON_FAILURE=SHUTDOWN festgelegt wurde, wird das Ereignis MSG_AUDIT_FORCED_SHUTDOWN in das Protokoll geschrieben. Da der Server schon beim ersten Auftreten dieser Einstellung heruntergefahren wird, wird das Ereignis nur einmal im Protokoll aufgezeichnet. Das Ereignis wird erst nach der Fehlermeldung für die Überwachung, die das Herunterfahren verursacht, geschrieben. Ein Administrator kann ein durch eine Überwachung verursachtes Herunterfahren umgehen, indem er SQL Server mithilfe des –m-Flags im Einzelbenutzermodus startet. Wenn Sie sich im Einzelbenutzermodus anmelden, wird jede Überwachung herabgestuft, für die festgelegt wurde, dass ON_FAILURE=SHUTDOWN in dieser Sitzung als ON_FAILURE=CONTINUE ausgeführt wird. Wird SQL Server mithilfe des –m-Flags gestartet, wird die MSG_AUDIT_SHUTDOWN_BYPASSED-Nachricht im Fehlerprotokoll aufgezeichnet.

Weitere Informationen zu Startoptionen des Diensts finden Sie unter Verwenden der Startoptionen für den SQL Server-Dienst.

Anfügen einer Datenbank mit einer definierten Überwachung

Wenn Sie eine Datenbank anfügen, für die eine Überwachungsspezifikation festgelegt wurde und die eine GUID bestimmt, die sich nicht auf dem Server befindet, entsteht eine verwaiste Überwachungsspezifikation. Da eine Überwachung mit einer entsprechenden GUID nicht auf der Serverinstanz vorliegt, werden keine Überwachungsereignisse aufgezeichnet. Verwenden Sie den Befehl ALTER DATABASE AUDIT SPECIFICATION, um die verwaiste Überwachungsspezifikation mit einer vorhandenen Serverüberwachung zu verbinden und somit den Fehler zu beheben. Oder verwenden Sie den Befehl CREATE SERVER AUDIT, um eine neue Serverüberwachung mit dem angegebenen GUID zu erstellen.

Sie können eine Datenbank, für die eine Überwachungsspezifikation angegeben wurde, an eine andere Version von SQL Server anfügen, die SQL Server Audit nicht unterstützt, z. B. SQL Server Express, Überwachungsereignisse werden jedoch nicht aufgezeichnet.

Datenbankspiegelung und SQL Server Audit

Eine Datenbank, für die eine Audit-Datenbank-Überwachungsspezifikation definiert wurde und für die Datenbankspiegelung verwendet wird, enthält die Datenbankspezifikation. Die folgenden Elemente müssen konfiguriert werden, damit sie auf der gespiegelten SQL-Instanz ordnungsgemäß arbeitet:

  • Der Spiegelserver muss über eine Überwachung mit der gleichen GUID verfügen, damit die Datenbank-Überwachungsspezifikation Überwachungsdatensätze schreiben kann. Diese Einstellung können Sie mit dem Befehl CREATE AUDIT WITH GUID=<GUID from source Server Audit> konfigurieren.

  • Bei Binärdateizielen muss das Dienstkonto des Spiegelservers über die erforderlichen Berechtigungen für den Speicherort verfügen, an den der Überwachungspfad geschrieben wird.

  • Bei Windows-Ereignisprotokollzielen muss die Sicherheitsrichtlinie für den Computer, auf dem sich der Spiegelserver befindet, den Dienstkontozugriff auf das Sicherheits- oder Anwendungsereignisprotokoll zulassen.