Existují různé způsoby, jak udržet svá data v bezpečí. Praktiky, jako je řízení přístupu k databázi, zabezpečení konfigurace, upgrade vašeho systému a další, jsou součástí zabezpečení databáze. Je dokonce možné, že máte bezpečnostní problémy a neuvědomujete si to (dokud není příliš pozdě), proto je monitorování klíčovým prvkem, který zajistí, že pokud se stane něco neočekávaného, budete to schopni zachytit. To zahrnuje nejen váš systém, ale také vaše databáze.
Audit je způsob, jak zjistit, co se děje ve vaší databázi, a je také vyžadován mnoha bezpečnostními předpisy nebo standardy (např. PCI – Payment Card Industry).
MariaDB Server, jeden z nejpopulárnějších databázových serverů s otevřeným zdrojovým kódem, má svůj vlastní modul Audit Plugin (který funguje také na MySQL), aby pomohl s tímto úkolem auditu. V tomto blogu uvidíte, jak nainstalovat a používat tento užitečný modul MariaDB Audit Plugin.
Představíme také pokročilejší verzi pluginu MariaDB pro MariaDB Enterprise Audit, která je součástí podnikových instalací 10.6, 10.5 a 10.4. Ale o tom později.
Co je modul MariaDB Audit Plugin?
Audit Plugin byl vyvinut společností MariaDB, aby splňoval požadavky na záznam přístupu uživatelů, aby byl v souladu s předpisy o auditu.
Pro každou relaci klienta zaznamenává do souboru protokolu (nebo syslog), kdo se připojil k serveru, jaké dotazy byly provedeny, ke kterým tabulkám byl přistupován a proměnné serveru se změnily.
Funguje s MariaDB, MySQL a Percona Server. MariaDB začala ve výchozím nastavení zahrnovat Audit Plugin od verzí 10.0.10 a 5.5.37 a lze jej nainstalovat v jakékoli verzi od MariaDB 5.5.20.
Instalace modulu MariaDB Audit Plugin
Soubor pluginu (server_audit.so) je standardně nainstalován během instalace MariaDB v adresáři plugins /usr/lib/mysql/plugin/:
$ ls -lah /usr/lib/mysql/plugin/ |grep server_audit
-rw-r--r-- 1 root root 63K May 9 19:33 server_audit.so
Takže jej stačí přidat do instance MariaDB:
MariaDB [(none)]> INSTALL SONAME 'server_audit';
Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> SHOW PLUGINS;
+--------------+--------+-------+-----------------+---------+
| Name | Status | Type | Library | License |
+--------------+--------+-------+-----------------+---------+
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
+--------------+--------+-------+-----------------+---------+
A povolte jej pomocí příkazu SET GLOBAL:
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
Nebo jej nastavte jako trvalé v konfiguračním souboru my.cnf, abyste mohli zahájit audit:
[MYSQLD]
server_audit_logging=ON
Dalším způsobem, jak jej přidat do instance MariaDB, je přidání parametru plugin_load_add do konfiguračního souboru my.cnf:
[mariadb]
plugin_load_add = server_audit
Doporučujeme také přidat FORCE_PLUS_PERMANENT, aby nedošlo k jeho odinstalaci:
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
Nyní máte nainstalovaný modul MariaDB Audit Plugin, pojďme se podívat, jak jej nakonfigurovat.
Konfigurace modulu MariaDB Audit Plugin
Pro kontrolu aktuální konfigurace můžete zobrazit hodnotu globálních proměnných „server_audit%“ spuštěním následujícího příkazu:
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE "server_audit%";
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| server_audit_events | |
| server_audit_excl_users | |
| server_audit_file_path | server_audit.log |
| server_audit_file_rotate_now | OFF |
| server_audit_file_rotate_size | 1000000 |
| server_audit_file_rotations | 9 |
| server_audit_incl_users | |
| server_audit_logging | OFF |
| server_audit_mode | 0 |
| server_audit_output_type | file |
| server_audit_query_log_limit | 1024 |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+-------------------------------+-----------------------+
15 rows in set (0.001 sec)
Tyto proměnné můžete upravit pomocí příkazu SET GLOBAL nebo je nastavit jako trvalé v konfiguračním souboru my.cnf v sekci [mysqld].
Popišme si některé z nejdůležitějších proměnných:
- server_audit_logging : Povolí protokolování auditu.
- server_audit_events :Určuje události, které chcete zaznamenat. Ve výchozím nastavení je hodnota prázdná, což znamená, že se zaznamenávají všechny události. Možnosti jsou CONNECTION, QUERY a TABLE.
- server_audit_excl_users, server_audit_incl_users :Tyto proměnné určují, která aktivita uživatelů by měla být vyloučena nebo zahrnuta do souboru protokolu auditu. Ve výchozím nastavení se zaznamenává aktivita všech uživatelů.
- server_audit_output_type :Standardně je výstup auditu odeslán do souboru. Druhou možností je syslog, což znamená, že všechny záznamy jdou do zařízení syslog.
- server_audit_syslog_facility, server_audit_syslog_priority :Určuje zařízení syslog a prioritu událostí, které by měly jít do syslog.
Po jeho konfiguraci můžete vidět události auditu v zadaném souboru protokolu (nebo syslog). Podívejme se, jak to vypadá.
Protokol pluginu MariaDB Audit
Chcete-li vidět události registrované modulem Audit Log Plugin, můžete zkontrolovat zadaný soubor protokolu (ve výchozím nastavení server_audit.log).
$ tail -f /var/lib/mysql/server_audit.log
20200703 19:07:04,MariaDB1,cmon,10.10.10.116,64,915239,QUERY,information_schema,'FLUSH /*!50500 SLOW */ LOGS',0
20200703 19:07:05,MariaDB1,cmon,10.10.10.116,61,915240,QUERY,information_schema,'SHOW GLOBAL STATUS',0
20200703 19:07:05,MariaDB1,cmon,10.10.10.116,64,915241,WRITE,mysql,slow_log,
20200703 19:07:05,MariaDB1,cmon,10.10.10.116,64,915241,QUERY,information_schema,'SET GLOBAL SLOW_QUERY_LOG=1',0
20200703 19:07:06,MariaDB1,cmon,10.10.10.116,61,915242,QUERY,information_schema,'SHOW GLOBAL STATUS',0
20200703 19:15:42,MariaDB1,root,localhost,124,0,CONNECT,,,0
20200703 19:15:42,MariaDB1,root,localhost,124,917042,QUERY,,'select @@version_comment limit 1',0
20200703 19:15:48,MariaDB1,root,localhost,124,0,DISCONNECT,,,0
20200703 19:57:41,MariaDB1,root,localhost,135,925831,QUERY,,'create database test1',0
20200703 19:58:05,MariaDB1,root,127.0.0.1,136,0,FAILED_CONNECT,,,1045
20200703 19:58:05,MariaDB1,root,127.0.0.1,136,0,DISCONNECT,,,0
20200703 19:58:49,MariaDB1,root,localhost,137,926073,QUERY,,'SELECT DATABASE()',0
20200703 19:58:49,MariaDB1,root,localhost,137,926075,QUERY,test1,'show databases',0
20200703 19:58:49,MariaDB1,root,localhost,137,926076,QUERY,test1,'show tables',0
20200703 19:59:20,MariaDB1,root,localhost,137,926182,CREATE,test1,t1,
20200703 19:59:20,MariaDB1,root,localhost,137,926182,QUERY,test1,'create table t1 (id int, message text)',0
20200703 19:59:48,MariaDB1,root,localhost,137,926287,QUERY,test1,'insert into t1 values (4,\'message 1\')',0
Jak můžete vidět ve výše uvedeném protokolu, v závislosti na konfiguraci server_audit_events budete mít události týkající se připojení k databázi a dotazů.
Použití pluginu MariaDB Audit v ClusterControl
Abyste se vyhnuli ruční konfiguraci, můžete povolit modul Audit Plugin z uživatelského rozhraní ClusterControl. K tomu stačí přejít do ClusterControl -> Vyberte klastr MariaDB -> Zabezpečení -> Protokol auditu:
A budete mít plugin povolený bez jakékoli ruční instalace nebo konfigurace.
Pomocí ClusterControl můžete také využívat různé funkce, nejen zabezpečení, ale také monitorování, správu a zálohování a další užitečné funkce.
Představujeme modul MariaDB Enterprise Audit Plugin, server_audit2
MariaDB se neustále vyvíjí a to zahrnuje vylepšení pluginů. Jejich nejnovější plugin pro MariaDB Enterprise Audit je součástí instalací MariaDB Enterprise Server 10.6, 10.5 a 10.4 server_audit2.so. Stručně řečeno, umožňuje uživatelům ukládat informace nezbytné pro audity souladu.
Plugin zavádí systémové tabulky pro šablony filtrů a uživatele, výchozí filtr a také některé filtry na úrovni uživatelských účtů. Nový výchozí filtr umožňuje lidem definovat pravidla auditování pro libovolného uživatele bez definovaného filtru. Tabulka se skládá z názvu filtru (vyžaduje nastavení na „výchozí“) a sloupce pravidla. Sady pravidel je třeba „obnovit“ spuštěním dotazu jako SET GLOBAL server_audit_reload_filters=ON;
Uživatelé mohou také ukládat názvy filtrů platné pro určitého uživatele a auditovat samotný plugin, takže pokud dojde ke změně v konfiguraci auditovacího pluginu, je zaprotokolován do události AUDIT_CONFIG (podle MariaDB, informace lze také přidat do nového souboru protokolu auditu a zaznamenat aktuální nastavení).
Tabulku server_audit_users lze nyní použít v server_audit2.so. plugin pro ukládání informací souvisejících s uživatelem.
Abyste se ujistili, že vaše instalace MariaDB obsahuje tento plugin, vyhledejte server_audit2.so v adresáři definovaném v systémové proměnné plugin_dir nebo jednoduše zadejte dotaz @@plugin_dir, pokud adresář neznáte a neznáte chcete strávit čas procházením proměnných v my.cnf.
Závěr
Audit je vyžadován pro mnoho bezpečnostních předpisů a je také užitečný, pokud chcete vědět, co se stalo ve vaší databázi a kdy a kdo za to byl zodpovědný.
Plugin MariaDB Audit Plugin a jeho podniková varianta je vynikajícím způsobem, jak auditovat databáze bez použití jakéhokoli externího nástroje, a je také kompatibilní s MySQL a Percona Server. Pokud se chcete vyhnout ruční konfiguraci, můžete použít ClusterControl k aktivaci Audit Plugin jednoduchým způsobem z uživatelského rozhraní.