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