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 – Flexible Server ist über die PostgreSQL-Überwachungserweiterung pgAudit 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 zusammen mit ihren regulären Protokollanweisungen mithilfe der Standardprotokollierungsfunktion von Postgres ausgegeben. In Azure Database for PostgreSQL – Flexible 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.

Installieren von pgAudit

Bevor Sie die Erweiterung „pgAudit“ in Azure Database for PostgreSQL – Flexible Server installieren können, müssen Sie der Positivliste diese Erweiterung hinzufügen.

Verwenden des Azure-Portals:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie auf der Seitenleiste Serverparameter aus.
  3. Suchen Sie nach dem Parameter azure.extensions.
  4. Wählen Sie „pgAudit“ als Erweiterung aus, die Sie der Positivliste hinzufügen möchten. Screenshot der Azure-Datenbank für PostgreSQL – Zulassungsauflistungserweiterungen für die Installation.

Verwenden der Azure CLI:

Sie können der Positivliste Erweiterungen über Befehle des CLI-Parametersatzes hinzufügen.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value pgAudit

Um pgAudit installieren zu können, müssen Sie es in die freigegebenen im Voraus geladenen Bibliotheken des Servers einbeziehen. Damit eine Änderung desshared_preload_libraries -Parameters von PostgreSQL wirksam wird, ist ein Serverneustart erforderlich. Sie können Parameter mithilfe des Microsoft Azure-Portals, der Azure-Befehlszeilenschnittstelle oder der REST-API ändern.

Verwenden des Azure-Portals:

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

  2. Wählen Sie auf der Seitenleiste Serverparameter aus.

  3. Suchen Sie nach dem Parameter shared_preload_libraries.

  4. Wählen Sie pgaudit aus. Screenshot mit Azure Database for PostgreSQL – Flexible Server, der shared_preload_libraries für pgaudit aktiviert.

  5. Sie können überprüfen, ob pgaudit in shared_preload_libraries geladen wird, indem Sie die folgende Abfrage in psql ausführen:

    show shared_preload_libraries;
    

    Im Abfrageergebnis, das die shared_preload_libraries wiedergibt, sollte pgaudit angezeigt werden.

  6. Verbinden Ihres Servers mithilfe eines Clients (wie psql) und Aktivieren der pgAudit-Erweiterung.

    CREATE EXTENSION pgaudit;
    

Tipp

Wenn ein Fehler angezeigt wird, vergewissern Sie sich, dass Sie nach dem Speichern von shared_preload_libraries Ihren Server neu gestartet haben.

pgAudit-Einstellungen

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 aktiviert haben, 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 Azure Database for PostgreSQL-Server aus.
  2. Wählen Sie auf der Seitenleiste Serverparameter aus.
  3. Suchen Sie nach den pgaudit-Parametern.
  4. Wählen Sie den entsprechenden Einstellungsparameter aus, der bearbeitet werden soll. Legen Sie z. B. für die ersten Schritte bei der Protokollierung pgaudit.log auf WRITE fest. Screenshot von Azure Database for PostgreSQL: Konfigurieren der Protokollierung mit „pgaudit“
  5. Klicken Sie auf die Schaltfläche Speichern, um die Änderungen zu speichern.

Die pgAudit-Dokumentation stellt die Definition der einzelnen Parameter bereit. Testen Sie zuerst die Parameter, und vergewissern Sie sich, dass Sie das erwartete Verhalten aufweisen.

Hinweis

Wenn pgaudit.log_client auf „ON“ festgelegt wird, werden Protokolle an einen Clientprozess (z.B. psql) umgeleitet, anstatt in eine Datei geschrieben zu werden. Diese Einstellung sollte in der Regel deaktiviert bleiben.

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

Hinweis

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.

Hinweis

Wenn Sie den Parameter „log_statement“ 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, wobei 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 den Parameter pgaudit.log='DDL' auf der Seite „Serverparameter“ festlegen, die im Gegensatz zur Postgres-Einstellung log_statement='DDL'keine CREATE/ALTER ROLE-Anweisung im Postgres-Protokoll aufzeichnet. Wenn Sie diese Anweisungen protokollieren müssen, können Sie zusätzlich pgaudit.log ='ROLE' hinzufügen. Während der Protokollierung wird 'CREATE/ALTER ROLE' dann das Kennwort aus den Protokollen entfernen.

Format der Überwachungsprotokolle

Jeder Überwachungseintrag wird durch AUDIT: am Anfang der Protokollzeile gekennzeichnet. Das Format des restlichen Eintrags wird in der pgAudit-Dokumentation ausführlich erläutert.

Erste Schritte

Legen Sie für einen schnellen Einstieg pgaudit.log auf WRITE 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. Die Felder der Tabelle sind unten beschrieben. 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 =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

Nächste Schritte