Обзор управления доступом на основе ролей (RBAC)

Note

Доступно в Grafana Enterprise и Grafana Cloud.

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

RBAC можно использовать для того, чтобы:

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

Роли и разрешения RBAC

Роли RBAC связаны с несколькими разрешениями, каждое из которых имеет действие и область действия:

  • Action: действие описывает, какие задачи пользователь может выполнять с ресурсом.
  • Scope: область действия описывает, где действие может быть выполнено, например чтение конкретного профиля пользователя. В этом примере разрешение связано с областью users:<userId> для соответствующей роли.

Дополнительные сведения см. в разделе RBAC permission’s actions and scopes.

Доступные роли RBAC

В Grafana можно назначать следующие роли RBAC:

  • Basic role: базовые роли — это стандартные роли, доступные в Grafana OSS.
  • Fixed role: если вы используете Grafana Enterprise или Grafana Cloud, вы можете назначать отдельные фиксированные роли пользователям, командам и сервисным учётным записям для более точного управления разрешениями пользователей, чем позволяют одни только базовые роли.
  • Custom role: если вы используете Grafana Enterprise или Grafana Cloud, используйте пользовательские роли для создания уникальных комбинаций действий и областей действия разрешений.

Кроме того, если вы используете плагины-приложения Grafana Cloud, существуют роли для управления доступом к отдельным функциям плагинов, которые можно назначать пользователям, командам или базовым ролям. Дополнительные сведения см. в разделе RBAC для плагинов-приложений.

Базовые роли

Базовые роли — это стандартные роли, доступные в Grafana OSS. Если вы используете Grafana Enterprise или Cloud, вы по-прежнему можете пользоваться базовыми ролями.

Grafana включает следующие базовые роли:

  • Grafana administrator
  • Organization administrator
  • Editor
  • Viewer
  • None

Caution

У всех пользователей Grafana должна быть назначена базовая роль. Используйте роль None для пользователей без разрешений.

Каждая базовая роль состоит из ряда разрешений. Например, базовая роль viewer содержит, среди прочих, следующие разрешения:

  • Action: datasources.id:read, Scope: datasources:*: позволяет зрителю видеть идентификатор источника данных.
  • Action: orgs:read: позволяет зрителю видеть сведения о своей организации
  • Action: annotations:read, Scope: annotations:*: позволяет зрителю видеть аннотации, которые другие пользователи добавили к дашборду.

Полный список разрешений базовых ролей см. в разделе Permissions associated to basic roles.

Изменение базовых ролей

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

Изменять базовые роли можно с помощью файла конфигурации или через API RBAC. Как это сделать, описано в разделе Manage RBAC roles.

Обратите внимание:

  • Вы не можете использовать сервисную учётную запись для изменения базовых ролей через API RBAC. Чтобы обновить базовые роли, вы должны быть администратором Grafana и использовать базовую аутентификацию в запросе.
  • Если вы клиент Cloud, обратитесь в службу поддержки для сброса ролей.

Фиксированные роли

Если вы используете Grafana Enterprise или Grafana Cloud, вы можете назначать отдельные фиксированные роли пользователям, командам и сервисным учётным записям. Это даёт более точный контроль над разрешениями пользователей, чем одни только базовые роли. Эти роли называются «фиксированными», потому что их нельзя изменить или удалить. Вы также можете создавать собственные пользовательские роли; подробнее см. в разделе Пользовательские роли ниже.

Назначайте фиксированные роли, когда базовые роли не отвечают вашим требованиям к разрешениям. Например, может потребоваться, чтобы пользователь с базовой ролью viewer также мог редактировать дашборды. Или чтобы любой пользователь с ролью editor мог также добавлять пользователей и управлять ими. Фиксированные роли предоставляют пользователям более гранулярный доступ для создания, просмотра и обновления следующих ресурсов Grafana:

Чтобы узнать больше о разрешениях, которые можно предоставить для каждого ресурса, см. RBAC role definitions.

Пользовательские роли

Если вы используете Grafana Enterprise или Grafana Cloud, вы можете создавать пользовательские роли для управления разрешениями пользователей так, чтобы это соответствовало вашим требованиям безопасности. Пользовательские роли содержат уникальные комбинации действий разрешений (разрешённая задача) и областей действия (где выполняется задача).

Например:

  • Действие teams.roles:read позволяет пользователю видеть список ролей, связанных с каждой командой.
  • Область teams:id:1 ограничивает действие пользователя командой с идентификатором 1. В паре с действием teams.roles:read это разрешение запрещает пользователю просматривать роли команд, отличных от команды 1.

Создавайте пользовательскую роль только тогда, когда фиксированные роли не отвечают вашим требованиям к разрешениям. Подробнее см. в разделе Create custom roles.

Распространение разрешений

Если вы изменяете конкретную базовую роль, изменение не распространяется на другие базовые роли. Иными словами, если вы измените базовую роль Viewer и предоставите ей дополнительные разрешения, Editors или Admins не получат это дополнительное разрешение.

Новые разрешения

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

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

Прекращение автоматического доступа к новым функциям

Вы можете запретить автоматический доступ новых плагинов или приложений для пользователей с базовыми ролями Editor или Viewer по умолчанию в Grafana Cloud. Хотя это не помешает появлению новых базовых функций Grafana или новых разрешений внутри существующих приложений, это ограничит доступ к плагинам. Для изменений базовых ролей RBAC вам придётся управлять расхождениями вручную или настроить автоматизацию.

Роли basic_editor и basic_viewer часто включают:

JSON
{
  "action": "plugins.app:access",
  "scope": "plugins:\*"
}

Это предоставляет доступ ко всем текущим и будущим плагинам, включая те, которые вашим пользователям могут быть не нужны или не лицензированы, например IRM, Machine Learning или Synthetics.

Чтобы это предотвратить, вы можете:

  • Удалить доступ по маске.
  • Добавить явные разрешения на плагины только для тех приложений, которые вам нужны.

Для этого выполните следующие шаги:

  1. Получите текущее определение роли. Подробнее см. в разделе View role definitions.

  2. Измените определение роли. Откройте JSON-файл, удалите это разрешение и добавьте только те идентификаторы плагинов, доступ к которым хотите сохранить. Обязательно включите cloud-home-app, иначе домашняя страница будет возвращать ошибку 404. Например:

    {
    "action": "plugins.app:access",
    "scope": "plugins:id:grafana-kowalski-app"
    },
    {
    "action": "plugins.app:access",
    "scope": "plugins:id:cloud-home-app"
    }
  3. При необходимости, если приложения включают фиксированные роли или гранулярные действия, укажите требуемые разрешения на основе ролей.

  4. Увеличьте версию роли. Найдите поле version в JSON и увеличьте его на 1.

  5. Обновите изменённую роль через API:

    curl -X PUT -H "Authorization: Bearer <admin SA token>" \
     -H "Content-Type: application/json" \
     https://<your-stack>.grafana.net/api/access-control/roles/basic_editor \
     -d @editor_custom_role.json

Ограничения RBAC

Если вы создали папку с именем General или general, вы не можете управлять её разрешениями с помощью RBAC.

Если вы зададите разрешения на папку для папки с именем General или general, система игнорирует эту папку, когда RBAC включён.

API RBAC

Сведения об API RBAC см. в документации API RBAC.