12 Настройка SAML с Microsoft Entra ID
Обзор
В этом разделе приведены рекомендации по настройке единого входа и автоматического предоставления учетных записей пользователей в Zabbix из Microsoft Entra ID (ранее Microsoft Azure Active Directory) с использованием аутентификации SAML 2.0.
Настройка Microsoft Entra ID
Создание приложения
1. Войдите в центр администрирования Microsoft Entra по адресу Microsoft Entra ID. Для целей тестирования вы можете создать бесплатную пробную учетную запись в Microsoft Entra ID.
2. В центре администрирования Microsoft Entra выберите Applications -> Enterprise applications -> New application -> Create your own application.
3. Укажите имя вашего приложения и выберите вариант Integrate any other application.... После этого нажмите Create.

Настройка единого входа
1. На странице вашего приложения перейдите в раздел Set up single sign on и нажмите Get started. Затем выберите SAML.
2. Отредактируйте Basic SAML Configuration:
- В поле Identifier (Entity ID) задайте уникальное имя для идентификации вашего приложения в Microsoft Entra ID, например
zabbix; - В поле Reply URL (Assertion Consumer Service URL) укажите конечную точку единого входа Zabbix:
https://<path-to-zabbix-ui>/index_sso.php?acs:

Обратите внимание, что требуется использовать "https".
Чтобы это работало с Zabbix, необходимо добавить в conf/zabbix.conf.php следующую строку:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. Отредактируйте Attributes & Claims. Необходимо добавить все атрибуты, которые вы хотите передавать в Zabbix (user_name, user_lastname, user_email, user_mobile, groups).
Имена атрибутов могут быть произвольными. Можно использовать разные имена атрибутов, однако требуется, чтобы они соответствовали значениям соответствующих полей в настройках Zabbix SAML.
- Нажмите Add new claim, чтобы добавить атрибут:

- Нажмите Add a group claim, чтобы добавить атрибут для передачи групп в Zabbix:

Важно, чтобы в этом утверждении в Zabbix передавались имена групп (а не идентификаторы групп) через выбранный Source attribute. В противном случае JIT-подготовка пользователей не будет работать должным образом.
4. В разделе SAML Certificates скачайте сертификат Base64, предоставленный Entra ID, и поместите его в conf/certs установки веб-интерфейса Zabbix.
Установите для него права 644, выполнив:
chmod 644 entra.cer
5. Используйте значения из раздела Set up <your app name> в Entra ID для настройки SAML-аутентификации Zabbix (см. следующий раздел):

Конфигурация Zabbix
1. В Zabbix перейдите в раздел настроек SAML и заполните параметры конфигурации на основе конфигурации Entra ID:

| Поле Zabbix | Поле настройки в Entra ID | Пример значения |
|---|---|---|
| ID сущности IdP | Идентификатор Microsoft Entra | |
| URL сервиса SSO | URL входа | |
| URL сервиса SLO | URL выхода | |
| ID сущности SP | Идентификатор (Entity ID) | |
| Атрибут имени пользователя | Пользовательский атрибут (claim) | user_email |
| Атрибут имени группы | Пользовательский атрибут (claim) | groups |
| Атрибут имени | Пользовательский атрибут (claim) | user_name |
| Атрибут фамилии пользователя | Пользовательский атрибут (claim) | user_lastname |
2. Добавьте сертификат Base64, предоставленный Entra ID.
Если в zabbix.conf.php задано $SSO['CERT_STORAGE'] = 'database', вы можете вставить текст сертификата или загрузить файл сертификата в веб-интерфейс во время настройки SAML — файлы в файловой системе не требуются.
Если в zabbix.conf.php задано $SSO['CERT_STORAGE'] = 'file', сертификат должен быть доступен в файловой системе (по умолчанию в ui/conf/certs или по пути, настроенному в zabbix.conf.php), и веб-интерфейс не будет хранить сертификаты в базе данных.
Обратите внимание, что если $SSO['CERT_STORAGE'] не задан или закомментирован, предполагается файловое хранилище, и сертификаты считываются из ui/conf/certs.
Также необходимо настроить сопоставление групп пользователей. Сопоставление медиа является необязательным.
3. Нажмите кнопку Update, чтобы сохранить эти настройки.
Подготовка пользователей SCIM
1. На странице вашего приложения Entra ID в главном меню откройте страницу Provisioning. Нажмите Get started, а затем выберите режим автоматической подготовки:
- В поле Tenant URL укажите следующее значение:
https://<path-to-zabbix-ui>/api_scim.php - В поле Secret token введите токен API Zabbix с правами Super admin.
- Нажмите Test connection, чтобы проверить, установлено ли соединение.

2. Теперь вы можете добавить все атрибуты, которые будут передаваться через SCIM в Zabbix. Для этого нажмите Mappings, а затем Provision Microsoft Entra ID Users.

В нижней части списка Attribute Mapping включите Show advanced options, затем нажмите Edit attribute list for customappsso.
В нижней части списка атрибутов добавьте собственные атрибуты с типом 'String':

Сохраните список.
3. Теперь вы можете добавить сопоставления для добавленных атрибутов. В нижней части списка Attribute Mapping нажмите Add New Mapping и создайте сопоставления, как показано ниже:

Когда все сопоставления будут добавлены, сохраните список сопоставлений.

4. В качестве предварительного условия для подготовки пользователей в Zabbix у вас должны быть настроены пользователи и группы в Entra ID.
Для этого перейдите в Microsoft Entra admin center, а затем добавьте пользователей/группы на соответствующих страницах Users и Groups.
5. Когда пользователи и группы будут созданы в Entra ID, вы можете перейти в меню Users and groups вашего приложения и добавить их в приложение.
6. Перейдите в меню Provisioning вашего приложения и нажмите Start provisioning, чтобы подготовить пользователей в Zabbix.
Обратите внимание, что запрос PATCH для Users в Entra ID не поддерживает изменения в способах оповещения.
Подпись запросов аутентификации
Можно настроить Entra ID на проверку подписи подписанных запросов аутентификации.
Чтобы это работало, создайте открытый/закрытый ключи:
openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes
Назначьте права доступа:
chown apache /usr/share/zabbix/conf/certs/request-sign.key
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
Обновите конфигурацию веб-интерфейса Zabbix, добавив:
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
Устранение неполадок
Проблемы с аутентификацией могут возникать в браузерах MicroSoft Edge, когда пользователь, пытающийся войти в Zabbix через SAML, уже вошел в систему с использованием профиля MicroSoft Edge. Признаком такой проблемы может быть то, что пользователь может войти в Zabbix с помощью MicroSoft Edge в режиме InPrivate.
Чтобы избежать проблем с аутентификацией в этом случае, может потребоваться установить requestedAuthnContext в значение "false" в файле конфигурации веб-интерфейса Zabbix (zabbix.conf.php).
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];