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 eles correspondam ao respectivo valor do 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 para o 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
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, vá para 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 | URL de login | |
| SLO service URL | URL de logout | |
| SP entity ID | Identificador (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 |
2. Adicione o certificado Base64 fornecido pelo Entra ID.
Se $SSO['CERT_STORAGE'] = 'database' estiver definido em zabbix.conf.php, você pode colar o texto do certificado ou enviar o arquivo do certificado no frontend durante a configuração de SAML — nenhum arquivo é necessário no sistema de arquivos.
Se $SSO['CERT_STORAGE'] = 'file' estiver definido em zabbix.conf.php, o certificado deve estar disponível no sistema de arquivos (por padrão em ui/conf/certs ou no caminho configurado em zabbix.conf.php) e o frontend não armazenará certificados no banco de dados.
Observe que, se $SSO['CERT_STORAGE'] não estiver definido ou estiver comentado, o armazenamento em arquivo será assumido e os certificados serão lidos de ui/conf/certs.
Também é necessário configurar o mapeamento de grupos de usuários. O mapeamento de mídia é opcional.
3. Clique no botão Update para salvar essas 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 da 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 enviados 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 o 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 conforme 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, tentando fazer login no Zabbix via SAML, já está logado com o perfil 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
]
];