1 保护 MySQL/MariaDB անվտանգ

概述

本节包含用于保护 MySQL/MariaDB 数据库安全的最佳实践。

有关基本设置,请参见默认的 MySQL/MariaDB 数据库创建 说明,其中包括创建对 Zabbix 数据库具有完全权限的“zabbix”用户。 该用户是数据库所有者,同时也具有在升级 Zabbix 时修改数据库结构所需的权限。

为提高安全性,建议创建具有最小权限的其他数据库角色和用户。 这些角色和用户应根据最小权限原则进行配置, 也就是说,它们应仅具有执行预期功能所必需的权限。

创建用户角色

创建以下角色并授予相应权限:

  • zbx_srv - 用于运行 Zabbix 服务器和 proxy 的角色:
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 服务器和 proxy 的角色:

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;