Последнее обновление: августа 11, 2026

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

В этом документе описано, как настроить аутентификацию между Grafana и Google Cloud Platform (GCP). Аутентификацию необходимо настроить до того, как вы сможете использовать источник данных Google Cloud Monitoring для запроса метрик и SLO.

Все запросы к Google API выполняются на стороне сервера бэкендом Grafana.

Прежде чем начать

Прежде чем настраивать аутентификацию, убедитесь, что у вас есть следующее:

  • Проект Google Cloud Platform с включённым Monitoring API.
  • Права на создание сервисных аккаунтов или настройку параметров экземпляра GCE в вашем проекте GCP.
  • Доступ к странице настройки источника данных в Grafana.

Поддерживаемые способы аутентификации

Источник данных Google Cloud Monitoring поддерживает следующие способы аутентификации:

Способ Случай использования
Google JWT File Используйте, когда Grafana работает вне GCP или когда нужен явный контроль над учётными данными.
GCE Default Service Account Используйте, когда Grafana работает на виртуальной машине Google Compute Engine с настроенным сервисным аккаунтом.
Forward OAuth Identity Используйте, когда вы входите в Grafana через Google и хотите, чтобы каждый запрос выполнялся от имени вошедшего пользователя.
Workload Identity Federation Используйте в Grafana Cloud, чтобы пользователи аутентифицировались через внешний провайдер идентификации OIDC вместо ключа сервисного аккаунта.
Service Account Impersonation Используйте, когда Grafana должна действовать от имени другого сервисного аккаунта, а не того, которым она аутентифицируется.

Использование файла ключа сервисного аккаунта Google

Используйте этот способ, когда Grafana работает вне Google Cloud Platform или когда нужен явный контроль над тем, какие учётные данные используются.

Каждый источник данных Grafana по умолчанию подключается к одному проекту GCP. Чтобы визуализировать данные из нескольких проектов GCP, создайте по одному источнику данных на каждый проект или используйте имперсонацию сервисного аккаунта.

Создание сервисного аккаунта GCP и файла ключа

Чтобы создать сервисный аккаунт и скачать его файл ключа:

  1. Перейдите на страницу APIs and Services Credentials page в консоли GCP.

  2. Нажмите раскрывающийся список Create credentials и выберите Service account.

  3. В поле Service account name введите имя для аккаунта.

  4. Нажмите Create and continue.

  5. В разделе Grant this service account access to project выберите роль Monitoring Viewer в раскрывающемся списке Role.

  6. Нажмите Continue, затем нажмите Done.

  7. В списке сервисных аккаунтов нажмите на созданный сервисный аккаунт.

  8. Перейдите на вкладку Keys и нажмите Add key > Create new key.

  9. Выберите JSON и нажмите Create.

    Файл ключа JSON скачается на ваш компьютер.

  10. Надёжно храните файл ключа. Он предоставляет доступ к вашим данным в Google Cloud.

Загрузка файла ключа в Grafana

  1. В Grafana перейдите на страницу настройки источника данных Google Cloud Monitoring.
  2. В разделе Authentication type выберите Google JWT File.
  3. Загрузите файл ключа JSON одним из доступных способов (перетаскиванием, через выбор файла или вставкой).
  4. Нажмите Save & test, чтобы проверить подключение.

Предоставление доступа к нескольким проектам

Вы можете настроить один сервисный аккаунт так, чтобы он имел доступ к нескольким проектам GCP:

  1. Создайте сервисный аккаунт и файл ключа, выполнив шаги выше.
  2. Запишите адрес электронной почты сервисного аккаунта (например, grafana-monitoring@my-project.iam.gserviceaccount.com).
  3. В каждом дополнительном проекте, к которому нужен доступ:
    1. Перейдите в IAM & Admin > IAM.
    2. Нажмите Grant access.
    3. Введите адрес электронной почты сервисного аккаунта.
    4. Назначьте роль Monitoring Viewer.
    5. Нажмите Save.
  4. Используйте исходный файл ключа в Grafana. Теперь сервисный аккаунт имеет доступ ко всем настроенным проектам.

Использование GCE Default Service Account

Когда Grafana работает на виртуальной машине Google Compute Engine (GCE), она может автоматически получать учётные данные с сервера метаданных GCE. Этот способ не требует создавать файлы ключей и управлять ими.

Предварительные требования для аутентификации GCE

Перед использованием этого способа убедитесь в следующем:

  • Grafana работает на виртуальной машине GCE.
  • Виртуальной машине назначен сервисный аккаунт с ролью Monitoring Viewer.
  • У виртуальной машины включена область действия Cloud Monitoring API.

Настройка экземпляра GCE

  1. В консоли GCP перейдите в Compute Engine > VM instances.
  2. Остановите виртуальную машину, если она работает (изменять области действия на работающей виртуальной машине нельзя).
  3. Нажмите на имя виртуальной машины, затем нажмите Edit.
  4. В разделе Service account выберите сервисный аккаунт с ролью Monitoring Viewer.
  5. В разделе Access scopes выберите Set access for each API и включите Cloud Monitoring API (только чтение).
  6. Нажмите Save и перезапустите виртуальную машину.

Настройка источника данных

  1. В Grafana перейдите на страницу настройки источника данных Google Cloud Monitoring.
  2. В разделе Authentication type выберите GCE Default Service Account.
  3. Нажмите Save & test, чтобы проверить подключение.

Дополнительные сведения о сервисных аккаунтах GCE см. в документации Google по сервисным аккаунтам для экземпляров.

Использование Forward OAuth Identity

Используйте этот способ, когда ваш экземпляр Grafana аутентифицирует пользователей через Google OAuth и вы хотите, чтобы каждый запрос выполнялся от имени вошедшего пользователя, а не общего сервисного аккаунта. Это обеспечивает контроль доступа на уровне пользователя: пользователь с ролью Viewer, у которого нет прав на Cloud Monitoring в проекте, не увидит данных из этого проекта, даже если источник данных дашборда является общим.

Grafana передаёт существующий OAuth-токен доступа пользователя Google в качестве bearer-токена в исходящих запросах к Cloud Monitoring API. Ключ сервисного аккаунта на сервере не хранится.

Предварительные требования для Forward OAuth Identity

Перед использованием этого способа убедитесь в следующем:

  • Ваш экземпляр Grafana настроен на вход пользователей с помощью аутентификации Google.
  • OAuth-клиент Google запрашивает область действия https://www.googleapis.com/auth/monitoring.read в дополнение к стандартным областям действия openid email profile. Без этой области действия токен пользователя отклоняется Cloud Monitoring API с ответом 403.
  • У каждого пользователя, которому нужно запрашивать источник данных, есть роль Monitoring Viewer (roles/monitoring.viewer) в целевом проекте GCP.

Настройка области действия Google OAuth

Добавьте область действия для чтения Cloud Monitoring в вашу конфигурацию аутентификации Google в grafana.ini или custom.ini:

ini
[auth.google]
scopes = openid email profile https://www.googleapis.com/auth/monitoring.read

Если вы настраиваете аутентификацию Google через интерфейс настроек SSO Grafana, добавьте то же значение области действия в поле Scopes.

После изменения областей действия существующие сессии пользователей по-прежнему работают с токенами, выданными для старого набора областей действия. Каждый затронутый пользователь должен выйти из системы, отозвать существующее разрешение на странице https://myaccount.google.com/permissions и войти снова, чтобы согласиться с новой областью действия. В противном случае запросы продолжат завершаться ошибкой 403.

Настройка источника данных

  1. В Grafana перейдите на страницу настройки источника данных Google Cloud Monitoring.
  2. В разделе Authentication type выберите Forward OAuth Identity.
  3. В поле Default project введите идентификатор проекта GCP для запросов. Это поле обязательно, поскольку OAuth-токен пользователя не содержит контекста проекта.
  4. Нажмите Save & test, чтобы проверить подключение.

Note

Имперсонация сервисного аккаунта несовместима с Forward OAuth Identity. Источник данных аутентифицируется как вошедший пользователь, поэтому имперсонировать нечего.

Использование Workload Identity Federation

Используйте Google Cloud Workload Identity Federation (WIF), чтобы пользователи Grafana могли аутентифицироваться в Cloud Monitoring через внешний провайдер идентификации (например, Okta или другой провайдер OIDC) вместо ключа сервисного аккаунта.

Note

Этот способ аутентификации доступен только в Grafana Cloud. Grafana Cloud обменивает внешний OIDC-токен вошедшего пользователя на краткоживущий токен доступа Google Cloud до того, как запрос достигнет плагина.

Настройка Workload Identity Federation затрагивает три системы: Google Cloud, ваш стек Grafana Cloud и сам источник данных.

Настройка Google Cloud

  1. Создайте Workload Identity Pool и Provider, который доверяет вашему провайдеру идентификации OIDC. При настройке провайдера задайте сопоставления атрибутов так, чтобы google.subject сопоставлялся с соответствующим утверждением (claim) вашего провайдера идентификации, например assertion.sub. Точное сопоставление зависит от формата утверждений вашего провайдера.
  2. Предоставьте права Cloud Monitoring, необходимые для выполнения запросов. Способ предоставления зависит от того, используете ли вы имперсонацию сервисного аккаунта:
    • Без имперсонации: предоставьте участнику пула WIF роль Monitoring Viewer (roles/monitoring.viewer) напрямую.
    • С имперсонацией: создайте сервисный аккаунт, предоставьте ему роль Monitoring Viewer, затем предоставьте участнику пула WIF роль Service Account Token Creator (roles/iam.serviceAccountTokenCreator) для этого сервисного аккаунта.

Настройка Grafana Cloud

  1. Настройте интеграцию SSO вашего стека Grafana Cloud с тем же провайдером OIDC, чтобы идентичность вошедшего пользователя была доступна Grafana Cloud для обмена на токен доступа Google Cloud до того, как запрос достигнет плагина. Подробности настройки см. в разделе Настройка аутентификации OAuth2.

Настройка источника данных

  1. В Grafana перейдите на страницу настройки источника данных Google Cloud Monitoring.

  2. В разделе Authentication type выберите Workload Identity Federation.

  3. В поле Workload Identity Pool Provider введите полный путь ресурса вашего провайдера:

    projects/<project-number>/locations/global/workloadIdentityPools/<pool-id>/providers/<provider-id>

    Note

    Используйте номер проекта (числовой идентификатор, например 123456789), а не идентификатор проекта (например, my-project). Номер проекта можно найти на главной странице консоли Google Cloud.

  4. Если вы настроили имперсонацию сервисного аккаунта, введите адрес электронной почты сервисного аккаунта в поле Service account email. Если вы предоставили права непосредственно пулу WIF, оставьте поле пустым.

  5. В поле Default project введите идентификатор проекта GCP, в котором выполняются ваши запросы к Cloud Monitoring.

  6. Нажмите Save & test, чтобы проверить подключение.

Note

Учётные данные Workload Identity Federation привязаны к активной сессии вошедшего пользователя, поэтому долгоживущих учётных данных для бэкенда Grafana нет. Любая функция, работающая без участия пользователя, не будет работать, включая оповещения, запланированные отчёты и публичные дашборды. Если вы полагаетесь на эти функции, используйте вместо этого ключ сервисного аккаунта (Google JWT File).

Настройка имперсонации сервисного аккаунта

Имперсонация сервисного аккаунта позволяет Grafana аутентифицироваться как один сервисный аккаунт, но действовать как другой сервисный аккаунт при выполнении запросов к API. Это полезно для:

  • Доступа к ресурсам в нескольких проектах с помощью одной конфигурации.
  • Соблюдения принципа наименьших привилегий за счёт разделения аутентификации и авторизации.
  • Аудита и отслеживания того, какой сервисный аккаунт обращался к конкретным ресурсам.

Предварительные требования для имперсонации

Сервисный аккаунт, используемый Grafana (“вызывающий”), должен иметь следующее:

  • Разрешение iam.serviceAccounts.getAccessToken для целевого сервисного аккаунта.
  • Это разрешение входит в роль Service Account Token Creator (roles/iam.serviceAccountTokenCreator).

Сервисный аккаунт, который имперсонируется (“целевой”), должен иметь:

  • Роль Monitoring Viewer в проектах, к которым нужен доступ.

Настройка имперсонации

  1. В консоли GCP предоставьте вызывающему сервисному аккаунту роль Service Account Token Creator для целевого сервисного аккаунта.
  2. Предоставьте целевому сервисному аккаунту роль Monitoring Viewer в соответствующих проектах.
  3. В Grafana перейдите на страницу настройки источника данных Google Cloud Monitoring.
  4. Настройте аутентификацию с помощью Google JWT File или GCE Default Service Account.
  5. Включите Service Account Impersonation.
  6. Введите адрес электронной почты целевого сервисного аккаунта.
  7. Нажмите Save & test, чтобы проверить подключение.

Дополнительные сведения см. в документации Google по имперсонации сервисных аккаунтов.