SQL Server-Datenbankprüfung

Auf dieser Seite wird die Datenbankprüfung in Cloud SQL mit der Funktionalität von SQL Server-Audit beschrieben.

Überblick

In Cloud SQL umfassen SQL Server-Audit-Funktionen folgende Funktionen:

  • Audit-Spezifikationen für Server erstellen
  • Tracking und Logging von Ereignissen auf Server- und Datenbankebene

Weitere Informationen zu den Funktionen von SQL Server-Audit finden Sie unter SQL Server-Audit (Datenbank-Engine).

Vorbereitung

Prüfen Sie vor dem Aktivieren der Datenbankprüfung die Voraussetzungen in diesem Abschnitt.

Cloud Storage-Bucket für Audit-Dateien

Audit-Dateien (Audit-Logs) werden in einen Cloud Storage-Bucket-Speicherort hochgeladen. Daher müssen Sie möglicherweise einen Bucket erstellen, der Ihrem Google Cloud-Konto gehört.

Alternativ können Sie einen Bucket-Speicherort verwenden, der zu einem anderen Konto gehört. Wenn Sie die Prüfung aktivieren und die erforderlichen Berechtigungen haben, wird die Rolle roles/storage.objectAdmin automatisch für das Hochladen von Audit-Dateien an den Bucket-Speicherort des angegebenen Dienstkontos gewährt. Wenn Sie nicht die erforderlichen Berechtigungen haben, müssen Sie sie später dem Dienstkonto zuweisen.

Gültiger Nutzer für die Aktivierung des Auditings

Zum Aktivieren der Prüfung und zum Erstellen von Audit-Spezifikationen muss der Standardnutzer sqlserver verfügbar sein. Als Sie eine Cloud SQL for SQL Server-Instanz erstellt haben, wurde der sqlserver-Standardnutzer automatisch erstellt.

Prüfung aktivieren

Wenn Sie die Prüfung aktivieren, ist ein Cloud Storage-Speicherort erforderlich. Folgende sind optional:

  • Aufbewahrungsdauer des Logs auf der Instanz
  • Das Uploadintervall (Uploadhäufigkeit)

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
  3. Klicken Sie auf Bearbeiten.
  4. Klicken Sie im Abschnitt Instanz anpassen auf Flags und Parameter.
  5. Klicken Sie auf das Kästchen neben SQL Server-Audit aktivieren.
  6. Geben Sie einen Cloud Storage-Bucket als Speicherort an, an den Audit-Dateien hochgeladen werden.
  7. Klicken Sie auf Advanced Options (Erweiterte Optionen).
  8. Geben Sie optional eine Anzahl von Tagen für die Logaufbewahrung an (1 bis 7 Tage; 7 Tage ist die Standardeinstellung).
  9. Geben Sie optional an, wie oft Logs (Audit-Dateien) in Minuten hochgeladen werden sollen (1–720 Minuten, 10 Minuten sind die Standardeinstellung).
  10. Klicken Sie auf Speichern, um die Änderungen zu übernehmen.

gcloud

Der folgende Befehl aktiviert die Prüfung:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m

In der folgenden Tabelle sind die gcloud-Parameter dieses Vorgangs zusammengefasst:

Parameter Beschreibung Zulässige Werte Standardwert
--audit-bucket-path Erforderlich. Der Speicherort als Cloud Storage-Bucket, in den Audit-Dateien hochgeladen werden. Leer, wenn das Audit deaktiviert ist. Andernfalls ein Bucket-Pfad, der mit gs:// beginnt. Leer, da Audits standardmäßig deaktiviert sind.
--audit-retention-interval Optional. Die Anzahl der Tage für die Aufbewahrung von Audit-Logs auf dem Laufwerk. 1 bis 7 Tage Nur Tage sind zulässig. 7 Tage
--audit-upload-interval Optional. Die Häufigkeit, mit der Audit-Logs hochgeladen werden (Audit-Dateien). 1-720 Minuten 10 Minuten.

REST Version 1

Mit der REST API können Sie das Auditing für eine Instanz aktivieren. Wie im folgenden Anfrageprototyp gezeigt, können Sie einen Cloud Storage-Bucket, die Anzahl der Tage für die Aufbewahrung der Audit-Datei und die Häufigkeit für das Hochladen der Auditdateien festlegen. Nur der Bucket-Speicherort ist erforderlich. Weitere Informationen finden Sie unter SqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

REST v1beta4

Mit der REST API können Sie das Auditing für eine Instanz aktivieren. Wie im folgenden Anfrageprototyp gezeigt, können Sie einen Cloud Storage-Bucket, die Anzahl der Tage für die Aufbewahrung der Audit-Datei und die Häufigkeit für das Hochladen der Auditdateien festlegen. Nur der Bucket-Speicherort ist erforderlich. Weitere Informationen finden Sie unter SqlServerAuditConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

Prüfung deaktivieren

Dieser Abschnitt enthält die Optionen zum Deaktivieren des Audits. Wenn Sie die Prüfung deaktivieren, werden einschließlich der noch nicht hochgeladenen Dateien alle Audit-Dateien aus der Instanz gelöscht. Darüber hinaus sind alle Server-Audits deaktiviert und müssen wieder aktiviert werden, wenn die Prüfung fortgesetzt werden soll. Audit-Logs, die in den Cloud Storage-Bucket hochgeladen wurden, können je nach Aufbewahrungseinstellungen für den Bucket verbleiben.

Im Folgenden sind die Optionen zum Deaktivieren der Prüfung aufgeführt.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie auf den Instanznamen, um die Übersichtsseite einer Instanz zu öffnen.
  3. Klicken Sie auf Bearbeiten.
  4. Klicken Sie im Abschnitt Instanz anpassen auf Flags und Parameter.
  5. Deaktivieren Sie das Kästchen neben SQL Server-Audit aktivieren.
  6. Klicken Sie auf Speichern, um die Änderungen zu übernehmen.

gcloud

Mit dem folgenden Befehl, in dem ein Wert für den Parameter --audit-bucket-path weggelassen wird, wird die Prüfung deaktiviert:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=

REST Version 1

Im Folgenden werden die Felder des sqlServerAuditConfig-Objekts weggelassen. Dies ist ein Anfrageprototyp zum Deaktivieren der Prüfung:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

REST v1beta4

Im Folgenden werden die Felder des sqlServerAuditConfig-Objekts weggelassen. Dies ist ein Anfrageprototyp zum Deaktivieren der Prüfung:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

Automatisches Hochladen von Audit-Dateien

Nachdem Sie die Prüfung aktiviert haben, werden die generierten Audit-Dateien automatisch in den angegebenen Cloud Storage-Bucket hochgeladen.

Die generierten Audit-Dateien werden auch mit der Instanz gespeichert, bis die konfigurierte Aufbewahrungsdauer (Intervall) abläuft. Nach diesem Zeitraum werden die Audit-Dateien endgültig gelöscht, selbst die Dateien, die nicht hochgeladen werden konnten.

Server-Audits erstellen

Nachdem Sie die Prüfung aktiviert haben, verfügt der Standardnutzer sqlserver über Berechtigungen zum Erstellen, Ändern und Löschen von Server-Audits.

Verwenden Sie den Befehl CREATE SERVER AUDIT, um neue Server-Audits zu definieren. Sie können auch die Benutzeroberfläche von SQL Server Management Studio (SSMS) verwenden, um Server-Audits zu erstellen.

Die folgenden Parameterkategorien werden für alle Server-Audits erzwungen:

Kategorie des Parameters Zulässige Werte
Bei Audit-Log-Fehler Fortfahren oder fehlschlagen
Auditziel Datei
Pfad /var/opt/mssql/audit
Maximale Dateigröße 2-50 MB
Maximale Zeilenumbruchdateien Darf nicht konfiguriert sein
Höchstzahl der Dateien Darf nicht konfiguriert sein
Speicherplatz reservieren Aus

Audits lesen

Audits aus einer Instanz lesen

Zum Abrufen der Daten aus einer Audit-Datei, die von einem Server-Audit erstellt wurde, können Sie das folgende gespeicherte Verfahren verwenden: msdb.dbo.gcloudsql_fn_get_audit_file. Für das Verfahren msdb.dbo.gcloudsql_fn_get_audit_file werden dieselben Parameter wie für die Funktion sys.fn_get_audit_file akzeptiert.

Informationen zur Verwendung dieser gespeicherten Prozedur finden Sie unter sys.fn_get_audit_file.

Im Folgenden finden Sie ein Beispiel für die Verwendung des msdb.dbo.gcloudsql_fn_get_audit_file-Verfahrens zum Abrufen von Audit-Daten:

SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Audits aus einem Bucket lesen

Wenn Sie Audits aus einem Cloud Storage-Bucket lesen möchten, können Sie die Dateien aus dem Bucket in eine SQL Server-Instanz herunterladen. Diese SQL Server-Instanz könnte so aussehen:

  • Eine Compute Engine-Windows-Instanz
  • Eine Compute Engine-Linux-Instanz
  • Eine andere Art von Instanz, auf der SQL Server ausgeführt wird

Audit-Dateien aus dem Bucket sollten an einen für diese Instanz zugänglichen Speicherort übertragen werden, z. B. an das lokale Laufwerk. Führen Sie dann die Funktion sys.fn_get_audit_file mit einem Mitglied der festen Serverrolle "serveradmin" aus, um Informationen aus den Audit-Dateien zurückzugeben. Wenn Sie beispielsweise von einer Windows-Instanz Audit-Dateien nach D:\Audit übertragen haben, können Sie einen Befehl wie den folgenden verwenden:

SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Messwerte überwachen

Sie können prüfbezogene Vorgänge als Teil der Cloud SQL-Messwerte überwachen, die über Metrics Explorer verfügbar sind:

  • database/sqlserver/audits_upload_count. Dieser Messwert gibt die Gesamtzahl der Upload-Versuche von Audit-Dateien für erfolgreiche und fehlgeschlagene Versuche an. Prüfen Sie diesen Messwert, um zu prüfen, ob Uploads erfolgreich waren.
  • database/sqlserver/audits_size. Dieser Messwert gibt an, wie viel Speicherplatz von den auf der Instanz gespeicherten Audit-Dateien zum Zeitpunkt einer Messung belegt wird. Dieser Messwert gibt die Gesamtgröße der Audit-Dateien auf der Instanz in Byte an.

Best Practices

  • So vermeiden Sie die Übertragung großer Dateien zwischen Regionen:
    • Multiregionale Cloud Storage-Buckets erstellen oder
    • Cloud Storage-Ziel-Bucket in derselben Region wie die Instanz einrichten
  • Bevor Sie die Funktion von SQL Server Audit verwenden, sollten Sie automatische Speichererweiterungen aktivieren. Audit-Dateien benötigen je nach Gesamtgröße und Aufbewahrungsintervall möglicherweise viel Speicherplatz.
  • Prüfen Sie nach dem Aktivieren des Audits, ob Ihre Instanz Audit-Dateien in Ihren Cloud Storage-Bucket hochladen kann. Wenn der Anfragende, der die Prüfung eingerichtet hat, nicht die erforderlichen Berechtigungen zum Hochladen von Dateien in den Cloud Storage-Bucket hat, werden die Berechtigungen nicht automatisch gewährt.
  • Richten Sie eine messwertbasierte Benachrichtigungsrichtlinie ein, um über fehlgeschlagene Uploadversuche und eine übermäßige Laufwerknutzung informiert zu werden.
  • Richten Sie eine Datenaufbewahrungsrichtlinie für Ihren Cloud Storage-Bucket ein, um zu viele Audit-Dateien zu vermeiden.