Инструкция подготовлена на примере 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
клиента.
-
Сделайте копию файла хранилища секретов:
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.sh
(vision_core будет перезапущен в процессе) для применения настроек аутентификации к Grafana и переключения режима отображения дашбордов:- при выключенной аутентификации — дашборды доступны для просмотра всем;
- при включенной аутентификации — дашборды доступны для просмотра только назначенным ролям.
Для включения/выключения аутентификации в Визионе необходимо запускать скрипт
/opt/skala-r/vision/tools/update_server_configs.sh
с привилегиями пользователя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, он получит окно с сообщением “Ошибка доступа”. Для получения возможности повторной аутентификации ему необходимо перейти в личный кабинет (соответствующая ссылка будет отображена вместе с сообщением об ошибке) и завершить сессию, нажав Выход.
Примечание. Отключение функции регистрации и восстановления пароля.
В версии 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
. Для этого необходимо:
-
Открыть хранилище секретов:
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
-
Примечание. Возможно использование клиента Визион в качестве технического клиента для запроса данных пользователей и ролей. В этом случае необходимо сконфигурировать его в соответствии с описанием, приведённым для технического приложения в данном разделе.