Sdílet prostřednictvím


Protokolování auditu na flexibilním serveru Azure Database for PostgreSQL

PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL

Protokolování auditu databázových aktivit na flexibilním serveru Azure Database for PostgreSQL je dostupné prostřednictvím rozšíření Audit PostgreSQL: pgaudit. pgaudit poskytuje podrobné protokolování auditu a/nebo objektu.

Pokud chcete protokoly na úrovni prostředků Azure pro operace, jako je škálování výpočetních prostředků a úložiště, přečtěte si protokol aktivit Azure.

Důležité informace o využití

Ve výchozím nastavení pgaudit se příkazy protokolu a běžné příkazy protokolu generují pomocí standardního protokolování Postgres. Na flexibilním serveru Azure Database for PostgreSQL můžete nakonfigurovat odesílání všech protokolů do úložiště protokolů služby Azure Monitor pro pozdější analýzy v Log Analytics. Pokud povolíte protokolování prostředků služby Azure Monitor, vaše protokoly se automaticky odesílají (ve formátu JSON) do služby Azure Storage, Event Hubs a/nebo do protokolů služby Azure Monitor v závislosti na vaší volbě.

Informace o nastavení protokolování do protokolů azure Storage, Event Hubs nebo Azure Monitoru najdete v části protokoly prostředků článku protokoly serveru.

Instalování pgaudit

Než budete moct nainstalovat pgaudit rozšíření na flexibilní server Azure Database for PostgreSQL, musíte povolit rozšíření pro pgaudit použití.

Pomocí webu Azure Portal:

   1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.    1. Na bočním panelu vyberte Parametry serveru.    1. Vyhledejte azure.extensions parametr.    1. Vyberte pgaudit jako rozšíření, které chcete povolit.

Snímek obrazovky seznamu povolených ve službě Azure Database for PostgreSQL

Pomocí Azure CLI:

Rozšíření seznamu povolených můžete povolit pomocí příkazu sady parametrů rozhraní příkazového řádku.

 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`

Chcete-li nainstalovat pgaudit, musíte ho zahrnout do sdílených knihoven předběžného načtení serveru. Změna parametru shared_preload_libraries Postgres vyžaduje, aby se projevilo restartování serveru. Parametry můžete změnit pomocí webu Azure Portal, Azure CLI nebo rozhraní REST API.

Pomocí webu Azure Portal:

  1. Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.

  2. Na bočním panelu vyberte Parametry serveru.

  3. Vyhledejte shared_preload_libraries parametr.

  4. Vyberte možnost pgaudit.

    Snímek obrazovky s flexibilním serverem Azure Database for PostgreSQL, který umožňuje shared_preload_libraries pro pgaudit

  5. To, že pgauditje načtený v shared_preload_libraries, můžete zkontrolovat spuštěním následujícího dotazu v psql:

    show shared_preload_libraries;
    

    Měli byste vidět pgauditve výsledku dotazu, který vrátí shared_preload_libraries.

  6. Připojte se k serveru pomocí klienta (například psql) a povolte pgaudit rozšíření.

    CREATE EXTENSION `pgaudit`;
    

Tip

Pokud se zobrazí chyba, potvrďte, že jste po uložení shared_preload_librariesserver restartovali .

Nastavenípgaudit

pgaudit umožňuje konfigurovat protokolování auditu relací nebo objektů. Protokolování auditu relace generuje podrobné protokoly spuštěných příkazů. Protokolování auditu objektů je auditováno na konkrétní vztahy. Můžete nastavit jeden nebo oba typy protokolování.

Jakmile povolítepgaudit, můžete jeho parametry nakonfigurovat tak, aby se spustilo protokolování.
Ke konfiguraci pgaudit můžete postupovat podle následujících pokynů.
Pomocí webu Azure Portal:

  1. Vyberte server Azure Database for PostgreSQL.

  2. Na bočním panelu vyberte Parametry serveru.

  3. Vyhledejte pgaudit parametry.

  4. Vyberte příslušný parametr nastavení, který chcete upravit. Pokud například chcete spustit protokolování nastavené pgaudit.log na WRITE

  5. Pokud chcete uložit změny, vyberte tlačítko Uložit .

pgaudit Dokumentace obsahuje definici každého parametru. Nejprve otestujte parametry a ověřte, že dostáváte očekávané chování.

Nastavení pgaudit.log_client ON přesměruje protokoly do klientského procesu (například psql) místo zápisu do souboru. Toto nastavení by se obecně mělo nechávat zakázané.

Nastavení pgaudit.log_level je povolené pouze v případě, že je povolené nastavení pgaudit.log_client.

Na flexibilním serveru pgaudit.log Azure Database for PostgreSQL není možné nastavit zástupce se znaménkem - (minus), jak je popsáno v pgaudit dokumentaci. Všechny požadované třídy příkazů (READ, WRITE atd.) by měly být zadány jednotlivě.

Pokud nastavíte parametr log_statement na DDL nebo ALL a spustíte CREATE ROLE/USER ... WITH PASSWORD ... ; příkaz nebo ALTER ROLE/USER ... WITH PASSWORD ... ;, pak PostgreSQL vytvoří položku v protokolech PostgreSQL, kde se heslo zaprotokoluje v prostém textu, což může způsobit potenciální bezpečnostní riziko. Toto je očekávané chování podle návrhu modulu PostgreSQL.

Můžete ale použít pgaudit rozšíření a nastavit pgaudit.log=DDL parametr na stránce parametrů serveru, který nezaznamenává žádné CREATE/ALTER ROLE příkazy v protokolu Postgres, na rozdíl od nastavení Postgres log_statement=DDL . Pokud potřebujete tyto příkazy zaprotokolovat, můžete navíc přidat pgaudit.log ='ROLE' , což při protokolování CREATE/ALTER ROLEupraví heslo z protokolů .

Formát protokolu auditu

Každá položka auditu je označená AUDIT: blízko začátku řádku protokolu. Formát zbytku položky je podrobně popsaný v pgaudit dokumentaci.

Začínáme

Pokud chcete rychle začít, nastavte pgaudit.log na WRITEa otevřete protokoly serveru a zkontrolujte výstup.

Zobrazení protokolů auditu

Způsob, jakým přistupujete k protokolům, závisí na zvoleném koncovém bodu. Přečtěte si článek o účtu úložiště protokolů pro Azure Storage. Podívejte se na článek streamu protokolů Azure pro službu Event Hubs.

V případě protokolů služby Azure Monitor se protokoly odesílají do vybraného pracovního prostoru. Protokoly Postgres používají režim shromažďování AzureDiagnostics , aby se mohly dotazovat z tabulky AzureDiagnostics. Pole v tabulce jsou popsaná níže. Další informace o dotazování a upozorňování najdete v přehledu dotazů protokolů služby Azure Monitor.

Tento dotaz můžete použít k zahájení práce. Výstrahy můžete nakonfigurovat na základě dotazů.

Vyhledání všech pgaudit položek v protokolech Postgres pro konkrétní server za poslední den

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