Инструкция подготовлена на примере 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Если приложение доступно по нескольким IP-адресам и доменным именам, укажите все допустимые варианты.
-
Base URL: адрес приложения:
https://<ip_vision_vm> -
Logout URL: оставьте незаполненным.
-
-
Нажмите кнопку Далее.
-
Выберите процесс аутентификации.
По умолчанию используется 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.
-
Ошибки аутентификации: снимите флаг Обрабатывать как ошибки протокола.
Необходимо для случаев, когда в Визион пытается зайти пользователь без соответствующих прав.
-
-
Нажмите кнопку Сохранить.
-
В разделе Модель доступа добавьте объект доступа.
-
Код: если используется ID synonim, укажите его. В противном случае введите значение поля Client ID из раздела Настройки интеграции.
-
Описание:
Права доступа. -
Права (Scopes): записи по количеству ролей, где:
-
Код — название роли.
Для ролей администраторов используйте названия, перечисленные на странице Роли администраторов .
Названия пользовательских ролей заполните произвольно.
-
Описание — описание роли, отображаемое в интерфейсе Аванпоста.
-
Код Описание inventoryАдминистратор инвентаря obj_modelАдминистратор объектной модели role_modelАдминистратор информационной безопасности vsn_configАдминистратор объектов мониторинга -
-
Нажмите кнопку Сохранить.
-
В разделе Сервис → Настройка ролей и прав нажмите кнопку Добавить.
-
Заполните форму:
-
Наименование: название роли для интерфейса Аванпоста.
-
Описание: необязательное описание роли.
-
-
Выберите необходимые объекты доступа.
-
Чтобы назначить роль пользователям:
-
Перейдите на страницу созданной роли и выберите вкладку Пользователи.
-
Используйте кнопку Добавить пользователей.
-
-
Для создания связи между пользователем и приложением:
-
Выберите вкладку Группы и добавьте группу.
-
Заполните форму:
-
Наименование: название клиента.
-
Описание: необязательное описание клиента.
-
-
-
Нажмите кнопку Сохранить.
-
На странице группы:
-
Выберите вкладку Пользователи и добавьте пользователей, которые должны иметь доступ к приложению независимо от роли.
-
Выберите вкладку Приложения и назначьте созданное ранее приложение.
-
Чтобы предоставить пользователям доступ к личному кабинету Avanpost, добавьте их в группу lk-client. Эта настройка необходима для случаев, когда пользователи попытаются войти в Визион, не имея необходимых прав.
Настройка конфигурации#
Настройку конфигурации выполняйте в следующем порядке:
-
В конфигурационном файле
/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. -
Чтобы указать фактическое значение секрета клиента:
-
Создайте копию файла хранилища секретов:
cp /opt/skala-r/vision/.secrets_vault /opt/skala-r/vision/.secrets_vault_bak -
Откройте хранилище секретов:
ansible-vault edit /opt/skala-r/vision/.secrets_vaultВажно Для оперирования содержимым хранилища требуется ключ, выдаваемый разработчиком Визиона. -
Для ключа
vault.auth.client_secretустановите значение Client secret из раздела Credentials клиента. -
Сохраните изменения.
-
-
Запустите скрипт:
/opt/skala-r/vision/tools/update_server_configs.shvision_core будет перезапущен в процессе.
При изменении режима аутентификации в Визионе необходимо запускать этот скрипт с привилегиями пользователя
root. -
Проверьте статус службы vision_core:
systemctl status vision_core.service -
Убедитесь, что в логе нет ошибок после перезапуска:
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 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), пройдя несколько шагов.
-
На шаге Основные настройки выберите тип подключения и нажмите кнопку Далее.
-
На шаге Настройки интеграции укажите параметры, необходимые для настройки конфигурации Визион:
-
Secret: секрет для подключения.
-
Redirect URIs: URL перенаправления.
Это поле обязательно для заполнения, но фактически его значение не используется.
Пример заполнения:
https://192.168.190.190/vision/*
-
-
На шаге Настройки аутентификации никаких изменений делать не нужно.
-
После добавления приложения необходимо зайти в него, выбрать вкладку Настройки и указать значения полей:
-
Allowed grant types: перевести переключатель Password во включенное положение.
-
Access token type: JSON web token.
-
-
Добавьте технического пользователя, под учётной записью которого будут запрашиваться необходимые данные о пользователях и ролях (в примере —
vision_api). -
Создайте группу, добавьте в неё пользователя и назначьте техническое приложение.
Во вкладке Приложения переключатель Назначено должен быть во включенном положении.
-
Создайте роль с полномочиями на чтение объектов (пользователи, группы, приложения и т. д.) и назначьте её техническому пользователю.
-
В конфигурационном файле Визион
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 -
-
Добавьте в хранилище секретов пароль технического пользователя и секрет для технического приложения:
-
Откройте хранилище секретов:
ansible-vault edit /opt/skala-r/vision/.secrets_vault -
Задайте значения параметров:
-
vault.auth.tech_auth_password: пароль технического пользователя, заданный на вкладке Безопасность в поле Пароль пользователя. -
vault.auth.tech_auth_client_secret: секрет, заданный при создании технического приложения (клиента).
-
-
-
Если изменились настройки для клиента Визион, перезапустите сервис
vision_core:systemctl restart vision_core -
Примените конфигурацию сервиса
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
Возможно использование клиента Визион в качестве технического клиента для запроса данных пользователей и ролей. В этом случае необходимо сконфигурировать его в соответствии с описанием, приведённым для технического приложения в данном разделе.