Назначение ролей RBAC

Note

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

В этом разделе вы узнаете, как использовать средство выбора ролей, провижининг и HTTP API для назначения фиксированных и пользовательских ролей пользователям и командам.

Назначение фиксированных ролей в UI с помощью средства выбора ролей

В этом разделе описано, как:

  • Назначить фиксированную роль пользователю, команде или сервисной учётной записи в качестве администратора организации.
  • Назначить фиксированную роль пользователю в качестве администратора сервера. Такой подход позволяет назначить фиксированную роль пользователю в нескольких организациях без необходимости переключать организации.

В обоих случаях назначение применяется только к пользователю, команде или сервисной учётной записи в затронутой организации и не затрагивает другие организации. Например, если вы предоставите пользователю роль Data source editor в организации Main, то пользователь сможет редактировать источники данных в организации Main, но не в других организациях.

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

  • Спланируйте стратегию развёртывания RBAC.

  • Определите фиксированные роли, которые хотите назначить пользователю, команде или сервисной учётной записи.

    Дополнительные сведения о доступных фиксированных ролях см. в разделе RBAC role definitions.

  • Убедитесь, что ваша собственная учётная запись имеет необходимые разрешения:

    • Если вы назначаете разрешения пользователю, команде или сервисной учётной записи внутри организации, у вас должны быть разрешения администратора организации или администратора сервера.
    • Если вы назначаете разрешения пользователю, который принадлежит нескольким организациям, у вас должны быть разрешения администратора сервера.
    • Ваш пользователь Grafana также может назначать фиксированную роль, если у него есть либо фиксированная роль fixed:roles:writer, назначенная той же организации, в которой вы назначаете RBAC пользователю, либо пользовательская роль с разрешениями users.roles:add и users.roles:remove.
    • Ваша собственная учётная запись должна иметь роли, которые вы предоставляете. Например, если вы хотите предоставить команде роль fixed:users:writer, эта роль должна быть и у вас.

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

  1. Войдите в Grafana.

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

    Дополнительные сведения о переключении организаций см. в разделе Switch organizations.

  3. В меню слева нажмите Administration, Users and access, а затем Users, Teams или Service accounts.

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

  5. Нажмите Update.

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

  1. Войдите в Grafana как администратор сервера.
  2. В меню слева нажмите Administration, Users and access, а затем Users.
  3. Нажмите на пользователя.
  4. В разделе Organizations нажмите Change role.
  5. Выберите роль внутри организации, которую хотите назначить пользователю.
  6. Нажмите Save.

Назначение фиксированных или пользовательских ролей с помощью HTTP API

В этом разделе описано, как:

  • Назначить фиксированную роль пользователю, команде или сервисной учётной записи в качестве администратора организации.

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

  • Спланируйте стратегию развёртывания RBAC.

  • Определите фиксированные роли, которые хотите назначить пользователю, команде или сервисной учётной записи.

    Дополнительные сведения о доступных фиксированных ролях см. в разделе RBAC role definitions.

  • Убедитесь, что ваша собственная учётная запись имеет необходимые разрешения:

    • Если вы назначаете разрешения пользователю, команде или сервисной учётной записи внутри организации, у вас должны быть разрешения администратора организации или администратора сервера.
    • Если вы назначаете разрешения пользователю, который принадлежит нескольким организациям, у вас должны быть разрешения администратора сервера.
    • Ваш пользователь Grafana также может назначать фиксированную роль, если у него есть либо фиксированная роль fixed:roles:writer, назначенная той же организации, в которой вы назначаете RBAC пользователю, либо пользовательская роль с разрешениями users.roles:add и users.roles:remove.
    • Ваша собственная учётная запись должна иметь роли, которые вы предоставляете. Например, если вы хотите предоставить команде роль fixed:users:writer, эта роль должна быть и у вас.

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

См. RBAC HTTP API for user role assignment.

Идентификатор сервисной учётной записи можно использовать вместо идентификатора пользователя.

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

См. RBAC HTTP API for team role assignment.

Назначение фиксированных или пользовательских ролей команде с помощью провижининга

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

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

  • См. раздел Провижининг ролей
  • Убедитесь, что команда, которой вы добавляете фиксированную роль, существует. Дополнительные сведения о создании команд см. в разделе Manage teams

Чтобы назначить роль команде:

  1. Откройте файл конфигурации YAML.

  2. Обратитесь к следующей таблице, чтобы добавить атрибуты и значения.

    Атрибут Описание
    roles Укажите пользовательскую роль или роли, которые хотите создать/обновить.
    roles > name Укажите имя пользовательской роли.
    roles > version Укажите номер версии пользовательской роли. Назначения ролей не зависят от номера версии роли.
    roles > global Укажите true. Иначе можно указать orgId.
    roles > permissions Укажите значения action и scope разрешений. Дополнительные сведения о действиях и областях действия разрешений см. в разделе Разрешения, действия и области действия RBAC
    teams Укажите команду или команды, которым добавляете пользовательскую роль.
    teams > orgId Поскольку команды принадлежат организациям, необходимо добавить значение orgId.
    teams > name Укажите имя команды.
    teams > roles Укажите пользовательскую или фиксированную роль или роли, которые хотите предоставить команде.
    teams > roles > name Укажите имя роли.
    teams > roles > global Укажите true или укажите orgId роли, которую хотите назначить команде. Фиксированные роли являются глобальными.

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

  3. Перезагрузите файл конфигурации провижининга.

    Дополнительные сведения о перезагрузке конфигурации провижининга во время выполнения см. в разделе Reload provisioning configurations.

Следующий пример создаёт роль custom:users:writer и назначает её командам user writers и user admins вместе с ролью fixed:users:writer:

Следующий пример:

  • Создаёт роль custom:users:writer.
  • Назначает роли custom:users:writer и fixed:users:writer командам user admins и user writers.
YAML
# config file version
apiVersion: 2

# Roles to insert/update in the database
roles:
  - name: 'custom:users:writer'
    description: 'List/update other users in the organization'
    version: 1
    global: true
    permissions:
      - action: 'org.users:read'
        scope: 'users:*'
      - action: 'org.users:write'
        scope: 'users:*'

# Assignments to teams
teams:
  - name: 'user writers'
    orgId: 1
    roles:
      # Custom role assignment
      - name: 'custom:users:writer'
        global: true
      # Fixed role assignment
      - name: 'fixed:users:writer'
        global: true
  - name: 'user admins'
    orgId: 1
    roles:
      - name: 'custom:users:writer'
        global: true
      - name: 'fixed:users:writer'
        global: true

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

Удаление назначения роли у команды:

Если вы хотите удалить назначение у команды, добавьте state: absent в раздел teams > roles и перезагрузите файл конфигурации.

Следующий пример:

  • Создаёт роль custom:users:writer
  • Назначает роли custom:users:writer и fixed:users:writer команде user admins
  • Удаляет назначения custom:users:writer и fixed:users:writer у команды user writers, если такие назначения существуют.
YAML
# config file version
apiVersion: 2

# Roles to insert/update in the database
roles:
  - name: 'custom:users:writer'
    description: 'List/update other users in the organization'
    version: 1
    global: true
    permissions:
      - action: 'org.users:read'
        scope: 'users:*'
      - action: 'org.users:write'
        scope: 'users:*'

# Assignments to teams
teams:
  - name: 'user writers'
    orgId: 1
    roles:
      - name: 'fixed:users:writer'
        global: true
        state: 'absent' # Remove assignment
      - name: 'custom:users:writer'
        global: true
        state: 'absent' # Remove assignment
  - name: 'user admins'
    orgId: 1
    roles:
      - name: 'fixed:users:writer'
        global: true
      - name: 'custom:users:writer'
        global: true

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