Configuração de SAML com 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 logon único
1. Na página do seu aplicativo, acesse Configurar logon único e clique em Começar. Em seguida, selecione SAML.
2. Edite Configuração básica do SAML:
- Em Identificador (ID da entidade), defina um nome exclusivo para identificar seu aplicativo no Microsoft Entra ID, por exemplo,
zabbix; - Em URL de resposta (URL do Serviço de Consumidor de Asserção), defina o endpoint de logon único do Zabbix:
https://<path-to-zabbix-ui>/index_sso.php?acs:

Observe que https é obrigatório.
Para usar isso com o Zabbix, adicione a seguinte linha ao arquivo de configuração do frontend:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. Edite Atributos e declarações. 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 Adicionar nova declaração para adicionar um atributo:

- Clique em Adicionar uma declaração de grupo para adicionar um atributo para passar grupos ao Zabbix:

É importante que, nessa declaração, os nomes dos grupos (em vez dos IDs dos grupos) sejam passados ao Zabbix pelo Atributo de origem selecionado. Caso contrário, o provisionamento de usuários JIT não funcionará corretamente.
4. Em Certificados SAML, baixe o certificado Base64 fornecido pelo Entra ID e coloque-o em conf/certs da instalação do frontend do Zabbix (o local pode variar de acordo com o sistema operacional ou a origem da instalação do Zabbix).
Defina as permissões como 644 executando:
chmod 644 entra.cer
5. Use os valores de Configurar <your app name> no Entra ID para configurar a autenticação SAML do Zabbix (consulte a próxima seção):

Configuração do Zabbix
1. No Zabbix, acesse as configurações do 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 |
|---|---|---|
| ID da entidade do IdP | Identificador do Microsoft Entra | |
| URL do serviço SSO | URL de login | |
| URL do serviço SLO | URL de logout | |
| ID da entidade do SP | Identificador (ID da entidade) | |
| Atributo de nome de usuário | Atributo personalizado (claim) | user_email |
| Atributo de nome do grupo | Atributo personalizado (claim) | groups |
| Atributo de nome do usuário | Atributo personalizado (claim) | user_name |
| Atributo de sobrenome do usuário | Atributo personalizado (claim) | user_lastname |
2. Adicione o certificado Base64 fornecido pelo Entra ID.
Se $SSO['CERT_STORAGE'] = 'database' estiver definido no arquivo de configuração do frontend (zabbix.conf.php), você poderá colar o texto do certificado ou carregar o arquivo do certificado no frontend durante a configuração do SAML — não são necessários arquivos no sistema de arquivos.
Se $SSO['CERT_STORAGE'] = 'file' estiver definido no arquivo de configuração, o certificado deverá estar disponível no sistema de arquivos (por padrão, em ui/conf/certs ou no caminho configurado no arquivo de configuração), e o frontend não armazenará os certificados no banco de dados.
Observe que, se $SSO['CERT_STORAGE'] não estiver definido ou estiver comentado, o armazenamento em arquivo será considerado, 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ídias é opcional.
3. Clique no botão Atualizar 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ções 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 as chaves pública e 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 as 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
Podem ocorrer problemas de autenticação com navegadores MicroSoft Edge quando um usuário que tenta fazer login no Zabbix via SAML já está conectado 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.
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];