Настройка авторизации в Grafana

Авторизация в компоненте реализуется с помощью стороннего ПО. В текущей версии доступна интеграция с Keycloak и Avanpost. Необходимо настроить ПО согласно “Инструкция по настройке Keycloak” или “Инструкция по настройке Keycloak”, в зависимости от избранной системы.

Необходимо изменить параметры файла конфигурации Grafana: /opt/skala-r/etc/vision/server/grafana/grafana.ini.

  1. Сделать копию файла конфигурации:
cp /opt/skala-r/etc/vision/server/grafana/grafana.ini /opt/skala-r/etc/vision/server/grafana/grafana.ini.bak
  1. Отредактировать файл конфигурации:
nano /opt/skala-r/etc/vision/server/grafana/grafana.ini

Для авторизации через Keycloak (значения вида <...> необходимо изменить на фактические из Keycloak):

[server]
domain = <домен-визиона>  # Домен Визиона

...

[auth]
signout_redirect_url = https://<хост-keycloak>/realms/<имя-realm>/protocol/openid-connect/logout?client_id=<id-клиента>
oauth_allow_insecure_email_lookup = true

...

[auth.anonymous]
enabled = false

...

[auth.generic_oauth]
enabled = true
name = Keycloak-OAuth
allow_sign_up = true
client_id = <id-клиента>
client_secret = <секретный-ключ>
scopes = openid email profile offline_access roles

email_attribute_path = (contains(keys(@), 'user')) && (contains(user, 'email')) && user.email || preferred_email || preferred_username
login_attribute_path = username
name_attribute_path = full_name
auth_url =  https://<хост-keycloak>/realms/<имя-realm>/protocol/openid-connect/auth
token_url = https://<хост-keycloak>/realms/<имя-realm>/protocol/openid-connect/token
api_url =   https://<хост-keycloak>/realms/<имя-realm>/protocol/openid-connect/userinfo

role_attribute_path = contains(roles[*], 'grafanaadmin') && 'GrafanaAdmin' || contains(roles[*], 'admin') && 'Admin' || contains(roles[*], 'editor') && 'Editor' || contains(roles[*], 'viewer') && 'Viewer'
role_attribute_strict = true
allow_assign_grafana_admin = true

Для авторизации через Аванпост (значения вида <...> необходимо изменить на фактические из Аванпоста):

[server]
domain = <домен-визиона>  # Домен Визиона
   
...
   
[auth]
oauth_allow_insecure_email_lookup = true
   
...
   
[auth.anonymous]
enabled = false
  
[auth.generic_oauth]
  
enabled = true
name = FAM
allow_sign_up = true
client_id = <ID приложения>
client_secret = <секрет приложения>
scopes = openid profile email permissions groups
email_attribute_path = preferred_username
login_attribute_path = preferred_username
role_attribute_path = contains(groups[*].name, 'GrafanaAdmin') && 'GrafanaAdmin' || contains(groups[*].name, 'Grafana Editor') && 'Editor' || contains(groups[*].name, 'Grafana Admins') && 'Admin' || contains(groups[*].name, 'Grafana Viewer') && 'Viewer'
auth_url = https://<хост-Avanpost>/oauth2/authorize
token_url = https://<хост-Avanpost>/oauth2/token
api_url = https://<хост-Avanpost>/oauth2/userinfo
tls_skip_verify_insecure = true
allow_assign_grafana_admin = true  # Разрешение на роль GrafanaAdmin
role_attribute_strict = true  # Запрет на вход пользователя без роли
signout_redirect_url = https://<хост-Avanpost>/oauth2/end_session?post_logout_redirect_uri=https://<ip_vision_vm>/vision/grafana/login
  1. Сохранить файл и перезапустить сервис grafana.service командой:
systemctl restart grafana.service
  1. Проверить успешный запуск Grafana командой:
systemctl status grafana.service
  1. Перейти в веб-интерфейс Визиона, открыв Интернет браузер, и введя в строке адреса IP-адрес сервера Визиона (https://<vision-ip>), после чего выбрать пункт “Аналитические панели”. Убедиться, что была запрошена авторизация через Keycloak.