Ci sono diversi modi per proteggere i tuoi dati. Pratiche come il controllo dell'accesso al database, la protezione della configurazione, l'aggiornamento del sistema e altro ancora fanno parte della sicurezza del database. È anche possibile che tu abbia problemi di sicurezza e non te ne rendi conto (fino a quando non è troppo tardi), ecco perché il monitoraggio è un elemento chiave per garantire che se succede qualcosa di inaspettato, sarai in grado di prenderlo. Ciò include non solo il tuo sistema, ma anche i tuoi database.
L'auditing è un modo per sapere cosa sta succedendo nel tuo database ed è richiesto anche per molte normative o standard di sicurezza (ad es. PCI - Payment Card Industry).
MariaDB Server, uno dei server di database open source più popolari, ha il proprio Audit Plugin (che funziona anche su MySQL), per aiutare con questo compito di auditing. In questo blog, vedrai come installare e utilizzare questo utile plug-in di audit MariaDB.
Introdurremo anche la versione più avanzata di MariaDB del plugin per MariaDB Enterprise Audit, che è incluso nelle installazioni Enterprise 10.6, 10.5 e 10.4. Ma ne parleremo più avanti.
Cos'è MariaDB Audit Plugin?
L'Audit Plugin è sviluppato da MariaDB per soddisfare i requisiti per registrare l'accesso degli utenti in conformità con le normative di audit.
Per ogni sessione client, registra, in un file di registro (o syslog), chi si è connesso al server, quali query eseguite, quali tabelle sono state accedute e le variabili del server modificate.
Funziona con MariaDB, MySQL e Percona Server. MariaDB ha iniziato a includere per impostazione predefinita Audit Plugin dalle versioni 10.0.10 e 5.5.37 e può essere installato in qualsiasi versione da MariaDB 5.5.20.
Installazione del plug-in di controllo MariaDB
Il file del plugin (server_audit.so) viene installato per impostazione predefinita durante l'installazione di MariaDB nella directory dei plugin /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
Quindi, devi solo aggiungerlo all'istanza 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 |
+--------------+--------+-------+-----------------+---------+
E abilitalo usando il comando SET GLOBAL:
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
Oppure rendilo persistente nel file di configurazione my.cnf per iniziare a controllare:
[MYSQLD]
server_audit_logging=ON
Un altro modo per aggiungerlo all'istanza MariaDB è aggiungere il parametro plugin_load_add nel file di configurazione my.cnf:
[mariadb]
plugin_load_add = server_audit
Si consiglia inoltre di aggiungere FORCE_PLUS_PERMANENT per evitare di disinstallarlo:
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
Ora hai installato MariaDB Audit Plugin, vediamo come configurarlo.
Configurazione del plug-in di controllo MariaDB
Per verificare la configurazione corrente puoi vedere il valore delle variabili globali “server_audit%” eseguendo il seguente comando:
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)
Puoi modificare queste variabili usando il comando SET GLOBAL o renderle persistenti nel file di configurazione my.cnf nella sezione [mysqld].
Descriviamo alcune delle variabili più importanti:
- server_audit_logging : Abilita la registrazione dell'audit.
- server_audit_events :specifica gli eventi che si desidera registrare. Per impostazione predefinita, il valore è vuoto, il che significa che tutti gli eventi vengono registrati. Le opzioni sono CONNESSIONE, QUERY e TABELLA.
- server_audit_excl_users, server_audit_incl_users :queste variabili specificano quali attività degli utenti devono essere escluse o incluse nel file di registro di controllo. Per impostazione predefinita, tutte le attività degli utenti vengono registrate.
- server_audit_output_type :Per impostazione predefinita, l'output di controllo viene inviato a un file. L'altra opzione è syslog, il che significa che tutte le voci vanno alla funzione syslog.
- server_audit_syslog_facility, server_audit_syslog_priority :specifica la funzione syslog e la priorità degli eventi che devono essere trasferiti a syslog.
Dopo averlo configurato, puoi vedere gli eventi di controllo nel file di log specificato (o syslog). Vediamo come appare.
Registro del plug-in di controllo MariaDB
Per vedere gli eventi registrati dall'Audit Log Plugin, puoi controllare il file di registro specificato (per impostazione predefinita 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
Come puoi vedere nel registro sopra, avrai eventi sulle connessioni al database e le query in esecuzione lì, a seconda della configurazione di server_audit_events.
Utilizzo del plug-in di controllo MariaDB in ClusterControl
Per evitare la configurazione manuale, è possibile abilitare Audit Plugin dall'interfaccia utente di ClusterControl. Per questo, devi solo andare su ClusterControl -> Seleziona il cluster MariaDB -> Sicurezza -> Registro di controllo:
E avrai il plugin abilitato senza alcuna installazione o configurazione manuale.
Utilizzando ClusterControl puoi anche sfruttare diverse funzionalità, non solo la sicurezza, ma anche il monitoraggio, la gestione e il backup, tra le altre utili funzionalità.
Presentazione del plug-in MariaDB Enterprise Audit, server_audit2
MariaDB continua ad evolversi e ciò include miglioramenti ai plugin. Incluso nelle installazioni di MariaDB Enterprise Server 10.6, 10.5 e 10.4, il loro ultimo plug-in per MariaDB Enterprise Audit è server_audit2.so. In poche parole, consente agli utenti di archiviare le informazioni necessarie per gli audit di conformità.
Il plug-in introduce le tabelle di sistema per i modelli di filtro e gli utenti, un filtro predefinito e anche alcuni filtri a livello di account per utente. Il nuovo filtro predefinito consente alle persone di definire regole di controllo per qualsiasi utente senza un filtro definito. La tabella è composta da un nome del filtro (che deve essere impostato su "predefinito") e da una colonna della regola. I set di regole devono essere "aggiornati" eseguendo una query come SET GLOBAL server_audit_reload_filters=ON;
Gli utenti possono anche memorizzare i nomi dei filtri applicabili a un determinato utente e controllare il plug-in stesso, quindi se si verifica una modifica nella configurazione del plug-in di audit, viene registrato nell'evento AUDIT_CONFIG (secondo MariaDB, le informazioni possono anche essere aggiunte a un nuovo file di registro di controllo per registrare le impostazioni correnti).
Inoltre, la tabella server_audit_users può ora essere utilizzata in server_audit2.so. plug-in per memorizzare informazioni relative all'utente.
Per assicurarti che la tua installazione di MariaDB abbia questo plugin, cerca server_audit2.so nella directory definita nella variabile di sistema plugin_dir o semplicemente interroga @@plugin_dir se non conosci la directory e non la conosci voglio passare il tempo a esaminare le variabili in my.cnf.
Conclusione
Il controllo è richiesto per molte normative di sicurezza ed è utile anche se vuoi sapere cosa è successo nel tuo database, quando e chi ne era responsabile.
Il MariaDB Audit Plugin, ed è la sua variante aziendale, è un modo eccellente per controllare i tuoi database senza utilizzare strumenti esterni ed è anche compatibile con MySQL e Percona Server. Se vuoi evitare di configurarlo manualmente, puoi utilizzare ClusterControl per abilitare il plug-in di audit in modo semplice dall'interfaccia utente.