Freigeben über


Überwachungsprotokollierung in Azure Database for PostgreSQL – Flexibler Server

GILT FÜR: Azure Database for PostgreSQL – Flexibler Server

Die Überwachungsprotokollierung von Datenbankaktivitäten in Azure Database for PostgreSQL – Flexibler Server ist mit der pgaudit-Erweiterung verfügbar. pgaudit bietet eine ausführliche Sitzungs- und/oder Objektüberwachungsprotokollierung.

Wenn Sie Azure-Protokolle auf Ressourcenebene für Vorgänge wie Compute- und Speicherskalierung erfassen möchten, lesen Sie den Artikel zum Azure-Aktivitätsprotokoll.

Überlegungen zur Verwendung

Standardmäßig werden pgaudit-Protokollanweisungen und Ihre regulären Protokollanweisungen über die Standardprotokollierungsfunktion von Postgres ausgegeben. In Azure Database for PostgreSQL – Flexibler Server können Sie konfigurieren, dass alle Protokolle für spätere Analysen in Log Analytics an den Azure Monitor-Protokollspeicher gesendet werden. Wenn Sie die Azure Monitor-Ressourcenprotokollierung aktivieren, werden Ihre Protokolle abhängig von Ihrer Wahl automatisch (im JSON-Format) an Azure Storage, Event Hubs und/oder Azure Monitor-Protokolle gesendet.

Weitere Informationen zum Einrichten der Protokollierung für Azure Storage, Event Hubs oder Azure Monitor-Protokolle finden Sie im Abschnitt „Ressourcenprotokolle“ des Artikels Serverprotokolle.

Erweiterung wird installiert

Um die pgaudit-Erweiterung verwenden zu können, müssen Sie die Erweiterung in der Datenbank, in der Sie sie verwenden möchten, auf die Positivliste setzen, laden und erstellen.

Konfigurieren der Erweiterungseinstellungen

pgaudit ermöglicht es Ihnen, die Sitzungs- oder Objektüberwachungsprotokollierung zu konfigurieren. Bei der Sitzungsüberwachungsprotokollierung werden detaillierte Protokolle von ausgeführten Anweisungen ausgegeben. Bei der Objektüberwachungsprotokollierung ist die Überwachung auf bestimmte Beziehungen gerichtet. Sie können auswählen, ob Sie einen oder beide Protokollierungstypen einrichten möchten.

Nachdem Sie pgaudit aktivieren, können Sie die zugehörigen Parameter so konfigurieren, dass die Protokollierung gestartet wird.

Zum Konfigurieren von pgaudit können Sie die folgenden Anweisungen befolgen:

Verwenden des Azure-Portals:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexibler Server aus.

  2. Wählen Sie im Ressourcenmenü unter Einstellungen die Option Serverparameter aus.

  3. Suchen Sie nach den pgaudit-Parametern.

  4. Wählen Sie den entsprechenden zu bearbeitenden Parameter aus. Um beispielsweise mit der Protokollierung der Anweisungen INSERT, UPDATE, DELETE, TRUNCATE und COPY zu beginnen, legen Sie pgaudit.log auf WRITE fest.

  5. Wählen Sie die Schaltfläche Speichern aus, um Änderungen zu speichern.

Die offizielle Dokumentation von pgaudit enthält die Definition der einzelnen Parameter. Testen Sie zuerst die Parameter, und vergewissern Sie sich, dass Sie das erwartete Verhalten aufweisen.

Wenn Sie die Einstellung pgaudit.log_client beispielsweise auf ON festlegen, werden nicht nur Überwachungsereignisse in das Serverprotokoll geschrieben, sondern auch an Clientprozesse gesendet, z. B. an psql. Diese Einstellung sollte in der Regel deaktiviert bleiben.

pgaudit.log_level ist nur aktiviert, wenn pgaudit.log_client aktiviert ist.

In Azure Database for PostgreSQL – Flexible Server kann pgaudit.log nicht mit einem Minuszeichen (-) festgelegt werden. Dies ist auch in der Dokumentation zu pgaudit beschrieben. Alle erforderlichen Anweisungsklassen (READ, WRITE usw.) sollten einzeln angegeben werden.

Wenn Sie den log_statement-Parameter auf DDL oder ALL festlegen und den Befehl CREATE ROLE/USER ... WITH PASSWORD ... ; oder ALTER ROLE/USER ... WITH PASSWORD ... ; ausführen, erstellt PostgreSQL einen Eintrag in den PostgreSQL-Protokollen, in denen das Kennwort in Klartext protokolliert wird. Dies stellt ein potenzielles Sicherheitsrisiko dar. Dies ist das erwartete Verhalten gemäß dem Entwurf der PostgreSQL-Engine.

Sie können jedoch die pgaudit-Erweiterung verwenden und pgaudit.log auf DDL festlegen, sodass keine CREATE/ALTER ROLE-Anweisung im Postgres-Serverprotokoll aufgezeichnet im Gegensatz dazu, wenn Sie log_statement auf DDL festlegen. Wenn Sie diese Anweisungen protokollieren müssen, können Sie auch pgaudit.log auf ROLE festlegen. Während der Protokollierung von CREATE/ALTER ROLE wird dann das Kennwort aus den Protokollen entfernt.

Format der Überwachungsprotokolle

Jeder Überwachungseintrag beginnt mit AUDIT:. Das Format des restlichen Eintrags wird in der Dokumentation von pgaudit ausführlich erläutert.

Erste Schritte

Legen Sie für einen schnellen Einstieg pgaudit.log auf ALL fest, und öffnen Sie Ihre Serverprotokolle, um die Ausgabe zu überprüfen.

Anzeigen von Überwachungsprotokollen

Die Art und Weise, wie Sie auf die Protokolle zugreifen, hängt vom gewählten Endpunkt ab. Informationen zu Azure Storage finden Sie im Artikel Protokollspeicherkonto. Informationen zu Event Hubs finden Sie im Artikel zum Streamen von Azure-Protokollen.

Bei Azure Monitor-Protokollen werden die Protokolle an den von Ihnen ausgewählten Arbeitsbereich gesendet. Für die Postgres-Protokolle wird der Sammlungsmodus AzureDiagnostics verwendet, damit sie über die Tabelle „AzureDiagnostics“ abgefragt werden können. Weitere Informationen zu Abfragen und Warnungen finden Sie in der Übersicht über Abfragen für Azure Monitor-Protokolle.

Sie können diese Abfrage für den Einstieg verwenden. Sie können Warnungen basierend auf Abfragen konfigurieren.

Suchen in den Postgres-Protokollen eines bestimmten Servers für den letzten Tag nach allen pgaudit-Einträgen

AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"