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 de 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 les taules:
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 base de dades les ha de dur a terme el propietari de la base de dades.

  • zbx_part – rol amb un conjunt reduït de privilegis per a la partició de la base de dades; tingueu en compte que aquest rol només es pot crear un cop s'hagi creat la base de dades, ja que atorga privilegis sobre taules específiques de la base de dades:
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;

Un cop creats 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> amb els valors adeqüats. Assegureu-vos que <password> és fort i únic.

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 'strong_password';
GRANT 'zbx_srv' TO 'usr_srv'@'localhost';
SET DEFAULT ROLE ALL TO 'usr_srv'@'localhost';
FLUSH PRIVILEGES;