FAM Avanpost

Инструкция подготовлена на примере FAM Avanpost v1.13.6

Терминология

  • Authentication (Аутентификация) — идентификация и проверка пользователя.
  • Authorization (Авторизация) — предоставление доступа пользователю.
  • Приложение — сущности, которые могут обращаться к Avanpost для аутентификации пользователя. Чаще всего ими являются приложения и службы, которые используют Avanpost для обеспечения единого входа в систему.
  • Пользователи — субъекты которые могут войти в вашу систему. Им можно назначить членство в группе и/или определённые роли.
  • Роли — определяют тип/категорию пользователя. Читатель, писатель — типичные роли. Обычно, приложения назначают доступ и разрешения конкретным ролям, а не отдельным пользователям.

Создание клиента#

Перейдите на страницу Приложения и нажмите кнопку Добавить приложение, после чего укажите следующие параметры:

  • Наименование — название для отображения в интерфейсе Avanpost;
  • Тип — Open ID.

После ввода параметров нажмите Далее. Введите данные:

  • Secret — “Пароль” для приложения.

  • Redirect URIs — через пробел допустимые адреса для перенаправления:

    • https://<ip_vision_vm>/vision/api/v1/auth/login
    • https://<ip_vision_vm>/vision/api/v1/auth/login-grafana
  • Base URL — https://<ip_vision_vm>. Адрес приложения.

  • Logout URL — не заполняется.

При доступности приложений с нескольких адресов (по IP, по домену) укажите все допустимые варианты для Redirect URIs.

После ввода параметров нажмите Далее.

Выберите процесс аутентификации, по умолчанию Password.

После ввода параметров нажмите Далее.

Оставьте включенным чекбокс “Сделать приложение активным” и нажмите Сохранить.

Настройка приложений и ролей#

В странице “Приложения” перейдите в “Настройки”, после нажмите на кнопку изменения настроек и измените следующие параметры:

  • ID synonym — синоним, который можно использовать вместо Client ID (опционально);

  • Post logout redirect URIs — <app_url>;

  • Allowed grant types — необходимо включить:

    • Authorization code;
    • Password;
    • Resresh token;
  • Access token type — JSON web token.

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

После нажмите Сохранить.

В разделе “Модель доступа” добавьте объект доступа.

  • Код — Client ID.

  • Описание — Права доступа.

  • Права (Scopes) — записи по количеству ролей, где:

    • Код — название роли;
    • Описание — описание роли, отображаемое в интерфейсе Аванпоста.

Примечание. Так как с версии 1.6 Визион переходит только на использование Client ID, для клиента Визион в административном интерфейсе Avanpost необходимо изменить значение поля «Код» на вкладке «Модель доступа» на значение Client ID.

Раздел «Настройки интеграции» — используется Client ID, ID synonym не используется:

Раздел «Модель доступа»:

Добавьте роли с теми названиями, которые будут использованы в Визион.

Для ролей администраторов:

  • obj_model — для администратора объектной модели;
  • role_model — для администратора информационной безопасности;
  • vsn_config — для администратора конфигурации Визиона (он же администратор Grafana).

Также можно создать пользовательские роли. Подробнее управление ролевой моделью Визион описано в Руководстве Администратора .

Нажмите Сохранить.

В разделе “Сервис” в “Настройка ролей и прав” нажмите кнопку Добавить и заполните следующие значения:

  • Наименование — имя роли для интерфейса Аванпоста.
  • Описание — опционально.

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

Далее перейдите в созданную роль. Во вкладке “Пользователи” добавьте пользователей к этой роли:

Перейдите в раздел “Группы” и добавьте группу (для создания связи между пользователем и приложением). Заполните поля:

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

Нажмите Сохранить.

На странице группы во вкладках:

  • Пользователи — добавьте пользователей, которые должны иметь доступ к приложению, независимо от роли.
  • Приложения — назначьте созданное ранее приложение.

Примечание. Необходимо добавление пользователей в группу lk-client для предоставления им доступа к личному кабинету (Avanpost). Это необходимо в случае, когда в Визион пытается зайти пользователь без соответствующих прав.

3. Настройка конфигурации#

Начиная с версии 1.7.1 Визион поддерживает конфигурацию, в которой один URL (поле auth_server) используется для авторизации пользователя при входе в Визион, а другой URL (поле admin_server) используется для получения данных о пользователе при формировании групп рассылки уведомлений.

В конфигурационный файл /opt/skala-r/etc/vision/server/vision_core/config.yml необходимо внести следующие изменения.

В ключе auth необходимо указать:

  • enabled: true;
  • auth_type: avanpost;
  • auth_server: URL Avanpost, используемый для авторизации пользователя, например, https://sso.dev.ecp.
  • admin_server: URL Avanpost, используемый Визион для получения данных пользователя из сервиса IAM, например https://adminsso.dev.ecp.
  • client_id: Client ID/ID synonym. Если при настройке использовался ID synonym — указать его.
  • client_secret: значение является ключом из хранилища секретов. Не изменять.
  • tls_insecure_skip_verify — пропуск проверки TLS сертификатов.

Пример секции авторизации:

auth:
  enabled: true
  auth_type: avanpost
  auth_server: https://sso.dev.ecp
  admin_server: https://adminsso.dev.ecp
  client_id: vision
  client_secret: vault.auth.client_secret
  tls_insecure_skip_verify: true

Необходимо указать реальное значение Client secret клиента.

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

    cp /opt/skala-r/vision/.secrets_vault /opt/skala-r/vision/.secrets_vault_bak
    
  2. Откройте хранилище секретов командой:

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

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

  3. Для ключа vault.auth.client_secret установите значение Client secret из раздела Credentials клиента.

  4. Сохраните файл и выполните скрипт /opt/skala-r/vision/tools/update_server_configs.sh (vision_core будет перезапущен в процессе) для применения настроек аутентификации к Grafana и переключения режима отображения дашбордов:

    • при выключенной аутентификации — дашборды доступны для просмотра всем;
    • при включенной аутентификации — дашборды доступны для просмотра только назначенным ролям.

    Для включения/выключения аутентификации в Визионе необходимо запускать скрипт /opt/skala-r/vision/tools/update_server_configs.sh с привилегиями пользователя root.

  5. Проверьте статус службы vision_core:

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

    journalctl -fu vision_core -n 20
    

    Обратите внимание на то, что при изменении настроек в /opt/skala-r/etc/vision/server/vision_core/config.yml и после перезапуска vision_core настройки в конфигурационном файле Grafana не меняются. Конфигурирование Grafana происходит после запуска скрипта /opt/skala-r/vision/tools/update_server_configs.sh.

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

При выполнение настроек, описанных выше, если пользователь без соответствующих прав попытает аутентифицироваться в Визион через Avanpost, он получит окно с сообщением “Ошибка доступа”. Для получения возможности повторной аутентификации ему необходимо перейти в личный кабинет (соответствующая ссылка будет отображена вместе с сообщением об ошибке) и завершить сессию, нажав Выход.

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

В версии Avanpost FAM v1.10.10.379 отключение регистрации на странице аутентификации пользователя осуществляется через конфигурационный файл Avanpost, пример пути конфигурационного файла /opt/idp/config.toml:

[selfregistration]
redirectUrl = 'https://<your_redirect_URL_after_registration>'
disabled = false

Функция восстановления пароля в данной версии отключается через редактирование шаблона страницы аутентификации.

Описание кастомизации пользовательских интерфейсов — указаны шаги, как редактировать шаблоны. В шаблоне login.password.html можно удалить/закомментировать следующий блок:

[{if ne .Username ""}]
<div class="field">
<a href="[{$path}]/user/restore_password?request_id=[{.RequestID}]">
  [{.ForgotPassword}]
</a>
</div>
[{else}]
<div class="field">
<a href="[{$path}]/user/restore_password?request_id=[{.RequestID}]">
  [{.ForgotPassword}]
</a>
</div>
[{end}]

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

Рекомендуется настроить отдельное техническое приложение (клиент), которое будет использоваться для подключения к Avanpost и получения списков пользователей и ролей. Для этого необходимо добавить приложение в интерфейсе Avanpost (в примере – tech_vision), пройдя несколько шагов.

На первом шаге (основные настройки) необходимо выбрать тип подключения:

На втором шаге (настройки интеграции) необходимо задать секрет, который потребуется для настройки конфигурации Визион. Необходимо также заполнить поле «Redirect URIs», которое не используется, но является обязательным:

На третьем шаге (настройка аутентификации) изменения не требуются. После добавления приложения необходимо зайти в него и на вкладке «Настройки» внести следующие изменения:

  • Allowed grant types: добавить Password.
  • Access token type: выбрать JSON web token.

Необходимо добавить технического пользователя, под учётной записью которого будут запрашиваться необходимые данные о пользователях и ролях (в примере – vision_api).

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

Необходимо создать роль с полномочиями на чтение объектов (пользователи, группы, приложения и т. д.) и назначить её техническому пользователю:

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

Параметры:

  • iamsyncer_systemd_service — название сервиса, запрашивающего данные пользователей у провайдера аутентификации (изменять не требуется).
  • user_update_enabled — включение режима сбора данных пользователей (true) или выключение (false).
  • tech_auth_client_id — идентификатор технического приложения (клиента) для сбора данных пользователей.
  • tech_auth_client_secret — ключ в secret vault, где хранится секрет для технического клиента.
  • tech_auth_username — имя технического пользователя.
  • tech_auth_password — ключ в secret vault, где хранится пароль технического пользователя.
  • fetch_interval — интервал времени (в секундах), через который запускается каждый последующий процесс сбора данных пользователей.

Пример заполнения всего блока auth, включая параметры, необходимые для vision_iamsyncer:

auth:
  enabled: true
  auth_type: avanpost
  auth_server: https://sso.dev.ecp
  admin_server: https://adminsso.dev.ecp
  client_id: 'd1c20d9a-06c5-4aee-b2c1-4224afb61996'
  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: '4fb8a11f-efdd-4adc-b685-f72d29d1141c'
  tech_auth_client_secret: vault.auth.tech_auth_client_secret
  tech_auth_username: 'vision_api'
  tech_auth_password: vault.auth.tech_auth_password
  fetch_interval: 3600

Пароль технического пользователя и секрет для технического приложения необходимо добавить в secrets_vault. Для этого необходимо:

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

    ansible-vault edit /opt/skala-r/vision/.secrets_vault
    
  2. Задать значения параметров:

    • vault.auth.tech_auth_password — значение пароля технического пользователя, заданного в поле «Пароль пользователя» на вкладке «Безопасность».
    • vault.auth.tech_auth_client_secret — значение секрета, заданного при создании технического приложения (клиента).

После внесения изменений в Avanpost и конфигурацию Визион необходимо:

  1. Перезапустить сервис vision_core (если изменялись настройки для клиента Визион):

    systemctl restart vision_core
    
  2. Применить конфигурацию сервиса vision_iamsyncer одним из способов:

    • Вручную перезапустить службу vision_iamsyncer:

      systemctl restart vision_iamsyncer
      
    • Выполнить скрипт /opt/skala-r/vision/tools/update_server_configs.sh (особенно, если менялись ещё какие-либо фрагменты конфигурации для других компонентов).

    Результаты работы сервиса vision_iamsyncer можно проверить командой:

    tail -f /opt/skala-r/var/log/vision/server/vision_iamsyncer/vision_iamsyncer.log
    
Примечание
Возможно использование клиента Визион в качестве технического клиента для запроса данных пользователей и ролей. В этом случае необходимо сконфигурировать его в соответствии с описанием, приведённым для технического приложения в данном разделе.