Настройка 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, добавьте следующую строку в файл конфигурации веб-интерфейса:

$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:

Важно, чтобы в этом утверждении выбранный Source attribute передавал в Zabbix имена групп, а не их идентификаторы. В противном случае автоматическое создание пользователей JIT не будет работать должным образом.

4. В разделе SAML Certificates скачайте сертификат Base64, предоставленный Entra ID, и поместите его в каталог conf/certs установки веб-интерфейса Zabbix (расположение может отличаться в зависимости от ОС и способа установки Zabbix).

Установите для него права доступа 644, выполнив команду:

chmod 644 entra.cer

5. Используйте значения из раздела Set up <your app name> в Entra ID для настройки аутентификации Zabbix SAML (см. следующий раздел):

Конфигурация Zabbix

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

Поле Zabbix Поле настройки в Entra ID Пример значения
Идентификатор сущности IdP Идентификатор Microsoft Entra
URL службы SSO URL входа
URL службы SLO URL выхода
Идентификатор сущности SP Идентификатор (Entity ID)
Атрибут имени пользователя Пользовательский атрибут (утверждение) user_email
Атрибут имени группы Пользовательский атрибут (утверждение) groups
Атрибут имени пользователя Пользовательский атрибут (утверждение) user_name
Атрибут фамилии пользователя Пользовательский атрибут (утверждение) user_lastname

2. Добавьте сертификат Base64, предоставленный Entra ID.

Если в файле конфигурации веб-интерфейса (zabbix.conf.php) задано $SSO['CERT_STORAGE'] = 'database', во время настройки SAML можно вставить текст сертификата или загрузить файл сертификата в веб-интерфейс — файлы в файловой системе не требуются.

Если в файле конфигурации задано $SSO['CERT_STORAGE'] = 'file', сертификат должен быть доступен в файловой системе (по умолчанию в ui/conf/certs или по пути, настроенному в файле конфигурации), а веб-интерфейс не будет сохранять сертификаты в базе данных. Обратите внимание: если $SSO['CERT_STORAGE'] не задан или закомментирован, используется файловое хранилище, а сертификаты считываются из ui/conf/certs.

Также необходимо настроить сопоставление групп пользователей. Сопоставление медиа необязательно.

3. Нажмите кнопку Обновить, чтобы сохранить эти настройки.

Подготовка пользователей SCIM

1. На странице приложения Entra ID в главном меню откройте страницу Provisioning. Нажмите Get started и затем выберите режим Automatic provisioning:

  • В 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.

Обратите внимание, что запрос Users PATCH в Entra ID не поддерживает изменения в media.

Подпись запросов аутентификации

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.

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
];