Er zijn verschillende manieren om uw gegevens veilig te houden. Praktijken zoals het controleren van databasetoegang, het beveiligen van de configuratie, het upgraden van uw systeem en meer maken deel uit van databasebeveiliging. Het is zelfs mogelijk dat je beveiligingsproblemen hebt en het je niet realiseert (tot het te laat is), daarom is monitoring een belangrijk onderdeel om ervoor te zorgen dat als er iets onverwachts gebeurt, je het kunt opvangen. Dit omvat niet alleen uw systeem, maar ook uw databases.
Auditing is een manier om te weten wat er in uw database gebeurt en is ook vereist voor veel beveiligingsvoorschriften of -normen (bijv. PCI - Payment Card Industry).
MariaDB Server, een van de meest populaire open-source databaseservers, heeft zijn eigen Audit Plugin (die ook werkt op MySQL), om te helpen bij deze controletaak. In deze blog ziet u hoe u deze handige MariaDB Audit-plug-in installeert en gebruikt.
We introduceren ook MariaDB's meer geavanceerde versie van de plug-in voor MariaDB Enterprise Audit, die is opgenomen in Enterprise-installaties 10.6, 10.5 en 10.4. Maar daarover later meer.
Wat is MariaDB Audit Plugin?
De Audit Plugin is ontwikkeld door MariaDB om te voldoen aan de vereisten om gebruikerstoegang vast te leggen om te voldoen aan de auditregelgeving.
Voor elke clientsessie registreert het in een logbestand (of syslog) wie verbinding heeft gemaakt met de server, welke query's zijn uitgevoerd, welke tabellen zijn geopend en welke servervariabelen zijn gewijzigd.
Het werkt met MariaDB, MySQL en Percona Server. MariaDB is begonnen met het standaard opnemen van de Audit Plugin van versies 10.0.10 en 5.5.37, en het kan in elke versie vanaf MariaDB 5.5.20 worden geïnstalleerd.
MariaDB Audit Plugin Installatie
Het plug-inbestand (server_audit.so) wordt standaard geïnstalleerd tijdens de MariaDB-installatie in de map plug-ins /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
Dus je hoeft het alleen maar toe te voegen aan de MariaDB-instantie:
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 |
+--------------+--------+-------+-----------------+---------+
En schakel het in met de opdracht SET GLOBAL:
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
Of maak het persistent in het my.cnf-configuratiebestand om de audit te starten:
[MYSQLD]
server_audit_logging=ON
Een andere manier om het toe te voegen aan de MariaDB-instantie is door de parameter plugin_load_add toe te voegen aan het my.cnf-configuratiebestand:
[mariadb]
plugin_load_add = server_audit
Het wordt ook aanbevolen om de FORCE_PLUS_PERMANENT toe te voegen om te voorkomen dat deze wordt verwijderd:
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
Nu heb je de MariaDB Audit Plugin geïnstalleerd, laten we eens kijken hoe je deze kunt configureren.
MariaDB Audit Plugin Configuratie
Om de huidige configuratie te controleren, kunt u de waarde van de globale variabelen "server_audit%" zien door de volgende opdracht uit te voeren:
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)
Je kunt deze variabelen wijzigen met de opdracht SET GLOBAL of ze permanent maken in het configuratiebestand my.cnf onder de sectie [mysqld].
Laten we enkele van de belangrijkste variabelen beschrijven:
- server_audit_logging : Schakelt controleregistratie in.
- server_audit_events :Specificeert de gebeurtenissen die u wilt opnemen. Standaard is de waarde leeg, wat betekent dat alle gebeurtenissen worden geregistreerd. De opties zijn VERBINDING, QUERY en TABLE.
- server_audit_excl_users, server_audit_incl_users :Deze variabelen specificeren welke gebruikersactiviteit moet worden uitgesloten of opgenomen in het auditlogbestand. Standaard wordt alle activiteit van gebruikers geregistreerd.
- server_audit_output_type :Standaard wordt de controle-uitvoer naar een bestand gestuurd. De andere optie is syslog, wat betekent dat alle invoer naar de syslog-faciliteit gaat.
- server_audit_syslog_facility, server_audit_syslog_priority :Specificeert de syslog-faciliteit en de prioriteit van de gebeurtenissen die naar syslog moeten gaan.
Na het configureren kunt u de auditgebeurtenissen zien in het opgegeven logbestand (of syslog). Laten we eens kijken hoe het eruit ziet.
MariaDB Audit Plugin Log
Om de gebeurtenissen te zien die zijn geregistreerd door de Audit Log Plugin, kunt u het opgegeven logbestand controleren (standaard 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
Zoals je kunt zien in het bovenstaande logboek, zul je gebeurtenissen hebben over databaseverbindingen en de query's die daar worden uitgevoerd, afhankelijk van de server_audit_events-configuratie.
De MariaDB Audit-plug-in gebruiken in ClusterControl
Om handmatige configuratie te vermijden, kunt u de Audit Plugin inschakelen vanuit de ClusterControl-gebruikersinterface. Hiervoor hoeft u alleen maar naar ClusterControl -> Selecteer de MariaDB Cluster -> Beveiliging -> Auditlogboek:
En je hebt de plug-in ingeschakeld zonder handmatige installatie of configuratie.
Met ClusterControl kunt u ook profiteren van verschillende functies, niet alleen beveiliging, maar ook monitoring, beheer en back-up, naast andere handige functies.
Introductie van MariaDB Enterprise Audit Plugin, server_audit2
MariaDB blijft evolueren en dat omvat verbeteringen aan plug-ins. Inbegrepen in 10.6, 10.5 en 10.4 MariaDB Enterprise Server-installaties, is hun nieuwste plug-in voor MariaDB Enterprise Audit server_audit2.so. In een notendop, het stelt gebruikers in staat om informatie op te slaan die nodig is voor compliance-audits.
De plug-in introduceert systeemtabellen voor filtersjablonen en gebruikers, een standaardfilter en ook enkele filters op accountniveau per gebruiker. Met het nieuwe standaardfilter kunnen mensen controleregels definiëren voor elke gebruiker zonder een gedefinieerd filter. De tabel bestaat uit een filternaam (moet zijn ingesteld op "standaard") en een regelkolom. Regelsets moeten worden "vernieuwd" door een query uit te voeren zoals SET GLOBAL server_audit_reload_filters=ON;
Gebruikers kunnen ook filternamen opslaan die van toepassing zijn op een bepaalde gebruiker en de plug-in zelf controleren, dus als er een wijziging in de configuratie van de audit-plug-in optreedt, wordt deze vastgelegd in de AUDIT_CONFIG-gebeurtenis (volgens MariaDB, informatie kan ook worden toegevoegd aan een nieuw auditlogbestand om de huidige instellingen vast te leggen).
Bovendien kan de tabel server_audit_users nu worden gebruikt in server_audit2.so. plug-in om gebruikersgerelateerde informatie op te slaan.
Om er zeker van te zijn dat uw MariaDB-installatie deze plug-in heeft, zoekt u naar server_audit2.so in de map die is gedefinieerd in de systeemvariabele plug-in_dir of vraagt u eenvoudigweg @@plugin_dir op als u de map niet kent en niet tijd wilt besteden aan het doornemen van variabelen in my.cnf.
Conclusie
Auditing is vereist voor veel beveiligingsvoorschriften en het is ook handig als u wilt weten wat er in uw database is gebeurd, en wanneer en wie daarvoor verantwoordelijk was.
De MariaDB Audit-plug-in, en zijn enterprise-variant, is een uitstekende manier om uw databases te controleren zonder een externe tool te gebruiken, en is ook compatibel met MySQL en Percona Server. Als u wilt voorkomen dat u deze handmatig moet configureren, kunt u ClusterControl gebruiken om de Audit-plug-in op een eenvoudige manier vanuit de gebruikersinterface in te schakelen.