Ü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:
Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexibler Server aus.
Wählen Sie im Ressourcenmenü unter Einstellungen die Option Serverparameter aus.
Suchen Sie nach den
pgaudit
-Parametern.Wählen Sie den entsprechenden zu bearbeitenden Parameter aus. Um beispielsweise mit der Protokollierung der Anweisungen
INSERT
,UPDATE
,DELETE
,TRUNCATE
undCOPY
zu beginnen, legen Siepgaudit.log
aufWRITE
fest.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:"