SAML
Обзор
SAML 2.0 аутентификация может использоваться для входа в Zabbix.
Если вход по SAML настроен без JIT-подготовки пользователей, пользователь должен уже существовать в Zabbix; пароль пользователя Zabbix не используется для аутентификации. После успешной аутентификации SAML Zabbix сопоставляет атрибут имени пользователя, полученный из SAML, с существующим локальным именем пользователя Zabbix.
Подготовка пользователей
Можно настроить JIT (just-in-time) подготовку пользователей для пользователей SAML. В этом случае не требуется, чтобы пользователь уже существовал в Zabbix. Учетная запись пользователя может быть создана при первом входе пользователя в Zabbix.
Если включена JIT-подготовка, на вкладке Аутентификация необходимо указать группу пользователей для деактивированных пользователей.
Помимо JIT-подготовки также можно включить и настроить SCIM (System for Cross-domain Identity Management) provisioning — непрерывное управление учетными записями пользователей для тех пользователей, которые были созданы с помощью подготовки пользователей. Для аутентификации в Zabbix SCIM provisioning требует API-токен 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
Если вы хотите использовать аутентификацию SAML в веб-интерфейсе, необходимо установить php-openssl.
Для использования аутентификации SAML Zabbix необходимо настроить следующим образом:
1. Укажите закрытый ключ и сертификаты SP. Для активации SAML через веб-интерфейс необходимо указать сертификат IdP (вставить текст или выбрать файл). Сертификат SP и закрытый ключ SP необходимо указать, если выбраны параметры Подписывать или Шифровать.
Если в файле конфигурации веб-интерфейса (zabbix.conf.php) задано $SSO['CERT_STORAGE'] = 'database', во время настройки SAML в веб-интерфейсе можно вставить текст сертификата или загрузить файл сертификата — файлы в файловой системе не требуются.
Если в файле конфигурации задано $SSO['CERT_STORAGE'] = 'file', сертификат должен быть доступен в файловой системе (по умолчанию в ui/conf/certs или по пути, настроенному в файле конфигурации), а веб-интерфейс не будет сохранять сертификаты в базе данных.
Обратите внимание: если $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:
| Параметр | Описание |
|---|---|
| Включить аутентификацию SAML | Установите флажок, чтобы включить аутентификацию SAML. |
| Включить JIT-предоставление | Установите флажок, чтобы включить JIT-предоставление пользователей. |
| Идентификатор сущности IDP | Уникальный идентификатор сущности в поставщике удостоверений SAML. |
| URL службы SSO | URL-адрес, на который будут перенаправляться пользователи при входе в систему. |
| URL службы SLO | URL-адрес, на который будут перенаправляться пользователи при выходе из системы. Если оставить поле пустым, служба SLO использоваться не будет. |
| Атрибут имени пользователя | Атрибут 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 | Уникальный идентификатор поставщика услуг (если он не совпадает, операция будет отклонена). Можно указать URL или любую строку данных. |
| Формат идентификатора имени SP | Запросить определенный формат идентификатора имени в ответе. Примеры: 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 | Содержимое сертификата поставщика услуг (SP) для настройки службы единого входа (SSO) SAML. |
| Закрытый ключ SP | Содержимое закрытого ключа поставщика услуг (SP) для настройки службы единого входа (SSO) SAML. Обеспечивает безопасную аутентификацию и обмен данными с поставщиком удостоверений (IdP). |
| Сертификат SP | Содержимое сертификата поставщика услуг (SP) для настройки службы единого входа (SSO) SAML. |
| Подписывать | Установите флажки, чтобы выбрать сущности, для которых необходимо включить подпись SAML: Сообщения Утверждения Запросы AuthN Запросы выхода из системы Ответы выхода из системы |
| Шифровать | Установите флажки, чтобы выбрать сущности, для которых необходимо включить шифрование SAML: Идентификатор имени Утверждения |
| Учет имени пользователя с учетом регистра | Снимите флажок, чтобы отключить учет регистра при входе пользователей (по умолчанию включен). Отключение учета регистра позволяет, например, войти как "admin", даже если пользователь Zabbix называется "Admin" или "ADMIN". Обратите внимание: если учет регистра отключен и существует несколько пользователей Zabbix с похожими именами (например, Admin и admin), вход для этих пользователей всегда будет отклонен со следующим сообщением об ошибке: "Authentication failed: supplied credentials are not unique." |
| Настроить JIT-предоставление | Установите этот флажок, чтобы отобразить параметры, связанные с JIT-предоставлением пользователей. |
| Атрибут имени группы | Укажите атрибут имени группы для JIT-предоставления пользователей. |
| Атрибут имени пользователя | Укажите атрибут имени пользователя для JIT-предоставления пользователей. |
| Атрибут фамилии пользователя | Укажите атрибут фамилии пользователя для JIT-предоставления пользователей. |
| Сопоставление групп пользователей | Сопоставьте шаблон группы пользователей SAML с группой пользователей и ролью пользователя Zabbix. Это необходимо, чтобы определить, какую группу пользователей и роль получит предоставленный пользователь в Zabbix. Нажмите Добавить, чтобы добавить сопоставление. Поле Шаблон группы SAML поддерживает подстановочные символы. Имя группы должно совпадать с существующей группой. Если пользователь SAML соответствует нескольким группам пользователей Zabbix, он становится участником всех этих групп. Если пользователь соответствует нескольким ролям пользователей Zabbix, он получит наивысший уровень разрешений среди них. |
| Сопоставление типов носителей | Сопоставьте атрибуты носителей пользователя SAML (например, адрес электронной почты) с носителями пользователя Zabbix для отправки уведомлений. |
| Включить предоставление SCIM | Установите этот флажок, чтобы включить предоставление SCIM 2.0. |
Примеры настройки поставщиков удостоверений SAML для входа и предоставления пользователей в Zabbix:
Примечания о подготовке SCIM
Для подготовки SCIM укажите путь к веб-интерфейсу Zabbix и добавьте к нему api_scim.php на стороне поставщика удостоверений, то есть:
https://<path-to-zabbix-ui>/api_scim.php
Атрибуты пользователей, используемые в Zabbix (имя пользователя, имя, фамилия пользователя и атрибуты средств связи), необходимо добавить как пользовательские атрибуты. При необходимости внешнее пространство имён должно совпадать со схемой пользователя: urn:ietf:params:scim:schemas:core:2.0:User.
Расширенные настройки
Дополнительные параметры SAML можно настроить в файле конфигурации веб-интерфейса Zabbix (zabbix.conf.php):
Примеры конфигурации
Пример 1. Подключение к экземпляру Zabbix с использованием балансировщика нагрузки через TLS/SSL
Если для подключения к экземпляру Zabbix используется балансировщик нагрузки, который применяет TLS/SSL, а Zabbix его не использует, укажите параметры baseurl, strict и use_proxy_headers следующим образом:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
Пример 2. Настройка пользовательских алгоритмов подписи и дайджеста 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',
// ...
],
// ...
];
Пример 3. Настройка единого входа (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