Инструкция подготовлена на примере Basis Virtual Security версии 3.1.4 от 21.06.2024.

Термины и определения#

Basis Virtual Security, BVS#

Продукт , являющийся провайдером аутентификации и авторизации.

Authentication#

Идентификация и проверка пользователя.

Authorization#

Предоставление доступа пользователю.

Домен#

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

Клиент#

Приложение, которое может обращаться к BVS для аутентификации пользователя.

Клиентская система#

Объект, который содержит совокупность параметров, необходимых для связи с определённым приложением.

Users#

Пользователи, которые могут войти в вашу систему. Им можно назначить членство в группе и определённые роли.

Roles#

Определяют тип или категорию пользователя.

Читатель, писатель — типичные роли.

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

Приложения Визиона, требующие Клиентских систем:

  • Vision Core

Добавление домена#

Если нужный домен уже есть в списке, перейдите к следующему пункту инструкции.

  1. В разделе Домены нажмите кнопку Создать.

  2. Заполните обязательные поля (например “vision” для имени домена) и нажмите кнопку Создать. Созданный домен должен появиться в списке.

Добавление клиентской системы для vision_core#

  1. Выберите необходимый домен в выпадающем списке слева вверху.

  2. Нажмите на раздел Безопасность и в открывшемся меню выберите Клиентские системы.

  3. На открывшейся странице нажмите кнопку Создать.

  4. Заполните форму Создание клиентской системы:

    • Идентификатор — идентификатор клиентской системы.

    • Наименование — название клиентской системы в Визион.

    • Описание — опциональное описание клиентской системы.

    • Тип доступаКонфиденциальный.

    • Адрес — IP-адрес и порт для подключения к клиентской системе, например:

      https://192.168.191.219/
      
    • Активность — включено.

  5. Нажмите кнопку Создать.

Изменение параметров клиентской системы для vision_core#

Откройте страницу со списком клиентских систем (Безопасность → Клиентские системы), выберите созданную клиентскую систему и на вкладке Основное нажмите кнопку Изменить. Заполните поля:

  • Типы взаимодействия

    Типы взаимодействия, разрешённые для клиентской системы.

    • Authorization Code Flow — стандартное OpenID Connect перенаправление, основанное на аутентификации с кодом авторизации.

    • Resource Owner Password Grant — клиентская система имеет доступ к имени пользователя и паролю и обменивает их напрямую с сервером авторизации на токен доступа.

  • Основной путь

    URL по умолчанию, используется если серверу требуется перенаправление или обратная ссылка на клиента.

    /
    
  • Пути перенаправления

    Список URL, на которые может быть перенаправлен браузер после успешного входа или выхода.

    https://192.168.191.219/*
    
  • Доверенные источники CORS

    Список доверенных источников в технологии CORS.

    https://192.168.191.219/*
    

При доступности приложений с нескольких URL (по IP, по домену), указать все допустимые варианты для Пути перенаправления и Доверенных источников CORS.

Введите значение в поле Пароль. Данный пароль будет использован в хранилище секретов Визиона.

Прочие параметры конфигурации можно оставить со значениями по умолчанию.

После ввода параметров нажмите кнопку Сохранить.

Добавление ролей для vision_core#

Для создания новой роли необходимо перейти в параметры клиентской системы (пример: выбрать домен “vision”, нажать “Клиентские системы” и выбрать “vision219”). Перейти на вкладку “Роли” и нажать кнопку Создать.

В появившемся меню заполнить поля в соответствии с ролевой моделью. Названия ролей должны совпадать с названиями, определёнными в Визион.

Нажмите кнопку Создать, после чего роль будет создана и появится в списке:

Редактирование области#

Для корректной передачи username пользователя следует в области “roles” добавить новое “Отображение”. Для этого следует на странице “Области” открыть области с названием “roles” и нажать кнопку Создать:

В появившемся меню следует заполнить следующие параметры:

Остальные значения можно оставить по умолчанию и нажать кнопку Сохранить.

Создание пользователя для Визион#

Выберите домен “Vision” и перейдите в раздел Безопасность → Пользователи. Нажмите кнопку Создать. В появившемся окне заполните необходимые поля и также нажмите кнопку Создать:

На вкладке “Основное” для пользователя выберите чекбокс “E-mail подтвержден” и “Активность” (если не выбрали на стадии создания пользователя).

Перейдите на вкладку “Полномочия”. Введите “Новый пароль”, повторите его в поле “Подтверждение”, снимите флаг Временный пароль и нажмите кнопку Сбросить пароль. В появившемся окне подтверждения действия нажмите кнопку Да.

Добавление роли пользователю для Визион#

Для созданного пользователя перейдите на вкладку “Роли”. В разделе “Роли уровня клиентской системы” выберите клиентскую систему “vision219”, выберите одну или несколько ролей и нажмите кнопку Назначить выбранные роли:

Убедитесь, что для созданной клиенткой системы (пример Vision → Клиентские системы → vision219 → области) в разделе “Области по умолчанию” в окне “Назначенные области” отображаются:

  • roles;

  • email.

Настройка конфигурации для 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/
  admin_server: http://bvs-public.skala-r.tech/
  realm: vision
  client_id: vision219
  client_secret: vault.auth.client_secret
  tls_insecure_skip_verify: true
  request_timeout: 5
# ...
---

Добавьте Client secret в хранилище секретов:

1. Создайте копию файла хранилища секретов:

    ```sh
    cp /opt/skala-r/vision/.secrets_vault \
       /opt/skala-r/vision/.secrets_vault_bak
    ```

1. Откройте хранилище секретов на изменение:

    ```sh
    ansible-vault edit /opt/skala-r/vision/.secrets_vault
    ```

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

1. Для ключа `vault.auth.client_secret` установите значение поля "Пароль" (раздел **Основное → Пароль для Клиентской системы**).

1. Сохраните изменения.

1. Примените изменения конфигурации:

    ```sh
    /opt/skala-r/vision/tools/update_server_config.sh
    ```

1. Проверьте успешность запуска `vision_core`:

    ```sh
    systemctl status vision_core.service
    ```

1. Убедитесь, что в логе нет ошибок после перезапуска:

    ```sh
    journalctl -fu vision_core -n 20
    ```


## Настройка BVS и Визион для автоматической рассылки уведомлений

Необходимо в домене master в BVS создать технического пользователя, учётная запись которого будет использована для получения списка пользователей и ролей, и задать для него пароль.

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

![](/images/Vision/1.6/auth_bvs_8_0.png)

В конфигурационном файле Визион требуется задать параметры для сервиса `vision_iamsyncer.service`. Этот сервис запрашивает данные пользователей, необходимые для рассылки, у провайдера аутентификации и передаёт их в сервис `vision_core`.

Параметры:

* `iamsyncer_systemd_service` — название сервиса, запрашивающего данные пользователей у провайдера аутентификации (изменять не требуется);

* `user_update_enabled` — включение режима сбора данных пользователей (true) или выключение (false);

* `tech_auth_client_id` — идентификатор клиента для сбора данных пользователей (изменять не требуется);

* `tech_auth_username` — имя технического пользователя;

* `tech_auth_password` — ключ в хранилище секретов, где хранится пароль технического пользователя;

* `fetch_interval` — интервал времени (в секундах), через который запускается каждый последующий процесс сбора данных пользователей.

Пример заполнения:

```yaml
---
# ...
auth:
  enabled: true
  auth_server: 'http://bvs-public.skala-r.tech/'
  admin_server: 'http://bvs-public.skala-r.tech/'
  auth_type: 'keycloak'
  realm: 'vision'
  client_id: 'vision219'
  client_secret: vault.auth.client_secret
  tls_insecure_skip_verify: true
  request_timeout: 5
iamsyncer:
  systemd_service: vision_iamsyncer.service
  user_update_enabled: true
  tech_auth_client_id: 'admin-cli'
  tech_auth_username: 'vision219-api-user'
  tech_auth_password: vault.auth.tech_auth_password
  fetch_interval: 3600
# ...

Добавьте пароль технического пользователя в хранилище секретов:

  1. Откройте хранилище секретов:

    ansible-vault edit /opt/skala-r/vision/.secrets_vault
    
  2. В значении параметра vault.auth.tech_auth_password укажите пароль, ранее присвоенный техническому пользователю.

  3. Примените изменения:

    /opt/skala-r/vision/tools/update_server_configs.sh