13 Настройка SAML с Okta

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

Настройка Okta

1. Перейдите на https://developer.okta.com/signup/ и зарегистрируйтесь/войдите в свою учетную запись.

2. В веб-интерфейсе Okta перейдите в Applications → Applications.

3. Нажмите Create App Integration.

Выберите "SAML 2.0" в качестве метода входа и нажмите Next.

4. В общих настройках укажите имя приложения и нажмите Next.

5. В настройках SAML введите приведенные ниже значения, затем нажмите Next.

  • В разделе General добавьте:

    • Single sign-on URL: http://<your-zabbix-url>/zabbix/index_sso.php?acs
      Обратите внимание на использование "http", а не "https", чтобы параметр acs не был обрезан в запросе. Флажок Use this for Recipient URL and Destination URL также должен быть установлен.
    • Audience URI (SP Entity ID): zabbix
      Обратите внимание, что это значение будет использоваться в SAML-утверждении как уникальный идентификатор поставщика услуг (если оно не совпадает, операция будет отклонена). В этом поле можно указать URL или любую строку данных.
    • Default RelayState:
      Оставьте это поле пустым; если требуется пользовательское перенаправление, его можно добавить в Zabbix в настройках Users > Users.
    • Заполните остальные поля в соответствии с вашими предпочтениями.
  • В разделе Attribute Statements/Group Attribute Statements добавьте:

Эти операторы атрибутов вставляются в SAML-утверждения, передаваемые в Zabbix.

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

Если вы хотите настроить вход в Zabbix через SAML без JIT-подготовки пользователей, тогда требуется только атрибут email.

Если планируется использовать зашифрованное соединение, сгенерируйте закрытый и открытый сертификаты шифрования, затем загрузите открытый сертификат в Okta. Форма загрузки сертификата появляется, когда Assertion Encryption установлено в значение "Encrypted" (нажмите Show Advanced Settings, чтобы найти этот параметр).

6. На следующей вкладке выберите "I'm a software vendor. I'd like to integrate my app with Okta" и нажмите Finish.

7. Перейдите на вкладку "Assignments" только что созданного приложения и нажмите кнопку Assign, затем выберите "Assign to People" из выпадающего списка.

8. Во всплывающем окне назначьте приложение пользователям, которые будут использовать SAML 2.0 для аутентификации в Zabbix, затем нажмите Save and go back.

9. Загрузите сертификат IdP. Установите для него права 644, выполнив:

chmod 644 idp.crt

10. Перейдите на вкладку "Sign On" и нажмите кнопку View Setup Instructions.

Инструкции по настройке откроются в новой вкладке; оставьте эту вкладку открытой во время настройки Zabbix.

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

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

Поле Zabbix Поле настройки в Okta Пример значения
IdP entity ID Identity Provider Issuer
SSO service URL Identity Provider Single Sign-On URL
Username attribute Attribute name usrEmail
SP entity ID Audience URI zabbix
Group name attribute Attribute name groups
User name attribute Attribute name user_name
User last name attribute Attribute name user_lastname

Также необходимо настроить сопоставление групп пользователей и способов оповещения.

2. Добавьте сертификат Base64, указанный в инструкциях по настройке Okta SAML.

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

3. Если в Okta для Assertion Encryption установлено значение "Encrypted", в Zabbix также следует установить флажок "Assertions" у параметра Encrypt.

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

SCIM-подготовка

1. Чтобы включить SCIM-подготовку, перейдите в "General" -> "App Settings" приложения в Okta.

Установите флажок Enable SCIM provisioning. В результате появится новая вкладка Provisioning.

2. Перейдите на вкладку "Provisioning", чтобы настроить SCIM-соединение:

  • В SCIM connector base URL укажите путь к веб-интерфейс Zabbix и добавьте к нему api_scim.php, например:
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for users: email
  • Authentication mode: HTTP header
  • В поле Authorization введите действительный API-токен с правами Super admin

Если у вас возникают проблемы с аутентификацией, см. Authorization header forwarding.

3. Нажмите Test Connector Configuration, чтобы проверить соединение. Если все настроено правильно, будет показано сообщение об успешном выполнении.

4. В разделе "Provisioning" -> "To App" убедитесь, что установлены следующие флажки:

  • Create Users
  • Update User Attributes
  • Deactivate Users

Это гарантирует, что запросы этих типов будут отправляться в Zabbix.

5. Убедитесь, что все атрибуты, определенные в SAML, определены и в SCIM. Вы можете открыть редактор профиля для вашего приложения в "Provisioning" -> "To App", нажав Go to Profile Editor.

Нажмите Add Attribute. Заполните значения Display name, Variable name, External name именем атрибута SAML, например user_name.

Значение External namespace должно совпадать со схемой пользователя: urn:ietf:params:scim:schemas:core:2.0:User

6. Перейдите в "Provisioning" -> "To App" -> "Attribute Mappings" вашего приложения. Нажмите Show Unmapped Attributes внизу страницы. Появятся недавно добавленные атрибуты.

7. Сопоставьте каждый добавленный атрибут.

8. Добавьте пользователей на вкладке "Assignments". Предварительно эти пользователи должны быть добавлены в Directory -> People. Все эти назначения будут отправлены в Zabbix в виде запросов.

9. Добавьте группы на вкладке "Push Groups". Шаблон сопоставления групп пользователей в настройках Zabbix SAML должен соответствовать группе, указанной здесь. Если совпадения нет, пользователь не сможет быть создан в Zabbix.

Информация о членах группы отправляется каждый раз при внесении каких-либо изменений.