Skip to content

Monthly Archives: July 2015

[DICA AVANÇADA] Restringindo o acesso a menus do Zabbix

Atualizado em 19/01/2017.

 

Dica testada apenas no Zabbix 2.4.X.

 

O Zabbix tem três perfis(papeis): user (USER_TYPE_ZABBIX_USER), admin (USER_TYPE_ZABBIX_ADMIN) e super admin (USER_TYPE_SUPER_ADMIN).

Os menus do Zabbix são exibidos de acordo com o perfil que um usuário possui. Editando o código fonte da interface web do Zabbix é possível restringir o acesso aos menus ainda mais.

Exemplo de restrição: habilitar a exibição apenas do menu Monitoramento > Gráficos e desabilitar a exibição dos outros menus para qualquer usuário que possui o perfil user (USER_TYPE_ZABBIX_USER).

 

Observação: Isso afetará todos os usuários que possuírem o perfil  user (USER_TYPE_ZABBIX_USER). A dica abaixo não serve para restringir este acesso a determinada conta de usuário.

 

O arquivo a ser alterado para restringir o acesso aos menus é o PATH_ZABBIX/include/menu.inc.php.  Esse arquivo define quais serão os menus a serem exibidos de acordo com o perfil.

Onde:
PATH_ZABBIX => Diretório que contém a interface Web do Zabbix. Ex.: /var/www/zabbix
 
Abaixo está um trecho do conteúdo editado do arquivo PATH_ZABBIX/include/menu.inc.php. Em vermelho está o que foi adicionado para aplicar a restrição para exibir apenas o menu Monitoramento > Gráficos para usuários do perfil user. Os demais menus serão acessados no mínimo por contas de usuários com o perfil de admin.
 
$ZBX_MENU = array(
    'view' => array(
        'label'                => _('Monitoring'),
        'user_type'            => USER_TYPE_ZABBIX_USER,
        'default_page_id'    => 0,
        'pages' => array(
[...]
            array(
                'url' => 'charts.php',
                'label' => _('Graphs'),
                'sub_pages' => array('chart2.php', 'chart3.php', 'chart6.php', 'chart7.php')
            ),
            array(
                'url' => 'screens.php',
                'label' => _('Screens'),
                'sub_pages' => array('slides.php'),
               'user_type' => USER_TYPE_ZABBIX_ADMIN
            ),
            array(
                'url' => 'maps.php',
                'label' => _('Maps'),
                'sub_pages' => array('map.php'),
               'user_type' => USER_TYPE_ZABBIX_ADMIN
            ),
            array(
                'url' => 'discovery.php',
                'label' => _('Discovery'),
                'user_type' => USER_TYPE_ZABBIX_ADMIN
            ),
[...]
 
O trecho de código acima foi editado e diz que o menu Monitoramento pode ser acessado por um usuário que tenha, no mínimo, o perfil user (USER_TYPE_ZABBIX_USER). Mas veja que alguns sub-menus como: Monitoramento > Telas, Monitoramento > Mapas, Monitoramento > Auto Busca (Discovery) só devem ser acessados por um usuário que possua o perfil  admin (USER_TYPE_ZABBIX_ADMIN).

Observação: O problema é que isso afeta todos os usuários comuns que tem aquele perfil para o qual você está ocultando os menus e obriga você a modificar o código fonte a cada nova atualização do Zabbix. Se quiser continuar mesmo assim, edite e faça testes neste arquivo.

O conteúdo deste arquivo pode mudar em versões novas e se faz necessário entender o código da cada versão afim de evitar problemas.

 

[DICA AVANÇADA] Desabilitando o acesso a página de configurações do perfil de um usuário no Zabbix

a

No Zabbix, o link Configurações ou Configurations serve para acessar a página de configurações de perfil de um usuário, onde é possível mudar a senha, linguagem, tema, enfim.

Se você quiser criar um usuário só para fins de demonstração ou visualização sem que ele acesse a página Configurações para alterar estes dados, siga o seguinte roteiro. Vamos supor que o nome do usuário é demonstracao.

1) Edite o arquivo PATH_ZABBIX/include/defines.inc.php

Onde:

PATH_ZABBIX => Diretório que contém a interface Web do Zabbix. Ex.: /var/www/zabbix

Adicione a linha abaixo para criar uma variável de ambiente.

define('DEMONSTRACAO_USER','demonstracao');

 

2) Edite o arquivo PATH_ZABBIX/profile.php e adicione após a linha 43, as linhas abaixo:

if (CWebUser::$data['alias'] == DEMONSTRACAO_USER) {
 access_deny();
}

Salve todas as alterações e tente acessar o Zabbix com a conta demonstracao.

Verá que não conseguirá acessar a página “Configurações” ao lado do link “Desconectar”. Faça logout e logue com outro usuário e repita o teste.

Verá que qualquer outro usuário poderá mudar as configurações do perfil.

Observação: Isso foi testado no Zabbix 2.4.4.