12 Configuração do SAML com o Microsoft Entra ID

Visão geral

Esta seção fornece diretrizes para configurar o login único e o provisionamento de usuários no Zabbix a partir do Microsoft Entra ID (anteriormente Microsoft Azure Active Directory) usando autenticação SAML 2.0.

Configuração do Microsoft Entra ID

Criando uma aplicação

1. Faça login no Microsoft Entra admin center em Microsoft Entra ID. Para fins de teste, você pode criar uma conta de avaliação gratuita no Microsoft Entra ID.

2. No Microsoft Entra admin center, selecione Applications -> Enterprise applications -> New application -> Create your own application.

3. Adicione o nome do seu app e selecione a opção Integrate any other application.... Depois disso, clique em Create.

Configurando o single sign-on

1. Na página do seu aplicativo, vá para Set up single sign on e clique em Get started. Em seguida, selecione SAML.

2. Edite Basic SAML Configuration:

  • Em Identifier (Entity ID), defina um nome exclusivo para identificar seu app no Microsoft Entra ID, por exemplo, zabbix;
  • Em Reply URL (Assertion Consumer Service URL), defina o endpoint de single sign-on do Zabbix: https://<path-to-zabbix-ui>/index_sso.php?acs:

Observe que "https" é obrigatório. Para que isso funcione com o Zabbix, é necessário adicionar a seguinte linha em conf/zabbix.conf.php:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

3. Edite Attributes & Claims. Você deve adicionar todos os atributos que deseja passar para o Zabbix (user_name, user_lastname, user_email, user_mobile, groups).

Os nomes dos atributos são arbitrários. Podem ser usados nomes de atributos diferentes; no entanto, é necessário que correspondam ao respectivo valor de campo nas configurações SAML do Zabbix.

  • Clique em Add new claim para adicionar um atributo:

  • Clique em Add a group claim para adicionar um atributo para passar grupos ao Zabbix:

É importante que, nessa claim, os nomes dos grupos (em vez dos IDs dos grupos) sejam passados ao Zabbix pelo Source attribute selecionado. Caso contrário, o provisionamento de usuários JIT não funcionará corretamente.

4. Em SAML Certificates, faça o download do certificado Base64 fornecido pelo Entra ID e coloque-o em conf/certs da instalação do frontend do Zabbix.

Defina permissões 644 para ele executando:

chmod 644 entra.cer

Certifique-se de que conf/zabbix.conf.php contenha a linha:

$SSO['IDP_CERT'] = 'conf/certs/entra.cer';

5. Use os valores de Set up <your app name> no Entra ID para configurar a autenticação SAML do Zabbix (veja a próxima seção):

Configuração do Zabbix

1. No Zabbix, acesse as configurações de SAML e preencha as opções de configuração com base na configuração do Entra ID:

Campo do Zabbix Campo de configuração no Entra ID Valor de exemplo
IdP entity ID Identificador do Microsoft Entra
SSO service URL Login URL
SLO service URL Logout URL
SP entity ID Identifier (Entity ID)
Username attribute Atributo personalizado (claim) user_email
Group name attribute Atributo personalizado (claim) groups
User name attribute Atributo personalizado (claim) user_name
User last name attribute Atributo personalizado (claim) user_lastname

Também é necessário configurar o mapeamento de grupos de usuários. O mapeamento de mídia é opcional.

Clique em Update para salvar estas configurações.

Provisionamento de usuários SCIM

1. Na página do aplicativo do Entra ID, no menu principal, abra a página Provisioning. Clique em Get started e, em seguida, selecione o modo de provisionamento automático:

  • Em Tenant URL, defina o seguinte valor: https://<path-to-zabbix-ui>/api_scim.php
  • Em Secret token, insira um token de API do Zabbix com permissões de Super admin.
  • Clique em Test connection para verificar se a conexão foi estabelecida.

2. Agora você pode adicionar todos os atributos que serão passados via SCIM para o Zabbix. Para isso, clique em Mappings e depois em Provision Microsoft Entra ID Users.

Na parte inferior da lista Attribute Mapping, habilite Show advanced options e, em seguida, clique em Edit attribute list for customappsso.

Na parte inferior da lista de atributos, adicione seus próprios atributos com tipo 'String':

Salve a lista.

3. Agora você pode adicionar mapeamentos para os atributos adicionados. Na parte inferior da lista Attribute Mapping, clique em Add New Mapping e crie os mapeamentos כפי mostrado abaixo:

Quando todos os mapeamentos forem adicionados, salve a lista de mapeamentos.

4. Como pré-requisito para o provisionamento de usuários no Zabbix, você deve ter usuários e grupos configurados no Entra ID.

Para isso, vá para Microsoft Entra admin center e adicione usuários/grupos nas respectivas páginas Users e Groups.

5. Quando os usuários e grupos tiverem sido criados no Entra ID, você pode ir ao menu Users and groups do seu aplicativo e adicioná-los ao app.

6. Vá ao menu Provisioning do seu app e clique em Start provisioning para que os usuários sejam provisionados no Zabbix.

Observe que a solicitação PATCH de Users no Entra ID não oferece suporte a alterações em mídia.

Assinatura de solicitação de autenticação

É possível configurar o Entra ID para validar a assinatura de solicitações de autenticação assinadas.

Para que isso funcione, crie chaves pública/privada:

openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes

Atribua permissões:

chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key

Atualize a configuração do frontend do Zabbix adicionando:

$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';

Solução de problemas

Problemas de autenticação podem ocorrer com navegadores MicroSoft Edge quando um usuário, ao tentar fazer login no Zabbix via SAML, já está autenticado com o perfil do MicroSoft Edge. Como sinal desse problema, o usuário pode conseguir fazer login no Zabbix usando o MicroSoft Edge no modo privado.

Para evitar problemas de autenticação nesse caso, pode ser necessário definir requestedAuthnContext como "false" no arquivo de configuração do frontend do Zabbix (zabbix.conf.php).

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
];