SAML

Visão geral

A autenticação SAML 2.0 pode ser usada para entrar no Zabbix.

Se o login via SAML for 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ários

É possível configurar o provisionamento de usuários JIT (just-in-time) para usuários SAML. Neste 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 faz 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 Autenticação.

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ários para aqueles usuários que foram criados pelo provisionamento de usuários. 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, 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 fizer login no Zabbix e continuamente atualizado com base nas alterações no SAML. Usuários SAML já existentes não serão provisionados, e apenas 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 fizer login no Zabbix.

Se a autenticação SAML estiver habilitada, os usuários poderão escolher entre fazer login localmente ou via SAML single sign-on. Se o provisionamento JIT for usado, então apenas 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 maneira:

1. Forneça a chave privada e os certificados do SP. Um certificado do IdP deve ser fornecido (cole o conteúdo ou escolha um arquivo) para ativar o SAML por meio do frontend. Um certificado do SP e uma chave privada do SP devem ser fornecidos se as opções Assinar ou Criptografar estiverem selecionadas.

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 serã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.

Por padrão, o Zabbix procurará nos seguintes locais:

  • ui/conf/certs/sp.key - arquivo da chave privada do SP
  • ui/conf/certs/sp.crt - arquivo do certificado do SP
  • ui/conf/certs/idp.crt - arquivo do certificado do IdP

O material dos certificados pode ser importado pelo frontend colando o texto ou carregando arquivos. Embora as importações não criptografadas sejam permitidas por conveniência em alguns ambientes, é altamente recomendável usar transporte criptografado (por exemplo, habilitar HTTPS/TLS para o frontend do Zabbix). Quando os certificados/chaves SAML forem armazenados no banco de dados, habilite TLS/SSL para as conexões com o banco de dados, a fim de proteger o tráfego entre a aplicação e o banco de dados.
Criptografe os backups do banco de dados que possam conter certificados ou chaves privadas SAML e limite o acesso aos arquivos de backup e às tabelas do banco de dados que armazenam o material SAML. Restrinja os privilégios do usuário do banco de dados ao mínimo necessário.

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 sair. 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
Certificado do IdP Conteúdo do certificado do provedor de serviços (SP) para a configuração do serviço de logon único (SSO) SAML.
Chave privada do SP Conteúdo da chave privada do provedor de serviços (SP) para a configuração do serviço de logon único (SSO) SAML. Fornece autenticação segura e troca de dados com o provedor de identidade (IdP).
Certificado do SP Conteúdo do certificado do provedor de serviços (SP) para a configuração do serviço de logon único (SSO) SAML.
Assinar Marque as caixas de seleção para selecionar 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 selecionar 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 o login com distinção entre maiúsculas e minúsculas para nomes de usuário (habilitado por padrão).
Desabilitar o login com distinçã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 distinçã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 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 mostrar 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 o provisionamento SCIM

Para o provisionamento SCIM, especifique o caminho para o frontend do Zabbix e acrescente api_scim.php a ele, no lado do provedor de identidade, ou seja:

https://<path-to-zabbix-ui>/api_scim.php

Os atributos de usuário 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):

Exemplos de configuração

Exemplo 1: Conexão com uma instância do Zabbix usando um balanceador de carga com TLS/SSL

Se um balanceador de carga for usado para conectar-se a uma instância do Zabbix, e o balanceador de carga usar TLS/SSL enquanto o Zabbix não usar, especifique 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 2: Configuração de algoritmos personalizados de assinatura e resumo SAML

$SSO['SETTINGS'] = [
    'security' => [
        'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
        'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
        // ...
    ],
    // ...
];

Exemplo 3: Configuração de SSO com autenticação Kerberos usando 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