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
    ]
];