Инструкция подготовлена на примере FAM Avanpost v1.10.10.379
Терминология
- Authentication (Аутентификация) — идентификация и проверка пользователя.
- Authorization (Авторизация) — предоставление доступа пользователю.
- Приложение — сущности, которые могут обращаться к Avanpost для аутентификации пользователя. Чаще всего ими являются приложения и службы, которые используют Avanpost для обеспечения единого входа в систему.
- Пользователи — субъекты которые могут войти в вашу систему. Им можно назначить членство в группе и/или определенные роли.
- Роли — определяют тип/категорию пользователя. Читатель, писатель — типичные роли. Обычно, приложения назначают доступ и разрешения конкретным ролям, а не отдельным пользователям.
Приложения Визиона требующие клиентов:
- Vision Core
- Grafana
1 Создание клиента#
Для каждого приложения необходимо создать клиента.
- Перейдите на страницу Приложения и нажмите кнопку Добавить приложение, после чего укажите следующие параметры.
- Наименование - название для отображения в интерфейсе Avanpost
- Тип - Open ID
После ввода параметров нажмите Далее и продолжите ввод:
- Secret - “Пароль” для приложения
- Redirect URIs - через пробел допустимые адреса для перенаправления
- Vision Core: <app_url>/vision/api/v1/auth/login
- Grafana: <app_url>/login/generic_oauth
- Base URL - <app_url>. Адрес приложения
- Logout URL - url для выхода из приложения
Где <app_url>, это:
- для Vision Core: https://<ip_vision_vm>
- для Grafana: https://<ip_vision_vm>/vision/grafana
При доступности приложений с нескольких <app_url> (по IP, по домену) укажите все допустимые варианты для Redirect IRIs.
-
После ввода параметров нажмите Далее.
-
Выберите процесс аутентификации, по умолчанию Password.
-
После ввода параметров нажмите Далее.
-
Оставьте флажок Сделать приложение активным, нажмите Сохранить.
2 Настройка приложений и ролей#
- В странице приложения перейдите в Настройки
- Нажмите на кнопку изменения настроек
- Измените следующие параметры:
- ID synonym - синоним, который можно использовать вместо Client ID (опционально)
- Allowed grant types - необходимо включить:
- Authorization code
- Resresh token
- Access token type - JSON web token
- Ошибки аутентификации - снять флаг Обрабатывать как ошибки протокола. Необходимо для случаев, когда в Визион пытается зайти пользователь без соответствующих прав.
2.1 Logout Grafana#
Необходимо указать Post logout redirect URIs - https://<app_url>/login, для активации Single logout
После нажмите Сохранить.
2.2 Модель доступа для Vision Core#
- В разделе Модель доступа добавьте объект доступа.
- Код - Client ID или ID synonym, если был указан. Необходимо использовать только тот вариант, который потом будет использован в конфиге vision core (параметр auth: client_id)
- Описание - Права доступа
- Права (Scopes) - записи по количеству ролей, где:
- Код - название роли
- Описание - описание роли, отображаемое в интерфейсе Аванпост
В данный момент в Vision Core следующие роли: writer - полный доступ reader - только чтение
- После нажмите Сохранить.
Примечание: Необходимо создать количество ролей и групп равное реальному количеству ролей. Например, роли reader и writer должны иметь соответствующие группы и роли.
- В разделе Сервис в Настройка ролей и прав нажмите кнопку “Добавить” и заполните следующие значения:
- Наименование - имя роли для интерфейса аванпоста
- Описание - опционально
- Выберите необходимые объекты доступа - они будут справа иметь название приложения и заданное ранее описание.
- Далее перейдите в раздел Группы и добавьте группу (или используйте существующую).
- Наименование - удобное обозначение группы
- Описание - опционально
-
Нажмите Сохранить.
-
На странице группы во вкладках:
- Пользователи - добавить пользователей в соответствии с его ролью.
- Приложения - назначьте нужное приложение(vision core).
- Роли - найдите и назначьте соответствующую роль созданную в предыдущем пункте.
2.3 Модель доступа для Grafana#
В соответствии с https://docs.avanpost.ru/fam/1.12/67732720.html
Необходимо на странице Группы создать группу под каждую роль Grafana:
Имя группы | Описание |
---|---|
Grafana Admins | Admin |
Grafana Editor | Editor |
GrafanaAdmin | Server administrator |
Grafana Viewer | Viewer |
Необходимо создать группы описанным выше образом. Также необходимо добавить пользователей в соответствующие группы и назначить приложение (Grafana). Роли создавать и назначать не нужно.
Примечание. Необходимо добавить пользователей в группу
lk-client
для предоставления им доступа к личному кабинету (Avanpost). Это необходимо в случае, когда в Визион пытается зайти пользователь без соответствующих прав.
3 Настройка конфигурации#
3.1 Vision Core#
В конфигурационный файл необходимо внести следующие изменения - /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 - ID приложения.
- 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/.vault_store /opt/skala-r/vision/.vault_store_bak”.
-
Запустите команду
/opt/skala-r/vision/server/vision_venv/bin/python3 -c "import storage; print(storage.get_initial_data())" > ~/.vault_pass && ansible-vault edit /opt/skala-r/vision/.secrets_vault --vault-password-file=~/.vault_pass && rm -rf ~/.vault_pass && systemctl restart vision_core.service
-
Для ключа “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
.
3.2 Grafana#
Настройка авторизации в Grafana .
Примечание. Дествия пользователя при попытке войти в Визион без соответствующих прав. При выполнении настроек, описанных выше, если пользователь без соответствующих прав попытается аутентифицироваться в Визион через Avanpost, он получит окно с сообщением “Ошибка доступа”:
Для получения возможности повторной аутентификации ему необходимо пройти по ссылке “Перейти в личный кабинет” и завершить сессию, нажав Выход.
4 Отключение функции регистрации и восстановления пароля#
В версии 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}]
5 Рекомендации по настройке FAM#
5.1 Пароли должны передаваться по сети исключительно в зашифрованном виде. Пароли должны храниться в АС только с использованием защищенных протоколов взаимодействия или в зашифрованном виде.#
Взаимодействие между компонентами проходит через https. В настройках парольной политики в Avanpost доступны шифрование и хеширование пароля.
Сервис→Настройки политики паролей→Добавить или редактировать политику.
Пароли в vision_core хранятся в зашифрованном виде в ansible vault (.secrets_vault)
5.2 Должна отсутствовать возможность изменить пароль методом замены объекта, хранящего преобразованный (зашифрованный/хешированный) пароль.#
В vision_core при подмене vault’а изменные секреты не будут прочитаны из-за несовпадения ключей шифрования.
В Аванпост FAM все манипуляции с паролями фиксируются в журнале безопасности, спецификация журнала безопасности https://docs.avanpost.ru/fam/1.12/87885025.html
Отчеты→Журнал событий безопасности
5.3 Установлен запрет на повторное использование одного и того же пароля.#
В разделе Сервис→Настройки политики паролей→(Добавить или редактировать политику) задается парольная политика в том числе:
- Минимальная длина
- Максимальная длина
- Содержание цифр
- Содержание букв в верхнем регистре
- Содержание букв в нижнем регистре
- Содержание специальных символов
- Настройка запрета повторного использования одного и того же пароля - активируется включением “Вести журнал паролей” .
5.3 Смена пароля пользователем#
Пользователь может сменить пароль перейдя в личный кабинет (пример: http://fam.skala-r.tech/lk) , авторизовавшись и перейдя в раздел Профиль.
Для этого группе пользователей необходимо назначить приложение lk-client в списке приложений группы
Для смены пароля администратора см. раздел security:
в файле /opt/skala-r/etc/vision/server/vision_core/grafana.yml
на служебной ВМ Визиона и раздел “13.3 Описание хранимых секретов” в руководстве администратора.
5.4 Осуществление контроля и подсчет попыток входа в АС (успешных или неуспешных – несанкционированных).#
В Avanpost в Отчеты→Журнал аутентификаций хранится информация о количестве попыток входа
5.5 Настройка блокировки входа пользователя до разблокирования администратором системы или АБ при достижении заданного числа неуспешных попыток входа.#
В Avanpost в Сервис→Настройки политики паролей→Добавить или редактировать политику в разделе Блокировка пользователь производятся необходимые настройки.
После достижения числа неудачных попыток пользователь был заблокирован, администратор может его разблокировать
5.6 Превышении количества неудачных попыток входа.#
Avanpost по умолчанию уведомляет пользователя о превышении количества неудачных попыток входа. После превышения заданного количества неудачных попыток входа Avanpost не предоставляет доступ при предъявлении правильного пароля.
5.7 Механизм блокировки пользователя с его оперативным отключением от ресурсов#
В Avanpost на вкладке Сервис→Менеджер сессий можно отключить пользователя от ресурса, завершив его сессию
Также это можно сделать в карточке пользователя в разделе Безопасность→Текущие сессии.
В карточке пользователя у администратора есть возможность блокировки пользователя. После блокировки пользователя его сессии автоматически завершаются.