Freigeben über


SQL Server-Überwachung (Datenbank-Engine)

Gilt für:SQL ServerAzure SQL Managed Instance

Auditing einer Instanz des SQL Server-Datenbankmoduls oder einer einzelnen Datenbank umfasst das Nachverfolgen und Protokollieren von Ereignissen, die auf dem Datenbankmodul auftreten. mit SQL Server Überwachung können Sie Serverüberwachungen erstellen, die Serverüberwachungsspezifikationen für Ereignisse auf Serverebene und Datenbanküberwachungsspezifikationen für Ereignisse auf Datenbankebene enthalten können. Überwachte Ereignisse können in die Ereignisprotokolle oder Überwachungsdateien geschrieben werden.

Es gibt mehrere Prüfungsstufen für SQL Server, je nach behördlichen oder Standardanforderungen für Ihre Installation. SQL Server Audit stellt die Tools und Prozesse bereit, die Sie zum Aktivieren, Speichern und Anzeigen von Audits 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.

Dieser Artikel bezieht sich auf SQL Server und Azure SQL Managed Instance.

SQL Server Überwachungskomponenten

Eine Überwachung besteht aus mehreren Elementen, die in einem einzelnen Paket für eine bestimmte Gruppe von Server- oder Datenbankaktionen zusammengefasst werden. Die Komponenten des SQL Server Audits kombinieren sich zu einer Ausgabe, die als Audit bezeichnet wird, ähnlich wie eine Berichtsdefinition mit Grafiken und Datenelementen einen Bericht erzeugt.

SQL Server Audit verwendet Extended Events, um ein Audit zu erstellen. Weitere Informationen zu erweiterten Ereignissen finden Sie in der Übersicht über erweiterte Ereignisse.

SQL Server Überwachung

Das objekt SQL Server Audit sammelt eine einzelne Instanz von Aktionen auf Server- oder Datenbankebene und Aktionsgruppen, die überwacht werden sollen. Die Überwachung befindet sich auf SQL Server Instanzebene. Sie können mehrere Audits pro SQL Server Instanz haben.

Wenn Sie ein Audit definieren, geben Sie den Speicherort der Ergebnisausgabe an. Dies ist das Prüfungsziel. Das Audit wird in einem disabled Zustand erstellt und erfasst keine Aktionen automatisch. Nachdem die Prüfung aktiviert wurde, empfängt das Prüfungsziel Daten von der Prüfung.

Serverüberwachungsspezifikation

Das Server-Audit-Spezifikationsobjekt gehört zu einem Audit. 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 erweiterten Ereignissen ausgelöst werden. Sie können Überwachungsaktionsgruppen in eine Serverüberwachungsspezifikation einschließen. Überwachungsaktionsgruppen sind vordefinierte Aktionsgruppen, bei denen es sich um atome Ereignisse handelt, die im Datenbank-Engine auftreten. Diese Aktionen werden an die Prüfung gesendet, die sie im Ziel aufzeichnet.

Überwachungsaktionsgruppen auf Serverebene werden im Artikel SQL Server Überwachungsaktionsgruppen und -aktionen beschrieben.

Hinweis

Aufgrund von Leistungsbeschränkungen werden tempdb und temporäre Tabellen nicht geprüft. Während die Gruppe der abgeschlossenen Batchaktionen Anweisungen für temporäre Tabellen erfasst, füllt sie die Objektnamen möglicherweise nicht ordnungsgemäß auf. Die Quelltabelle wird jedoch immer überwacht, um sicherzustellen, dass alle Einfügungen aus der Quelltabelle in temporäre Tabellen aufgezeichnet werden.

Datenbank-Überwachungsspezifikation

Die Datenbank-Überwachungsspezifikation gehört ebenfalls zu einer SQL Server-Überwachung. Sie können eine Datenbanküberwachungsspezifikation pro SQL Server Datenbank pro Überwachung erstellen.

Die Datenbank-Überwachungsspezifikation sammelt Überwachungsaktionen auf Datenbankebene, die von der Funktion "Extended Events" ausgelöst werden. Sie können einer Datenbank-Überwachungsspezifikation Überwachungsaktionsgruppen oder Überwachungsereignisse hinzufügen. Audit-Ereignisse sind die Atomaktionen, die vom SQL Server-Modul überwacht werden können. Überwachungsaktionsgruppen sind vorab definierte Aktionsgruppen. Beide befinden sich im Bereich der SQL Server-Datenbank. Diese Aktionen werden an die Prüfung gesendet, die sie im Ziel aufzeichnet. Schließen Sie in eine Überwachungsspezifikation für Benutzerdatenbanken keine Objekte auf Serverebene ein, wie beispielsweise Systemansichten.

Aktionsgruppen und Überwachungsaktionen auf Datenbankebene werden im Artikel SQL Server Audit-Aktionsgruppen und -aktionen beschrieben.

Ziel

Die Ergebnisse einer Überwachung werden an ein Ziel gesendet, das eine Datei, das Windows-Sicherheit Ereignisprotokoll oder das Windows Anwendungsereignisprotokoll sein kann. Protokolle müssen regelmäßig überprüft und archiviert werden, um sicherzustellen, dass das Ziel über ausreichend Platz verfügt, um weitere Datensätze anzulegen.

Wichtig

Jeder authentifizierte Benutzer kann das Ereignisprotokoll Windows Anwendung lesen und schreiben. Das Anwendungsereignisprotokoll erfordert niedrigere Berechtigungen als das Windows-Sicherheit Ereignisprotokoll und ist weniger sicher als das Windows-Sicherheit Ereignisprotokoll.

Um in das Windows-Sicherheitsprotokoll zu schreiben, muss das SQL Server-Dienstkonto zur Richtlinie Generate security audits 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 Überwachung des Objektzugriffs 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 (und höher) können Sie die differenziertere application generiertrichtlinie über die Befehlszeile mithilfe des Überwachungsrichtlinienprogramms (AuditPol.exe) festlegen. Weitere Informationen zu den Schritten zum Aktivieren des Schreibens in das Windows-Sicherheitsprotokoll finden Sie unter SQL Server-Überwachungsereignisse in das Sicherheitsprotokoll schreiben. Weitere Informationen über das Programm Auditpol.exe finden Sie im Knowledge Base-Artikel 921469, Anleitung zur Verwendung der Gruppenrichtlinie zur Konfiguration detaillierter Sicherheitsüberwachung (in englischer Sprache). Die Windows Ereignisprotokolle sind global für das Windows Betriebssystem. Weitere Informationen zu den Windows Ereignisprotokollen finden Sie unter Ereignisanzeige Overview. Wenn Sie präzisere Berechtigungen für die Auditierung benötigen, verwenden Sie das Binärdatei-Objekt.

Um beim Speichern von Überwachungsinformationen in eine Datei Manipulationen zu verhindern, können Sie den Zugriff auf deren Speicherort auf folgende Weise 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 davon ausgegangen, dass die Überwachungsadministratoren Windows-Konten für die Verwaltung von Überwachungsdateien haben, wie zum Beispiel das Kopieren in verschiedene Freigabeordner, ihre Sicherung und weiteres ähnliches.

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

Auch wenn der Datenbank-Engine in eine Datei schreibt, können andere Windows Benutzer die Überwachungsdatei lesen, wenn sie über die Berechtigung verfügen. Die Datenbank-Engine übernimmt keine exklusive Sperre, die Lesevorgänge verhindert.

Da die Datenbank-Engine auf die Datei zugreifen kann, können SQL Server Login-Konten, die über die Berechtigung CONTROL SERVER verfügen, die Datenbank-Engine verwenden, um auf die Protokolldateien zuzugreifen. In SQL Server 2022 (16.x) und höheren Versionen reicht die Berechtigung VIEW SERVER SECURITY AUDIT aus, um Überwachungsdateien mit fn_get_audit_file zu lesen. Um alle Benutzer aufzuzeichnen, die die Überwachungsdatei lesen, definieren Sie eine Überwachung in master.sys.fn_get_audit_file. Dadurch werden die Anmeldungen mit CONTROL SERVER Berechtigung aufgezeichnet, die über SQL Server auf die Überwachungsdatei zugegriffen haben. Weitere Informationen zu fn_get_audit_file Berechtigungen finden Sie unter sys.fn_get_audit_file.

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

  • Überwachungsadministrator – Lesen/Schreiben
  • Prüfleser – Lesen

Es wird empfohlen, Überwachungsberichte aus einer separaten Instanz von SQL Server zu generieren, z. B. eine Instanz von SQL Server Express, auf die nur Überwachungsadministratoren oder Überwachungsleseprogramme Zugriff haben. Mithilfe einer separaten Instanz des Datenbank-Engine für die Berichterstellung können Sie verhindern, dass nicht autorisierte Benutzer Zugriff auf den Überwachungsdatensatz erhalten.

Sie können zusätzlichen Schutz vor unbefugtem Zugriff bieten, indem Sie den Ordner verschlüsseln, in dem die Überwachungsdatei mithilfe Windows BitLocker-Laufwerkverschlüsselung oder Windows Verschlüsseln des Dateisystems gespeichert wird.

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

Übersicht über die Verwendung von SQL Server Überwachung

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 Einträge.

Sie können die Windows Ereignisprotokolle mithilfe des Hilfsprogramms Ereignisanzeige in Windows lesen. Für Dateiziele können Sie entweder die Log File Viewer in SQL Server Management Studio oder die Funktion fn_get_audit_file verwenden, um die Zieldatei zu lesen.

Der allgemeine Prozess zur Erstellung und Nutzung einer Überprüfung ist wie folgt:

  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 Auditereignisse mithilfe der Windows Ereignisanzeige, Log File Viewer oder der Funktion fn_get_audit_file.

Weitere Informationen finden Sie unter Erstellen einer Serverüberwachungs- und Serverüberwachungsspezifikation und Erstellen einer Serverüberwachungs- und Datenbanküberwachungsspezifikation.

Überlegungen

Bei einem Fehler während der Auditinitiierung startet der Server nicht. In diesem Fall kann der Server über die -f Option in der Befehlszeile gestartet werden.

Wenn ein Überwachungsfehler bewirkt, dass der Server heruntergefahren wird oder nicht gestartet wird, weil ON_FAILURE = SHUTDOWN für die Überwachung angegeben ist, wird das MSG_AUDIT_FORCED_SHUTDOWN Ereignis 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 nach der Fehlermeldung für die Prüfung, die das Herunterfahren verursacht, geschrieben. Ein Administrator kann überwachungsinduzierte Herunterfahren umgehen, indem er SQL Server im Einzelbenutzermodus mit dem Flag -m startet. Wenn Sie im Einzelbenutzermodus starten, wird jede Prüfung, bei der ON_FAILURE = SHUTDOWN für diese Sitzung angegeben ist, als ON_FAILURE = CONTINUE herabgestuft. Wenn SQL Server mit dem Flag -m gestartet wird, wird die MSG_AUDIT_SHUTDOWN_BYPASSED-Nachricht in das Fehlerprotokoll geschrieben.

Weitere Informationen zu Dienststartoptionen finden Sie unter Datenbank-Engine Dienststartoptionen.

Interne Vorgänge in Azure SQL Managed Instance

  • In Azure SQL-Datenbank und Azure SQL Managed Instance sind Ereignisse, die von SQLDBControlPlaneFirstPartyApp initiiert werden, eine interne Azure Funktion der Azure SQL-Datenbank Steuerebene. Von SQLDBControlPlaneFirstPartyApp initiierte Ereignisse sind Teil eines internen Synchronisierungsvorgangs zwischen dem SQL-Modul und Azure Resource Manager. Diese Ereignisse sind ein normaler Bestandteil der Ressourcenverwaltung und sind für die korrekte Ressourcendarstellung und -operation in Azure erforderlich.

Anfügen einer Datenbank mit einer definierten Prüfung

Das Anfügen einer Datenbank, die eine Überwachungsspezifikation mit einer GUID angibt, die nicht auf dem Server vorhanden ist, verursacht eine verwaiste Überwachungsspezifikation. Da eine Überwachung mit einer entsprechenden GUID nicht auf der Serverinstanz vorliegt, werden keine Überwachungsereignisse aufgezeichnet. Um diese Situation zu beheben, verwenden Sie den ALTER DATABASE AUDIT SPECIFICATION Befehl, um die verwaiste Überwachungsspezifikation mit einer vorhandenen Serverüberwachung zu verbinden. Oder verwenden Sie den CREATE SERVER AUDIT Befehl, um eine neue Serverüberwachung mit der angegebenen GUID zu erstellen.

Sie können eine Datenbank mit einer darauf definierten Überwachungsspezifikation an eine andere Edition von SQL Server anfügen, die SQL Server Überwachung nicht unterstützt, z. B. SQL Server Express, aber keine Überwachungsereignisse erfasst.

Datenbankspiegelung und SQL Server Überwachung

Eine Datenbank mit definierter Datenbanküberwachungsspezifikation, die Datenbankspiegelung verwendet, enthält die Datenbanküberwachungsspezifikation. 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. Dies kann mithilfe des Befehls CREATE AUDIT WITH GUID = <guid-from-source-server-audit>konfiguriert werden.

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

  • Für Windows-Ereignisprotokollziele muss die Sicherheitsrichtlinie auf dem Computer, auf dem sich der Spiegelserver befindet, den Zugriff des Dienstkontos auf das Sicherheits- oder Anwendungsereignisprotokoll zulassen.

Überwachen der Administratoraktivität

Mitglieder der festen Serverrolle sysadmin werden in jeder Datenbank als dbo -Benutzer identifiziert. Um die Aktionen der Administratoren zu überwachen, verfolgen Sie also die Aktionen des dbo -Benutzers.

Berechtigungen

Jedes Feature und jeder Befehl für SQL Server Überwachung verfügt über individuelle Berechtigungsanforderungen.

Um eine Serverüberwachung oder Serverüberwachungsspezifikation zu erstellen, zu ändern oder abzulegen, benötigen Serverprinzipale die ALTER ANY SERVER AUDIT oder die CONTROL SERVER Berechtigung. Zum Erstellen, Ändern oder Löschen einer Datenbank-Auditspezifikation benötigen Datenbankbenutzer die ALTER ANY DATABASE AUDIT-Berechtigung oder die ALTER- oder CONTROL-Berechtigung auf der Datenbank. Darüber hinaus müssen Benutzer die Berechtigung zum Herstellen einer Verbindung mit der Datenbank oder über ALTER ANY SERVER AUDIT oder CONTROL SERVER Berechtigungen verfügen.

Die VIEW ANY DEFINITION Berechtigung bietet Zugriff auf die Überwachungsansichten auf Serverebene und VIEW DEFINITION bietet Zugriff auf die Überwachungsansichten auf Datenbankebene. Die Verweigerung dieser Berechtigungen setzt die Möglichkeit zum Anzeigen der Katalogansichten außer Kraft, auch wenn der Berechtigte über die ALTER ANY SERVER AUDIT oder ALTER ANY DATABASE AUDIT Berechtigungen verfügt.

Um Überwachungsdaten mit fn_get_audit_file zu lesen, benötigen SQL Server 2019 (15.x) und frühere Versionen CONTROL SERVER Berechtigung auf dem Server, während SQL Server 2022 (16.x) und höhere Versionen VIEW SERVER SECURITY AUDIT Berechtigung erfordern. Weitere Informationen finden Sie unter sys.fn_get_audit_file.

Weitere Informationen zum Erteilen von Rechten und Berechtigungen finden Sie unter GRANT.

Achtung

Prinzipale in der Sysadmin-Rolle können jede Überwachungskomponente manipulieren, und Prinzipale in der db_owner Rolle können Überwachungsspezifikationen in einer Datenbank manipulieren. SQL Server Überwachung überprüft, ob eine Anmeldung, die eine SQL Server Überwachungsspezifikation erstellt oder ändert, mindestens über die Berechtigung ALTER ANY DATABASE AUDIT verfügt. Es wird jedoch keine Überprüfung durchgeführt, wenn Sie eine Datenbank anfügen. Sie sollten davon ausgehen, dass alle Datenbanküberwachungsspezifikationen nur so vertrauenswürdig sind wie die Prinzipale in der Rolle Sysadmin oder db_owner.

Erstellen und Verwalten von Audits mit Transact-SQL

Sie können DDL-Anweisungen, dynamische Verwaltungsansichten und -funktionen sowie Katalogansichten verwenden, um alle Aspekte von SQL Server Überwachung zu implementieren.

Data Definition Language-Anweisungen

Sie können die folgenden DDL-Anweisungen zum Erstellen, Ändern und Löschen von Überwachungsspezifikationen verwenden:

DDL-Anweisungen Beschreibung
AUTORISIERUNG ÄNDERN Ändert den Besitz eines sicherungsfähigen Elements.
ALTER DATENBANK-AUDIT-SPEZIFIKATION Ändert ein Datenbanküberwachungsspezifikationsobjekt mithilfe der SQL Server Überwachungsfunktion.
ALTER SERVER-ÜBERWACHUNG Ändert ein Server-Überwachungsobjekt mithilfe des SQL Server Audit-Features.
ALTER SERVER AUDIT-SPEZIFIKATION Ändert ein Serverüberwachungsspezifikationsobjekt mithilfe der SQL Server Audit-Funktion.
DATENBANKÜBERWACHUNGSSPEZIFIKATION ERSTELLEN Erstellt ein Objekt für eine Datenbank-Überwachungsspezifikation mithilfe der SQL Server Audit-Funktion.
SERVERÜBERWACHUNG ERSTELLEN Erstellt ein Server-Audit-Objekt mit SQL Server Audit.
ERSTELLEN DER SERVERÜBERWACHUNGSSPEZIFIKATION Erstellt ein Serverüberwachungsspezifikationsobjekt mithilfe der SQL Server Überwachungsfunktion.
Datenbank-Audit-Spezifikation löschen Entfernt ein Objekt für die Datenbanküberwachungsspezifikation mithilfe der SQL Server-Auditfunktion.
DROP SERVER-ÜBERWACHUNG Entfernt ein Serverüberwachungsobjekt mithilfe der SQL Server-Audit-Funktion.
DROP SERVER-ÜBERWACHUNGSSPEZIFIKATION Entfernt ein Server-Überwachungsspezifikationsobjekt mithilfe der SQL Server-Überwachungsfunktion.

Dynamische Sichten und Funktionen

In der folgenden Tabelle sind die dynamischen Ansichten und Funktionen aufgeführt, die Sie für SQL Server Überwachung verwenden können.

Dynamische Sichten und Funktionen Beschreibung
sys.dm_audit_actions Gibt eine Zeile für jede Überwachungsaktion zurück, die im Überwachungsprotokoll gemeldet werden kann, und jede Überwachungsaktionsgruppe, die als Teil der SQL Server Überwachung konfiguriert werden kann.
sys.dm_server_audit_status Stellt Informationen über den aktuellen Status der Überwachung bereit.
sys.dm_audit_class_type_map Gibt eine Tabelle zurück, die das Feld class_type im Überwachungsprotokoll dem Feld class_desc in sys.dm_audit_actions zuordnet.
fn_get_audit_file Gibt Informationen aus einer Audit-Datei zurück, die von einem Server-Audit erstellt wurde.

Katalogansichten

In der folgenden Tabelle sind die Katalogansichten aufgeführt, die Sie für SQL Server Überwachung verwenden können.

Katalogansichten Beschreibung
sys.database_audit_specifications Enthält Informationen zu den Datenbank-Audit-Spezifikationen in einem SQL Server-Audit auf einer Server-Instanz.
sys.database_audit_specification_details Enthält Informationen zu den Datenbanküberwachungsspezifikationen in einer SQL Server Überwachung auf einer Serverinstanz für alle Datenbanken.
sys.server_audits Enthält eine Zeile für jede SQL Server Überwachung in einer Serverinstanz.
sys.server_audit_specifications Enthält Informationen zu den Auditspezifikationen des Servers in einer SQL Server-Audit auf einer Serverinstanz.
sys.server_audit_specifications_details Enthält Informationen zu den Details der Serveraudit-Spezifikation (Aktionen) in einem SQL Server Audit auf einer Serverinstanz.
sys.server_file_audits Speichert erweiterte Informationen über den Dateiprüfungstyp in der SQL Server-Überwachung auf einer Serverinstanz.

Nächster Schritt