3 Аутентификация

Обзор

В разделе Администрирование → Аутентификация можно задать глобальный метод аутентификации в Zabbix. Доступны следующие методы аутентификации внутренний, HTTP и LDAP.

Обратите внимание, что метод аутентификации можно изменить на уровне группы пользователей.

По умолчанию, глобально используется внутренний метод Zabbix аутентификации. Чтобы изменить его:

  • на HTTP - перейдите на Настройки HTTP вкладку и введите детали аутентификации;
  • на LDAP - выберите LDAP как Аутентификация по умолчанию и введите детали аутентификации на вкладке Настройки LDAP.

После завершения нажмите на Обновить внизу формы.

HTTP аутентификация

Для проверки имён пользователей и паролей можно использовать HTTP или аутентификацию на основе веб-сервера (например, Apache, Kerberos). Обратите внимание, что пользователь должен также существовать и в Zabbix, однако, его Zabbix пароль не будет использоваться.

Будьте осторожны! Убедитесь, что аутентификация на основе веб-сервера настроена и работает корректно перед тем как переключиться на неё.

Параметры конфигурации:

Параметр Описание
Активация HTTP аутентификации Отметьте, чтобы активировать HTTP аутентификацию.
Диалог входа в систему по умолчанию Укажите куда следует перенаправлять пользователей не прошедших аутентификацию успешно:
Диалог входа в систему Zabbix - стандартная страница входа в Zabbix
HTTP диалог входа в систему - страница входа HTTP
Удаление имени домена Задайте имя домента, которое необходимо удалить из строки входа (оставив только имя пользователя).
Регистрозависимое имя входа Уберите отметку, чтобы отключить чувствительный к регистру вход (активирован по умолчанию).

В случае аутентификации на базе веб-сервера все пользователи (даже с доступом к веб-интерфейсу со значением Внутренний) будут аутентифицироваться веб-сервером, а не Zabbix!

LDAP аутентификация

Можно использовать внешнюю аутентификацию LDAP для проверки имен пользователей и паролей. Обратите внимание, что пользователь также должен существовать в Zabbix, однако его пароль из Zabbix не будет использоваться.

Хотя LDAP аутентификация задается глобально некоторые группы пользователей могут всё еще аутентифицироваться с помощь Zabbix. У этих групп доступ к веб-интерфейсу должен быть задан значением Внутренний. И наоборот, если глобально используется внутренняя аутентификация, детали LDAP аутентификации можно задать и использовать по отдельным группам пользователей у которых доступ к веб-интерфейсу задан значением LDAP.

Аутентификация Zabbix LDAP работает по крайней мере с Microsoft Active Directory и OpenLDAP.

Параметры настроек:

Параметр Описание
Активация LDAP аутентификации Отметьте, чтобы активировать LDAP аутентификацию.
Хост LDAP Имя LDAP сервера. Например: ldap://ldap.zabbix.com
Используйте протокол ldaps для безопасного LDAP сервера.
ldaps://ldap.zabbix.com
При использовании OpenLDAP 2.x.x и более поздних можно использовать полный LDAP URI в форме ldap://имяхоста:порт или ldaps://имяхоста:порт.
Порт Порт LDAP сервера. По умолчанию 389.
Для безопасного подключения к LDAP обычно используется номер порта 636.
Не используется при использовании полных LDAP URI.
База для поиска (BaseDN) Базовый путь для поиска аккаунтов:
ou=Users,ou=system (в OpenLDAP),
DC=company,DC=com (в Microsoft Active Directory)
Атрибут поиска Атрибут LDAP аккаунта, который необходимо использовать для поиска:
uid (в OpenLDAP),
sAMAccountName (в Microsoft Active Directory)
Имя для подключения (Bind DN) LDAP аккаунт для выполнения подключения и поиска на LDAP сервере, примеры:
uid=ldap_search,ou=system (в OpenLDAP),
CN=ldap_search,OU=user_group,DC=company,DC=com (в Microsoft Active Directory)

Обязательно, анонимное подключение не поддерживается.
Регистрозависимое имя входа Уберите отметку, чтобы отключить чувствительный к регистру вход (активирован по умолчанию).
Пароль подключения (Bind password) Пароль LDAP аккаунта для выполнения подключения и поиска на LDAP сервере.
Тест аутентификации Заголовок раздела тестирования
Вход в систему Имя тестового пользователя (который выполнил вход в веб-интерфейс Zabbix). Это имя пользователя должно существовать на LDAP сервере.
Zabbix не активирует LDAP аутентификацию, если не удается авторизовать тестового пользователя.
Пароль пользователя Пароль LDAP к тестовому пользователю.

В случае проблем с сертификатами, чтобы заработало безопасное соединение LDAP (ldaps), вам возможно потребуется добавить TLS_REQCERT allow строку в файл конфигурации /etc/openldap/ldap.conf. Эта настройка может снизить уровень безопасности подключения к LDAP каталогу.

Рекомендуется создать отдельный LDAP аккаунт (Имя для подключения (Bind DN)), чтобы подключаться и искать на LDAP сервере с минимальными привилегиями в LDAP, вместо использования реальных аккаунтов пользователей (используемые для входа в веб-интерфейс Zabbix).
Такой подход более безопасный и не потребует изменения Пароль подключения (Bind password), если пользователь изменит свой собственный пароль на LDAP сервере.
В таблице представленной выше это имя аккаунта ldap_search.

SAML authentication

SAML 2.0 authentication can be used to sign in to Zabbix. Note that a user must exist in Zabbix, however, its Zabbix password will not be used. If authentication is successful, then Zabbix will match a local username with the username attribute returned by SAML.

If SAML authentication is enabled, users will be able to choose between logging in locally or via SAML Single Sign-On.

Setting up the identity provider

In order to work with Zabbix, a SAML identity provider (onelogin.com, auth0.com, okta.com, etc.) needs to be configured in the following way:

  • Assertion Consumer URL should be set to <path_to_zabbix_ui>/index_sso.php?acs
  • Single Logout URL should be set to <path_to_zabbix_ui>/index_sso.php?sls

<path_to_zabbix_ui> examples: %% https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix %%

Setting up Zabbix

It is required to install php-openssl if you want to use SAML authentication in the frontend.

To use SAML authentication Zabbix should be configured in the following way:

1. Private key and certificate should be stored in the ui/conf/certs/, unless custom paths are provided in zabbix.conf.php.

By default, Zabbix will look in the following locations:

  • ui/conf/certs/sp.key - SP private key file
  • ui/conf/certs/sp.crt - SP cert file
  • ui/conf/certs/idp.crt - IDP cert file

2. All of the most important settings can be configured in the Zabbix frontend. However, it is possible to specify additional settings in the configuration file.

Configuration parameters, available in the Zabbix frontend:

Parameter Description
Enable SAML authentication Mark the checkbox to enable SAML authentication.
IDP entity ID The unique identifier of SAML identity provider.
SSO service URL The URL users will be redirected to when logging in.
SLO Service URL The URL users will be redirected to when logging out. If left empty, the SLO service will not be used.
// Username attribute// SAML attribute to be used as a username when logging into Zabbix.
List of supported values is determined by the identity provider.

Examples:
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 The unique identifier of SAML service provider.
SP name ID format Defines which name identifier format should be used.

Examples:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
urn:oasis:names:tc:SAML:2.0:nameid-format:entity
Sign Mark the checkboxes to select entities for which SAML signature should be enabled:
Messages
Assertions
AuthN requests
Logout requests
Logout responses
Encrypt Mark the checkboxes to select entities for which SAML encryption should be enabled:
Assertions
Name ID
Case-sensitive login Mark the checkbox to enable case-sensitive login (disabled by default) for usernames.
E.g. disable case-sensitive login and log in with, for example, 'ADMIN' user even if the Zabbix user is 'Admin'.
Note that with case-sensitive login disabled the login will be denied if multiple users exist in Zabbix database with similar usernames (e.g. Admin, admin).
Advanced settings

Additional SAML parameters can be configured in the Zabbix frontend configuration file (zabbix.conf.php):

  • $SSO['SP_KEY'] = '<path to the SP private key file>';
  • $SSO['SP_CERT'] = '<path to the SP cert file>';
  • $SSO['IDP_CERT'] = '<path to the IDP cert file>';
  • $SSO['SETTINGS']

Zabbix uses OneLogin's SAML PHP Toolkit library (version 3.4.1). The structure of $SSO['SETTINGS'] section should be similar to the structure used by the library. For the description of configuration options, see official library documentation.

Only the following options can be set as part of $SSO['SETTINGS']:

  • strict
  • baseurl
  • compress
  • contactPerson
  • organization
  • sp (only options specified in this list)
    • attributeConsumingService
    • x509certNew
  • idp (only options specified in this list)
    • singleLogoutService (only one option)
      • responseUrl
    • certFingerprint
    • certFingerprintAlgorithm
    • x509certMulti
  • security (only options specified in this list)
    • signMetadata
    • wantNameId
    • requestedAuthnContext
    • requestedAuthnContextComparison
    • wantXMLValidation
    • relaxDestinationValidation
    • destinationStrictlyMatches
    • rejectUnsolicitedResponsesWithInResponseTo
    • signatureAlgorithm
    • digestAlgorithm
    • lowercaseUrlencoding

All other options will be taken from the database and cannot be overridden. The debug option will be ignored.

In addition, if Zabbix UI is behind a proxy or a load balancer, the custom use_proxy_headers option can be used:

  • false (default) - ignore the option;
  • true - use X-Forwarded-* HTTP headers for building the base URL.

Configuration example:

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