Настройка 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://<zabbix-instance-url>/zabbix/index_sso.php?acs в следующих полях:

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

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

Также можно использовать https. Чтобы использовать этот вариант с Zabbix, добавьте следующую строку в файл конфигурации веб-интерфейса (zabbix.conf.php):

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

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

2. В разделе Configuration > API connection укажите следующие значения:

  • 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 включите параметр Provisioning:

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

  • Убедитесь, что scimusername соответствует значению логина пользователя в OneLogin (например, адресу электронной почты);
  • Для параметра Groups включите параметр Include in User Provisioning;
  • Нажмите «+», чтобы создать пользовательские параметры, необходимые для утверждений 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 использует этот символ как разделитель при отправке атрибута с несколькими ролями.

6. Скачайте сертификат IdP. Установите для него права 644, выполнив команду:

chmod 644 idp.crt

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

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

Поле Zabbix Поле настройки в OneLogin Пример значения
Идентификатор сущности IdP URL издателя
(см. вкладку SSO приложения в OneLogin)
URL службы SSO Конечная точка SAML 2.0 (HTTP)
(см. вкладку SSO приложения в OneLogin)
URL службы SLO Конечная точка SLO (HTTP)
(см. вкладку SSO приложения в OneLogin)
Атрибут имени пользователя Пользовательский параметр user_email
Атрибут имени группы Пользовательский параметр group
Атрибут имени пользователя Пользовательский параметр user_name
Атрибут фамилии пользователя Пользовательский параметр user_lastname

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

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

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

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

Доступ к загрузке сертификата в OneLogin можно получить, выбрав Applications > SSO и нажав View details под текущим сертификатом.

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

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

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

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

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

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

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