Инструкция подготовлена на примере BVS Версия: 3.1.4 (от 21.06.2024)
Терминология:
- BVS - Basis Virtual Security, продукт являющийся провайдером аутентификации и авториризации
- Authentication — идентификация и проверка пользователя.
- Authorization — предоставление доступа пользователю.
- Домен — пространство для управления пользователями, приложениями, ролями и группами. Пользователь принадлежит к конкретному Домену. Домены изолированы друг от друга. Для пользователей Визиона достаточно одного домена
- Клиентские системы — клиенты (приложения), которые могут обращаться к BVS для аутентификации пользователя. Клиентская система - объект, который содержит совокупность параметров, необходимых для связи с определенным приложением.
- Users — Пользователи, которые могут войти в вашу систему. Им можно назначить членство в группе и/или определенные роли.
- Roles — определяют тип/категорию пользователя. Читатель, писатель — типичные роли. Обычно, приложения назначают доступ и разрешения конкретным ролям, а не отдельным пользователям.
Приложения Визиона требующие Клиентских систем:
- Vision Core
- Grafana
1. Добавление домена#
В случае, если нужный домен уже есть в списке, перейдите к следующему пункту инструкции.
В разделе “Домены” нажмите кнопку “Создать”, заполните обязательные поля (например “vision” для имени домена) в появившемся окне и нажмите “Создать”. Созданный домен должен появиться в списке:
2. Добавление клиентской системы для Vision_core#
Выберите необходимый домен в выпадающем списке слева вверху (vision), нажмите на раздел “Безопасность” (раскроется контекстное меню) и выберите раздел “Клиентские системы”.
В открывшейся странице нажмите кнопку “Создать” и в появившемся окне заполните поля:
Поле | Описание | Пример заполнения |
---|---|---|
Идентификатор: | Имя клиентской системы | vision_core_48 |
Наименование: | Произвольное имя | vision_core_48 |
Тип доступа: | Какой тип доступа будет использован | Конфиденциальный (потребуется секретный ключ для инициализации протокола входа) |
Адрес: | IP адрес и порт для клиентской системы | https://192.168.186.48/ |
Активность | Отключенные системы не могут инициировать вход и получать токены доступа | [x] (должен быть выбран) |
После ввода параметров нажмите “Создать”.
2.1 Изменение параметров клиентской системы для Vision_core#
Откройте страницу со списком клиентских систем (“Безопасность” -> “Клиентские системы”), выберите созданную клиентскую систему и на вкладке “Основное” нажмите кнопку “Изменить”. Заполните значения полей:
Поле | Описание | Пример заполнения |
---|---|---|
Типы взаимодействия: | типы взаимодействия разрешенные для клиентской системы | Authorization Code Flow - стандартное OpenID Connect перенаправление основанное на аутентификации с кодом авторизации, Resource Owner Password Grant - клиентская система имеет доступ к имени пользователя и паролю и обменивает их напрямую с сервером авторизации на токен доступа |
Основной путь: | URL по умолчанию, используется если серверу требуется перенаправление или обратная ссылка на клиента | / |
Пути перенаправления: | список URL на которые может быть перенаправлен браузер после успешного входа или выхода | https://192.168.186.48/* |
Доверенные источники CORS: | Список доверенных источников в технологии CORS | https://192.168.186.48/* |
При доступности приложений с нескольких URL (по IP, по домену), указать все допустимые варианты для Пути перенаправления и Доверенных источников CORS.
Введите значение в поле “Пароль”. Данный пароль будет использован в хранилище секретов Визиона.
Прочие параметры конфигурации можно оставить со значениями по умолчанию.
После ввода параметров нажмите “Сохранить”.
3. Добавление ролей для Vision_core#
Для создания новой роли необходимо перейти в параметры клиентской системы (пример: выбрать домен “vision”, нажать “Клиентские системы” и выбрать “vision_core_48”). Перейти на вкладку “Роли” и нажать кнопку “Создать”.
В появившемся меню, заполнить поля в соответствии с ролевой моделью:
Поле | Описание | Пример заполнения |
---|---|---|
Имя роли | Имя роли, используемой в Визион. На момент создания настоящей инструкции в Визионе две роли writer и reader |
reader |
Нажмите на кнопку “Создать”, после чего роль будет создана и появится в списке:
4. Редактирование области#
Для корректной передачи username
пользователя следует в области “roles” добавить новое “Отображение”. Для этого следует на странице “Области” открыть области с названием “roles” и нажать кнопку “Создать”
В появившемся меню следует заполнить следующие параметры:
Остальные значения можно оставить по умолчанию и нажать кнопку “Сохранить”
5. Создание пользователя для Визион#
Выберите домен “Vision” и перейдите в раздел Безопасность -> Пользователи. Нажмите “Создать”. Появится окно, в котором нужно заполнить поля и нажать “Создать”:
На вкладке “Основное” для пользователя выберите чек-бокс “E-mail подтвержден” и “Активность” (если не выбрали на стадии создания пользователя).
Перейдите на вкладку “Полномочия”. Введите “Новый пароль”, повторите его в поле “Подтверждение”, уберите чекбокс “Временный пароль” и нажмите “Сбросить пароль”. В появившемся окне подтверждения действия нажмите “Да”.
6. Добавление роли пользователю для Визион#
Для созданного пользователя перейдите на вкладку “Роли”. В разделе “Роли уровня клиентской системы” выберите клиентскую систему “vision”, выберите одну или несколько ролей (например, reader
) и нажмите “Назначить выбранные роли”:
Убедитесь, что для вашей клиентской системы назначены области: Убедитесь, что для созданной клиенткой системы (пример Vision->Клиентcкие системы->vision_core_48->области) в разделе “Области по умолчанию” в окне “Назначенные области” отображаются:
- roles
7. Настройка конфигурации для Vision_core#
В конфигурационный файл /opt/skala-r/etc/vision/server/vision_core/config.yml
необходимо внести изменения в блок auth
auth:
enabled: true
auth_type: 'keycloak'
auth_server: 'http://bvs-public.skala-r.tech/'
realm: '<Домен приложения>'
client_id: '<Клиентская система>'
client_secret: vault.auth.client_secret
tls_insecure_skip_verify: true
request_timeout: 5
Необходимо указать реальное значение Client secret клиента.
Сделайте копию файла хранилища секретов: cp /opt/skala-r/vision/.vault_store /opt/skala-r/vision/.vault_store_bak
.
Запустите команду /opt/skala-r/vision/server/vision_venv/bin/python3 -c "import storage; print(storage.get_initial_data())" > ~/.vault_pass && ansible-vault edit /opt/skala-r/vision/.secrets_vault --vault-password-file=~/.vault_pass && rm -rf ~/.vault_pass && systemctl restart vision_core.service
.
Для ключа vault.auth.client_secret
установите значение поля “Пароль” (раздел Основное -> Пароль для Клиентской системы).
Сохраните файл и перезапустите сервис vision_core.service
командой: systemctl restart vision_core.service
.
Проверьте успешный запуск vision_core
командой: systemctl status vision_core.service
и убедитесь, что в логе нет ошибок после перезапуска: journalctl -fu vision_core -n 20
.
8. Создание Клиентской системы для Grafana#
Выберите необходимый домен в выпадающем списке слева вверху (vision), нажмите на раздел “Безопасность” (раскроется контекстное меню) и выберите раздел “Клиентские системы”.
В открывшейся странице нажмите кнопку “Создать” и в появившемся окне заполните поля:
Поле | Описание | Пример заполнения |
---|---|---|
Идентификатор: | Имя клиентской системы | vision_grafana_48 |
Наименование: | Произвольное имя | vision_grafana_48 |
Тип доступа: | Какой тип доступа будет использован | Конфиденциальный (потребуется секретный ключ для инициализации протокола входа) |
Адрес: | IP адрес и порт для клиентской системы | https://192.168.186.48/vision/grafana |
Активность | Отключенные системы не могут инициировать вход и получать токены доступа | [x] (должен быть выбран) |
После ввода параметров нажмите “Создать”.
8.1 Изменение параметров клиентской системы для Grafana#
Откройте страницу со списком клиентских систем (“Безопасность” -> “Клиентские системы”), выберите созданную клиентскую систему и на вкладке “Основное” нажмите кнопку “Изменить”. Заполните значения полей:
Поле | Описание | Пример заполнения |
---|---|---|
Типы взаимодействия: | типы взаимодействия разрешенные для клиентской системы | Authorization Code Flow - стандартное OpenID Connect перенаправление основанное на аутентификации с кодом авторизации, Resource Owner Password Grant - клиентская система имеет доступ к имени пользователя и паролю и обменивает их напрямую с сервером авторизации на токен доступа |
Основной путь: | URL по умолчанию, используется если серверу требуется перенаправление или обратная ссылка на клиента | / |
Пути перенаправления: | список URL на которые может быть перенаправлен браузер после успешного входа или выхода | https://192.168.186.48/vision/grafana/login, https://192.168.186.48/vision/grafana/login/generic_oauth |
Введите значение в поле “Пароль”. Данный пароль будет использован в хранилище секретов Визиона.
Прочие параметры конфигурации можно оставить со значениями по умолчанию.
После ввода параметров нажмите “Сохранить”.
9. Создание ролей для Grafana#
Для создания новой роли необходимо перейти в параметры клиентской системы (пример: выбрать домен “vision”, нажать “Клиентские системы” и выбрать “vision_grafana_48”). Перейти на вкладку “Роли” и нажать кнопку “Создать”.
В появившемся меню, заполнить поля в соответствии с ролевой моделью:
Поле | Описание | Пример заполнения |
---|---|---|
Имя роли | Имя роли, используемой в Grafana. На момент создания настоящей инструкции в Grafana используются роли editor , viewer , grafanaadmin , Admin |
viewer |
Нажмите на кнопку “Создать”, после чего роль будет создана и появится в списке.
10. Создание пользователя для Grafana#
Для клиентской системы Grafana (в нашем примере vision_grafana_48
) может быть использован тот же пользователь, что и для клиентской системы Визион (в нашем примере vision_core_48
). Этому пользователю необходимо назначить роль в клиентской системе Grafana (vision_grafana_48
).
11. Добавление ролей пользователю для Grafana#
Для пользователя перейдите на вкладку “Роли”. В разделе “Роли уровня клиентской системы” выберите клиентскую систему Grafana (vision_grafana_48
), выберите одну или несколько ролей (например, viewer
) и нажмите “Назначить выбранные роли”.
Убедитесь, что для созданной клиенткой системы (например Vision->Клиентcкие системы->vision_grafana_48->области) в разделе “Области по умолчанию” в окне “Назначенные области” отображаются:
- roles
- openid
- profile
Если это не так, необходимо добавить недостающие области:
12. Настройка конфигурации для Grafana#
В конфигурационный файл /opt/skala-r/etc/vision/server/vision_core/grafana.yml
необходимо внести следующие изменения:
server:
protocol: 'config.grafana.protocol'
http_addr: 'config.grafana.host'
http_port: '3000'
domain: '{vision_ip}'
root_url: '%(protocol)s://%(domain)s/vision/grafana/'
cert_file: 'config.grafana.tls_cert_file'
cert_key: 'config.grafana.tls_key_file'
analytics:
reporting_enabled: 'false'
check_for_updates: 'false'
check_for_plugin_updates: 'false'
feedback_links_enabled: 'false'
security:
admin_user: 'admin'
admin_password: 'vault.grafana.security.admin_password'
allow_embedding: 'true'
dashboards:
default_home_dashboard_path: '/opt/skala-r/vision/server/grafana/var/dashboards/home.json'
auth:
signout_redirect_url: 'http://bvs-public.skala-r.tech/realms/vision/protocol/openid-connect/logout?client_id={id_клиентской системы}'
oauth_allow_insecure_email_lookup: 'true'
auth.anonymous:
enabled: 'false'
auth.generic_oauth:
enabled: 'true'
name: 'BVS'
allow_sign_up: 'true'
client_id: '{id_клиентской системы}'
client_secret: 'vault.grafana.auth.generic_oauth.client_secret'
scopes: 'openid email profile 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: 'http://bvs-public.skala-r.tech/realms/vision/protocol/openid-connect/auth'
token_url: 'http://bvs-public.skala-r.tech/realms/vision/protocol/openid-connect/token'
api_url: 'http://bvs-public.skala-r.tech/realms/vision/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'
Необходимо указать реальное значение Client secret клиента. Выполните следующие действия:
- Сделайте копию файла хранилища секретов:
cp /opt/skala-r/vision/.vault_store /opt/skala-r/vision/.vault_store_bak
. - Запустите команду
/opt/skala-r/vision/server/vision_venv/bin/python3 -c "import storage; print(storage.get_initial_data())" > ~/.vault_pass && ansible-vault edit /opt/skala-r/vision/.secrets_vault --vault-password-file=~/.vault_pass && rm -rf ~/.vault_pass && systemctl restart vision_core.service
. - Для ключа
vault.grafana.auth.generic_oauth.client_secret
установите значение поля “Пароль” из раздела Основное->Пароль Клиентской системы. - Пользователем
root
запустите скрипт/opt/skala-r/vision/tools/update_server_configs.sh
- Убедитесь, что сервисы Визион.Сервера успешно запущены
cd /opt/skala-r/vision/ && ./check_service.sh
. - Перейдите в веб-интерфейс Визиона, открыв Интернет браузер, и введя в строке адреса IP-адрес сервера Визиона (
https://<vision-ip>
), после чего выберите пункт “Аналитические панели”. - Убедитесь, что была запрошена авторизация через BVS