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 использует этот символ в качестве разделителя при отправке атрибута с несколькими ролями.
Конфигурация 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. Скачайте сертификат, предоставленный OneLogin, и поместите его в conf/certs установки веб-интерфейса Zabbix под именем idp.crt.
Установите для него права 644, выполнив:
chmod 644 idp.crt
Скачать сертификат в OneLogin можно в Applications -> SSO -> нажмите View details под текущим сертификатом.
Можно использовать другое имя и расположение сертификата. В этом случае обязательно добавьте в conf/zabbix.conf.php следующую строку:
$SSO['IDP_CERT'] = 'path/to/certname.crt';
Инициализация пользователей SCIM
При включённой инициализации пользователей теперь можно добавлять/обновлять пользователей и их роли в OneLogin и немедленно получать их в Zabbix.
Например, вы можете создать нового пользователя:

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

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

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