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

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

Необходимо выполнить следующие действия:

  1. Сделайте копию конфигурационного файла cp /opt/skala-r/etc/vision/server/vision_core/grafana.yml /opt/skala-r/etc/vision/server/vision_core/grafana.yml.bak
  2. Укажите параметры провайдера OAuth в файле конфигурации /opt/skala-r/etc/vision/server/vision_core/grafana.yml в формате YAML.

Структура YAML-файла аналогична формату INI, где

INI YAML
Имя секции[server] Верхнеуровневый ключ YAML. server:
Параметр секции domain = Нижестоящий ключ YAML. domain:

Например, при использовании 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: 'vault.grafana.auth.generic_oauth.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'

и при использовании Avanpost:

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'
  auth_url: 'https://<хост-Avanpost>/oauth2/authorize'
  token_url: 'https://<хост-Avanpost>/oauth2/token'
  api_url: 'https://<хост-Avanpost>/oauth2/userinfo'
  tls_skip_verify_insecure: 'true'
  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'"
  role_attribute_strict: 'true'
  allow_assign_grafana_admin: 'true'
  signout_redirect_url: 'https://<хост-Avanpost>/oauth2/end_session?'
  post_logout_redirect_uri: 'https://<хост-Avanpost>/oauth2/end_session?post_logout_redirect_uri=https://<ip_vision_vm>/vision/grafana/login'
  1. Укажите секрет vault.grafana.auth.generic_oauth.client_secret в /opt/skala-r/vision/.secrets_vault

  2. Пользователем root запустите скрипт /opt/skala-r/vision/tools/update_server_configs.sh

  3. Убедитесь, что сервисы Визион.Сервера успешно запущены cd /opt/skala-r/vision/ && ./check_service.sh.

  4. Перейдите в веб-интерфейс Визиона, открыв Интернет браузер, и введя в строке адреса IP-адрес сервера Визиона (https://<vision-ip>), после чего выберите пункт “Аналитические панели”. Убедитесь, что была запрошена авторизация через Keycloak или Avanpost, в зависимости от используемой системы.