3 SAML
Обзор
SAML 2.0 аутентификация может использоваться для входа в Zabbix.
Если настроен только вход через SAML, то пользователь также должен существовать в Zabbix, однако его пароль Zabbix использоваться не будет. Если аутентификация успешна, то Zabbix сопоставит локальное имя пользователя с атрибутом имени пользователя, возвращенным SAML.
Подготовка пользователей
Можно настроить JIT (just-in-time) подготовку пользователей для пользователей SAML. В этом случае не требуется, чтобы пользователь уже существовал в Zabbix. Учетная запись пользователя может быть создана при первом входе пользователя в Zabbix.
Если включена JIT-подготовка, на вкладке Authentication необходимо указать группу пользователей для деактивированных пользователей.
Помимо JIT-подготовки также можно включить и настроить подготовку SCIM (System for Cross-domain Identity Management) - непрерывное управление учетными записями пользователей для тех пользователей, которые были созданы с помощью подготовки пользователей. Для аутентификации в Zabbix при подготовке SCIM требуется API token Zabbix (с правами Super admin).
Например, если пользователь перемещается из одной группы SAML в другую, то в Zabbix он также будет перемещен из одной группы в другую; если пользователь удаляется из группы SAML, он также будет удален из группы в Zabbix и, если не принадлежит ни к какой другой группе, добавлен в группу пользователей для деактивированных пользователей.
Если SCIM включен и настроен, пользователь SAML будет подготовлен в момент входа пользователя в Zabbix и будет непрерывно обновляться на основе изменений в SAML. Уже существующие пользователи SAML не будут подготовлены, и обновляться будут только подготовленные пользователи. Обратите внимание, что при подготовке или обновлении пользователя будут добавляться только допустимые медиа.
Если SCIM не включен, пользователь SAML будет подготовлен (а затем обновлен) в момент входа пользователя в Zabbix.
Если включена аутентификация SAML, пользователи смогут выбирать между локальным входом и единым входом через SAML. Если используется JIT-подготовка, то возможен только единый вход.
Настройка поставщика удостоверений
Для работы с Zabbix поставщик удостоверений SAML (onelogin.com, auth0.com, okta.com и т. д.) должен быть настроен следующим образом:
- Assertion Consumer URL должен быть установлен в
<path_to_zabbix_ui>/index_sso.php?acs - Single Logout URL должен быть установлен в
<path_to_zabbix_ui>/index_sso.php?sls
Примеры <path_to_zabbix_ui>: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Настройка Zabbix
Необходимо установить php-openssl, если вы хотите использовать аутентификацию SAML во веб-интерфейсе.
Чтобы использовать аутентификацию SAML, Zabbix должен быть настроен следующим образом:
1. Закрытый ключ и сертификат должны храниться в ui/conf/certs/, если не указаны пользовательские пути в zabbix.conf.php.
По умолчанию Zabbix будет искать файлы в следующих расположениях:
- ui/conf/certs/sp.key - файл закрытого ключа SP
- ui/conf/certs/sp.crt - файл сертификата SP
- ui/conf/certs/idp.crt - файл сертификата IDP
2. Все наиболее важные параметры можно настроить во веб-интерфейсе Zabbix. Однако дополнительные параметры можно указать в файле конфигурации.

Параметры конфигурации, доступные во веб-интерфейсе Zabbix:
| Parameter | Description |
|---|---|
| Enable SAML authentication | Установите флажок, чтобы включить аутентификацию SAML. |
| Enable JIT provisioning | Установите флажок, чтобы включить JIT-подготовку пользователей. |
| IDP entity ID | Уникальный идентификатор сущности в поставщике удостоверений SAML. |
| SSO service URL | URL, на который будут перенаправляться пользователи при входе в систему. |
| SLO service URL | URL, на который будут перенаправляться пользователи при выходе из системы. Если оставить поле пустым, служба SLO использоваться не будет. |
| Username attribute | Атрибут SAML, который будет использоваться как имя пользователя при входе в Zabbix. Список поддерживаемых значений определяется поставщиком удостоверений. Примеры: 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 | Уникальный идентификатор поставщика услуг (если не совпадает, операция будет отклонена). Можно указать URL или любую строку данных. |
| SP name ID format | Запросить в ответе определенный формат Name ID. Примеры: 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 | Установите флажки, чтобы выбрать сущности, для которых должна быть включена подпись SAML: Messages Assertions AuthN requests Logout requests Logout responses |
| Encrypt | Установите флажки, чтобы выбрать сущности, для которых должно быть включено шифрование SAML: Name ID Assertions |
| Case-sensitive login | Снимите флажок, чтобы отключить чувствительность к регистру при входе для имен пользователей (по умолчанию включено). Отключение чувствительности к регистру позволяет, например, входить как "admin", даже если пользователь Zabbix — "Admin" или "ADMIN". Обратите внимание: если чувствительность к регистру отключена и существует несколько пользователей Zabbix с похожими именами (например, Admin и admin), вход для этих пользователей всегда будет запрещен со следующим сообщением об ошибке: "Authentication failed: supplied credentials are not unique." |
| Configure JIT provisioning | Установите этот флажок, чтобы показать параметры, связанные с JIT-подготовкой пользователей. |
| Group name attribute | Укажите атрибут имени группы для JIT-подготовки пользователей. |
| User name attribute | Укажите атрибут имени пользователя для JIT-подготовки пользователей. |
| User last name attribute | Укажите атрибут фамилии пользователя для JIT-подготовки пользователей. |
| User group mapping | Сопоставьте шаблон группы пользователей SAML с группой пользователей Zabbix и ролью пользователя. Это необходимо, чтобы определить, какую группу пользователей/роль получит подготовленный пользователь в Zabbix. Нажмите Add, чтобы добавить сопоставление. Поле SAML group pattern поддерживает подстановочные знаки. Имя группы должно совпадать с существующей группой. Если пользователь SAML соответствует нескольким группам пользователей Zabbix, он станет участником всех этих групп. Если пользователь соответствует нескольким ролям пользователей Zabbix, он получит наивысший уровень прав среди них. |
| Media type mapping | Сопоставьте атрибуты носителя SAML пользователя (например, email) с носителями пользователя Zabbix для отправки уведомлений. |
| Enable SCIM provisioning | Установите этот флажок, чтобы включить подготовку SCIM 2.0. |
См. примеры настройки поставщиков удостоверений SAML для входа и подготовки пользователей в Zabbix:
Примечания по SCIM provisioning
Для SCIM provisioning укажите путь к веб-интерфейсу Zabbix и добавьте к нему api_scim.php на стороне поставщика удостоверений, то есть:
https://<path-to-zabbix-ui>/api_scim.php
Атрибуты пользователя, которые используются в Zabbix (username, user name, user lastname и media attributes), нужно добавить как пользовательские атрибуты и, при необходимости, внешний namespace должен совпадать со схемой пользователя: urn:ietf:params:scim:schemas:core:2.0:User.
Дополнительные настройки
Дополнительные параметры SAML можно настроить в файле конфигурации веб-интерфейса Zabbix (zabbix.conf.php):
- $SSO['SP_KEY'] = '<путь к файлу закрытого ключа SP>';
- $SSO['SP_CERT'] = '<путь к файлу сертификата SP>';
- $SSO['IDP_CERT'] = '<путь к файлу сертификата IDP>';
- $SSO['SETTINGS']
Массив $SSO['SETTINGS'] должен иметь ту же структуру, которую ожидает библиотека SAML PHP Toolkit (поставляется вместе с Zabbix).
Полное описание доступных параметров конфигурации см. в официальной документации библиотеки.
В составе $SSO['SETTINGS'] можно задать только следующие параметры:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (только параметры, указанные в этом списке)
- attributeConsumingService
- x509certNew
- idp (только параметры, указанные в этом списке)
- singleLogoutService (только один параметр)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (только один параметр)
- security (только параметры, указанные в этом списке)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
Все остальные параметры будут взяты из базы данных и не могут быть переопределены. Параметр debug будет проигнорирован.
Кроме того, если веб-интерфейс Zabbix находится за прокси или балансировщиком нагрузки, можно использовать пользовательский параметр use_proxy_headers:
- false (по умолчанию) — игнорировать параметр;
- true — использовать HTTP-заголовки X-Forwarded-* для формирования базового URL.
Если для подключения к экземпляру Zabbix используется балансировщик нагрузки, при этом балансировщик использует TLS/SSL, а Zabbix — нет, необходимо указать параметры 'baseurl', 'strict' и 'use_proxy_headers' следующим образом:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Пример конфигурации:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Настройка веб-интерфейса с Kerberos/ADFS
Файл конфигурации веб-интерфейса Zabbix (zabbix.conf.php) можно использовать для настройки SSO с аутентификацией Kerberos и ADFS:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
В этом случае в поле SP name ID конфигурации SAML установите:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified