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