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) — непрерывное управление учетными записями пользователей для тех пользователей, которые были созданы с помощью подготовки пользователей. Для SCIM-подготовки требуется Zabbix API token (с правами Super admin) для аутентификации в Zabbix.
Например, если пользователь перемещен из одной группы 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. Предоставьте закрытый ключ SP и сертификаты. Для активации SAML через веб-интерфейс необходимо предоставить сертификат IdP (вставить текст или выбрать файл). Сертификат SP и закрытый ключ SP необходимо предоставить, если выбраны параметры Sign или Encrypt.
Если в zabbix.conf.php задано $SSO['CERT_STORAGE'] = 'database', вы можете вставить текст сертификата или загрузить файл сертификата в веб-интерфейсе во время настройки SAML — файлы в файловой системе не требуются.
Если в zabbix.conf.php задано $SSO['CERT_STORAGE'] = 'file', сертификат должен быть доступен в файловой системе (по умолчанию в ui/conf/certs или по пути, настроенному в zabbix.conf.php), и веб-интерфейс не будет хранить сертификаты в базе данных.
Обратите внимание, что если $SSO['CERT_STORAGE'] не задан или закомментирован, предполагается хранение в файлах.
По умолчанию Zabbix будет искать в следующих расположениях:
- ui/conf/certs/sp.key - файл закрытого ключа SP
- ui/conf/certs/sp.crt - файл сертификата SP
- ui/conf/certs/idp.crt - файл сертификата IDP
Материалы сертификатов могут быть импортированы через веб-интерфейс путем вставки текста или загрузки файлов.
Хотя для удобства в некоторых средах допускается импорт без шифрования, настоятельно рекомендуется использовать зашифрованную передачу (например, включить HTTPS/TLS для веб-интерфейса Zabbix).
Если сертификаты/ключи SAML хранятся в базе данных, включите TLS/SSL для подключений к базе данных, чтобы защитить трафик между приложением и базой данных.
Шифруйте резервные копии базы данных, которые могут содержать сертификаты SAML или закрытые ключи, и ограничьте доступ к файлам резервных копий и к таблицам базы данных, в которых хранятся материалы SAML.
Ограничьте привилегии пользователя базы данных до минимально необходимых.
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 |
| IdP certificate | Содержимое сертификата поставщика услуг (SP) для настройки службы единого входа SAML (SSO). |
| SP private key | Содержимое закрытого ключа поставщика услуг (SP) для настройки службы единого входа SAML (SSO). Обеспечивает безопасную аутентификацию и обмен данными с поставщиком удостоверений (IdP). |
| SP certificate | Содержимое сертификата поставщика услуг (SP) для настройки службы единого входа SAML (SSO). |
| 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-подготовке
Для SCIM-подготовки укажите путь к веб-интерфейсу Zabbix и добавьте к нему api_scim.php на стороне поставщика удостоверений, например:
https://<path-to-zabbix-ui>/api_scim.php
Атрибуты пользователя, которые используются в Zabbix (имя пользователя, имя, фамилия и атрибуты медиа), необходимо добавить как пользовательские атрибуты и, при необходимости, внешний 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'
]
];
В этом случае в конфигурации SAML в поле SP name ID укажите:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified