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.
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:
Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
Na bočním panelu vyberte Parametry serveru.
Vyhledejte
shared_preload_libraries
parametr.Vyberte možnost
pgaudit
.To, že
pgaudit
je 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
pgaudit
ve výsledku dotazu, který vrátí shared_preload_libraries.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_libraries
server 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:
Vyberte server Azure Database for PostgreSQL.
Na bočním panelu vyberte Parametry serveru.
Vyhledejte
pgaudit
parametry.Vyberte příslušný parametr nastavení, který chcete upravit. Pokud například chcete spustit protokolování nastavené
pgaudit.log
naWRITE
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 ROLE
upraví 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 WRITE
a 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:"