Сервисные учётные записи
Сервисные учётные записи позволяют запускать в 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
Пользователь, создавший сервисную учётную запись, может читать, обновлять и удалять созданную им сервисную учётную запись, а также разрешения, связанные с этой сервисной учётной записью.
Прежде чем начать
Убедитесь, что у вас есть разрешение на создание и редактирование сервисных учётных записей. По умолчанию для создания и редактирования сервисных учётных записей требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.
Создание сервисной учётной записи
- Войдите в Grafana и нажмите Administration в меню слева.
- Нажмите Users and access > Service accounts > Add service account.
- Введите Display name. Отображаемое имя должно быть уникальным, так как оно определяет ID, связанный с сервисной учётной записью.
- При именовании сервисных учётных записей используйте единообразное соглашение об именовании. Единообразное соглашение об именовании поможет вам в будущем масштабировать сервисные учётные записи и управлять ими.
- Отображаемое имя можно изменить в любой момент.
- Нажмите 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 можно ограничить срок действия токена в днях.
Добавление токена в сервисную учётную запись
- Войдите в Grafana и нажмите Administration в меню слева.
- Нажмите Users and access > Service accounts.
- Нажмите сервисную учётную запись, в которую хотите добавить токен.
- Нажмите Add service account token.
- Введите имя токена.
- При необходимости можно выбрать Set expiration date и ввести дату истечения срока действия токена.
- Дата истечения срока действия определяет, как долго ключ будет действителен.
- Если вы не уверены в дате истечения срока действия, рекомендуем установить срок действия токена на короткий период, например на несколько часов или меньше. Это снижает риск, связанный с токеном, действительным в течение длительного времени.
- Нажмите 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.
Прежде чем начать
Убедитесь, что у вас есть разрешение на обновление ролей сервисных учётных записей. По умолчанию для обновления разрешений сервисных учётных записей требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.
Назначение роли сервисной учётной записи
- Войдите в Grafana и нажмите Administration в меню слева.
- Нажмите Users and access.
- Нажмите Service accounts.
- Нажмите сервисную учётную запись, которой хотите назначить роль. В качестве альтернативы найдите сервисную учётную запись в представлении списка.
- Назначьте роль с помощью средства выбора ролей, чтобы обновить её.
Управление разрешениями пользователей и команд для сервисной учётной записи в Grafana
Чтобы управлять тем, что и кто может делать с сервисной учётной записью, вы можете назначать разрешения непосредственно пользователям и командам. Разрешения можно назначать с помощью UI Grafana.
Note
Назначение сервисной учётной записи разрешений на управление командой не делает эту учётную запись частью команды.
Прежде чем начать
Убедитесь, что у вас есть следующие разрешения:
- На обновление разрешений пользователей и команд сервисной учётной записи. По умолчанию для обновления разрешений пользователей и команд сервисной учётной записи требуется роль администратора организации. Дополнительные сведения о разрешениях пользователей см. в разделе О пользователях и разрешениях.
- На чтение команд.
Разрешения пользователей и команд для сервисной учётной записи
Вы можете назначить конкретному пользователю или команде одно из следующих разрешений:
- Edit: пользователь или команда с этим разрешением могут просматривать, редактировать, включать и отключать сервисную учётную запись, а также добавлять и удалять токены сервисной учётной записи.
- Admin: пользователь или команда с этим разрешением смогут делать всё, что позволяет разрешение Edit, а также управлять разрешениями пользователей и команд для сервисной учётной записи.
Обновление разрешений команды для сервисной учётной записи
- Войдите в Grafana и нажмите Administration в меню слева.
- Нажмите Users and access.
- Нажмите Service accounts.
- Нажмите сервисную учётную запись, для которой хотите обновить разрешения команды.
- В разделе Permissions внизу нажмите Add permission.
- Выберите Team в раскрывающемся списке и выберите нужную команду.
- Выберите роль View, Edit или Admin в раскрывающемся списке и нажмите Save.
Обновление разрешений пользователя для сервисной учётной записи
- Войдите в Grafana и нажмите Administration в меню слева.
- Нажмите Users and access.
- Нажмите Service accounts.
- Нажмите сервисную учётную запись, для которой хотите обновить разрешения пользователя.
- В разделе Permissions внизу нажмите Add permission.
- Выберите User в раскрывающемся списке и выберите нужного пользователя.
- Выберите роль View, Edit или Admin в раскрывающемся списке и нажмите Save.
Отладка разрешений токена сервисной учётной записи
Узнайте, какие разрешения RBAC привязаны к токену сервисной учётной записи, чтобы диагностировать проблемы с авторизацией токена, связанные с разрешениями.
Прежде чем начать
Если вы ещё не добавили токен в сервисную учётную запись, сделайте это перед продолжением. См. раздел Добавление токена в сервисную учётную запись.
Список разрешений токена сервисной учётной записи
Чтобы вывести список разрешений вашего токена, используйте конечную точку /api/access-control/user/permissions.
Выполните следующую команду с токеном, разрешения которого хотите проверить:
curl -H "Authorization: Bearer glsa_iNValIdinValiDinvalidinvalidinva_5b582697" -X GET '<grafana_url>/api/access-control/user/permissions' | jq
Вывод содержит список разрешений токена:
Note
Приведённый ниже вывод команды сокращён, чтобы показать только соответствующий содержимому текст.
{
"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:
curl -H "Authorization: Bearer glsa_iNValIdinValiDinvalidinvalidinva_5b582697" -X GET '<grafana_url>/api/access-control/user/permissions' | jq '."dashboards:read"'
Вывод содержит список дашбордов, которые токен может просматривать, и папок, из которых токен может просматривать дашборды,
по их уникальным идентификаторам (uid):
[
"dashboards:uid:70KrY6IVz",
"dashboards:uid:d61be733D",
"folders:uid:dBS87Axw2",
],