Устранение неполадок RBAC
В этом разделе вы узнаете о журналах, доступных для RBAC, и найдёте наиболее распространённые проблемы RBAC.
Включение отладочного логирования
Вы можете включить отладочные сообщения журнала для RBAC в файле конфигурации Grafana. Отладочные журналы добавляются в журналы сервера Grafana.
[log]
filters = accesscontrol:debug accesscontrol.evaluator:debug dashboard.permissions:debug
Включение журналирования аудита
Note
Доступно в Grafana Enterprise и Grafana Cloud.
Вы можете включить аудит в файле конфигурации Grafana.
[auditing]
enabled = true
Все обновления разрешений и ролей, а также назначения ролей добавляются в журналы аудита. Подробнее см. в разделе журналы аудита контроля доступа.
Отсутствующие разрешения на дашборды, папки или источники данных
Разрешения на дашборды и папки и разрешения на источники данных могут рассинхронизироваться, если версия экземпляра Grafana сначала обновляется, затем откатывается и снова обновляется. Это происходит, когда экземпляр откатывается с версии, использующей RBAC, на версию, использующую устаревшее управление доступом, и при этом обновляются разрешения на дашборды, папки или источники данных. Эти обновления разрешений не будут применены к RBAC, поэтому разрешения окажутся рассинхронизированными при следующем обновлении экземпляра до версии с RBAC.
Note
приведённые ниже шаги приведут все разрешения на дашборды, папки и источники данных к тому состоянию, в котором они находились бы при устаревшем управлении доступом. Если вы вносили изменения в разрешения на дашборды, папки или источники данных при включённом RBAC, эти изменения будут утеряны.
Чтобы повторно синхронизировать разрешения:
- сделайте резервную копию базы данных
- выполните следующие 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'); - перезапустите экземпляр Grafana