Настройка SAML с Microsoft Entra ID

Grafana поддерживает аутентификацию пользователей через Microsoft Entra ID.

Note

Начиная с Grafana v11.2 интеграция SAML предоставляет механизм для получения групп пользователей из Graph API.

Версии Grafana 11.1 и ниже не поддерживают получение групп из конечной точки Graph API. В результате пользователи с более чем 150 группами не смогут получить свои группы. Вместо этого используйте коннектор Entra ID.

Связанные ссылки:

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

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

Если у вас есть пользователи, принадлежащие более чем к 150 группам, настройте зарегистрированное приложение, чтобы предоставить Entra ID Graph API для получения групп. См. Настройка приложений Entra ID Graph API.

Генерация самоподписанных сертификатов

Entra ID требует сертификат для проверки подписи запросов SAML. Вы можете сгенерировать приватный ключ и самоподписанный сертификат с помощью следующей команды (приватный ключ используется для подписи запросов, а сертификат содержит публичный ключ для проверки):

sh
$ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Это сгенерирует файлы key.pem и cert.pem, которые вы можете использовать для параметров конфигурации private_key_path и certificate_path.

Взято с https://learn.microsoft.com/en-us/entra/identity/saas-apps/saml-toolkit-tutorial#add-microsoft-entra-saml-toolkit-from-the-gallery

  1. Перейдите на портал Azure и войдите со своей учётной записью Entra ID.
  2. Найдите Enterprise Applications.
  3. В области Enterprise applications выберите New application.
  4. В поле поиска введите SAML Toolkit, затем выберите Microsoft Entra SAML Toolkit из панели результатов.
  5. Добавьте описательное имя и выберите Create.

Настройка конечных точек приложения SAML Toolkit

Чтобы проверять пользователей Entra ID с помощью Grafana, вам нужно настроить конечные точки приложения SAML Toolkit, создав новую интеграцию SAML в организации Entra ID.

Для следующей конфигурации мы будем использовать https://localhost в качестве URL Grafana. Замените его на ваш URL Grafana.

  1. В приложении SAML Toolkit выберите Set up single sign-on.
  2. В области Single sign-on выберите SAML.
  3. В области Set up Single Sign-On with SAML выберите значок карандаша для Basic SAML Configuration, чтобы изменить настройки.
  4. В области Basic SAML Configuration нажмите кнопку Edit и обновите следующие поля:
    • В поле Identifier (Entity ID) введите https://localhost/saml/metadata.
    • В поле Reply URL (Assertion Consumer Service URL) введите https://localhost/saml/acs.
    • В поле Sign on URL введите https://localhost.
    • В поле Relay State введите https://localhost.
    • В поле Logout URL введите https://localhost/saml/slo.
  5. Выберите Save.
  6. В разделе SAML Certificate скопируйте App Federation Metadata Url.
    • Используйте этот URL в поле idp_metadata_url в файле custom.ini.

Генерация client secret

  1. В области Overview выберите Certificates & secrets.
  2. Выберите New client secret.
  3. В области Add a client secret введите описание для секрета.
  4. Установите дату истечения для секрета.
  5. Выберите Add.
  6. Скопируйте значение секрета. Это значение используется в поле client_secret в конфигурации SAML.

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

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

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

Настройте вашу конфигурацию сопоставления пользователей для использования URI Entra ID

Если утверждения URI по умолчанию не работают, настройте своё сопоставление пользователей следующим образом:

Настройка приложения Graph API в Entra ID

Хотя вы можете настроить тенант Entra ID в Grafana через SAML, некоторая дополнительная информация доступна только через Graph API. Чтобы получить эту информацию, создайте новое приложение в Entra ID и предоставьте ему необходимые разрешения. Чтобы узнать больше, см. Ограничения Entra ID SAML.

В следующем примере конфигурации используется URL https://localhost в качестве URL Grafana. Замените его на URL вашего экземпляра Grafana.

Создание новой регистрации приложения

Эта регистрация приложения используется как сервисная учётная запись для получения дополнительной информации о пользователе Entra ID.

  1. Перейдите на портал Azure и войдите со своей учётной записью Entra ID.
  2. В панели навигации слева выберите службу Microsoft Entra ID, а затем выберите App registrations.
  3. Нажмите кнопку New registration.
  4. В области Register an application введите имя для приложения.
  5. В разделе Supported account types выберите типы учётных записей, которые могут использовать приложение.
  6. В разделе Redirect URI выберите Web и введите https://localhost/login/azuread.
  7. Нажмите кнопку Register.

Настройка разрешений для приложения

  1. В области обзора найдите раздел API permissions и выберите Add a permission.
  2. В области Request API permissions выберите Microsoft Graph и нажмите Application permissions.
  3. В области Select permissions в разделе GroupMember выберите GroupMember.Read.All.
  4. В области Select permissions в разделе User выберите User.Read.All.
  5. Нажмите кнопку Add permissions в нижней части страницы.
  6. В области Request API permissions выберите Microsoft Graph и нажмите Delegated permissions.
  7. В области Select permissions в разделе User выберите User.Read.
  8. Нажмите кнопку Add permissions в нижней части страницы.
  9. В разделе API permissions выберите Grant admin consent for <directory-name>.

Следующая таблица показывает, как выглядят разрешения на портале Entra ID:

Имя разрешения Тип Требуется согласие администратора Статус
GroupMember.Read.All Application Да Granted
User.Read Delegated Нет Granted
User.Read.All Application Да Granted
Screen shot of the permissions listed in Entra ID for the App registration
Screen shot of the permissions listed in Entra ID for the App registration

Чтобы проверить, что Graph API имеет правильные разрешения, см. раздел Устранение неполадок вызовов Graph API.