Der er forskellige måder at holde dine data på. Praksis såsom kontrol af databaseadgang, sikring af konfiguration, opgradering af dit system og mere er en del af databasesikkerheden. Det er endda muligt, at du har sikkerhedsproblemer og ikke indser det (før det er for sent), og derfor er overvågning en nøglebrik for at sikre, at hvis noget uventet sker, vil du være i stand til at fange det. Dette inkluderer ikke kun dit system, men også dine databaser.
Revision er en måde at vide, hvad der sker i din database, og det er også påkrævet for mange sikkerhedsforskrifter eller standarder (f.eks. PCI - Payment Card Industry).
MariaDB Server, en af de mest populære open source-databaseservere, har sit eget Audit Plugin (som også virker på MySQL), for at hjælpe med denne revisionsopgave. I denne blog vil du se, hvordan du installerer og bruger dette nyttige MariaDB Audit Plugin.
Vi introducerer også MariaDBs mere avancerede version af plugin til MariaDB Enterprise Audit, som er inkluderet i Enterprise-installationerne 10.6, 10.5 og 10.4. Men mere om det senere.
Hvad er MariaDB Audit Plugin?
Revisionspluginnet er udviklet af MariaDB for at opfylde kravene til registrering af brugeradgang for at være i overensstemmelse med revisionsbestemmelserne.
For hver klientsession registrerer den, i en logfil (eller syslog), hvem der har forbindelse til serveren, hvilke forespørgsler der blev udført, hvilke tabeller der blev tilgået, og servervariabler ændret.
Det virker med MariaDB, MySQL og Percona Server. MariaDB begyndte som standard at inkludere Audit Plugin fra version 10.0.10 og 5.5.37, og det kan installeres i enhver version fra MariaDB 5.5.20.
Installation af MariaDB Audit Plugin
Plugin-filen (server_audit.so) installeres som standard under MariaDB-installationen i plugins-mappen /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
Så du skal bare tilføje det til MariaDB-forekomsten:
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 |
+--------------+--------+-------+-----------------+---------+
Og aktiver det ved at bruge kommandoen SET GLOBAL:
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
Eller gør det persistent i my.cnf-konfigurationsfilen for at begynde at revidere:
[MYSQLD]
server_audit_logging=ON
En anden måde at tilføje det til MariaDB-forekomsten er ved at tilføje parameteren plugin_load_add i my.cnf-konfigurationsfilen:
[mariadb]
plugin_load_add = server_audit
Det anbefales også at tilføje FORCE_PLUS_PERMANENT for at undgå at afinstallere det:
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
Nu har du MariaDB Audit Plugin installeret, lad os se, hvordan du konfigurerer det.
MariaDB Audit Plugin-konfiguration
For at kontrollere den aktuelle konfiguration kan du se værdien af de globale variabler "server_audit%" ved at køre følgende kommando:
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)
Du kan ændre disse variabler ved at bruge kommandoen SET GLOBAL eller gøre dem vedvarende i my.cnf-konfigurationsfilen under [mysqld]-sektionen.
Lad os beskrive nogle af de vigtigste variabler:
- server_audit_logging : Aktiverer revisionslogning.
- server_audit_events :Specificerer de hændelser, du vil optage. Som standard er værdien tom, hvilket betyder, at alle hændelser registreres. Indstillingerne er FORBINDELSE, FORESPØRGSEL og TABEL.
- server_audit_excl_users, server_audit_incl_users :Disse variabler specificerer, hvilke brugeres aktivitet der skal ekskluderes eller inkluderes i revisionslogfilen. Som standard registreres alle brugeres aktivitet.
- server_audit_output_type :Som standard sendes revisionsoutput til en fil. Den anden mulighed er syslog, hvilket betyder, at alle indgange går til syslog-faciliteten.
- server_audit_syslog_facility, server_audit_syslog_priority :Specificerer syslog-faciliteten og prioriteten af de hændelser, der skal gå til syslog.
Efter at have konfigureret det, kan du se revisionsbegivenhederne i den angivne logfil (eller syslog). Lad os se, hvordan det ser ud.
MariaDB Audit Plugin Log
For at se de hændelser, der er registreret af Audit Log Plugin, kan du kontrollere den angivne logfil (som standard 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
Som du kan se i ovenstående log, vil du have hændelser om databaseforbindelser og de forespørgsler, der kører der, afhængigt af server_audit_events-konfigurationen.
Brug af MariaDB Audit Plugin i ClusterControl
For at undgå manuel konfiguration kan du aktivere Audit Plugin fra ClusterControl UI. Til dette behøver du kun at gå til ClusterControl -> Vælg MariaDB Cluster -> Sikkerhed -> Revisionslog:
Og du vil have plugin'et aktiveret uden nogen manuel installation eller konfiguration.
Ved at bruge ClusterControl kan du også drage fordel af forskellige funktioner, ikke kun sikkerhed, men også overvågning, styring og sikkerhedskopiering, blandt andre nyttige funktioner.
Introduktion af MariaDB Enterprise Audit Plugin, server_audit2
MariaDB fortsætter med at udvikle sig, og det inkluderer plugin-forbedringer. Inkluderet i 10.6, 10.5 og 10.4 MariaDB Enterprise Server-installationer, deres seneste plugin til MariaDB Enterprise Audit er server_audit2.so. I en nøddeskal gør det brugere i stand til at gemme oplysninger, der er nødvendige for compliance-revisioner.
Pluginnet introducerer systemtabeller for filterskabeloner og brugere, et standardfilter og også nogle filtre på kontoniveau pr. bruger. Det nye standardfilter giver folk mulighed for at definere revisionsregler for enhver bruger uden et defineret filter. Tabellen består af et filternavn (skal indstilles til "standard") og en regelkolonne. Regelsæt skal "opdateres" ved at køre en forespørgsel som SET GLOBAL server_audit_reload_filters=ON;
Brugere kan også gemme filternavne, der gælder for en bestemt bruger, og revidere selve pluginnet, så hvis der sker en ændring i konfigurationen af revisionspluginnet, logges det i AUDIT_CONFIG-hændelsen (iht. MariaDB, information kan også tilføjes til en ny revisionslogfil for at logge de aktuelle indstillinger).
Derudover kan server_audit_users-tabellen nu bruges i server_audit2.so. plugin til at gemme brugerrelaterede oplysninger.
For at sikre, at din MariaDB-installation har dette plugin, skal du søge efter server_audit2.so i den mappe, der er defineret i plugin_dir-systemvariablen eller blot forespørge @@plugin_dir, hvis du ikke kender mappen og ikke kender den ønsker at bruge tid på at gennemgå variabler i my.cnf.
Konklusion
Revision er påkrævet for mange sikkerhedsforskrifter, og det er også nyttigt, hvis du vil vide, hvad der skete i din database, og hvornår og hvem der var ansvarlig for det.
MariaDB Audit Plugin og dets virksomhedsvariant er en fremragende måde at revidere dine databaser på uden at bruge noget eksternt værktøj, og det er også kompatibelt med MySQL og Percona Server. Hvis du vil undgå at konfigurere det manuelt, kan du bruge ClusterControl til at aktivere Audit Plugin på en nem måde fra brugergrænsefladen.