Il existe différentes manières de protéger vos données. Des pratiques telles que le contrôle de l'accès à la base de données, la sécurisation de la configuration, la mise à niveau de votre système, etc. font partie de la sécurité de la base de données. Il est même possible que vous ayez des problèmes de sécurité et que vous ne vous en rendiez pas compte (jusqu'à ce qu'il soit trop tard), c'est pourquoi la surveillance est un élément clé pour vous assurer que si quelque chose d'inattendu se produit, vous pourrez l'attraper. Cela inclut non seulement votre système, mais également vos bases de données.
L'audit est un moyen de savoir ce qui se passe dans votre base de données, et il est également requis par de nombreuses réglementations ou normes de sécurité (par exemple, PCI - Payment Card Industry).
MariaDB Server, l'un des serveurs de bases de données open source les plus populaires, possède son propre plug-in d'audit (qui fonctionne également sur MySQL), afin de faciliter cette tâche d'audit. Dans ce blog, vous verrez comment installer et utiliser ce plug-in d'audit MariaDB utile.
Nous présenterons également la version plus avancée du plug-in MariaDB pour MariaDB Enterprise Audit, qui est incluse dans les installations Enterprise 10.6, 10.5 et 10.4. Mais nous en reparlerons plus tard.
Qu'est-ce que le plug-in d'audit MariaDB ?
Le plugin d'audit est développé par MariaDB pour répondre aux exigences d'enregistrement des accès des utilisateurs afin d'être en conformité avec les réglementations d'audit.
Pour chaque session client, il enregistre, dans un fichier journal (ou syslog), qui s'est connecté au serveur, quelles requêtes ont été exécutées, quelles tables ont été consultées et les variables du serveur ont été modifiées.
Cela fonctionne avec MariaDB, MySQL et Percona Server. MariaDB a commencé à inclure par défaut le plugin d'audit à partir des versions 10.0.10 et 5.5.37, et il peut être installé dans n'importe quelle version à partir de MariaDB 5.5.20.
Installation du plug-in d'audit MariaDB
Le fichier plugin (server_audit.so) est installé par défaut lors de l'installation de MariaDB dans le répertoire 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
Donc, il vous suffit de l'ajouter dans l'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 |
+--------------+--------+-------+-----------------+---------+
Et activez-le à l'aide de la commande SET GLOBAL :
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
Ou rendez-le persistant dans le fichier de configuration my.cnf pour commencer à auditer :
[MYSQLD]
server_audit_logging=ON
Une autre façon de l'ajouter à l'instance MariaDB consiste à ajouter le paramètre plugin_load_add dans le fichier de configuration my.cnf :
[mariadb]
plugin_load_add = server_audit
Il est également recommandé d'ajouter le FORCE_PLUS_PERMANENT pour éviter de le désinstaller :
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
Maintenant que le plugin d'audit MariaDB est installé, voyons comment le configurer.
Configuration du plug-in d'audit MariaDB
Pour vérifier la configuration actuelle, vous pouvez voir la valeur des variables globales "server_audit%" en exécutant la commande suivante :
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)
Vous pouvez modifier ces variables à l'aide de la commande SET GLOBAL ou les rendre persistantes dans le fichier de configuration my.cnf sous la section [mysqld].
Décrivons quelques-unes des variables les plus importantes :
- server_audit_logging : Active la journalisation d'audit.
- server_audit_events :Spécifie les événements que vous souhaitez enregistrer. Par défaut, la valeur est vide, ce qui signifie que tous les événements sont enregistrés. Les options sont CONNECTION, QUERY et TABLE.
- server_audit_excl_users, server_audit_incl_users :ces variables spécifient l'activité des utilisateurs à exclure ou à inclure dans le fichier journal d'audit. Par défaut, toutes les activités des utilisateurs sont enregistrées.
- server_audit_output_type :Par défaut, la sortie d'audit est envoyée dans un fichier. L'autre option est syslog, ce qui signifie que toutes les entrées sont dirigées vers la fonction syslog.
- server_audit_syslog_facility, server_audit_syslog_priority :spécifie l'installation syslog et la priorité des événements qui doivent être transmis à syslog.
Après l'avoir configuré, vous pouvez voir les événements d'audit dans le fichier journal spécifié (ou syslog). Voyons à quoi ça ressemble.
Journal du plug-in d'audit MariaDB
Pour voir les événements enregistrés par le plug-in Audit Log, vous pouvez consulter le fichier journal spécifié (par défaut 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
Comme vous pouvez le voir dans le journal ci-dessus, vous aurez des événements sur les connexions à la base de données et les requêtes qui y sont exécutées, en fonction de la configuration de server_audit_events.
Utilisation du plug-in d'audit MariaDB dans ClusterControl
Afin d'éviter une configuration manuelle, vous pouvez activer le plug-in d'audit à partir de l'interface utilisateur de ClusterControl. Pour cela, il vous suffit d'aller dans ClusterControl -> Select the MariaDB Cluster -> Security -> Audit Log :
Et vous aurez le plugin activé sans aucune installation ni configuration manuelle.
En utilisant ClusterControl, vous pouvez également profiter de différentes fonctionnalités, non seulement de sécurité, mais aussi de surveillance, de gestion et de sauvegarde, entre autres fonctionnalités utiles.
Présentation du plug-in d'audit d'entreprise MariaDB, server_audit2
MariaDB continue d'évoluer et cela inclut des améliorations de plugins. Inclus dans les installations de MariaDB Enterprise Server 10.6, 10.5 et 10.4, leur dernier plug-in pour MariaDB Enterprise Audit est server_audit2.so. En un mot, il permet aux utilisateurs de stocker les informations nécessaires aux audits de conformité.
Le plug-in introduit des tables système pour les modèles de filtre et les utilisateurs, un filtre par défaut, ainsi que des filtres au niveau du compte par utilisateur. Le nouveau filtre par défaut permet aux utilisateurs de définir des règles d'audit pour n'importe quel utilisateur sans filtre défini. Le tableau se compose d'un nom de filtre (qui doit être défini sur "par défaut") et d'une colonne de règles. Les ensembles de règles doivent être "rafraîchis" en exécutant une requête telle que SET GLOBAL server_audit_reload_filters=ON ;
Les utilisateurs peuvent également stocker des noms de filtre applicables à un certain utilisateur et auditer le plugin lui-même, donc si un changement dans la configuration du plugin d'audit se produit, il est enregistré dans l'événement AUDIT_CONFIG (selon MariaDB, des informations peuvent également être ajoutées à un nouveau fichier journal d'audit pour enregistrer les paramètres actuels).
De plus, la table server_audit_users peut désormais être utilisée dans server_audit2.so. plugin pour stocker des informations relatives à l'utilisateur.
Pour vous assurer que votre installation MariaDB dispose de ce plugin, recherchez server_audit2.so dans le répertoire défini dans la variable système plugin_dir ou interrogez simplement @@plugin_dir si vous ne connaissez pas le répertoire et ne le faites pas voulez passer du temps à parcourir les variables dans my.cnf.
Conclusion
L'audit est requis pour de nombreuses réglementations de sécurité et il est également utile si vous voulez savoir ce qui s'est passé dans votre base de données, et quand et qui en était responsable.
Le plug-in d'audit MariaDB, et sa variante d'entreprise, est un excellent moyen d'auditer vos bases de données sans utiliser d'outil externe, et il est également compatible avec MySQL et Percona Server. Si vous souhaitez éviter de le configurer manuellement, vous pouvez utiliser ClusterControl pour activer le plug-in d'audit de manière simple à partir de l'interface utilisateur.