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

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, необходимо добавить в conf/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}"
}

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

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

  • SCIM Bearer Token: введите API token Zabbix с правами Super admin.

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

3. На странице Provisioning включите параметр Provisioning:

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

  • Убедитесь, что значение 'scimusername' соответствует значению логина пользователя в OneLogin (например, email);
  • Отметьте опцию Include in User Provisioning для параметра 'Groups';
  • Нажмите "+" для создания пользовательских параметров, необходимых для SAML assertions и provisioning пользователей, таких как 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 entity ID Issuer URL
(см. вкладку SSO вашего приложения в OneLogin)
SSO service URL SAML 2.0 Endpoint (HTTP)
(см. вкладку SSO вашего приложения в OneLogin)
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

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

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

Если в 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.

Скачать сертификат в OneLogin можно в Applications -> SSO -> нажмите View details под текущим сертификатом.

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

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

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

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

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

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

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