1 Обезбеђивање MySQL/MariaDB

Преглед

Овај одељак садржи најбоље праксе за обезбеђивање MySQL/MariaDB базе података.

За основно подешавање, погледајте подразумевана упутства креирање MySQL/MariaDB базе података, која укључују креирање корисника "zabbix" са пуним привилегијама на Zabbix бази података. Овај корисник је власник базе података који такође има потребне привилегије за измену структуре базе података приликом надоградње Zabbix-а.

Да би се побољшала безбедност, препоручује се креирање додатних улога базе података и корисника са минималним привилегијама. Ове улоге и корисници треба да буду конфигурисани на основу принципа најмањих привилегија, то јест, требало би да имају само привилегије које су неопходне за обављање предвиђених функција.

Креирање корисничких улога

Креирајте следеће улоге са одговарајућим привилегијама:

  • zbx_srv - улога за покретање Zabbix сервера и проксија:
CREATE ROLE 'zbx_srv';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
       FLUSH PRIVILEGES;
  • zbx_web - улога за покретање Zabbix корисничког интерфејса и API-ја:
CREATE ROLE 'zbx_web';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
       FLUSH PRIVILEGES;
  • zbx_bckp - улога за резервну копију табеле:
CREATE ROLE 'zbx_bckp';
       GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
       GRANT process ON *.* TO 'zbx_bckp';
       FLUSH PRIVILEGES;

Рестаурацију и надоградњу табела треба да изврши власник базе података.

  • zbx_part - улога са смањеним скупом привилегија за партиционисање базе података; имајте на уму да се ова улога може креирати тек након што је база података креирана, јер додељује привилегије на одређене табеле базе података:
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';
       -- За MariaDB: прескочите следећи ред (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;

Након креирања улога, оне се могу доделити корисницима.

Додељивање корисничких улога

Да бисте доделили креиране корисничке улоге, креирајте кориснике и доделите им релевантне улоге. Замените <user>, <host>, <role>, и <password> по потреби.

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

На пример, да бисте креирали и доделили улогу за покретање 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;