Аутентификация SAML в Grafana

Note

Доступно в Grafana Enterprise и Grafana Cloud.

Интеграция аутентификации SAML позволяет вашим пользователям Grafana входить в систему, используя внешний провайдер идентификации (IdP) SAML 2.0. Чтобы включить это, Grafana становится поставщиком услуг (SP) в процессе аутентификации, взаимодействуя с IdP для обмена информацией о пользователе.

Варианты настройки аутентификации SAML в Grafana

Вы можете настроить аутентификацию SAML в Grafana разными методами. Хотя параметры конфигурации не меняются, если вы хотите держать все настройки аутентификации Grafana в одном месте, используйте файл конфигурации Grafana или провайдер Terraform. Если вы пользователь Grafana Cloud, у вас нет доступа к файлу конфигурации Grafana. Вместо этого настройте SAML через другие методы.

Caution

Конфигурация в API или интерфейсе имеет приоритет над конфигурацией в файле конфигурации Grafana. Настройки SAML из API переопределят любую конфигурацию SAML, заданную в файле конфигурации Grafana.

Дополнительную информацию о том, как Grafana определяет порядок приоритета своих настроек, см. в SSO Settings API.

Доступны следующие методы:

Если вы используете Okta или Entra ID в качестве провайдера идентификации, см. следующую документацию по настройке:

Привязки SAML

Grafana поддерживает следующие привязки SAML 2.0:

  • От поставщика услуг (SP) к провайдеру идентификации (IdP):

    • Привязка HTTP-POST
    • Привязка HTTP-Redirect
  • От провайдера идентификации (IdP) к поставщику услуг (SP):

    • Привязка HTTP-POST

Инициирование запросов

Grafana поддерживает:

  • Запросы, инициированные SP
  • Запросы, инициированные IdP

По умолчанию включены запросы, инициированные SP. Инструкции о том, как включить входы, инициированные IdP, см. в разделе Единый вход (SSO), инициированный IdP.

Регистрация провайдера идентификации (IdP)

Чтобы интеграция SAML работала корректно, вам нужно уведомить ваш IdP о том, что Grafana является SP.

Интеграция предоставляет две ключевые конечные точки как часть Grafana:

  • Конечная точка /saml/metadata, которая содержит метаданные SP. Вы можете либо скачать и загрузить их вручную, либо заставить IdP запрашивать их напрямую с конечной точки. Некоторые провайдеры называют это Identifier или Entity ID.
  • Конечная точка /saml/acs, которая предназначена для получения обратного вызова ACS (Assertion Customer Service). Некоторые провайдеры называют это SSO URL или Reply URL.

Метаданные IdP

Вам также нужно определить публичную часть IdP для проверки сообщений. XML-метаданные IdP SAML определяют, где и как Grafana обменивается информацией о пользователе.

Grafana поддерживает три способа указания метаданных IdP.

  • Без суффикса idp_metadata Grafana предполагает содержимое XML-файла в кодировке base64.
  • С суффиксом _path Grafana предполагает путь и пытается прочитать файл из файловой системы.
  • С суффиксом _url Grafana предполагает URL и пытается загрузить метаданные из указанного расположения.

Сопоставление утверждений

Во время процесса аутентификации SAML SSO Grafana получает обратный вызов ACS. Обратный вызов содержит всю соответствующую информацию об аутентифицируемом пользователе, встроенную в ответ SAML. Grafana разбирает ответ, чтобы создать (или обновить) пользователя в своей внутренней базе данных.

Чтобы Grafana могла сопоставить информацию о пользователе, она смотрит на отдельные атрибуты внутри утверждения. Вы можете думать об этих атрибутах как о парах Ключ/Значение (хотя они содержат больше информации, чем это).

Grafana предоставляет параметры конфигурации, которые позволяют изменить, на какие ключи смотреть для этих значений. Данные, которые нам нужны для создания пользователя в Grafana: Name, Login handle и email.

Интеграция с провижинингом SCIM

Если вы также используете провижининг SCIM для этого приложения Grafana в Entra ID, крайне важно согласовать идентификаторы пользователей между SAML и SCIM для бесшовной работы. Уникальный идентификатор, который связывает пользователя SAML с пользователем, провижиненным через SCIM, определяется настройкой assertion_attribute_external_uid в конфигурации Grafana SAML. Этот assertion_attribute_external_uid должен соответствовать externalId, используемому в провижининге SCIM (обычно устанавливается в Entra ID user.objectid).

  1. Обеспечьте согласованный идентификатор в утверждении SAML:

    • Уникальный идентификатор из Entra ID (обычно user.objectid), который вы сопоставили с атрибутом externalId в Grafana в вашей настройке провижининга SCIM, также должен отправляться как утверждение в утверждении SAML. Дополнительные сведения о SCIM см. в документации по провижинингу SCIM.
    • В корпоративном приложении Entra ID в разделе Single sign-on > Attributes & Claims убедитесь, что вы добавили утверждение, которое предоставляет этот идентификатор. Например, вы можете добавить утверждение с именем UserID (или похожее, например externalId), которое берёт своё значение из user.objectid.
  2. Настройте параметры Grafana SAML для SCIM:

    • В разделе [auth.saml] вашей конфигурации Grafana установите assertion_attribute_external_uid в имя утверждения SAML, которое вы настроили на предыдущем шаге (например, userUID или полный URI, такой как http://schemas.microsoft.com/identity/claims/objectidentifier, если Entra ID отправляет его именно так).
    • Настройка assertion_attribute_login всё ещё должна быть настроена на сопоставление с атрибутом, с которым будут входить ваши пользователи (например, userPrincipalName, mail).

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

    ini
    [auth.saml]
    # ... other SAML settings ...
    assertion_attribute_login = http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier # Or other login attribute
    assertion_attribute_external_uid = http://schemas.microsoft.com/identity/claims/objectidentifier # Or your custom claim name for user.objectid

    Убедитесь, что значение, указанное в assertion_attribute_external_uid, точно совпадает с именем утверждения, как оно отправляется в утверждении SAML от Entra ID.

  3. Идентификатор связывания SCIM и Entra ID:

    • По умолчанию (если assertion_attribute_external_uid не задан) Grafana использует атрибут userUID из утверждения SAML для связывания SCIM.
    • Рекомендуется для Entra ID: Для интеграции SCIM с Entra ID необходимо:
      1. Убедиться, что Entra ID отправляет user.objectid в утверждении.
      2. Либо задать имя этого утверждения в Entra ID как userUID, либо, если вы хотите использовать другое имя утверждения, установить assertion_attribute_external_uid в Grafana в соответствии с именем утверждения, которое вы выбрали в Entra ID.

Расширенная конфигурация

Для расширенной конфигурации и устранения неполадок обратитесь к одной из следующих страниц: