Устранение неполадок RBAC

В этом разделе вы узнаете о журналах, доступных для RBAC, и найдёте наиболее распространённые проблемы RBAC.

Включение отладочного логирования

Вы можете включить отладочные сообщения журнала для RBAC в файле конфигурации Grafana. Отладочные журналы добавляются в журналы сервера Grafana.

Bash
[log]
filters = accesscontrol:debug accesscontrol.evaluator:debug dashboard.permissions:debug

Включение журналирования аудита

Note

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

Вы можете включить аудит в файле конфигурации Grafana.

Bash
[auditing]
enabled = true

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

Отсутствующие разрешения на дашборды, папки или источники данных

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

Note

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

Чтобы повторно синхронизировать разрешения:

  1. сделайте резервную копию базы данных
  2. выполните следующие SQL-запросы
    SQL
    DELETE
    FROM builtin_role
    where role_id IN (SELECT id
                      FROM role
                      WHERE name LIKE 'managed:%');
    DELETE
    FROM team_role
    where role_id IN (SELECT id
                      FROM role
                      WHERE name LIKE 'managed:%');
    DELETE
    FROM user_role
    where role_id IN (SELECT id
                      FROM role
                      WHERE name LIKE 'managed:%');
    DELETE
    FROM permission
    where role_id IN (SELECT id
                      FROM role
                      WHERE name LIKE 'managed:%');
    DELETE
    FROM role
    WHERE name LIKE 'managed:%';
    DELETE
    FROM migration_log
    WHERE migration_id IN ('teams permissions migration',
                           'dashboard permissions',
                           'dashboard permissions uid scopes',
                           'data source permissions',
                           'data source uid permissions',
                           'managed permissions migration',
                           'managed folder permissions alert actions repeated migration',
                           'managed permissions migration enterprise');
  3. перезапустите экземпляр Grafana