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 relací a/nebo objektů.
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í příkazy protokolování pgAudit vysílá standardní protokolovací zařízení Postgres společně s normálními příkazy protokolování. 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, budou se vaše protokoly automaticky odesílat (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.
Instalace pgAudit
Než budete moct nainstalovat rozšíření pgAudit na flexibilním serveru Azure Database for PostgreSQL, musíte povolit rozšíření pgAudit pro použití.
Pomocí webu Azure Portal:
- Vyberte instanci flexibilního serveru Azure Database for PostgreSQL.
- Na bočním panelu vyberte Parametry serveru.
- Vyhledejte
azure.extensions
parametr. - Jako rozšíření vyberte pgAudit, 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
Pokud chcete 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 pgaudit.
Spuštěním následujícího dotazu v psql můžete zkontrolovat, že se pgaudit načetl do shared_preload_libraries:
show shared_preload_libraries;
Ve výsledku dotazu by se měla zobrazit pgaudit , která vrátí shared_preload_libraries.
Připojte se k serveru pomocí klienta (například psql) a povolte rozšíření pgAudit.
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íte pgAudit, 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 svůj 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
- Kliknutím na tlačítko Uložit uložíte změny.
Dokumentace pgAudit poskytuje definici každého parametru. Nejprve otestujte parametry a ověřte, že dostáváte očekávané chování.
Poznámka:
Nastavení pgaudit.log_client
ON přesměruje protokoly na proces klienta (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
.
Poznámka:
Flexibilní server pgaudit.log
Azure Database for PostgreSQL nejde nastavit pomocí -
klávesové zkratky (minus), jak je popsáno v dokumentaci pgAudit. Všechny požadované třídy příkazů (READ, WRITE atd.) by měly být zadány jednotlivě.
Poznámka:
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 chování se očekává podle návrhu modulu PostgreSQL. Na stránce parametrů serveru ale můžete použít rozšíření PGAudit a nastavit pgaudit.log='DDL'
parametr, který v protokolu Postgres nezaznamenává žádné CREATE/ALTER ROLE
příkazy, na rozdíl od nastavení Postgres log_statement='DDL'
. Pokud potřebujete tyto příkazy zaprotokolovat, můžete také přidat pgaudit.log ='ROLE'
, což při protokolování 'CREATE/ALTER ROLE'
změní 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 dokumentaci pgAudit.
Začínáme
Pokud chcete rychle začít, nastavte pgaudit.log
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. Informace o službě Azure Storage najdete v článku o účtu úložiště protokolů. Informace o službě Event Hubs najdete v článku streamu protokolů Azure.
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ů.
Vyhledejte všechny položky pgAudit 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:"