Инструкция подготовлена на примере FAM Avanpost v1.10.10.379
Терминология
- 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
- Resresh token
- Access token type - JSON web token
Ошибки аутентификации - снять флаг “Обрабатывать как ошибки протокола”. Необходимо для случаев, когда в Визион пытается зайти пользователь без соответствующих прав.
После нажмите Сохранить.
В разделе “Модель доступа” добавьте объект доступа.
- Код - Client ID или ID synonym, если был указан. Необходимо использовать только тот вариант, который потом будет использован в конфиге vision core (параметр auth: client_id)
- Описание - Права доступа
- Права (Scopes) - записи по количеству ролей, где:
- Код - название роли
- Описание - описание роли, отображаемое в интерфейсе Аванпоста
Добавьте роли с теми названиями, которые будут использованы в Визион. Для ролей администраторов - obj_model
для администратора объектной модели, role_model
для администратора информационной безопасности, vsn_config
для администратора конфигурации Визиона (он же администратор Grafana). Также можно создать пользовательские роли. Подробнее управление ролевой моделью Визион описано в разделе 17 Руководства Администратора
.
Нажмите Сохранить.
В разделе “Сервис” в “Настройка ролей и прав” нажмите кнопку Добавить и заполните следующие значения:
- Наименование - имя роли для интерфейса аванпоста
- Описание - опционально
Выберите необходимые объекты доступа - они будут справа иметь название приложения и заданное ранее описание.
Далее перейдите в созданную роль. Во вкладке “Пользователи” добавьте пользователей к этой роли:
Перейдите в раздел “Группы” и добавьте группу (для создания связи между пользователем и приложением). Заполните поля:
- Наименование - наименование клиента
- Описание - опционально
Нажмите Сохранить.
На странице группы во вкладках:
- Пользователи - добавьте пользователей, которые должны иметь доступ к приложению, независимо от роли.
- Приложения - назначьте созданное ранее приложение.
Примечание. Необходимо добавление пользователей в группу
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}]