1 Securitzant MySQL/MariaDB

Vista general

Aquesta secció conté les bones pràctiques per securitzar una base de dades MySQL/MariaDB.

::: notclassic Per a una configuració bàsica, veieu les instruccions de creació de bases de dades MySQL/MariaDB, que inclouen la creació de l'usuari 'zabbix' amb privilegis complets a la base de dades Zabbix. Aquest usuari és el propietari de la base de dades que també té els privilegis necessaris per modificar l'estructura de la base de dades quan actualitza Zabbix.

Per millorar la seguretat, es recomana crear rols de base de dades addicionals i usuaris amb privilegis mínims. Aquests rols i usuaris s'han de configurar segons el principi del mínim privilegi, és a dir, només haurien de tindre privilegis essencials per a l'exercici de les funcions previstes.

Creació de rols d'usuari

Creeu els rols següents amb els privilegis corresponents:

  • zbx_srv - rol per executar el servidor i el proxy Zabbix:
CREATE ROLE 'zbx_srv';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
       FLUSH PRIVILEGES;
  • zbx_web - rol per executar la interfície i l'API de Zabbix:
CREATE ROLE 'zbx_web';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
       FLUSH PRIVILEGES;
  • zbx_bckp - rol per a la còpia de seguretat de la taula:
CREATE ROLE 'zbx_bckp';
       GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
       GRANT process ON *.* TO 'zbx_bckp';
       FLUSH PRIVILEGES;

La restauració i l'actualització de la taula l'ha de fer el propietari de la base de dades.

  • zbx_part - rol amb un conjunt reduït de privilegis per a la partició de bases de dades; tingueu en compte que aquesta funció només es pot crear després de crear la base de dades, ja que atorga privilegis a taules de bases de dades específiques:
CREATE ROLE 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_uint TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_str TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_text TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_log TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.trends TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.trends_uint TO 'zbx_part';
       -- For MariaDB: skip the next line (GRANT session_variables_admin ON *.* TO 'zbx_part';)
       GRANT session_variables_admin ON *.* TO 'zbx_part';
       GRANT SELECT ON zabbix.dbversion TO 'zbx_part';
       GRANT SELECT, DELETE ON zabbix.housekeeper TO 'zbx_part';
       FLUSH PRIVILEGES;

Després de crear els rols, es poden assignar als usuaris.

Assignar de rols d'usuari

Per assignar els rols d'usuari creats, creeu usuaris i assigneu-los els rols rellevants. Substituïu <user>, <host>, <role>, i <password> segons sigui necessari.

CREATE USER '<user>'@'<host>' IDENTIFIED BY '<password>';
       GRANT '<role>' TO '<user>'@'<host>';
       SET DEFAULT ROLE '<role>' TO '<user>'@'<host>';
       -- For MariaDB: SET DEFAULT ROLE '<role>' FOR '<user>'@'<host>'
       FLUSH PRIVILEGES;

Per exemple, per crear i assignar la funció per executar el servidor i el proxy Zabbix:

CREATE USER 'usr_srv'@'localhost' IDENTIFIED BY 'password';
       GRANT 'zbx_srv' TO 'usr_srv'@'localhost';
       SET DEFAULT ROLE ALL TO 'usr_srv'@'localhost';
       FLUSH PRIVILEGES;