Granskningsloggning i Azure Database for PostgreSQL – flexibel server

GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server

Granskningsloggning av databasaktiviteter i Azure Database for PostgreSQL – flexibel server är tillgänglig via PostgreSQL-granskningstillägget: pgAudit. pgAudit innehåller detaljerad sessions- och/eller objektgranskningsloggning.

Om du vill ha Azure-resursnivåloggar för åtgärder som beräkning och lagringsskalning kan du läsa Azure-aktivitetsloggen.

Användningsöverväganden

Som standard genereras pgAudit-logginstruktioner tillsammans med dina vanliga logginstruktioner med hjälp av standardfunktionen för loggning i Postgres. I Azure Database for PostgreSQL – flexibel server kan du konfigurera alla loggar som ska skickas till Azure Monitor Log Store för senare analys i Log Analytics. Om du aktiverar Azure Monitor-resursloggning skickas loggarna automatiskt (i JSON-format) till Azure Storage, Event Hubs och/eller Azure Monitor-loggar, beroende på ditt val.

Mer information om hur du konfigurerar loggning till Azure Storage-, Event Hubs- eller Azure Monitor-loggar finns i avsnittet resursloggar i artikeln om serverloggar.

Installera pgAudit

Innan du kan installera pgAudit-tillägget i Azure Database for PostgreSQL – flexibel server måste du tillåta pgAudit-tillägget för användning.

Använda Azure-portalen:

  1. Välj din azure database for PostgreSQL– flexibel serverinstans.
  2. I sidofältet väljer du Serverparametrar.
  3. Sök efter parametern azure.extensions .
  4. Välj pgAudit som tillägg som du vill tillåta-lista. Skärmbild som visar Azure Database for PostgreSQL – tillåtna tillägg för installation.

Använda Azure CLI:

Du kan tillåta listtillägg via cli-parameteruppsättningskommandot.

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

Om du vill installera pgAudit måste du inkludera det i serverns delade förinläsningsbibliotek. En ändring av Postgres shared_preload_libraries parameter kräver att en omstart av servern börjar gälla. Du kan ändra parametrar med hjälp av Azure-portalen, Azure CLI eller REST API.

Använda Azure-portalen:

  1. Välj din azure database for PostgreSQL– flexibel serverinstans.

  2. I sidofältet väljer du Serverparametrar.

  3. Sök efter parametern shared_preload_libraries .

  4. Välj pgaudit. Skärmbild som visar en flexibel Azure Database for PostgreSQL-server som aktiverar shared_preload_libraries för pgaudit.

  5. Du kan kontrollera att pgaudit läses in i shared_preload_libraries genom att köra följande fråga i psql:

    show shared_preload_libraries;
    

    Du bör se pgaudit i frågeresultatet som returnerar shared_preload_libraries.

  6. Anslut till servern med hjälp av en klient (t.ex. psql) och aktivera pgAudit-tillägget.

    CREATE EXTENSION pgaudit;
    

Dricks

Om du ser ett fel kontrollerar du att du har startat om servern när du har sparat shared_preload_libraries.

pgAudit-inställningar

med pgAudit kan du konfigurera loggning av sessions- eller objektgranskning. Sessionsgranskningsloggning genererar detaljerade loggar med körda instruktioner. Loggning av objektgranskning är granskningsomfång för specifika relationer. Du kan välja att konfigurera en eller båda typerna av loggning.

När du har aktiverat pgAudit kan du konfigurera dess parametrar för att börja logga. Om du vill konfigurera pgAudit kan du följa anvisningarna nedan. Använda Azure-portalen:

  1. Välj din Azure Database for PostgreSQL-server.
  2. I sidofältet väljer du Serverparametrar.
  3. Sök efter parametrarna pgaudit .
  4. Välj lämplig inställningsparameter som ska redigeras. Till exempel för att starta loggning inställd pgaudit.logWRITESkärmbild som visar Azure Database for PostgreSQL – konfigurera loggning med pgaudit
  5. Klicka på knappen Spara för att spara ändringar

PgAudit-dokumentationen innehåller definitionen av varje parameter. Testa parametrarna först och bekräfta att du får det förväntade beteendet.

Kommentar

Om du ställer in pgaudit.log_client på PÅ omdirigeras loggar till en klientprocess (till exempel psql) i stället för att skrivas till filen. Den här inställningen bör normalt vara inaktiverad.

pgaudit.log_level är bara aktiverad när pgaudit.log_client är på.

Kommentar

I Azure Database for PostgreSQL kan flexibel server pgaudit.log inte anges med hjälp av en - (minus) teckengenväg enligt beskrivningen i pgAudit-dokumentationen. Alla obligatoriska instruktionsklasser (LÄS, SKRIV osv.) bör anges individuellt.

Kommentar

Om du anger parametern log_statement till DDL eller ALL och kör ett CREATE ROLE/USER ... WITH PASSWORD ... ; eller ALTER ROLE/USER ... WITH PASSWORD ... ;, -kommando skapar PostgreSQL en post i PostgreSQL-loggarna, där lösenordet loggas i klartext, vilket kan orsaka en potentiell säkerhetsrisk. Detta är förväntat enligt PostgreSQL-motordesign. Du kan dock använda PGAudit-tillägget och ange pgaudit.log='DDL' parametern på sidan serverparametrar, som inte registrerar någon CREATE/ALTER ROLE instruktion i Postgres-loggen, till skillnad från Postgres-inställningen log_statement='DDL' . Om du behöver logga dessa instruktioner kan du lägga till pgaudit.log ='ROLE' dessutom, vilket medan loggning 'CREATE/ALTER ROLE' redigerar lösenordet från loggar.

Format för granskningsloggar

Varje granskningspost anges i AUDIT: början av loggraden. Formatet för resten av posten beskrivs i pgAudit-dokumentationen.

Komma igång

För att snabbt komma igång ställer du in pgaudit.logWRITEoch öppnar serverloggarna för att granska utdata.

Visa granskningsloggar

Hur du kommer åt loggarna beror på vilken slutpunkt du väljer. Information om Azure Storage finns i artikeln om logglagringskonto . Information om Event Hubs finns i artikeln strömma Azure-loggar .

För Azure Monitor-loggar skickas loggar till den arbetsyta som du har valt. Postgres-loggarna använder samlingsläget AzureDiagnostics , så att de kan frågas från tabellen AzureDiagnostics. Fälten i tabellen beskrivs nedan. Läs mer om frågor och aviseringar i översikten över Azure Monitor-loggar.

Du kan använda den här frågan för att komma igång. Du kan konfigurera aviseringar baserat på frågor.

Sök efter alla pgAudit-poster i Postgres-loggar efter en viss server under den senaste dagen

AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

Nästa steg