11. Настройка 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).
Имена атрибутов задаются произвольно. Можно использовать разные имена атрибутов, однако они должны соответствовать значению соответствующего поля в настройках SAML Zabbix.
- Нажмите Add new claim, чтобы добавить атрибут:

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

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

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

| Поле Zabbix | Поле настроек в Entra ID | Пример значения |
|---|---|---|
| IdP entity ID | Microsoft Entra identifier | |
| URL единого входа (SSO service URL) |
Login URL | |
| URL единого выхода (SLO service URL) |
Logout URL | |
| ID объекта SP (SP entity ID) |
Identifier (Entity ID) | |
| Атрибут имени пользователя (Username attribute) |
Custom attribute (claim) | user_email |
| Атрибут имени группы (Group name attribute) |
Custom attribute (claim) | groups |
| Атрибут имени пользователя (User name attribute) |
Custom attribute (claim) | user_name |
| Атрибут фамилии пользователя (User last name attribute) |
Custom attribute (claim) | user_lastname |
Также необходимо настроить соответствие группе пользователей. Cоответствие способов оповещений является необязательным.
Нажмите Update (Обновить), чтобы сохранить эти настройки.
Инициализация пользователей SCIM
1. На странице приложения Entra ID в главном меню откройте страницу Provisioning. Нажмите Get started (Начать), а затем выберите режим Provisioning Mode=Automatic:
- В поле Tenant URL установите следующее значение:
https://<путь-к-веб-интерфейсу-zabbix>/api_scim.php - В поле Secret token введите токен API Zabbix с правами Супер-администратора.
- Нажмите 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 (Центр администрирования Microsoft Entra), а затем добавьте пользователей/группы на страницах Users (Пользователи) и Groups (Группы) соответственно.
5. Когда пользователи и группы созданы в Entra AD, вы можете перейти в меню Users and groups (Пользователи и группы) вашего приложения и добавить их в приложение.
6. Перейдите в меню Provisioning вашего приложения и нажмите Start provisioning, чтобы инициализировать пользователей в Zabbix.
Обратите внимание, что запрос Users PATCH в 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 в приватном режиме.
Чтобы избежать проблем с аутентификацией в этом случае, может потребоваться установить requestedAuthnContext в значение «false» в файле конфигурации веб-интерфейса Zabbix (zabbix.conf.php).
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];