3 SAML
Visão geral
A autenticação SAML 2.0 pode ser usada para fazer login no Zabbix.
Se apenas o login SAML estiver configurado, o usuário também deverá existir no Zabbix, porém, sua senha do Zabbix não será usada. Se a autenticação for bem-sucedida, o Zabbix corresponderá um nome de usuário local ao atributo de nome de usuário retornado pelo SAML.
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 autenticação SAML no frontend.
Para usar 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:
| Parameter | Description |
|---|---|
| Enable SAML authentication | Marque a caixa de seleção para habilitar a autenticação SAML. |
| Enable JIT provisioning | Marque a caixa de seleção para habilitar o provisionamento JIT de usuários. |
| IDP entity ID | O identificador único da entidade dentro do provedor de identidade SAML. |
| SSO service URL | A URL para a qual os usuários serão redirecionados ao fazer login. |
| SLO service URL | A URL para a qual os usuários serão redirecionados ao fazer logout. Se deixado em branco, o serviço SLO não será usado. |
| Username attribute | Atributo SAML a ser usado como nome de usuário ao fazer login no Zabbix. A lista de valores suportados é 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 |
| SP entity ID | O identificador único do provedor de serviço (se não corresponder, a operação será rejeitada). É possível especificar uma URL ou qualquer string de dados. |
| SP name ID format | Solicita um formato específico de name ID 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 |
| Sign | Marque as caixas de seleção para escolher as entidades para as quais a assinatura SAML deve ser habilitada: Messages Assertions AuthN requests Logout requests Logout responses |
| Encrypt | Marque as caixas de seleção para escolher as entidades para as quais a criptografia SAML deve ser habilitada: Name ID Assertions |
| Case-sensitive login | Desmarque a caixa de seleção para desabilitar o login com diferenciação entre maiúsculas e minúsculas para nomes de usuário (habilitado por padrão). Desabilitar o login com diferenciação entre maiúsculas e minúsculas permite, por exemplo, fazer login como "admin" mesmo que o usuário do Zabbix seja "Admin" ou "ADMIN". Observe que, se o login com diferenciação entre maiúsculas e minúsculas estiver desabilitado e houver vários usuários do Zabbix com nomes de usuário semelhantes (por exemplo, Admin e admin), o login desses usuários sempre será negado com a seguinte mensagem de erro: "Authentication failed: supplied credentials are not unique." |
| Configure JIT provisioning | Marque esta caixa de seleção para exibir opções relacionadas ao provisionamento JIT de usuários. |
| Group name attribute | Especifique o atributo de nome do grupo para o provisionamento JIT de usuários. |
| User name attribute | Especifique o atributo de nome do usuário para o provisionamento JIT de usuários. |
| User last name attribute | Especifique o atributo de sobrenome do usuário para o provisionamento JIT de usuários. |
| User group mapping | 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 Add para adicionar um mapeamento. O campo SAML group pattern oferece suporte a 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, o usuário se tornará membro de todos eles. Se um usuário corresponder a várias funções de usuário do Zabbix, o usuário receberá o nível de permissão mais alto entre elas. |
| Media type mapping | Mapeie os atributos de mídia SAML do usuário (por exemplo, email) para a mídia do usuário no Zabbix para envio de notificações. |
| Enable SCIM provisioning | 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