Diário de Viagens e Trabalhos do Pajé
11nov/110

Criando usuário no MySQL para Zabbix “Read Only”

S@lve pessoal.

Já faz alguns dias que fui incumbido de replicar o ambiente de monitoração, que está em uma rede protegida e sem acesso externo, e criarmos uma aplicação onde clientes pudessem acessar esses sistemas em tempo real.

Depois do sistema arquitetado, repliquei as aplicações e criei um usuário de acesso ao banco MySQL somente com privilégios de UPDATE. O objetivo neste caso era garantir maior segurança, uma vez que teríamos conexões originadas do ambiente DMZ direto para a rede de Gerenciamento. Na regra o fluxo se dá do ambiente de DMZ para um ambiente de Backend e sendo assim quando maior for a limitação do acesso melhor.

Sendo assim, criei o usuário no MySQL com o seguinte comando:

GRANT SELECT ON zabbixdb.* TO 'zabbixuser'@'192.168.0.1'
IDENTIFIED BY 'zabbixpw';

Explicações: Adiciona usuário no MySQL somente com permissão de SELECT.

  • zabbixdb= Nome da base de dados Zabbix;
  • *= Todas as tabelas no Zabbix;
  • zabbixuser= Nome do usuário para acesso a base de dados;
  • 192.168.0.1= Endereço IP do servidor de aplicação Zabbix;
  • zabbixpw=  Senha do usuário.

Mesmo após a criação do usuário, o sistema ficou extremamente lento e improdutivo. Isso acontece pois o Zabbix necessita escrever em algumas tabelas e esse usuário só consegue realizar SELECT. Além disso em nenhum momento é exibido ao usuário mesmo habilitando o display_errors no PHP, as queries de erro para que possamos habilitar as credenciais de acesso.

Como o objetivo e modificar o menos possível o código do Zabbix e as tabelas que ele necessita escrever são só para registro de acesso e logs, as seguintes tabelas devem ser permissionadas com os comandos abaixo:

GRANT INSERT, UPDATE, DELETE ON zabbixdb.sessions
TO 'zabbixuser'@'192.168.0.1';
GRANT INSERT, UPDATE, DELETE ON zabbixdb.profiles
TO 'zabbixuser'@'192.168.0.1.';
GRANT UPDATE ON zabbixdb.user_history TO 'zabbixuser'@'192.168.0.1';
GRANT UPDATE ON zabbixdb.ids TO 'zabbixuser'@'192.168.0.1';

Como isso teremos um usuário que escreve o mínimo possível na base de dados, garantindo maior integridade dos dados e do seu ambiente de gerenciamento.

Caso queira visualizar os permissionamentos concedido ao usuário, utilize os comandos a seguir:

SHOW grants FOR rouser@192.168.0.1;
+------------------------------------------------------------------------------------------------+
| Grants FOR zabbixuser@192.168.0.1                                                              |
+------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zabbixuser'@'192.168.0.1' IDENTIFIED BY PASSWORD '*61A8A301EE8740F5733' |
| GRANT SELECT ON `zabbixdb`.* TO 'rouser'@'192.168.0.1'                                         |
| GRANT UPDATE ON `zabbixdb`.`user_history` TO 'zabbixuser'@'192.168.0.1'                        |
| GRANT INSERT, UPDATE, DELETE ON `zabbixdb`.`profiles` TO 'zabbixuser'@'192.168.0.1'            |
| GRANT UPDATE ON `zabbixdb`.`ids` TO 'zabbixuser'@'192.168.0.1'                                 |
| GRANT INSERT, UPDATE, DELETE ON `zabbixdb`.`sessions` TO 'zabbixuser'@'192.168.0.1'            |
+------------------------------------------------------------------------------------------------+
6 ROWS IN SET (0.00 sec)

Abraços e até a próxima.

Comentários (0) Trackbacks (0)

Sem comentários


Leave a comment


*

Trackbacks estão desabilitados