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-подготовки пользователей

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.

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

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

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

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

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

  • Убедитесь, что 'scimusername' соответствует значению логина пользователя в OneLogin (например, email);
  • Отметьте параметр Include in User Provisioning для параметра 'Groups';
  • Нажмите "+", чтобы создать пользовательские параметры, необходимые для 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 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 Пользовательский параметр user_email
Group name attribute Пользовательский параметр group
User name attribute Пользовательский параметр user_name
User last name attribute Пользовательский параметр 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.