Istnieją różne sposoby zabezpieczania danych. Praktyki, takie jak kontrolowanie dostępu do bazy danych, zabezpieczanie konfiguracji, aktualizowanie systemu i inne, są częścią bezpieczeństwa bazy danych. Możliwe jest nawet, że masz problemy z bezpieczeństwem i nie zdajesz sobie z tego sprawy (dopóki nie będzie za późno), dlatego monitorowanie jest kluczowym elementem, który zapewnia, że jeśli wydarzy się coś nieoczekiwanego, będziesz w stanie to złapać. Dotyczy to nie tylko Twojego systemu, ale także baz danych.
Audyt to sposób na sprawdzenie, co dzieje się w Twojej bazie danych i jest również wymagany w przypadku wielu przepisów lub standardów bezpieczeństwa (np. PCI - Payment Card Industry).
MariaDB Server, jeden z najpopularniejszych serwerów bazodanowych typu open source, ma własną wtyczkę audytu (działa również na MySQL), aby pomóc w tym zadaniu audytu. W tym blogu dowiesz się, jak zainstalować i używać tej przydatnej wtyczki MariaDB Audit.
Wprowadzimy również bardziej zaawansowaną wersję wtyczki MariaDB do MariaDB Enterprise Audit, która jest dołączona do instalacji Enterprise 10.6, 10.5 i 10.4. Ale o tym później.
Co to jest wtyczka audytu MariaDB?
Wtyczka audytu została opracowana przez MariaDB w celu spełnienia wymagań dotyczących rejestrowania dostępu użytkownika zgodnie z przepisami dotyczącymi audytu.
Dla każdej sesji klienta zapisuje w pliku dziennika (lub syslog), kto połączył się z serwerem, jakie zapytania zostały wykonane, do których tabel uzyskano dostęp i które uległy zmianie.
Działa z MariaDB, MySQL i Percona Server. MariaDB zaczęła domyślnie dołączać wtyczkę Audit z wersji 10.0.10 i 5.5.37 i można ją zainstalować w dowolnej wersji z MariaDB 5.5.20.
Instalacja wtyczki audytu MariaDB
Plik wtyczki (server_audit.so) jest domyślnie instalowany podczas instalacji MariaDB w katalogu wtyczek /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
Więc wystarczy dodać go do instancji 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 |
+--------------+--------+-------+-----------------+---------+
I włącz go za pomocą polecenia SET GLOBAL:
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
Lub utrwal go w pliku konfiguracyjnym my.cnf, aby rozpocząć audyt:
[MYSQLD]
server_audit_logging=ON
Innym sposobem dodania go do instancji MariaDB jest dodanie parametru plugin_load_add w pliku konfiguracyjnym my.cnf:
[mariadb]
plugin_load_add = server_audit
Zaleca się również dodanie FORCE_PLUS_PERMANENT, aby uniknąć odinstalowania:
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
Teraz masz już zainstalowaną wtyczkę MariaDB Audit, zobaczmy, jak ją skonfigurować.
Konfiguracja wtyczki audytu MariaDB
Aby sprawdzić bieżącą konfigurację, możesz zobaczyć wartość zmiennych globalnych „server_audit%”, uruchamiając następujące polecenie:
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)
Możesz modyfikować te zmienne za pomocą polecenia SET GLOBAL lub uczynić je trwałymi w pliku konfiguracyjnym my.cnf w sekcji [mysqld].
Opiszmy niektóre z najważniejszych zmiennych:
- server_audit_logging :Włącza rejestrowanie kontrolne.
- server_audit_events :Określa zdarzenia, które chcesz zarejestrować. Domyślnie wartość jest pusta, co oznacza, że wszystkie zdarzenia są rejestrowane. Dostępne opcje to POŁĄCZENIE, ZAPYTANIE i TABELA.
- server_audit_excl_users, server_audit_incl_users :te zmienne określają, które działania użytkowników należy wykluczyć lub uwzględnić w pliku dziennika kontroli. Domyślnie rejestrowana jest cała aktywność użytkowników.
- server_audit_output_type :Domyślnie dane wyjściowe audytu są wysyłane do pliku. Inną opcją jest syslog, co oznacza, że wszystkie wpisy trafiają do funkcji syslog.
- server_audit_syslog_facility, server_audit_syslog_priority :Określa funkcję syslog i priorytet zdarzeń, które powinny trafić do syslog.
Po skonfigurowaniu możesz zobaczyć zdarzenia audytu w określonym pliku dziennika (lub syslog). Zobaczmy, jak to wygląda.
Dziennik wtyczki audytu MariaDB
Aby zobaczyć zdarzenia zarejestrowane przez wtyczkę dziennika audytu, możesz sprawdzić określony plik dziennika (domyślnie 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 widać w powyższym dzienniku, będziesz mieć zdarzenia dotyczące połączeń z bazą danych i uruchomionych tam zapytań, w zależności od konfiguracji server_audit_events.
Korzystanie z wtyczki MariaDB Audit w ClusterControl
Aby uniknąć ręcznej konfiguracji, możesz włączyć wtyczkę audytu z interfejsu użytkownika ClusterControl. W tym celu wystarczy przejść do ClusterControl -> Wybierz klaster MariaDB -> Bezpieczeństwo -> Dziennik audytu:
Wtyczka będzie włączona bez ręcznej instalacji ani konfiguracji.
Korzystając z ClusterControl, możesz także korzystać z różnych funkcji, nie tylko bezpieczeństwa, ale także monitorowania, zarządzania i tworzenia kopii zapasowych oraz innych przydatnych funkcji.
Przedstawiamy wtyczkę MariaDB Enterprise Audit, server_audit2
MariaDB nadal ewoluuje, co obejmuje ulepszenia wtyczek. Ich najnowsza wtyczka do MariaDB Enterprise Audit zawarta w instalacjach MariaDB Enterprise Server 10.6, 10.5 i 10.4 to server_audit2.so. Krótko mówiąc, umożliwia użytkownikom przechowywanie informacji niezbędnych do audytów zgodności.
Wtyczka wprowadza tabele systemowe dla szablonów filtrów i użytkowników, filtr domyślny, a także niektóre filtry na poziomie konta użytkownika. Nowy domyślny filtr umożliwia użytkownikom definiowanie reguł audytu dla dowolnego użytkownika bez zdefiniowanego filtra. Tabela składa się z nazwy filtra (wymagana wartość „domyślna”) oraz kolumny reguły. Zestawy reguł należy „odświeżyć”, uruchamiając zapytanie typu SET GLOBAL server_audit_reload_filters=ON;
Użytkownicy mogą również przechowywać nazwy filtrów mające zastosowanie do określonego użytkownika i przeprowadzać audyt samej wtyczki, więc jeśli nastąpi zmiana w konfiguracji wtyczki audytu, jest ona rejestrowana w zdarzeniu AUDIT_CONFIG (zgodnie z MariaDB, informacje można również dodać do nowego pliku dziennika kontroli, aby zarejestrować bieżące ustawienia).
Dodatkowo tabela server_audit_users może być teraz używana w server_audit2.so. wtyczka do przechowywania informacji związanych z użytkownikiem.
Aby upewnić się, że instalacja MariaDB zawiera tę wtyczkę, wyszukaj server_audit2.so w katalogu zdefiniowanym w zmiennej systemowej plugin_dir lub po prostu wpisz zapytanie @@plugin_dir, jeśli nie znasz katalogu i nie znasz chcesz spędzić czas na przeglądaniu zmiennych w my.cnf.
Wnioski
Audyt jest wymagany w przypadku wielu przepisów bezpieczeństwa i jest również przydatny, jeśli chcesz wiedzieć, co się stało w Twojej bazie danych oraz kiedy i kto był za to odpowiedzialny.
Wtyczka MariaDB Audit Plugin i jej wariant dla przedsiębiorstw to doskonały sposób na kontrolowanie baz danych bez użycia jakiegokolwiek narzędzia zewnętrznego, a ponadto jest zgodna z MySQL i Percona Server. Jeśli chcesz uniknąć ręcznego konfigurowania, możesz użyć ClusterControl, aby włączyć wtyczkę audytu w łatwy sposób z interfejsu użytkownika.