Esta sección contiene las mejores prácticas para proteger una base de datos MySQL/MariaDB.
Para una configuración básica, consulte las instrucciones predeterminadas creación de base de datos MySQL/MariaDB, que incluyen la creación del usuario 'zabbix' con privilegios completos en la base de datos Zabbix. Este usuario es el propietario de la base de datos y también tiene los privilegios necesarios para modificar la estructura de la base de datos al actualizar Zabbix.
Para mejorar la seguridad, se recomienda crear roles de base de datos adicionales y usuarios con privilegios mínimos. Estos roles y usuarios deben configurarse según el principio de privilegio mínimo, es decir, sólo deben tener privilegios que sean esenciales para realizar las funciones previstas.
Cree los siguientes roles con los privilegios correspondientes:
CREATE ROLE 'zbx_srv';
GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
FLUSH PRIVILEGES;
CREATE ROLE 'zbx_web';
GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
FLUSH PRIVILEGES;
CREATE ROLE 'zbx_bckp';
GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
GRANT process ON *.* TO 'zbx_bckp';
FLUSH PRIVILEGES;
La restauración y actualización de la tabla debe ser realizada por el propietario de la base de datos.
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';
-- Para MariaDB: omita la siguiente línea (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;
Después de crear los roles, se pueden asignar a los usuarios.
Para asignar los roles de usuario creados, cree usuarios y asígneles los roles relevantes. Reemplace <usuario>
, <equipo>
, <rol>
y <contraseña>
según sea necesario.
CREATE USER '<usuario>'@'<equipo>' IDENTIFIED BY '<contraseña>';
GRANT '<rol>' TO '<usuario>'@'<equipo>';
SET DEFAULT ROLE '<rol>' TO '<usuario>'@'<equipo>';
-- Para MariaDB: SET DEFAULT ROLE '<rol>' FOR '<usuario>'@'<equipo>'
FLUSH PRIVILEGES;
Por ejemplo, para crear y asignar la función para ejecutar el servidor y el proxy de Zabbix: