Сервисные учётные записи

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

Обратите внимание на следующее:

  • Сервисная учётная запись — это не то же самое, что пользователь Grafana.
  • Сервисные учётные записи заменяют ключи API в качестве основного способа аутентификации приложений, взаимодействующих с Grafana.
  • Используйте сервисные учётные записи для доступа к HTTP API Grafana (дашборды, пользователи, источники данных, оповещения).
  • Если вы пользователь Grafana Cloud и вам нужно отправлять или запрашивать телеметрические данные (метрики, логи, трассировки), вместо этого используйте Cloud Access Policies.
  • В Grafana Enterprise сервисные учётные записи можно объединять с управлением доступом на основе ролей, чтобы предоставлять очень конкретные разрешения приложениям, взаимодействующим с Grafana.

Когда использовать сервисные учётные записи

Используйте сервисные учётные записи и токены для выполнения операций в автоматических или запускаемых по событию задачах, таких как:

  • Аутентификация приложений, например Terraform, с помощью API Grafana.
  • Планирование доставки отчётов по определённым дашбордам на ежедневной, еженедельной или ежемесячной основе.
  • Определение оповещений в вашей системе для использования в Grafana.
  • Настройка внешнего провайдера аутентификации SAML.
  • Взаимодействие с Grafana без входа в систему как пользователь.

Преимущества сервисных учётных записей

Дополнительные преимущества сервисных учётных записей по сравнению с ключами API:

  • Сервисные учётные записи похожи на пользователей Grafana: их можно включать и отключать, предоставлять им определённые разрешения, и они остаются активными до тех пор, пока их не удалят или не отключат. Ключи API действительны только до даты истечения срока действия.
  • С сервисной учётной записью можно связать несколько токенов.
  • В отличие от ключей API, токены сервисных учётных записей не привязаны к конкретному пользователю, поэтому приложения можно аутентифицировать, даже если пользователь Grafana удалён.
  • Вы можете предоставлять сервисным учётным записям гранулярные разрешения, используя управление доступом на основе ролей. Дополнительные сведения о разрешениях см. в разделе О пользователях и разрешениях.

Ограничения сервисных учётных записей

Сервисные учётные записи работают только в той организации, для которой они созданы. Если одна и та же задача нужна для нескольких организаций, создайте сервисные учётные записи в каждой организации.

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

Токены сервисных учётных записей

Токен сервисной учётной записи — это сгенерированная случайная строка, которая выступает в качестве альтернативы паролю при аутентификации с помощью HTTP API Grafana. Используйте токены сервисных учётных записей так же, как ключи API, например для программного доступа к HTTP API Grafana. Токены доступа сервисных учётных записей наследуют разрешения от сервисной учётной записи.

При создании сервисной учётной записи вы можете связать с ней один или несколько токенов доступа. Создавайте несколько токенов для одной сервисной учётной записи, если:

  • Несколько приложений используют одни и те же разрешения, но вы хотите аудировать или управлять их действиями отдельно.
  • Вам нужно ротировать или заменить скомпрометированный токен.

Создание сервисной учётной записи в Grafana

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

Note

Чтобы создавать сервисные учётные записи через API, см. раздел Create a service account in the HTTP API.

Пользователи сервисных учётных записей

Чтобы создать сервисную учётную запись, пользователь должен иметь:

  • права администратора, или
  • роли fixed:roles:reader и fixed:serviceaccounts:creator

Пользователь, создавший сервисную учётную запись, может читать, обновлять и удалять созданную им сервисную учётную запись, а также разрешения, связанные с этой сервисной учётной записью.

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

Убедитесь, что у вас есть разрешение на создание и редактирование сервисных учётных записей. По умолчанию для создания и редактирования сервисных учётных записей требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.

Создание сервисной учётной записи

  1. Войдите в Grafana и нажмите Administration в меню слева.
  2. Нажмите Users and access > Service accounts > Add service account.
  3. Введите Display name. Отображаемое имя должно быть уникальным, так как оно определяет ID, связанный с сервисной учётной записью.
    • При именовании сервисных учётных записей используйте единообразное соглашение об именовании. Единообразное соглашение об именовании поможет вам в будущем масштабировать сервисные учётные записи и управлять ими.
    • Отображаемое имя можно изменить в любой момент.
  4. Нажмите Create.

Добавление токена в сервисную учётную запись в Grafana

Токен сервисной учётной записи — это сгенерированная случайная строка, которая выступает в качестве альтернативы паролю при аутентификации с помощью HTTP API Grafana. Дополнительные сведения о сервисных учётных записях см. в разделе About service accounts in Grafana.

Токен сервисной учётной записи можно создать с помощью UI Grafana или через API. Дополнительные сведения о создании токена сервисной учётной записи через API см. в разделе Create service account tokens using the HTTP API.

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

Убедитесь, что у вас есть разрешение на создание и редактирование сервисных учётных записей. По умолчанию для создания и редактирования сервисных учётных записей требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.

Даты истечения срока действия токенов сервисных учётных записей

По умолчанию токены сервисных учётных записей не имеют даты истечения срока действия. Однако с помощью token_expiration_day_limit можно ограничить срок действия токена в днях.

Добавление токена в сервисную учётную запись

  1. Войдите в Grafana и нажмите Administration в меню слева.
  2. Нажмите Users and access > Service accounts.
  3. Нажмите сервисную учётную запись, в которую хотите добавить токен.
  4. Нажмите Add service account token.
  5. Введите имя токена.
  6. При необходимости можно выбрать Set expiration date и ввести дату истечения срока действия токена.
    • Дата истечения срока действия определяет, как долго ключ будет действителен.
    • Если вы не уверены в дате истечения срока действия, рекомендуем установить срок действия токена на короткий период, например на несколько часов или меньше. Это снижает риск, связанный с токеном, действительным в течение длительного времени.
  7. Нажмите Generate token.

Назначение ролей сервисной учётной записи в Grafana

Вы можете назначать роли организации (Viewer, Editor, Admin) сервисной учётной записи Grafana, чтобы управлять доступом для связанных с ней токенов. Для назначения ролей организации можно использовать UI Grafana или API. Дополнительные сведения о назначении роли сервисной учётной записи через API см. в разделе Update service account using the HTTP API.

В Grafana Enterprise вы также можете назначать роли RBAC, чтобы предоставлять очень конкретные разрешения приложениям, взаимодействующим с Grafana.

Note

Начиная с Grafana 10.2.0 для пользователей организации и сервисных учётных записей доступна базовая роль None. По умолчанию у этой роли нет разрешений, и вы можете предоставлять разрешения с помощью RBAC.

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

Убедитесь, что у вас есть разрешение на обновление ролей сервисных учётных записей. По умолчанию для обновления разрешений сервисных учётных записей требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.

Назначение роли сервисной учётной записи

  1. Войдите в Grafana и нажмите Administration в меню слева.
  2. Нажмите Users and access.
  3. Нажмите Service accounts.
  4. Нажмите сервисную учётную запись, которой хотите назначить роль. В качестве альтернативы найдите сервисную учётную запись в представлении списка.
  5. Назначьте роль с помощью средства выбора ролей, чтобы обновить её.

Управление разрешениями пользователей и команд для сервисной учётной записи в Grafana

Чтобы управлять тем, что и кто может делать с сервисной учётной записью, вы можете назначать разрешения непосредственно пользователям и командам. Разрешения можно назначать с помощью UI Grafana.

Note

Назначение сервисной учётной записи разрешений на управление командой не делает эту учётную запись частью команды.

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

Убедитесь, что у вас есть следующие разрешения:

  • На обновление разрешений пользователей и команд сервисной учётной записи. По умолчанию для обновления разрешений пользователей и команд сервисной учётной записи требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.
  • На чтение команд.

Разрешения пользователей и команд для сервисной учётной записи

Вы можете назначить конкретному пользователю или команде одно из следующих разрешений:

  1. Edit: пользователь или команда с этим разрешением могут просматривать, редактировать, включать и отключать сервисную учётную запись, а также добавлять и удалять токены сервисной учётной записи.
  2. Admin: пользователь или команда с этим разрешением смогут делать всё, что позволяет разрешение Edit, а также управлять разрешениями пользователей и команд для сервисной учётной записи.

Обновление разрешений команды для сервисной учётной записи

  1. Войдите в Grafana и нажмите Administration в меню слева.
  2. Нажмите Users and access.
  3. Нажмите Service accounts.
  4. Нажмите сервисную учётную запись, для которой хотите обновить разрешения команды.
  5. В разделе Permissions внизу нажмите Add permission.
  6. Выберите Team в раскрывающемся списке и выберите нужную команду.
  7. Выберите роль View, Edit или Admin в раскрывающемся списке и нажмите Save.

Обновление разрешений пользователя для сервисной учётной записи

  1. Войдите в Grafana и нажмите Administration в меню слева.
  2. Нажмите Users and access.
  3. Нажмите Service accounts.
  4. Нажмите сервисную учётную запись, для которой хотите обновить разрешения пользователя.
  5. В разделе Permissions внизу нажмите Add permission.
  6. Выберите User в раскрывающемся списке и выберите нужного пользователя.
  7. Выберите роль View, Edit или Admin в раскрывающемся списке и нажмите Save.

Отладка разрешений токена сервисной учётной записи

Узнайте, какие разрешения RBAC привязаны к токену сервисной учётной записи, чтобы диагностировать проблемы с авторизацией токена, связанные с разрешениями.

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

Если вы ещё не добавили токен в сервисную учётную запись, сделайте это перед продолжением. См. раздел Добавление токена в сервисную учётную запись.

Список разрешений токена сервисной учётной записи

Чтобы вывести список разрешений вашего токена, используйте конечную точку /api/access-control/user/permissions.

Выполните следующую команду с токеном, разрешения которого хотите проверить:

Bash
curl -H "Authorization: Bearer glsa_iNValIdinValiDinvalidinvalidinva_5b582697" -X GET '<grafana_url>/api/access-control/user/permissions' | jq

Вывод содержит список разрешений токена:

Note

Приведённый ниже вывод команды сокращён, чтобы показать только соответствующий содержимому текст.

JSON
{
  "dashboards:read": ["dashboards:uid:70KrY6IVz"],
  "dashboards:write": ["dashboards:uid:70KrY6IVz"],
  "datasources.id:read": ["datasources:*"],
  "datasources:read": ["datasources:*"],
  "datasources:explore": [""],
  "datasources:query": ["datasources:uid:grafana"],
  "datasources:read": ["datasources:uid:grafana"],
  "orgs:read": [""]
}

Проверка того, какие дашборды разрешено видеть токену

Чтобы вывести список дашбордов, которые токен может просматривать, отфильтруйте ответ конечной точки /api/access-control/user/permissions по ключу разрешения dashboards:read:

Bash
curl -H "Authorization: Bearer glsa_iNValIdinValiDinvalidinvalidinva_5b582697" -X GET '<grafana_url>/api/access-control/user/permissions' | jq '."dashboards:read"'

Вывод содержит список дашбордов, которые токен может просматривать, и папок, из которых токен может просматривать дашборды, по их уникальным идентификаторам (uid):

JSON
[
  "dashboards:uid:70KrY6IVz",
  "dashboards:uid:d61be733D",
  "folders:uid:dBS87Axw2",
],