1 MySQL/MariaDB drošības nodrošināšana
Pārskats
Šajā sadaļā ir apkopota paraugprakse MySQL/MariaDB datubāzes drošības nodrošināšanai.
Pamata iestatīšanai skatiet noklusējuma MySQL/MariaDB datubāzes izveides norādījumus, kas ietver zabbix lietotāja izveidi ar pilnām privilēģijām Zabbix datubāzē.
Šis lietotājs ir datubāzes īpašnieks, kuram ir arī nepieciešamās privilēģijas datubāzes struktūras modificēšanai, jauninot Zabbix.
Lai uzlabotu drošību, ieteicams izveidot papildu datubāzes lomas un lietotājus ar minimālām privilēģijām. Šīs lomas un lietotāji jākonfigurē, pamatojoties uz mazāko privilēģiju principu, tas ir, tiem jābūt tikai tādām privilēģijām, kas ir būtiskas paredzēto funkciju veikšanai.
Lietotāju lomu izveide
Izveidojiet šādas lomas ar atbilstošajām privilēģijām:
- zbx_srv - loma Zabbix serveris un starpniekserveris darbināšanai:
CREATE ROLE 'zbx_srv';
GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
FLUSH PRIVILEGES;
- zbx_web - loma Zabbix lietotāja saskarne un API darbināšanai:
CREATE ROLE 'zbx_web';
GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
FLUSH PRIVILEGES;
- zbx_bckp - loma tabulu dublēšanai:
CREATE ROLE 'zbx_bckp';
GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
GRANT process ON *.* TO 'zbx_bckp';
FLUSH PRIVILEGES;
Tabulu atjaunošana un jaunināšana jāveic datubāzes īpašniekam.
- zbx_part - loma ar samazinātu privilēģiju kopu datubāzes particionēšanai; ņemiet vērā, ka šo lomu var izveidot tikai pēc datubāzes izveides, jo tā piešķir privilēģijas konkrētām datubāzes tabulām:
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 gadījumā: izlaidiet nākamo rindu (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;
Pēc lomu izveides tās var piešķirt lietotājiem.
Lietotāju lomu piešķiršana
Lai piešķirtu izveidotās lietotāju lomas, izveidojiet lietotājus un piešķiriet tiem atbilstošās lomas.
Aizstājiet <user>, <host>, <role> un <password> pēc nepieciešamības.
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;
Piemēram, lai izveidotu un piešķirtu lomu Zabbix serveris un starpniekserveris darbināšanai:
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;