Настройка аутентификации Microsoft Entra ID OAuth

Аутентификация Microsoft Entra ID позволяет использовать тенант Microsoft Entra ID (ранее известный как Azure Active Directory) в качестве провайдера идентификации для Grafana. Вы можете использовать роли приложения Entra ID, чтобы назначать пользователей и группы ролям Grafana из Azure Portal.

Caution

Если вы используете один и тот же адрес электронной почты в Microsoft Entra ID и в других провайдерах аутентификации (например, Grafana.com), вам нужно выполнить дополнительную настройку, чтобы гарантировать правильное сопоставление ваших пользователей.

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

Регистрация приложения в Microsoft Entra ID

Чтобы включить Entra ID OAuth, зарегистрируйте своё приложение в Entra ID.

  1. Войдите в портал Azure, затем нажмите Microsoft Entra ID в боковом меню.

  2. Если у вас есть доступ к более чем одному тенанту, выберите свою учётную запись в правом верхнем углу. Установите свою сессию для того тенанта Entra ID, который хотите использовать.

  3. В разделе Manage бокового меню нажмите App Registrations > New Registration. Введите описательное имя.

  4. В разделе Redirect URI выберите тип приложения Web.

  5. Добавьте URL-адреса перенаправления https://<grafana domain>/login/azuread и https://<grafana domain>, затем нажмите Register. Откроется страница Overview приложения.

  6. Запомните Application ID. Это OAuth client ID.

  7. Нажмите Endpoints в верхнем меню.

    • Запомните URL OAuth 2.0 authorization endpoint (v2). Это authorization URL.
    • Запомните OAuth 2.0 token endpoint (v2). Это token URL.
  8. Нажмите Certificates & secrets в боковом меню, затем добавьте новую запись в разделе поддерживаемого варианта аутентификации клиента, который хотите использовать. Ниже перечислены поддерживаемые варианты аутентификации клиента с соответствующими шагами настройки.

    • Client secrets

      1. Добавьте новую запись в разделе Client secrets со следующей конфигурацией.

        • Description: Grafana OAuth 2.0
        • Expires: выберите период истечения
      2. Нажмите Add, затем скопируйте Value ключа. Это client secret OAuth 2.0.

      Note

      Убедитесь, что вы скопировали строку из поля Value, а не из поля Secret ID.

      1. Чтобы это работало, вы должны установить client_authentication в разделе [auth.azuread] в значение client_secret_post в конфигурации сервера Grafana.
    • Federated credentials

      • Managed Identity

        1. См. Настройка приложения для доверия управляемой идентичности (предварительная версия) для полного руководства по настройке управляемой идентичности в качестве федеративных учётных данных. Добавьте новую запись в разделе Federated credentials со следующей конфигурацией.

          • Federated credential scenario: выберите Other issuer.
          • Issuer: URL издателя OAuth 2.0 / OIDC центра Microsoft Entra ID. Например: https://login.microsoftonline.com/{tenantID}/v2.0.
          • Subject identifier: GUID Object (Principal) ID управляемой идентичности.
          • Name: уникальное описательное имя для учётных данных.
          • Description: Grafana OAuth.
          • Audience: значение audience, которое должно появиться во внешнем токене. Для публичного облака это будет api://AzureADTokenExchange. Полный список доступных audience см. в упомянутой документации.
        2. Нажмите Add, затем скопируйте значения Managed Identity Client ID и Audience федеративных учётных данных. Это ваши федеративные учётные данные OAuth 2.0.

        3. Чтобы это работало, вы должны установить client_authentication в разделе [auth.azuread] в значение managed_identity в конфигурации сервера Grafana.

        Note

        Управляемые идентичности в качестве федеративных учётных данных применимы только к рабочим нагрузкам, размещённым в Azure.

        Вы можете добавлять в качестве федеративных учётных данных на приложения Entra ID только управляемые идентичности, назначенные пользователем.

      • Workload Identity (K8s/AKS)

        1. См. Федеративные учётные данные идентичности для приложения Entra ID для полного руководства по настройке федеративных учётных данных для рабочих нагрузок идентичности. Добавьте новую запись в разделе Federated credentials со следующей конфигурацией.

          • Federated credential scenario: выберите Kubernetes accessing Azure resources.
          • Cluster issuer URL: URL издателя OIDC, с которым интегрирован ваш кластер. Например: https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}.
          • Namespace: пространство имён вашего развёртывания Grafana. Например: grafana.
          • Service account name: имя сервисной учётной записи вашего развёртывания Grafana. Например: grafana.
          • Subject identifier: ожидаемая идентичность (subject claim) из токена OIDC, которую Azure использует для проверки и авторизации выдачи токена запрашивающей рабочей нагрузке. Например: system:serviceaccount:grafana:grafana.
          • Name: уникальное описательное имя для учётных данных.
          • Description: Grafana OAuth.
          • Audience: значение audience, которое должно появиться во внешнем токене. Для публичного облака это будет api://AzureADTokenExchange. Полный список доступных audience см. в упомянутой документации.
        2. Чтобы это работало, вы должны установить client_authentication (переменная среды GF_AUTH_AZUREAD_CLIENT_AUTHENTICATION) в разделе [auth.azuread] в значение workload_identity в конфигурации сервера Grafana.

        3. Чтобы это работало, вы можете дополнительно установить workload_identity_token_file (переменная среды GF_AUTH_AZUREAD_WORKLOAD_IDENTITY_TOKEN_FILE) в разделе [auth.azuread] в /var/run/secrets/azure/tokens/azure-identity-token в конфигурации сервера Grafana. (Необязательно, по умолчанию /var/run/secrets/azure/tokens/azure-identity-token)

        4. Чтобы это работало, вы должны установить client_id (переменная среды GF_AUTH_AZUREAD_CLIENT_ID) в разделе [auth.azuread] в конфигурации сервера Grafana. Он должен совпадать с Application (client) ID регистрации приложения Entra ID/Entra ID.

        5. Чтобы это работало, вы должны установить token_url (переменная среды GF_AUTH_AZUREAD_TOKEN_URL) в разделе [auth.azuread] в https://login.microsoftonline.com/{tenantID}/oauth2/v2.0/token в конфигурации сервера Grafana.

        6. Чтобы это работало, вы должны установить auth_url (переменная среды GF_AUTH_AZUREAD_AUTH_URL) в разделе [auth.azuread] в https://login.microsoftonline.com/{tenantID}/oauth2/v2.0/authorize в конфигурации сервера Grafana.

        7. Чтобы это работало, вы должны установить federated_credential_audience (переменная среды GF_AUTH_AZUREAD_FEDERATED_CREDENTIAL_AUDIENCE) в разделе [auth.azuread] в api://AzureADTokenExchange в конфигурации сервера Grafana.

      Note

      Управляемые идентичности в качестве федеративных учётных данных применимы только к рабочим нагрузкам, размещённым в Azure.

      Вы можете добавлять в качестве федеративных учётных данных на приложения Entra ID только управляемые идентичности, назначенные пользователем.

  9. Определите необходимые роли приложения для Grafana с помощью портала Azure или с помощью файла манифеста.

  10. Перейдите в Microsoft Entra ID, а затем в Enterprise Applications в разделе Manage.

  11. Найдите своё приложение и нажмите на него.

  12. Нажмите Users and Groups.

  13. Нажмите Add user/group, чтобы добавить пользователя или группу в роли Grafana.

Note

При назначении группы на роль Grafana убедитесь, что пользователи являются прямыми участниками группы. Пользователи во вложенных группах не будут иметь доступа к Grafana из-за ограничений на стороне Entra ID. Дополнительную информацию см. в разделе Ограничения и лимиты службы Microsoft Entra.

Настройка ролей приложения для Grafana на портале Microsoft Entra ID

В этом разделе описана настройка базовых ролей приложения для Grafana на портале Entra ID. Дополнительную информацию см. в разделе Добавление ролей приложения в приложение и их получение в токене.

  1. Перейдите в App Registrations, найдите своё приложение и нажмите на него.

  2. Нажмите App roles, а затем Create app role.

  3. Определите роль, соответствующую каждой роли Grafana: Viewer, Editor и Admin.

    1. Выберите Display name для роли. Например, “Grafana Editor”.

    2. Установите Allowed member types в значение Users/Groups.

    3. Убедитесь, что поле Value совпадает с именем роли Grafana. Например, “Editor”.

    4. Выберите Description для роли. Например, “Grafana Editor Users”.

    5. Нажмите Apply.

Настройка ролей приложения для Grafana в файле манифеста

Если вы предпочитаете настроить роли приложения для Grafana в файле манифеста, выполните следующие шаги:

  1. Перейдите в App Registrations, найдите своё приложение и нажмите на него.

  2. Нажмите Manifest.

  3. Добавьте универсально уникальный идентификатор (Universally Unique Identifier) для каждой роли.

Note

Каждой роли требуется универсально уникальный идентификатор, который можно сгенерировать в Linux с помощью uuidgen, а в Windows через Microsoft PowerShell с помощью New-Guid.

  1. Замените каждый “SOME_UNIQUE_ID” на сгенерированный ID в файле манифеста:

    JSON
    	"appRoles": [
    			{
    				"allowedMemberTypes": [
    					"User"
    				],
    				"description": "Grafana org admin Users",
    				"displayName": "Grafana Org Admin",
    				"id": "SOME_UNIQUE_ID",
    				"isEnabled": true,
    				"lang": null,
    				"origin": "Application",
    				"value": "Admin"
    			},
    			{
    				"allowedMemberTypes": [
    					"User"
    				],
    				"description": "Grafana read only Users",
    				"displayName": "Grafana Viewer",
    				"id": "SOME_UNIQUE_ID",
    				"isEnabled": true,
    				"lang": null,
    				"origin": "Application",
    				"value": "Viewer"
    			},
    			{
    				"allowedMemberTypes": [
    					"User"
    				],
    				"description": "Grafana Editor Users",
    				"displayName": "Grafana Editor",
    				"id": "SOME_UNIQUE_ID",
    				"isEnabled": true,
    				"lang": null,
    				"origin": "Application",
    				"value": "Editor"
    			}
    		],
  2. Нажмите Save.

Назначение привилегий администратора сервера

Используйте роль приложения GrafanaAdmin, чтобы предоставить пользователям привилегии администратора сервера. Это полезно, если вы хотите предоставить привилегии администратора сервера подмножеству пользователей.

Grafana также назначает пользователю роль Admin организации по умолчанию.

Чтобы это работало, установите параметр allow_assign_grafana_admin в разделе [auth.azuread] в true. Если параметр установлен в false, пользователю назначается роль Admin организации по умолчанию, но не привилегии администратора сервера.

JSON
{
  "allowedMemberTypes": ["User"],
  "description": "Grafana server admin Users",
  "displayName": "Grafana Server Admin",
  "id": "SOME_UNIQUE_ID",
  "isEnabled": true,
  "lang": null,
  "origin": "Application",
  "value": "GrafanaAdmin"
}

Настройка клиента аутентификации Entra ID через интерфейс Grafana

После того как вы зарегистрировали своё приложение в Entra Id, как администратор Grafana вы можете настроить клиент Entra ID OAuth изнутри Grafana через интерфейс Grafana. Для этого перейдите на страницу Administration > Authentication > Entra ID и заполните форму. Если у вас есть текущая конфигурация в файле конфигурации Grafana, форма будет предварительно заполнена этими значениями. В противном случае форма будет содержать значения по умолчанию.

После того как вы заполнили форму, нажмите Save, чтобы сохранить конфигурацию. Если сохранение прошло успешно, Grafana применит новые конфигурации.

Если вам нужно сбросить изменения, сделанные в интерфейсе, обратно к значениям по умолчанию, нажмите Reset. После сброса изменений Grafana применит конфигурацию из файла конфигурации Grafana (если есть какая-либо конфигурация) или значения по умолчанию.

Note

Если вы запускаете Grafana в режиме высокой доступности, изменения конфигурации могут примениться не ко всем экземплярам Grafana сразу. Возможно, вам придётся подождать несколько минут, пока конфигурация распространится на все экземпляры Grafana.

Настройка клиента аутентификации Entra ID с помощью провайдера Terraform

terraform
resource "grafana_sso_settings" "azuread_sso_settings" {
  provider_name = "azuread"
  oauth2_settings {
    name                          = "Entra ID"
    auth_url                      = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize"
    token_url                     = "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token"
    client_authentication         = "CLIENT_AUTHENTICATION_OPTION"
    client_id                     = "APPLICATION_ID"
    client_secret                 = "CLIENT_SECRET"
    managed_identity_client_id    = "MANAGED_IDENTITY_CLIENT_ID"
    federated_credential_audience = "FEDERATED_CREDENTIAL_AUDIENCE"
    allow_sign_up                 = true
    auto_login                    = false
    scopes                        = "openid email profile"
    allowed_organizations         = "TENANT_ID"
    role_attribute_strict         = false
    allow_assign_grafana_admin    = false
    skip_org_role_sync            = false
    use_pkce                      = true
    custom = {
      domain_hint = "contoso.com"
      force_use_graph_api = "true"
    }
  }
}

Полное справочное руководство по использованию ресурса grafana_sso_settings см. в Terraform Registry.

Настройка клиента аутентификации Entra ID с помощью файла конфигурации Grafana

Убедитесь, что у вас есть доступ к файлу конфигурации Grafana.

Включение Entra ID OAuth в Grafana

Добавьте следующее в файл конфигурации Grafana:

[auth.azuread]
name = Entra ID
enabled = true
allow_sign_up = true
auto_login = false
client_authentication = CLIENT_AUTHENTICATION_OPTION
client_id = APPLICATION_ID
client_secret = CLIENT_SECRET
managed_identity_client_id = MANAGED_IDENTITY_CLIENT_ID
federated_credential_audience = FEDERATED_CREDENTIAL_AUDIENCE
scopes = openid email profile
auth_url = https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token
allowed_domains =
allowed_groups =
allowed_organizations = TENANT_ID
role_attribute_strict = false
allow_assign_grafana_admin = false
skip_org_role_sync = false
use_pkce = true

Вы также можете использовать следующие переменные среды для настройки client_authentication, client_id, client_secret, managed_identity_client_id и federated_credential_audience:

GF_AUTH_AZUREAD_CLIENT_AUTHENTICATION
GF_AUTH_AZUREAD_CLIENT_ID
GF_AUTH_AZUREAD_CLIENT_SECRET
GF_AUTH_AZUREAD_MANAGED_IDENTITY_CLIENT_ID
GF_AUTH_AZUREAD_FEDERATED_CREDENTIAL_AUDIENCE

Note

Убедитесь, что root_url Grafana задан в URL-адресах перенаправления вашего приложения Azure.

Настройка refresh-токена

Когда пользователь входит в систему с помощью провайдера OAuth, Grafana проверяет, что access-токен не истёк. Когда access-токен истекает, Grafana использует предоставленный refresh-токен (если он есть) для получения нового access-токена.

Grafana использует refresh-токен для получения нового access-токена без необходимости для пользователя входить в систему снова. Если refresh-токен не существует, Grafana выполняет выход пользователя из системы после истечения access-токена.

Получение refresh-токена и проверка истечения access-токена включены по умолчанию для провайдера Entra ID начиная с Grafana v10.1.0. Если вы хотите отключить проверку истечения access-токена, установите значение конфигурации use_refresh_token в false.

Note

Переключатель функции accessTokenExpirationCheck был удалён в Grafana v10.3.0, и вместо него для настройки получения refresh-токена и проверки истечения access-токена будет использоваться значение конфигурации use_refresh_token.

Настройка разрешённых тенантов

Чтобы ограничить доступ аутентифицированных пользователей, которые являются членами одного или нескольких тенантов, установите allowed_organizations в список ID тенантов, разделённых запятыми или пробелами. ID тенантов можно найти на портале Azure в разделе Microsoft Entra ID -> Overview.

Обязательно включите ID тенантов корневого каталога всех федеративных пользователей, если ваш Entra ID содержит внешние идентичности.

Например, если вы хотите предоставить доступ только членам тенанта example с ID 8bab1c86-8fba-33e5-2089-1d1c80ec267d, установите следующее:

allowed_organizations = 8bab1c86-8fba-33e5-2089-1d1c80ec267d

Настройка разрешённых групп

Группы Microsoft Entra ID можно использовать для ограничения доступа пользователей к Grafana. Дополнительную информацию об управлении группами в Entra ID см. в разделе Управление группами и членством в группах Microsoft Entra.

Чтобы ограничить доступ аутентифицированных пользователей, которые являются членами одной или нескольких групп Entra ID, установите allowed_groups в список object ID групп, разделённых запятыми или пробелами.

  1. Чтобы найти object ID для конкретной группы на портале Azure, перейдите в Microsoft Entra ID > Manage > Groups.

    Вы можете найти Object Id группы, нажав на группу и затем нажав Properties. Object ID указан в разделе Object ID. Если вы хотите предоставить доступ только членам группы example с Object Id 8bab1c86-8fba-33e5-2089-1d1c80ec267d, установите следующее:

      allowed_groups = 8bab1c86-8fba-33e5-2089-1d1c80ec267d
  2. Вы должны включить добавление атрибута группы в токены в вашей регистрации приложения Entra ID либо из портала Azure, либо из файла манифеста.

Настройка утверждений о членстве в группах на портале Azure

Чтобы гарантировать, что утверждение groups включено в токен, добавьте утверждение groups в конфигурацию токена либо через интерфейс портала Azure, либо путём редактирования файла манифеста.

Чтобы настроить утверждения о членстве в группах из интерфейса портала Azure, выполните следующие шаги:

  1. Перейдите на страницу App Registrations и выберите своё приложение.
  2. В разделе Manage бокового меню выберите Token configuration.
  3. Нажмите Add groups claim и выберите подходящий вариант для вашего случая использования (например, Security groups и Groups assigned to the application).

Дополнительную информацию см. в разделе Настройка необязательных утверждений групп.

Note

Если пользователь является членом более 200 групп, Entra ID не выдаёт утверждение groups в токене, а вместо этого выдаёт утверждение group overage. Чтобы настроить утверждение group overage, см. Пользователи с более чем 200 назначениями групп.

Настройка утверждения о членстве в группах в файле манифеста

  1. Перейдите в App Registrations, найдите своё приложение и нажмите на него.

  2. Нажмите Manifest.

  3. Добавьте следующее в корень файла манифеста:

    "groupMembershipClaims": "ApplicationGroup, SecurityGroup"

Настройка разрешённых доменов

Параметр allowed_domains ограничивает доступ пользователями, которые принадлежат к определённым доменам. Разделяйте домены пробелом или запятой. Например,

allowed_domains = mycompany.com mycompany.org

PKCE

RFC 7636 от IETF вводит “proof key for code exchange” (PKCE), который обеспечивает дополнительную защиту от некоторых форм атак перехвата кода авторизации. PKCE будет требоваться в OAuth 2.1.

Вы можете отключить PKCE в Grafana, установив use_pkce в false в разделе[auth.azuread].

Настройка автоматического входа

Чтобы обойти экран входа и войти автоматически, включите функцию “auto_login”. Этот параметр игнорируется, если несколько провайдеров аутентификации настроены на использование автоматического входа.

auto_login = true

Синхронизация команд

Note

Доступно в Grafana Enterprise и для клиентов на отдельных планах Grafana Cloud. Информацию о ценах см. на странице цены или свяжитесь с нашей командой продаж.

С синхронизацией команд вы можете сопоставить ваши группы Entra ID с командами в Grafana, чтобы ваши пользователи автоматически добавлялись в правильные команды.

Вы можете ссылаться на группы Entra ID по object ID группы, например 8bab1c86-8fba-33e5-2089-1d1c80ec267d.

Чтобы узнать больше, см. документацию Синхронизация команд.

Пропуск синхронизации ролей организации

Если вы не хотите, чтобы аутентификация Entra ID синхронизировала роли пользователей и членство в организациях, и хотите предотвратить синхронизацию ролей организации из Entra ID, установите skip_org_role_sync в true. Используйте это, если хотите управлять ролями организации для своих пользователей изнутри Grafana или если ваши роли организации синхронизируются из другого провайдера. См. Настройка Grafana для более подробной информации.

ini
[auth.azuread]
# ..
# prevents the sync of org roles from Entra ID
skip_org_role_sync = true

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

Следующая таблица описывает различные параметры конфигурации Entra ID. Вы можете применять эти параметры как переменные среды, как и любую другую конфигурацию в Grafana. Дополнительную информацию см. в разделе Переопределение конфигурации с помощью переменных среды.

Параметр Обязательно Поддерживается в Cloud Описание По умолчанию
enabled Нет Да Включает аутентификацию Entra ID. false
name Нет Да Имя, которое ссылается на аутентификацию Entra ID из пользовательского интерфейса Grafana. OAuth
icon Нет Да Значок, используемый для аутентификации Entra ID в пользовательском интерфейсе Grafana. signin
client_authentication Да Да Определяет метод аутентификации клиента, используемый для аутентификации на конечной точке токена. Поддерживаемые значения: none, client_secret_post, managed_identity или workload_identity.
workload_identity_token_file Нет Да Путь к файлу токена, используемому для аутентификации у провайдера OAuth2. Требуется только когда client_authentication установлен в workload_identity. Файл токена содержит токен сервисной учётной записи, проецируемый Kubernetes. /var/run/secrets/azure/tokens/azure-identity-token
federated_credential_audience Нет Да Audience федеративных учётных данных идентичности вашего приложения OAuth2. Требуется, когда client_authentication установлен в managed_identity или workload_identity. Для публичного облака это обычно api://AzureADTokenExchange. api://AzureADTokenExchange
client_id Да Да Client ID приложения (Application (client) ID на панели App registration).
client_secret Да Да Client secret приложения.
auth_url Да Да Конечная точка авторизации провайдера Entra ID OAuth2.
token_url Да Да Конечная точка, используемая для получения access-токена OAuth2.
token_exchange_timeout Нет Да Тайм-аут в секундах для запроса обмена токена OAuth. Если установлено 0 или не задано, по умолчанию 15 секунд. 15
auth_style Нет Да Имя OAuth2 AuthStyle, которое будет использоваться при запросе ID-токена у провайдера OAuth2. Оно определяет, как client_id и client_secret отправляются провайдеру Oauth2. Доступные значения: AutoDetect, InParams и InHeader. AutoDetect
scopes Нет Да Список областей OAuth2, разделённых запятыми или пробелами. openid email profile
allow_sign_up Нет Да Управляет созданием пользователей Grafana через вход Entra ID. Только существующие пользователи Grafana могут войти с Entra ID, если установлено false. true
auto_login Нет Да Установите true, чтобы позволить пользователям обойти экран входа и войти автоматически. Этот параметр игнорируется, если вы настроили несколько провайдеров аутентификации на использование автоматического входа. false
login_prompt Нет Да Указывает тип взаимодействия с пользователем при входе в Entra ID. Доступные значения: login, consent и select_account.
role_attribute_strict Нет Да Установите true, чтобы запретить вход пользователя, если роль организации Grafana не может быть извлечена с помощью role_attribute_path или org_mapping. Дополнительную информацию о сопоставлении ролей пользователей см. в разделе Сопоставление ролей. false
org_attribute_path Нет Нет Выражение JMESPath, используемое для поиска роли организации Grafana. Grafana сначала вычислит выражение, используя ID-токен OAuth2. Если значение не возвращено, выражение будет вычислено с использованием информации о пользователе, полученной от конечной точки UserInfo. Результат вычисления будет сопоставлен с ролями организации на основе org_mapping. Дополнительную информацию о сопоставлении организации с ролью см. в разделе Пример сопоставления ролей организации.
org_mapping Нет Нет Список сопоставлений <ExternalOrgName>:<OrgIdOrName>:<Role>, разделённых запятыми или пробелами. Значение может быть *, что означает “Все пользователи”. Роль необязательна и может иметь следующие значения: None, Viewer, Editor или Admin. Дополнительную информацию о сопоставлении внешней организации с ролью см. в разделе Пример сопоставления ролей организации.
allow_assign_grafana_admin Нет Нет Установите true, чтобы автоматически синхронизировать роль администратора сервера Grafana. Когда включено, если роль приложения пользователя Entra ID — GrafanaAdmin, Grafana предоставляет пользователю привилегии администратора сервера и роль администратора организации. Если отключено, пользователь получит только роль администратора организации. Подробности о сопоставлении ролей пользователей см. в разделе Сопоставление ролей. false
skip_org_role_sync Нет Да Установите true, чтобы прекратить автоматическую синхронизацию ролей пользователей. Это позволит вам вручную задавать роли организации для своих пользователей изнутри Grafana. false
allowed_groups Нет Да Список групп, разделённых запятыми или пробелами. Пользователь должен быть членом как минимум одной группы, чтобы войти. Если вы настроите allowed_groups, вы также должны настроить Entra ID, чтобы включить утверждение groups, следуя разделу Настройка утверждений о членстве в группах на портале Azure.
allowed_organizations Нет Да Список идентификаторов тенантов Azure, разделённых запятыми или пробелами. Пользователь должен быть членом как минимум одного тенанта, чтобы войти.
allowed_domains Нет Да Список доменов, разделённых запятыми или пробелами. Пользователь должен принадлежать как минимум к одному домену, чтобы войти.
domain_hint Нет Да Область (realm) пользователя в федеративном каталоге. Это пропускает процесс обнаружения на основе электронной почты, который пользователь проходит на странице входа Entra ID, обеспечивая немного более оптимизированный пользовательский опыт. Больше информации здесь.
tls_skip_verify_insecure Нет Нет Если установлено true, клиент принимает любой сертификат, представленный сервером, и любое имя хоста в этом сертификате. Используйте это только для тестирования, поскольку этот режим делает SSL/TLS уязвимым для атак типа “человек посередине”. false
tls_client_cert Нет Нет Путь к сертификату.
tls_client_key Нет Нет Путь к ключу.
tls_client_ca Нет Нет Путь к списку доверенных центров сертификации.
use_pkce Нет Да Установите true, чтобы использовать Proof Key for Code Exchange (PKCE). Grafana использует метод запроса S256 на основе SHA256 и верификатор кода размером 128 байт (в кодировке base64url). true
use_refresh_token Нет Да Включает использование refresh-токенов и проверку истечения access-токена. Когда включено, Grafana автоматически добавляет область offline_access в список областей. true
force_use_graph_api Нет Да Установите true, чтобы всегда получать группы из Microsoft Graph API вместо id_token. Если пользователь принадлежит более чем к 200 группам, Microsoft Graph API будет использоваться для получения групп независимо от этого параметра. false
signout_redirect_url Нет Да URL для перенаправления после выхода пользователя из системы.

Распространённые проблемы

Вот некоторые распространённые проблемы и особенности, с которыми вы можете столкнуться при настройке аутентификации Entra ID в Grafana.

Пользователи с более чем 200 назначениями групп

Чтобы гарантировать, что размер токена не превышает лимиты размера заголовка HTTP, Entra ID ограничивает количество object ID, включаемых в утверждение groups. Если пользователь является членом большего числа групп, чем лимит покрытия (200), то Entra ID не выдаёт утверждение groups в токене, а вместо этого выдаёт утверждение group overage.

Больше информации в Groups overage claim

Если Grafana получает токен с утверждением group overage вместо утверждения groups, Grafana пытается получить членство пользователя в группах, вызывая включённую конечную точку.

Регистрация приложения Entra ID должна включать следующие разрешения API, чтобы вызовы утверждения group overage были успешными:

Имя разрешения Тип Требуется согласие администратора Статус
GroupMember.Read.All Delegated Да Granted
User.Read Delegated Нет Granted

Согласие администратора требуется для разрешения GroupMember.Read.All. Чтобы предоставить согласие администратора, перейдите в API permissions в App registration и выберите Grant admin consent for [your-organization].

Note

Вы можете заставить Grafana всегда получать информацию о группах из Microsoft Graph API, включив параметр force_use_graph_api в конфигурации.

Настройка необходимых разрешений Graph API

  1. Перейдите в Microsoft Entra ID > Manage > App registrations и выберите своё приложение.
  2. Выберите API permissions, а затем нажмите Add a permission.
  3. Выберите Microsoft Graph из списка API.
  4. Выберите Delegated permissions.
  5. В разделе GroupMember выберите GroupMember.Read.All.
  6. Нажмите Add permissions.
  7. Выберите Microsoft Graph из списка API.
  8. Выберите Delegated permissions.
  9. В области Select permissions в разделе User выберите User.Read.
  10. Нажмите кнопку Add permissions в нижней части страницы.

Note

Для этого разрешения может потребоваться согласие администратора.

Принудительное получение групп из Microsoft Graph API

Чтобы принудительно получать группы из Microsoft Graph API вместо id_token, можно использовать параметр конфигурации force_use_graph_api.

ini
[auth.azuread]
force_use_graph_api = true

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

По умолчанию аутентификация Entra ID сопоставляет пользователей с ролями организации на основе наиболее привилегированной роли приложения, назначенной пользователю в Entra ID.

Если роль приложения не найдена, пользователю назначается роль, указанная параметром auto_assign_org_role. Вы можете отключить это назначение роли по умолчанию, установив role_attribute_strict = true. Этот параметр запрещает доступ пользователю, если не возвращена роль или возвращена недопустимая роль, а выражение org_mapping вычисляется в пустое сопоставление.

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

При каждом входе роль организации пользователя будет сброшена в соответствии с ролью приложения Entra ID, а его членство в организации будет сброшено на организацию по умолчанию.

Пример сопоставления ролей организации

Интеграция Entra ID использует группы внешних пользователей в конфигурации org_mapping для сопоставления организаций и ролей на основе их членства в группах Entra ID.

В этом примере пользователю предоставлена роль Viewer в организации org_foo и роль Editor в организациях org_bar и org_baz.

Внешний пользователь является частью следующих групп Entra ID: 032cb8e0-240f-4347-9120-6f33013e817a и bce1c492-0679-4989-941b-8de5e6789cb9.

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

ini
org_mapping = ["032cb8e0-240f-4347-9120-6f33013e817a:org_foo:Viewer", "bce1c492-0679-4989-941b-8de5e6789cb9:org_bar:Editor", "*:org_baz:Editor"]