Audit je požadavkem mnoha bezpečnostních předpisů nebo standardů, jako je PCI – Payment Card Industry, a dokonce je to dobrý způsob, jak udržet vaše data co nejbezpečnější, abyste věděli, co se děje ve vašich databázích.
V databázi PostgreSQL může být základní protokolování příkazů zajištěno standardním protokolovacím zařízením s log_statement =all. To je přijatelné pro monitorování a další základní použití, ale neposkytuje úroveň podrobností obecně požadovanou pro audit.
V tomto blogu uvidíme, co je rozšíření pgAudit a jak jej nainstalovat a používat ve vaší databázi PostgreSQL pomocí ClusterControl.
Co je pgAudit?
Rozšíření PostgreSQL Audit Extension (pgAudit) poskytuje podrobné protokolování auditu relací a objektů prostřednictvím standardního protokolovacího zařízení PostgreSQL.
Nestačí mít seznam všech operací provedených s databází. Musí být také možné najít konkrétní prohlášení, která jsou pro auditora zajímavá. Standardní funkce protokolování ukazuje, co uživatel požadoval, zatímco pgAudit se zaměřuje na podrobnosti o tom, co se stalo, když databáze uspokojovala požadavek.
Povolení pgAudit pomocí ClusterControl
V tomto příkladu budeme předpokládat, že máte nainstalovaný ClusterControl a ten spravuje vaši databázi PostgreSQL. V opačném případě můžete sledovat tento blogový příspěvek, abyste jej mohli snadno zprovoznit pomocí ClusterControl.
Uživatelské rozhraní ClusterControl
Z nedávno vydané verze ClusterControl 1.8.2 můžete snadno povolit plugin pgAudit z uživatelského rozhraní ClusterControl. Chcete-li jej povolit, přejděte do ClusterControl -> Vyberte svůj PostgreSQL Cluster -> karta Zabezpečení -> Protokol auditu -> Povolit.
Budete muset zadat události, které chcete auditovat ve svém PostgreSQL shluk. PgAudit bude povolen na všech uzlech a jeho instalace bude vyžadovat restartování databázové služby.
Události mohou být:
-
ROLE:Prohlášení týkající se rolí a oprávnění:UDĚLIT, ZRUŠIT, VYTVOŘIT/ZMĚNIT/ZRUŠIT ROLE.
-
DDL:Všechny DDL, které nejsou zahrnuty do třídy ROLE.
-
MISC:Různé příkazy, např. ZRUŠIT, NAČÍST, KONTROLNÍ BOD, VAKUOVAT, NASTAVIT.
-
ČTĚTE:VYBERTE a KOPÍRUJTE, pokud je zdrojem vztah nebo dotaz.
-
ZAPIŠTE:INSERT, UPDATE, DELETE, TRUNCATE a COPY, pokud je cílem relace.
-
FUNKCE:Volání funkcí a bloky DO.
-
VŠECHNY:Zahrňte vše výše uvedené.
Instalaci pgAudit můžete sledovat v sekci ClusterControl Activity.
Po dokončení můžete zkontrolovat svůj protokol pgAudit ve stejném uživatelském rozhraní ClusterControl. Chcete-li to provést, přejděte do ClusterControl -> Vyberte svůj PostgreSQL Cluster -> karta Logs -> System Logs.
Zde naleznete všechny potřebné informace k auditu vaší PostgreSQL databáze.
ClusterControl CLI
Namísto povolení pgAudit z uživatelského rozhraní ClusterControl je další možností k provedení úlohy použít CLI ClusterControl. Za tímto účelem můžete ze serveru ClusterControl spustit následující příkaz:
$ s9s cluster --setup-audit-logging --cluster-id=ID
Kde ID je ID clusteru PostgreSQL.
Zatímco běží, můžete sledovat stav kontrolou úlohy ClusterControl. Nejprve budete potřebovat ID úlohy, které můžete získat ze seznamu úloh:
$ s9s job --list
1600 48 RUNNING test_dba admins 18:49:36 90% Setup Audit Logging
Nyní zkontrolujte podrobnosti úlohy:
$ s9s job --log --job-id=1600
Using SSH credentials from cluster.
Cluster ID is 48.
The username is 'root'.]
10.10.10.139:5432: Configuring audit logging.
10.10.10.139:5432: Installing 'pgaudit15_13'.
10.10.10.139: Installing pgaudit15_13.
10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
10.10.10.139:5432: Restarting PostgreSQL node.
10.10.10.139: waiting for server to shut down.... done
server stopped
waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG: pgaudit extension initialized
2021-03-24 18:49:43.505 UTC [16098] LOG: redirecting log output to logging collector process
2021-03-24 18:49:43.505 UTC [16098] HINT: Future log output will appear in directory "log".
done
server started
10.10.10.139:5432: Waiting for node to be accessible.
10.10.10.139:5432: pgaudit 1.5.0 is enabled.
Tato akce bude vyžadovat restartování databázové služby, které provede ClusterControl ve stejné úloze. Po restartování je rozšíření pgAudit povoleno a připraveno k použití:
postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
name | default_version | installed_version | comment
---------+-----------------+-------------------+---------------------------------
pgaudit | 1.5 | 1.5 | provides auditing functionality
(1 row)
Závěr
U mnoha bezpečnostních předpisů je vyžadován audit. Používá se k tomu, abyste věděli, co se stalo s vaší databází, kdy se to stalo a kdo je za to zodpovědný.
V tomto blogu jsme hovořili o rozšíření pgAudit PostgreSQL jako o dobrém způsobu auditu vašich databází PostgreSQL. Také jsme vám ukázali, jak jej rychle implementovat pomocí ClusterControl z uživatelského rozhraní a pomocí ClusterControl CLI.
Mějte na paměti, že v závislosti na konfiguraci může pgAudit generovat obrovské množství dat. Takže byste měli být opatrní, abyste určili, co potřebujete auditovat a jak dlouho.