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 assertion как уникальный идентификатор поставщика услуг (если оно не совпадает, операция будет отклонена). В этом поле можно указать URL или любую строку данных.
    • Default RelayState:
      Оставьте это поле пустым; если требуется пользовательское перенаправление, его можно добавить в Zabbix в настройках Users > Users.
    • Заполните остальные поля по своему усмотрению.
  • В Attribute Statements/Group Attribute Statements добавьте:

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

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

Если вы хотите настроить вход в 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
Атрибут имени пользователя Attribute name usrEmail
SP entity ID Audience URI zabbix
Атрибут имени группы Attribute name groups
Атрибут имени Attribute name user_name
Атрибут фамилии пользователя 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 provisioning

1. Чтобы включить SCIM provisioning, перейдите в "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 token с правами 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". Шаблон сопоставления групп пользователей в настройках SAML Zabbix должен соответствовать группе, указанной здесь. Если совпадение отсутствует, пользователь не может быть создан в Zabbix.

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