FAM Avanpost

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

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

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

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

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

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

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

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

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

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

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

Где <app_url>, это https://<ip_vision_vm>.

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

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

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

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

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

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

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

  • 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}]

3. Настройка 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
    

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