sql >> Databasteknik >  >> RDS >> MariaDB

Använda MariaDB Audit Plugin för databassäkerhet

Det finns olika sätt att hålla din data säker. Praxis som att kontrollera databasåtkomst, säkra konfiguration, uppgradera ditt system och mer är en del av databassäkerheten. Det är till och med möjligt att du har säkerhetsproblem och inte inser det (förrän det är för sent), det är därför övervakning är en viktig del för att säkerställa att om något oväntat händer, kommer du att kunna fånga det. Detta inkluderar inte bara ditt system utan även dina databaser.

Revision är ett sätt att veta vad som händer i din databas, och det krävs även för många säkerhetsföreskrifter eller standarder (t.ex. PCI - Payment Card Industry).

MariaDB Server, en av de mest populära databasservrarna med öppen källkod, har sin egen Audit Plugin (som också fungerar på MySQL), för att hjälpa till med denna granskningsuppgift. I den här bloggen kommer du att se hur du installerar och använder denna användbara MariaDB Audit Plugin.

Vi kommer också att introducera MariaDBs mer avancerade version av plugin-programmet för MariaDB Enterprise Audit, som ingår i Enterprise-installationerna 10.6, 10.5 och 10.4. Men mer om det senare.

Vad är MariaDB Audit Plugin?

Revisionsplugin är utvecklad av MariaDB för att uppfylla kraven för att registrera användaråtkomst för att följa revisionsbestämmelserna.

För varje klientsession registrerar den, i en loggfil (eller syslog), vem som anslutit till servern, vilka frågor som kördes, vilka tabeller som åtkoms och servervariabler ändrade.

Det fungerar med MariaDB, MySQL och Percona Server. MariaDB började som standard att inkludera Audit Plugin från versionerna 10.0.10 och 5.5.37, och den kan installeras i alla versioner från MariaDB 5.5.20.

Installation av MariaDB Audit Plugin

Insticksfilen (server_audit.so) installeras som standard under MariaDB-installationen i plugin-katalogen /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 behöver bara lägga till den i MariaDB-instansen:

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     |

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

Och aktivera det med kommandot SET GLOBAL:

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

Query OK, 0 rows affected (0.000 sec)

Eller gör det beständigt i my.cnf-konfigurationsfilen för att börja granska:

[MYSQLD]

server_audit_logging=ON

Ett annat sätt att lägga till det i MariaDB-instansen är genom att lägga till parametern plugin_load_add i my.cnf-konfigurationsfilen:

[mariadb]

plugin_load_add = server_audit

Det rekommenderas också att lägga till FORCE_PLUS_PERMANENT för att undvika att avinstallera det:

[mariadb]

plugin_load_add = server_audit

server_audit=FORCE_PLUS_PERMANENT

Nu har du MariaDB Audit Plugin installerat, låt oss se hur du konfigurerar det.

MariaDB Audit Plugin Configuration

För att kontrollera den aktuella konfigurationen kan du se värdet på de globala variablerna "server_audit%" genom att köra följande 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 ändra dessa variabler med kommandot SET GLOBAL eller göra dem beständiga i konfigurationsfilen my.cnf under [mysqld]-sektionen.

Låt oss beskriva några av de viktigaste variablerna:

  • server_audit_logging :  Aktiverar granskningsloggning.
  • server_audit_events :Anger de händelser som du vill spela in. Som standard är värdet tomt, vilket betyder att alla händelser registreras. Alternativen är CONNECTION, QUERY och TABLE.
  • server_audit_excl_users, server_audit_incl_users :Dessa variabler anger vilka användares aktivitet som ska exkluderas eller inkluderas i granskningsloggfilen. Som standard registreras alla användares aktivitet.
  • server_audit_output_type :Som standard skickas granskningsutdata till en fil. Det andra alternativet är syslog, vilket betyder att alla poster går till syslog-funktionen.
  • server_audit_syslog_facility, server_audit_syslog_priority :Specificerar syslog-funktionen och prioritet för de händelser som ska gå till syslog.

När du har konfigurerat den kan du se granskningshändelserna i den angivna loggfilen (eller syslog). Låt oss se hur det ser ut.

MariaDB Audit Plugin Log

För att se händelserna som registrerats av Audit Log Plugin kan du kontrollera den angivna loggfilen (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 loggen ovan kommer du att ha händelser om databasanslutningar och frågor som körs där, beroende på server_audit_events-konfigurationen.

Använda MariaDB Audit Plugin i ClusterControl

För att undvika manuell konfiguration kan du aktivera Audit Plugin från ClusterControl UI. För detta behöver du bara gå till ClusterControl -> Välj MariaDB Cluster -> Säkerhet -> Granskningslogg:

Och du kommer att ha insticksprogrammet aktiverat utan någon manuell installation eller konfiguration.

Med ClusterControl kan du också dra nytta av olika funktioner, inte bara säkerhet utan även övervakning, hantering och säkerhetskopiering, bland andra användbara funktioner.

Vi presenterar MariaDB Enterprise Audit Plugin, server_audit2

MariaDB fortsätter att utvecklas och det inkluderar plugin-förbättringar. Inkluderat i 10.6, 10.5 och 10.4 MariaDB Enterprise Server-installationer, deras senaste plugin för MariaDB Enterprise Audit är server_audit2.so. I ett nötskal, det gör det möjligt för användare att lagra information som är nödvändig för efterlevnadsrevisioner.


Pluginet introducerar systemtabeller för filtermallar och användare, ett standardfilter och även några filter på kontonivå per användare. Det nya standardfiltret tillåter människor att definiera revisionsregler för alla användare utan ett definierat filter. Tabellen består av ett filternamn (som måste ställas in på "standard") och en regelkolumn. Regeluppsättningar måste "uppdateras" genom att köra en fråga som SET GLOBAL server_audit_reload_filters=ON;


Användare kan också lagra filternamn som är tillämpliga på en viss användare och granska själva plugin-programmet, så om en ändring i konfigurationen av granskningspluginet inträffar loggas det i AUDIT_CONFIG-händelsen (enl. MariaDB, information kan också läggas till i en ny granskningsloggfil för att logga de aktuella inställningarna).

Dessutom kan tabellen server_audit_users nu användas i server_audit2.so. plugin för att lagra användarrelaterad information.

För att säkerställa att din MariaDB-installation har detta plugin, sök efter server_audit2.so i katalogen definierad i plugin_dir systemvariabeln eller fråga helt enkelt @@plugin_dir om du inte känner till katalogen och inte vet vill lägga tid på att gå igenom variabler i my.cnf.

Slutsats

Revision krävs för många säkerhetsföreskrifter och det är också användbart om du vill veta vad som hände i din databas, och när och vem som var ansvarig för det.

MariaDB Audit Plugin, och dess företagsvariant, är ett utmärkt sätt att granska dina databaser utan att använda något externt verktyg, och det är också kompatibelt med MySQL och Percona Server. Om du vill undvika att konfigurera det manuellt kan du använda ClusterControl för att aktivera Audit Plugin på ett enkelt sätt från användargränssnittet.


  1. Konverteringen misslyckades när varchar-värdet 'simple' konverterades till datatyp int

  2. Hur man lagrar anställdas scheman i en databas

  3. Returnera tabelltyp från en funktion i PostgreSQL

  4. Hur man bibehåller ordningen för insättning i SQL Server