Настройка SAML Okta

Grafana поддерживает аутентификацию пользователей через Okta, что полезно, когда вы хотите, чтобы ваши пользователи получали доступ к Grafana с помощью единого входа. Это руководство проведёт вас через шаги настройки аутентификации SAML в Grafana с помощью Okta. Вам нужно быть администратором в вашей организации Okta, чтобы получить доступ к Admin Console и создать интеграцию SAML. Вам также нужны разрешения на редактирование файла конфигурации Grafana и перезапуск сервера Grafana.

Перед началом

  • Чтобы настроить интеграцию SAML с Okta, сначала создайте интеграцию приложения внутри организации Okta. Добавление интеграции приложения в Okta
  • Убедитесь, что у вас есть разрешение администрировать аутентификацию SAML. Дополнительную информацию о ролях и разрешениях в Grafana см. в разделе Роли и разрешения.

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

Caution

Эти шаги приведены только в помощь, обратитесь к официальной документации Okta за актуальными инструкциями.

  1. Войдите в портал Okta.

  2. Перейдите в Admin Console в вашей организации Okta, нажав Admin в правом верхнем углу. Если вы находитесь в Developer Console, то нажмите Developer Console в левом верхнем углу, а затем нажмите Classic UI, чтобы переключиться на Admin Console.

  3. В Admin Console перейдите в Applications > Applications.

  4. Нажмите Create App Integration, чтобы запустить мастер интеграции приложения.

  5. Выберите SAML 2.0 в качестве Sign-in method.

  6. Нажмите Create.

  7. На вкладке General Settings введите имя для вашей интеграции Grafana. Вы также можете загрузить логотип.

  8. На вкладке Configure SAML введите информацию SAML, относящуюся к вашему экземпляру Grafana:

    • В поле Single sign on URL используйте URL конечной точки /saml/acs вашего экземпляра Grafana, например https://grafana.example.com/saml/acs.

    • В поле Audience URI (SP Entity ID) используйте URL конечной точки /saml/metadata, по умолчанию это конечная точка /saml/metadata вашего экземпляра Grafana (например https://example.grafana.com/saml/metadata). Это может быть настроено иначе, но значение здесь должно совпадать с настройкой entity_id настроек SAML в Grafana.

    • Оставьте значения по умолчанию для Name ID format и Application username.

      Note

      Если вы планируете включить единый выход SAML, рассмотрите возможность установки Name ID format в EmailAddress или Persistent. Это должно совпадать с настройкой name_id_format экземпляра Grafana.

    • В разделе ATTRIBUTE STATEMENTS (REQUIRED) введите атрибуты SAML, которые будут переданы Grafana. Имена атрибутов в Okta должны точно совпадать с тем, что определено в Grafana, например:

      Имя атрибута (в Grafana) Имя и значение (в профиле Okta) Конфигурация Grafana (в auth.saml)
      Login Login - user.login assertion_attribute_login = Login
      Email Email - user.email assertion_attribute_email = Email
      DisplayName DisplayName - user.firstName + " " + user.lastName assertion_attribute_name = DisplayName
    • В разделе GROUP ATTRIBUTE STATEMENTS (OPTIONAL) введите имя атрибута группы (например, Group, убедитесь, что оно совпадает с настройкой assertion_attribute_groups в Grafana) и установите фильтр в Matches regex .*, чтобы возвращать все группы пользователя. Чтобы использовать эти группы для назначения ролей, см. Настройка синхронизации ролей с Okta.

  9. Нажмите Next.

  10. На последней вкладке Feedback заполните форму и затем нажмите Finish.

Настройка утверждений SAML при использовании провижининга SCIM

Чтобы проверить, что вошедший в систему пользователь — это тот же пользователь, который был провижинен через Okta, вам нужно включить тот же externalId в утверждение SAML, сопоставив утверждение SAML assertion_attribute_external_id.

  1. Откройте своё приложение Okta.
  2. Выберите конфигурацию единого входа SAML.
  3. Отредактируйте раздел Attributes & Claims.
  4. Добавьте новое утверждение со следующими настройками:
    • Name: userUID

Пример конфигурации

Имя атрибута (в Grafana) Имя и значение (в профиле Okta) Конфигурация Grafana по умолчанию (в auth.saml)
userUID userUID - user.getInternalProperty("id") assertion_attribute_login = userUID