Настройка 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
    ]
];