Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

1 Asegurar MySQL/MariaDB

Descripción general

Esta sección contiene las mejores prácticas para asegurar una base de datos MySQL/MariaDB.

Para una configuración básica, consulte las instrucciones predeterminadas de creación de base de datos MySQL/MariaDB, que incluyen la creación del usuario 'zabbix' con privilegios completos sobre la base de datos de 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 y usuarios de base de datos adicionales con privilegios mínimos. Estos roles y usuarios deben configurarse según el principio de privilegio mínimo, es decir, solo deben tener los privilegios esenciales para realizar las funciones previstas.

Creación de roles de usuario

Cree los siguientes roles con los privilegios correspondientes:

  • zbx_srv - rol para ejecutar el servidor y proxy de Zabbix:
CREATE ROLE 'zbx_srv';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
       FLUSH PRIVILEGES;
  • zbx_web - rol para ejecutar el frontend y la API de Zabbix:
CREATE ROLE 'zbx_web';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
       FLUSH PRIVILEGES;
  • zbx_bckp - rol para la copia de seguridad de tablas:
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 tablas debe ser realizada por el propietario de la base de datos.

  • zbx_part - rol con un conjunto reducido de privilegios para la partición de la base de datos; tenga en cuenta que este rol solo puede crearse después de que la base de datos haya sido creada, ya que otorga privilegios sobre tablas específicas 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, pueden ser asignados a los usuarios.

Asignación de roles de usuario

Para asignar los roles de usuario creados, cree usuarios y asígneles los roles correspondientes. Reemplace <user>, <host>, <role> y <password> según sea necesario.

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

Por ejemplo, para crear y asignar el rol para ejecutar el servidor y el proxy de 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;