Инструкция подготовлена на примере 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. Настройка конфигурации#
В конфигурационный файл /opt/skala-r/etc/vision/server/vision_core/config.yml
необходимо внести следующие изменения.
В ключе “auth” необходимо указать:
- enabled - установить значение true
- auth_type: ‘avanpost’
- auth_server - URL Anapost, например “http://fam.skala-r.tech ”
- client_id - Client ID/ID synonym. Если при настройке использовался ID synonym - указывать его
- client_secret - значение является ключом из хранилища секретов. Не изменять.
- tls_insecure_skip_verify - пропуск проверки tls сертификатов.
Пример секции авторизации:
auth:
enabled: true
auth_type: avanpost
auth_server: http://fam.skala-r.tech
client_id: vision
client_secret: vault.auth.client_secret
tls_insecure_skip_verify: true
Необходимо указать реальное значение Client secret
клиента.
- Сделайте копию файла хранилища секретов:
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 клиента. - Сохраните файл и перезапустите сервис
vision_core.service
командой:systemctl restart vision_core.service
. - Проверьте успешный запуск vision_core командой:
systemctl status vision_core.service
и убедитесь, что в логе нет ошибок после перезапуска:journalctl -fu vision_core -n 20
.
Примечание. Действия пользователя при попытке войти в Визион без соответствующих прав.
При выполнение настроек, описанных выше, если пользователь без соответствующих прав попытает аутентифицироваться в Визион через 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: http://fam.skala-r.tech
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
. Для этого необходимо открыть хранилище секретов командой: ansible-vault edit /opt/skala-r/vision/.secrets_vault
и установить:
- для ключа
vault.auth.tech_auth_password
значение пароля технического пользователя, заданного в поле «Пароль пользователя» на вкладке «Безопасность» - для ключа
vault.auth.tech_auth_client_secret
значение секрета, заданного при создании технического приложения (клиента).
После внесения изменений в Avanpost и конфигурацию Визион необходимо:
- перезапустить сервис
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
- вручную перезапустив
Примечание. Возможно использование клиента Визион в качестве технического клиента для запроса данных пользователей и ролей. В этом случае необходимо сконфигурировать его в соответствии с описанием приведенном для технического приложения в данном разделе.