3 SAML
Visão geral
SAML 2.0 authentication pode ser usado para entrar no Zabbix.
Se o login via SAML estiver configurado sem provisionamento de usuário JIT, o usuário já deve existir no Zabbix; a senha do usuário no Zabbix não é usada para autenticação. Após a autenticação SAML bem-sucedida, o Zabbix compara o atributo de nome de usuário recebido do SAML com um nome de usuário local existente no Zabbix.
Provisionamento de usuário
É possível configurar o provisionamento de usuário JIT (just-in-time) para usuários SAML. Nesse caso, não é necessário que um usuário já exista no Zabbix. A conta de usuário pode ser criada quando o usuário fizer login no Zabbix pela primeira vez.
Se o provisionamento JIT estiver habilitado, um grupo de usuários para usuários desprovisionados deve ser especificado na aba Authentication.
Além do provisionamento JIT, também é possível habilitar e configurar o provisionamento SCIM (System for Cross-domain Identity Management) - gerenciamento contínuo de contas de usuário para aqueles usuários que foram criados pelo provisionamento de usuário. O provisionamento SCIM requer um token de API do Zabbix (com permissões de Super admin) para autenticação no Zabbix.
Por exemplo, se um usuário for movido de um grupo SAML para outro, o usuário também será movido de um grupo para outro no Zabbix; se um usuário for removido de um grupo SAML, o usuário também será removido do grupo no Zabbix e, se não pertencer a nenhum outro grupo, será adicionado ao grupo de usuários para usuários desprovisionados.
Se o SCIM estiver habilitado e configurado, um usuário SAML será provisionado no momento em que o usuário fizer login no Zabbix e será atualizado continuamente com base nas alterações no SAML. Usuários SAML já existentes não serão provisionados, e somente usuários provisionados serão atualizados. Observe que apenas mídias válidas serão adicionadas a um usuário quando o usuário for provisionado ou atualizado.
Se o SCIM não estiver habilitado, um usuário SAML será provisionado (e posteriormente atualizado) no momento em que o usuário fizer login no Zabbix.
Se a autenticação SAML estiver habilitada, os usuários poderão escolher entre fazer login localmente ou via single sign-on SAML. Se o provisionamento JIT for usado, então somente o single sign-on será possível.
Configurando o provedor de identidade
Para funcionar com o Zabbix, um provedor de identidade SAML (onelogin.com, auth0.com, okta.com, etc.) precisa ser configurado da seguinte forma:
- Assertion Consumer URL deve ser definido como
<path_to_zabbix_ui>/index_sso.php?acs - Single Logout URL deve ser definido como
<path_to_zabbix_ui>/index_sso.php?sls
Exemplos de <path_to_zabbix_ui>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Configurando o Zabbix
É necessário instalar o php-openssl se você quiser usar a autenticação SAML no frontend.
Para usar a autenticação SAML, o Zabbix deve ser configurado da seguinte forma:
1. A chave privada e o certificado devem ser armazenados em ui/conf/certs/, a menos que caminhos personalizados sejam fornecidos em zabbix.conf.php.
Por padrão, o Zabbix procurará nos seguintes locais:
- ui/conf/certs/sp.key - arquivo de chave privada do SP
- ui/conf/certs/sp.crt - arquivo de certificado do SP
- ui/conf/certs/idp.crt - arquivo de certificado do IDP
2. Todas as configurações mais importantes podem ser definidas no frontend do Zabbix. No entanto, é possível especificar configurações adicionais no arquivo de configuração.

Parâmetros de configuração disponíveis no frontend do Zabbix:
| Parâmetro | Descrição |
|---|---|
| Habilitar autenticação SAML | Marque a caixa de seleção para habilitar a autenticação SAML. |
| Habilitar provisionamento JIT | Marque a caixa de seleção para habilitar o provisionamento de usuários JIT. |
| ID da entidade do IDP | O identificador exclusivo da entidade no provedor de identidade SAML. |
| URL do serviço SSO | A URL para a qual os usuários serão redirecionados ao fazer login. |
| URL do serviço SLO | A URL para a qual os usuários serão redirecionados ao fazer logout. Se deixada vazia, o serviço SLO não será usado. |
| Atributo de nome de usuário | Atributo SAML a ser usado como nome de usuário ao fazer login no Zabbix. A lista de valores compatíveis é determinada pelo provedor de identidade. Exemplos: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
| ID da entidade do SP | O identificador exclusivo do provedor de serviços (se não corresponder, a operação será rejeitada). É possível especificar uma URL ou qualquer string de dados. |
| Formato do ID de nome do SP | Solicita um formato específico de ID de nome na resposta. Exemplos: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified urn:oasis:names:tc:SAML:2.0:nameid-format:transient |
| Assinar | Marque as caixas de seleção para escolher as entidades para as quais a assinatura SAML deve ser habilitada: Mensagens Asserções Solicitações AuthN Solicitações de logout Respostas de logout |
| Criptografar | Marque as caixas de seleção para escolher as entidades para as quais a criptografia SAML deve ser habilitada: ID de nome Asserções |
| Login com distinção entre maiúsculas e minúsculas | Desmarque a caixa de seleção para desabilitar a distinção entre maiúsculas e minúsculas no login dos nomes de usuário (habilitada por padrão). Desabilitar essa distinção permite, por exemplo, fazer login como "admin" mesmo que o usuário do Zabbix seja "Admin" ou "ADMIN". Observe que, se a distinção entre maiúsculas e minúsculas estiver desabilitada e houver vários usuários do Zabbix com nomes de usuário semelhantes (por exemplo, Admin e admin), o login desses usuários será sempre negado com a seguinte mensagem de erro: "Falha na autenticação: as credenciais fornecidas não são exclusivas." |
| Configurar o provisionamento JIT | Marque esta caixa de seleção para exibir opções relacionadas ao provisionamento de usuários JIT. |
| Atributo do nome do grupo | Especifique o atributo do nome do grupo para o provisionamento de usuários JIT. |
| Atributo do nome do usuário | Especifique o atributo do nome do usuário para o provisionamento de usuários JIT. |
| Atributo do sobrenome do usuário | Especifique o atributo do sobrenome do usuário para o provisionamento de usuários JIT. |
| Mapeamento de grupos de usuários | Mapeie um padrão de grupo de usuários SAML para um grupo de usuários e uma função de usuário do Zabbix. Isso é necessário para determinar qual grupo/função de usuário o usuário provisionado receberá no Zabbix. Clique em Adicionar para adicionar um mapeamento. O campo Padrão de grupo SAML aceita curingas. O nome do grupo deve corresponder a um grupo existente. Se um usuário SAML corresponder a vários grupos de usuários do Zabbix, ele se tornará membro de todos eles. Se um usuário corresponder a várias funções de usuário do Zabbix, ele receberá o nível de permissão mais alto entre elas. |
| Mapeamento de tipos de mídia | Mapeie os atributos de mídia SAML do usuário (por exemplo, e-mail) para a mídia do usuário do Zabbix, para o envio de notificações. |
| Habilitar provisionamento SCIM | Marque esta caixa de seleção para habilitar o provisionamento SCIM 2.0. |
Veja exemplos de configuração de provedores de identidade SAML para login e provisionamento de usuários no Zabbix com:
Observações sobre provisionamento SCIM
Para provisionamento SCIM, especifique o caminho para o frontend do Zabbix e adicione api_scim.php a ele, no lado do provedor de identidade, ou seja:
https://<caminho-para-o-zabbix-ui>/api_scim.php
Os atributos de usuário que são usados no Zabbix (nome de usuário, nome, sobrenome e atributos de mídia) precisam ser adicionados como atributos personalizados e, se necessário, o namespace externo deve ser o mesmo do esquema de usuário: urn:ietf:params:scim:schemas:core:2.0:User.
Configurações avançadas
Parâmetros SAML adicionais podem ser configurados no arquivo de configuração do frontend do Zabbix (zabbix.conf.php):
- $SSO['SP_KEY'] = '<caminho para o arquivo de chave privada do SP>';
- $SSO['SP_CERT'] = '<caminho para o arquivo de certificado do SP>';
- $SSO['IDP_CERT'] = '<caminho para o arquivo de certificado do IDP>';
- $SSO['SETTINGS']
O array $SSO['SETTINGS'] deve seguir a mesma estrutura esperada pela biblioteca SAML PHP Toolkit (fornecida com o Zabbix).
Para uma descrição completa das opções de configuração disponíveis, consulte a documentação oficial da biblioteca.
Apenas as seguintes opções podem ser definidas como parte de $SSO['SETTINGS']:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (apenas opções especificadas nesta lista)
- attributeConsumingService
- x509certNew
- idp (apenas opções especificadas nesta lista)
- singleLogoutService (apenas uma opção)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (apenas uma opção)
- security (apenas opções especificadas nesta lista)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
Todas as outras opções serão obtidas do banco de dados e não podem ser sobrescritas. A opção debug será ignorada.
Além disso, se a interface do Zabbix estiver atrás de um proxy ou balanceador de carga, a opção personalizada use_proxy_headers pode ser usada:
- false (padrão) - ignora a opção;
- true - usa os cabeçalhos HTTP X-Forwarded-* para construir a URL base.
Se estiver usando um balanceador de carga para conectar à instância do Zabbix, onde o balanceador de carga usa TLS/SSL e o Zabbix não, você deve indicar os parâmetros 'baseurl', 'strict' e 'use_proxy_headers' da seguinte forma:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Exemplo de configuração:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Configuração do frontend com Kerberos/ADFS
O arquivo de configuração do frontend do Zabbix (zabbix.conf.php) pode ser usado para configurar SSO com autenticação Kerberos e ADFS:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
Nesse caso, no campo SP name ID da configuração SAML, defina:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified