FAM Avanpost

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

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

Authentication (Аутентификация)#

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

Authorization (Авторизация)#

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

Приложение#

Сущности, которые могут обращаться к Avanpost для аутентификации пользователя. Чаще всего ими являются приложения и службы, которые используют Avanpost для обеспечения единого входа в систему.

Пользователи#

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

Роли::#

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

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

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

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

  1. Перейдите на страницу Приложения и нажмите кнопку Добавить приложение.

  2. Заполните форму:

    • Наименование: название для отображения в интерфейсе Avanpost.

    • Тип: Open ID.

  3. Нажмите кнопку Далее.

  4. Заполните ещё одну форму:

    • Secret: пароль для приложения.

    • Redirect URIs:

      Одной строкой через пробел введите допустимые адреса для перенаправления:

      https://<ip_vision_vm>/vision/api/v1/auth/login
      https://<ip_vision_vm>/vision/api/v1/auth/login-grafana
      

      Если приложение доступно по нескольким IP-адресам и доменным именам, укажите все допустимые варианты.

    • Base URL: адрес приложения:

      https://<ip_vision_vm>
      
    • Logout URL: оставьте незаполненным.

  5. Нажмите кнопку Далее.

  6. Выберите процесс аутентификации.

    По умолчанию используется Password.

  7. Нажмите кнопку Далее.

  8. Убедитесь что установлен флаг Сделать приложение активным и нажмите кнопку Сохранить.

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

  1. На странице Приложения перейдите в раздел Настройки.

  2. Нажмите кнопку изменения настроек.

  3. Укажите значения параметров:

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

    • Post logout redirect URIs: <app_url>.

    • Allowed grant types: включите:

      • Authorization code;

      • Password;

      • Resresh token.

    • Access token type: JSON web token.

    • Ошибки аутентификации: снимите флаг Обрабатывать как ошибки протокола.

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

  4. Нажмите кнопку Сохранить.

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

    • Код: если используется ID synonim, укажите его. В противном случае введите значение поля Client ID из раздела Настройки интеграции.

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

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

      • Код — название роли.

        Для ролей администраторов используйте названия, перечисленные на странице Роли администраторов .

        Названия пользовательских ролей заполните произвольно.

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

    Код Описание
    inventory Администратор инвентаря
    obj_model Администратор объектной модели
    role_model Администратор информационной безопасности
    vsn_config Администратор объектов мониторинга
  6. Нажмите кнопку Сохранить.

  7. В разделе Сервис → Настройка ролей и прав нажмите кнопку Добавить.

  8. Заполните форму:

    • Наименование: название роли для интерфейса Аванпоста.

    • Описание: необязательное описание роли.

  9. Выберите необходимые объекты доступа.

  10. Чтобы назначить роль пользователям:

    1. Перейдите на страницу созданной роли и выберите вкладку Пользователи.

    2. Используйте кнопку Добавить пользователей.

  11. Для создания связи между пользователем и приложением:

    1. Выберите вкладку Группы и добавьте группу.

    2. Заполните форму:

      • Наименование: название клиента.

      • Описание: необязательное описание клиента.

  12. Нажмите кнопку Сохранить.

  13. На странице группы:

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

    2. Выберите вкладку Приложения и назначьте созданное ранее приложение.

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

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

Настройку конфигурации выполняйте в следующем порядке:

  1. В конфигурационном файле /opt/skala-r/etc/vision/server/vision_core/config.yml секцию auth заполните по образцу:

    auth:
      enabled: true
      auth_type: avanpost
      auth_server: https://sso.example.com
      admin_server: https://adminsso.example.com
      client_id: vision
      client_secret: vault.auth.client_secret
      tls_insecure_skip_verify: true
    
    Важно
    Не изменяйте значение поля auth.client_secret! Это ссылка на значение, которое хранится в Ansible Vault.
  2. Чтобы указать фактическое значение секрета клиента:

    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. Сохраните изменения.

  3. Запустите скрипт:

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

    vision_core будет перезапущен в процессе.

    При изменении режима аутентификации в Визионе необходимо запускать этот скрипт с привилегиями пользователя root.

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

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

    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.

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

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

  1. Перейти в личный кабинет.

    Соответствующая ссылка будет отображена вместе с сообщением об ошибке.

  2. Завершить сессию, нажав кнопку Выход.

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

В версии 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), пройдя несколько шагов.

  1. На шаге Основные настройки выберите тип подключения и нажмите кнопку Далее.

  2. На шаге Настройки интеграции укажите параметры, необходимые для настройки конфигурации Визион:

    • Secret: секрет для подключения.

    • Redirect URIs: URL перенаправления.

      Это поле обязательно для заполнения, но фактически его значение не используется.

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

      https://192.168.190.190/vision/*
      
  3. На шаге Настройки аутентификации никаких изменений делать не нужно.

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

    • Allowed grant types: перевести переключатель Password во включенное положение.

    • Access token type: JSON web token.

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

  6. Создайте группу, добавьте в неё пользователя и назначьте техническое приложение.

    Во вкладке Приложения переключатель Назначено должен быть во включенном положении.

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

  8. В конфигурационном файле Визион config.yml измените значения следующих параметров:

    • iamsyncer.fetch_interval;

    • iamsyncer.tech_auth_client_id;

    • iamsyncer.tech_auth_username;

    • iamsyncer.user_update_enabled.

    Пример заполнения блоков auth и 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
    iamsyncer:
      tls_insecure_skip_verify: true
      request_timeout: 5
      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
    
  9. Добавьте в хранилище секретов пароль технического пользователя и секрет для технического приложения:

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

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

      • vault.auth.tech_auth_password: пароль технического пользователя, заданный на вкладке Безопасность в поле Пароль пользователя.

      • vault.auth.tech_auth_client_secret: секрет, заданный при создании технического приложения (клиента).

  10. Если изменились настройки для клиента Визион, перезапустите сервис vision_core:

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

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

      systemctl restart vision_iamsyncer
      
    • Запустите скрипт /opt/skala-r/vision/tools/update_server_configs.sh.

      Этот способ рекомендуется в тех случаях, когда менялись ещё какие-либо фрагменты конфигурации для других компонентов.

  12. Для проверки работы сервиса vision_iamsyncer выполните команду:

    tail -f /opt/skala-r/var/log/vision/server/vision_iamsyncer/vision_iamsyncer.log
    

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