Você está visualizando a documentação da versão de desenvolvimento, ela pode estar incompleta.
Junte-se ao nosso projeto de tradução e ajude a traduzir a documentação do Zabbix em sua língua nativa.

1 Protegendo o MySQL/MariaDB

Visão geral

Esta seção contém as melhores práticas para proteger um banco de dados MySQL/MariaDB.

Para uma configuração básica, consulte as instruções padrão de criação do banco de dados MySQL/MariaDB, que incluem a criação do usuário 'zabbix' com privilégios totais no banco de dados do Zabbix. Este usuário é o proprietário do banco de dados e também possui os privilégios necessários para modificar a estrutura do banco de dados ao atualizar o Zabbix.

Para melhorar a segurança, recomenda-se criar funções e usuários adicionais no banco de dados com privilégios mínimos. Essas funções e usuários devem ser configurados com base no princípio do menor privilégio, ou seja, eles devem ter apenas os privilégios essenciais para executar as funções pretendidas.

Criando funções de usuário

Crie as seguintes funções com os privilégios correspondentes:

  • zbx_srv - função para executar o Zabbix server e proxy:
CREATE ROLE 'zbx_srv';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
       FLUSH PRIVILEGES;
  • zbx_web - função para executar o frontend e API do Zabbix:
CREATE ROLE 'zbx_web';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
       FLUSH PRIVILEGES;
  • zbx_bckp - função para backup de tabelas:
CREATE ROLE 'zbx_bckp';
       GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
       GRANT process ON *.* TO 'zbx_bckp';
       FLUSH PRIVILEGES;

A restauração e atualização de tabelas devem ser realizadas pelo proprietário do banco de dados.

  • zbx_part - função com um conjunto reduzido de privilégios para particionamento do banco de dados; observe que esta função só pode ser criada após o banco de dados ter sido criado, pois concede privilégios em tabelas específicas do banco de dados:
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: pule a próxima linha (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;

Após criar as funções, elas podem ser atribuídas aos usuários.

Atribuindo funções de usuário

Para atribuir as funções de usuário criadas, crie usuários e atribua as funções relevantes a eles. Substitua <user>, <host>, <role> e <password> conforme necessário.

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 exemplo, para criar e atribuir a função para executar o Zabbix server e 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;