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>';
-- For 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;