13. Настройка SAML с OneLogin

Обзор

В этом разделе приведены рекомендации по настройке единого входа и инициализации пользователей в Zabbix из OneLogin с использованием аутентификации SAML 2.0.

Настройка OneLogin

Создание приложения

1. Войдите в свою учетную запись в OneLogin. Для целей тестирования вы можете создать бесплатную учетную запись разработчика в OneLogin.

2. В веб-интерфейсе OneLogin перейдите в Applications → Applications (Приложения → Приложения).

3. Нажмите «Add App (Добавить приложение)» и найдите соответствующее приложение. Рекомендации на этой странице основаны на примере приложения SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML).

4. Для начала вы можете настроить отображаемое имя вашего приложения. Вы также можете добавить значок и сведения о приложении. После этого нажмите Save (Сохранить).

Настройка инициализации SSO/SCIM

1. В Configuration -> Application details (Конфигурация -> Сведения о приложении) установите конечную точку единого входа Zabbix http://<url-экземпляра-zabbix>/zabbix/index_sso.php?acs в качестве значения следующих полей:

  • ACS (Consumer) URL Validator
  • ACS (Consumer) URL

Обратите внимание на использование «http», а не «https», чтобы параметр acs не был вырезан в запросе.

Также можно использовать и «https». Чтобы это работало с Zabbix, необходимо добавить в conf/zabbix.conf.php следующую строку:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

Оставьте остальные параметры со значениями по умолчанию.

2. В Configuration -> API connection (Конфигурация -> Подключение API) установите следующие значения:

  • SCIM Base URL: https://<zabbix-instance-url>/zabbix/api_scim.php
  • SCIM JSON Template: должен содержать все пользовательские атрибуты, которые вы хотите передать в Zabbix через SCIM, такие как user_name, user_lastname, user_email и user_mobile:
{
         "schemas": [
           "urn:ietf:params:scim:schemas:core:2.0:User"
         ],
         "userName": "{$parameters.scimusername}",
         "name": {
           "familyName": "{$user.lastname}",
           "givenName": "{$user.firstname}"
         },
          "user_name": "{$user.firstname}",
          "user_lastname": "{$user.lastname}",
          "user_mobile": "{$user.phone}",
          "user_email": "{$user.email}"
       }

Имена атрибутов произвольны. Можно использовать разные имена атрибутов, однако необходимо, чтобы они соовпадали со значением соответствующего поля в настройках SAML в Zabbix.

Обратите внимание, что для работы инициализации пользователей необходимо, чтобы OneLogin получал в ответ атрибут «name» с «givenName» и «familyName», даже если это не требовалось поставщиком услуг. Поэтому необходимо указать это в схеме в части настроек приложения.

  • SCIM Bearer Token: введите токен API Zabbix с правами Супер-администратора.

Нажмите Enable, чтобы активировать соединение.

3. На странице Provisioning включите опцию «Enable provisioning»:

4. На странице Parameters содержится список параметров по умолчанию:

  • Убедитесь, что «scimusername» соответствует значению имени пользователя для входа в OneLogin (например, email);
  • Отметьте опцию Include in User Provisioning для параметра «Groups»;
  • Нажмите «+», чтобы создать пользовательские параметры, необходимые для утверждений (assertions) SAML и инициализации пользователей, такие как user_name, user_lastname, user_email и user_mobile:

При добавлении параметра обязательно отметьте оба параметра Include in SAML assertion и Include in User Provisioning.

  • Добавьте параметр «group», который соответствует ролям пользователей в OneLogin. Роли пользователей будут переданы в виде строки с использованием точки с запятой ; в качестве разделителя. Роли пользователей OneLogin будут использоваться для создания групп пользователей в Zabbix:

Проверьте список параметров:

5. На странице Rules (Правила) создайте сопоставления ролей пользователей с параметром по умолчанию Groups (Группы).

Вы можете использовать регулярное выражение для передачи определённых ролей в качестве групп. Имена ролей не должны содержать ;, так как OneLogin использует его в качестве разделителя при отправке атрибута с несколькими ролями.

Настройка Zabbix

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

Поле Zabbix Поле настрек в OneLogin Пример значения
IdP entity ID Issuer URL
(см. вкладку SSO вашего приложения в OneLogin)
URL единого входа
(SSO service URL)
SAML 2.0 Endpoint (HTTP)
(см. вкладку SSO вашего приложения в OneLogin)
URL единого выхода
(SLO service URL)
SLO Endpoint (HTTP)
(см. вкладку SSO вашего приложения в OneLogin)
Атрибут имени пользователя
(Username attribute)
Custom parameter user_email
Атрибут имени группы
(Group name attribute)
Custom parameter group
Атрибут имени пользователя
(User name attribute)
Custom parameter user_name
Атрибут фамилии пользователя
(User last name attribute)
Custom parameter user_lastname

Также необходимо настроить соответствие группе пользователей. Cоответствие способов оповещений является необязательным. Нажмите Update (Обновить), чтобы сохранить эти настройки.

2. Загрузите сертификат, предоставленный OneLogin, и поместите его в conf/certs вашей инсталляции веб-интерфейса Zabbix как idp.crt.

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

chmod 644 idp.crt

Вы можете получить доступ к загрузке сертификата в OneLogin в Applications (Приложения) -> SSO -> нажмите View details (Просмотреть подробности) под текущим сертификатом.

Можно использовать другое имя и местоположение сертификата. В этом случае убедитесь, что в conf/zabbix.conf.php добавлена следующая строка:

$SSO['IDP_CERT'] = 'путь/к/certname.crt';

Инициализация пользователей SCIM

При включённой инициализации пользователей теперь можно добавлять/обновлять пользователей и их роли в OneLogin и немедленно получать их в Zabbix.

Например, вы можете создать нового пользователя:

Добавьте его в роль пользователя и приложение, которое будет инициализировать пользователя:

При сохранении пользователя он будет инициализирован в Zabbix. В Application -> Users вы можете проверить статус инициализации текущих пользователей приложения:

Если инициализация прошла успешно, пользователь будет виден в списке пользователей Zabbix.