MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Verwenden des MariaDB-Audit-Plugins für Datenbanksicherheit

Es gibt verschiedene Möglichkeiten, Ihre Daten zu schützen. Praktiken wie das Steuern des Datenbankzugriffs, das Sichern der Konfiguration, das Aktualisieren Ihres Systems und mehr sind Teil der Datenbanksicherheit. Es ist sogar möglich, dass Sie Sicherheitsprobleme haben und es nicht bemerken (bis es zu spät ist), deshalb ist die Überwachung ein Schlüsselelement, um sicherzustellen, dass Sie es abfangen können, wenn etwas Unerwartetes passiert. Dies umfasst nicht nur Ihr System, sondern auch Ihre Datenbanken.

Audit ist ein Weg, um zu wissen, was in Ihrer Datenbank passiert, und es ist auch für viele Sicherheitsvorschriften oder -standards (z. B. PCI - Payment Card Industry) erforderlich.

MariaDB Server, einer der beliebtesten Open-Source-Datenbankserver, hat sein eigenes Audit-Plugin (das auch auf MySQL funktioniert), um bei dieser Audit-Aufgabe zu helfen. In diesem Blog erfahren Sie, wie Sie dieses nützliche MariaDB-Audit-Plugin installieren und verwenden.

Wir werden auch die erweiterte Version von MariaDB des Plugins für MariaDB Enterprise Audit vorstellen, das in den Enterprise-Installationen 10.6, 10.5 und 10.4 enthalten ist. Aber dazu später mehr.

Was ist das MariaDB-Audit-Plugin?

Das Audit-Plug-in wurde von MariaDB entwickelt, um die Anforderungen zur Aufzeichnung des Benutzerzugriffs zu erfüllen, um den Audit-Vorschriften zu entsprechen.

Für jede Clientsitzung zeichnet es in einer Protokolldatei (oder Syslog) auf, wer sich mit dem Server verbunden hat, welche Abfragen ausgeführt wurden, auf welche Tabellen zugegriffen wurde und Servervariablen geändert wurden.

Es funktioniert mit MariaDB, MySQL und Percona Server. MariaDB enthält standardmäßig das Audit-Plug-in ab den Versionen 10.0.10 und 5.5.37 und kann in jeder Version ab MariaDB 5.5.20 installiert werden.

Installation des MariaDB-Audit-Plugins

Die Plugin-Datei (server_audit.so) wird standardmäßig während der MariaDB-Installation in das Plugins-Verzeichnis /usr/lib/mysql/plugin/:

installiert
$ ls -lah /usr/lib/mysql/plugin/ |grep server_audit

-rw-r--r-- 1 root  root  63K May  9 19:33 server_audit.so

Sie müssen es also nur zur MariaDB-Instanz hinzufügen:

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     |

+--------------+--------+-------+-----------------+---------+

Und aktivieren Sie es mit dem SET GLOBAL-Befehl:

MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;

Query OK, 0 rows affected (0.000 sec)

Oder machen Sie es dauerhaft in der Konfigurationsdatei my.cnf, um mit der Prüfung zu beginnen:

[MYSQLD]

server_audit_logging=ON

Eine andere Möglichkeit, es zur MariaDB-Instanz hinzuzufügen, besteht darin, den Parameter plugin_load_add in der Konfigurationsdatei my.cnf hinzuzufügen:

[mariadb]

plugin_load_add = server_audit

Es wird auch empfohlen, FORCE_PLUS_PERMANENT hinzuzufügen, um eine Deinstallation zu vermeiden:

[mariadb]

plugin_load_add = server_audit

server_audit=FORCE_PLUS_PERMANENT

Jetzt haben Sie das MariaDB-Audit-Plug-in installiert, sehen wir uns an, wie es konfiguriert wird.

Konfiguration des MariaDB-Audit-Plugins

Um die aktuelle Konfiguration zu überprüfen, können Sie den Wert der globalen Variablen „server_audit%“ anzeigen, indem Sie den folgenden Befehl ausführen:

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)

Sie können diese Variablen mit dem SET GLOBAL-Befehl ändern oder sie in der my.cnf-Konfigurationsdatei im Abschnitt [mysqld] dauerhaft machen.

Lassen Sie uns einige der wichtigsten Variablen beschreiben:

  • server_audit_logging :  Aktiviert die Audit-Protokollierung.
  • server_audit_events :Gibt die Ereignisse an, die Sie aufzeichnen möchten. Standardmäßig ist der Wert leer, was bedeutet, dass alle Ereignisse aufgezeichnet werden. Die Optionen sind CONNECTION, QUERY und TABLE.
  • server_audit_excl_users, server_audit_incl_users :Diese Variablen geben an, welche Benutzeraktivitäten ausgeschlossen oder in die Überwachungsprotokolldatei aufgenommen werden sollen. Standardmäßig werden alle Benutzeraktivitäten aufgezeichnet.
  • server_audit_output_type :Standardmäßig wird die Auditing-Ausgabe an eine Datei gesendet. Die andere Option ist Syslog, was bedeutet, dass alle Einträge an die Syslog-Einrichtung gehen.
  • server_audit_syslog_facility, server_audit_syslog_priority :Gibt die Syslog-Einrichtung und die Priorität der Ereignisse an, die an Syslog gehen sollen.

Nach der Konfiguration können Sie die Audit-Ereignisse in der angegebenen Protokolldatei (oder Syslog) sehen. Mal sehen, wie es aussieht.

MariaDB-Audit-Plugin-Protokoll

Um die vom Audit Log Plugin registrierten Ereignisse zu sehen, können Sie die angegebene Protokolldatei (standardmäßig server_audit.log) überprüfen.

$ 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

Wie Sie im obigen Protokoll sehen können, werden Sie abhängig von der server_audit_events-Konfiguration Ereignisse über Datenbankverbindungen und die dort laufenden Abfragen haben.

Verwendung des MariaDB-Audit-Plugins in ClusterControl

Um eine manuelle Konfiguration zu vermeiden, können Sie das Audit-Plugin über die ClusterControl-Benutzeroberfläche aktivieren. Dazu müssen Sie nur zu ClusterControl gehen -> MariaDB-Cluster auswählen -> Sicherheit -> Audit-Protokoll:

Und Sie haben das Plugin ohne manuelle Installation oder Konfiguration aktiviert.

Mit ClusterControl können Sie neben anderen nützlichen Funktionen auch verschiedene Funktionen nutzen, nicht nur Sicherheit, sondern auch Überwachung, Verwaltung und Sicherung.

Vorstellung des MariaDB Enterprise Audit Plugins, server_audit2

MariaDB entwickelt sich ständig weiter und dazu gehören Plugin-Verbesserungen. Das neueste Plug-in für MariaDB Enterprise Audit ist in den Installationen von MariaDB Enterprise Server 10.6, 10.5 und 10.4 enthalten und heißt server_audit2.so. Kurz gesagt ermöglicht es Benutzern, Informationen zu speichern, die für Compliance-Audits erforderlich sind.


Das Plugin führt Systemtabellen für Filtervorlagen und Benutzer, einen Standardfilter und auch einige Filter auf Kontoebene pro Benutzer ein. Der neue Standardfilter ermöglicht es Benutzern, Überwachungsregeln für jeden Benutzer ohne einen definierten Filter zu definieren. Die Tabelle besteht aus einem Filternamen (muss auf „Standard“ gesetzt werden) und einer Regelspalte. Regelsätze müssen „aktualisiert“ werden, indem eine Abfrage wie SET GLOBAL server_audit_reload_filters=ON;

ausgeführt wird


Benutzer können auch Filternamen speichern, die auf einen bestimmten Benutzer anwendbar sind, und das Plug-in selbst prüfen. Wenn also eine Änderung in der Konfiguration des Prüf-Plug-ins auftritt, wird dies im Ereignis AUDIT_CONFIG protokolliert (gemäß MariaDB können Informationen auch zu einer neuen Audit-Protokolldatei hinzugefügt werden, um die aktuellen Einstellungen zu protokollieren).

Außerdem kann die Tabelle server_audit_users jetzt in server_audit2.so verwendet werden. Plugin zum Speichern von nutzerbezogenen Informationen.

Um sicherzustellen, dass Ihre MariaDB-Installation über dieses Plugin verfügt, suchen Sie nach server_audit2.so in dem Verzeichnis, das in der Systemvariablen plugin_dir definiert ist, oder fragen Sie einfach @@plugin_dir ab, wenn Sie das Verzeichnis nicht kennen und es nicht wissen Zeit damit verbringen möchten, Variablen in my.cnf durchzugehen.

Fazit

Überprüfung ist für viele Sicherheitsvorschriften erforderlich und es ist auch nützlich, wenn Sie wissen möchten, was in Ihrer Datenbank passiert ist, wann und wer dafür verantwortlich war.

Das MariaDB-Audit-Plug-in und seine Unternehmensvariante sind eine hervorragende Möglichkeit, Ihre Datenbanken zu prüfen, ohne ein externes Tool zu verwenden, und es ist auch mit MySQL und Percona Server kompatibel. Wenn Sie es vermeiden möchten, es manuell zu konfigurieren, können Sie ClusterControl verwenden, um das Audit-Plug-in auf einfache Weise über die Benutzeroberfläche zu aktivieren.