Настройка обязательности 2FA для входа в приложения ПУИД#
Данный раздел описывает политики обязательного прохождения второго фактора при входе в приложения ПУИД, а также исключения для отдельных пользователей и порядок изменения конфигурации.
Общая схема#
За проверку политик входа отвечает сервис roox-sso. Сервис читает правила из общего файла политик и применяет их к ресурсу входа в приложение:
/sso/<realm>/<clientId>/login
В выражениях политик используются значения amr — методы аутентификации, которые пользователь уже прошел в текущем входе.
Значение |
Описание |
|---|---|
|
Пользователь прошел аутентификацию по логину и паролю |
|
Пользователь прошел второй фактор через |
Типовая схема обязательного второго фактора выглядит следующим образом:
Портал самообслуживания разрешает вход после ввода пароля, без второго фактора, чтобы пользователь мог настроить
TOTP.Остальные прикладные клиенты требуют пароль и второй фактор
otp.При необходимости отдельная роль разрешает обход второго фактора для технически-обоснованных исключений.
Примечание
Не рекомендуется включение обязательного второго фактора сразу для всех точек входа без отдельного сценария первичной настройки TOTP. Пользователь без настроенного TOTP должен иметь возможность войти в кабинет самообслуживания и настроить второй фактор.
После изменения политик необходимо перезапустить сервис roox-sso командой:
sudo systemctl restart roox-sso
Если менялась только настройка видимости TOTP в кабинете самообслуживания, необходимо удостовериться, что браузер пользователя получил обновленный JSON-файл конфигурации без устаревшего кеша.
Типовые операции администратора#
Включение обязательного второго фактора для приложения#
Для включения обязательного второго фактора следует:
Определить
client_idприложения, для которого нужно изменить правило входа.В файле
/usr/share/tomcat/policy.propertiesнайти политику с ресурсом/sso/<realm>/<client_id>/login.В условии
allow-ifоставить требование пароля и добавить требование второго фактора.Оставить исключение для кабинета самообслуживания, если пользователи настраивают
TOTPчерез него.Перезапустить сервис
roox-sso.Проверить возможность входа для пользователя без
TOTPи пользователя с настроеннымTOTP.
Пример условия, которое требует пароль и второй фактор либо роль обхода:
(token["claims"]["amr"]?.contains("pwd") ?: false ) and (token["claims"]["amr"].contains("otp") or (token["claims"]["roles"]?.contains("acp_iam_2fa_bypass") ?: false ))
Пример полной политики для нового приложения example_app в реалме employee:
com.rooxteam.sso.authz.policies.employee_example_app.enabled=true
com.rooxteam.sso.authz.policies.employee_example_app.actionName=GET
com.rooxteam.sso.authz.policies.employee_example_app.conditions.spelTokenCondition1.parameters.allow-if=(token["claims"]["amr"]?.contains("pwd") ?: false ) and (token["claims"]["amr"].contains("otp") or (token["claims"]["roles"]?.contains("acp_iam_2fa_bypass") ?: false ))
com.rooxteam.sso.authz.policies.employee_example_app.conditions.spelTokenCondition1.type=SpelTokenCondition
com.rooxteam.sso.authz.policies.employee_example_app.resourceName=/sso/employee/example_app/login
Отключение обязательного второго фактора для приложения#
Для отключения обязательного второго фактора необходимо:
В файле
/usr/share/tomcat/policy.propertiesнайти политику приложения.Убрать проверку
otpиз условияallow-if, но оставить остальные проверки доступа.Не отключать всю политику через
enabled=false, если задача состоит только в отключении 2FA.Перезапустить сервис
roox-sso.Проверить возможность входа в приложение.
Пример условия, которое требует только пароль:
(token["claims"]["amr"]?.contains("pwd") ?: false )
Если приложение является административным, удаление проверки роли администратора не рекомендуется. Например, для административной панели может быть оставлено условие:
(token["claims"]["amr"]?.contains("pwd") ?: false ) and (token["claims"]["roles"]?.contains("acp_iam_admins") ?: false )
Настройка обхода 2FA для отдельной группы#
Для настройки обхода обязательного второго фактора необходимо:
Создать или выбрать группу в LDAP, членство в которой должно давать право входа без 2FA.
Удостовериться, что LDAP-атрибут с группами входит в
profileAttributesToFetchи сопоставлен с полемrolesв файле/usr/share/tomcat/ldap.properties.Указать имя роли в выражении политики.
Перезапустить сервис
roox-sso.Проверить возможность входа для пользователя, который состоит в группе обхода, и пользователя, который в нее не входит.
Примечание
Рекомендуется использовать обход только для технически-обоснованных исключений и регулярно проверять состав группы обхода.
Справочник путей к конфигурационным файлам#
Назначение |
Файл настройки на VM |
Ответственный сервис или компонент |
Действие после изменения |
|---|---|---|---|
Политики доступа и политики входа в приложения |
|
|
Перезапуск |
Получение ролей пользователя из LDAP |
|
|
Перезапуск |
Справочник параметров#
В колонке Значение по умолчанию указано значение, которое используется, если параметр не задан. Значение нет означает, что встроенного значения по умолчанию нет.
Параметр |
Значение по умолчанию |
Пример |
Описание |
|---|---|---|---|
|
|
|
Включает политику.
|
|
нет |
|
HTTP-метод или действие, к которому
применяется политика. Для
политики входа обычно используется
|
|
нет |
|
Ресурс, к которому применяется
политика.
Для входа в приложение используется
|
|
нет |
|
Тип условия политики. Для проверки
claims-токена используется
|
|
нет |
|
Условие допуска пользователя. Для
обязательного 2FA необходимо наличие
|
|
нет |
|
Сопоставление LDAP-атрибутов полям
пользователя ПУИД.
Для обхода 2FA поле |
|
пустой список |
|
LDAP-атрибуты, которые
|
Проверка после изменения#
После внесения изменений необходимо убедиться, что вход в приложения ПУИД осуществляется следующим образом:
Пользователь без настроенного
TOTPвходит в кабинет самообслуживания по паролю.Этот же пользователь не входит в приложения с обязательной 2FA до настройки
TOTP, если у него нет роли обхода.После настройки
TOTPпользователь должен входить в приложения после прохожденияOTP.Пользователь с ролью обхода должен входить в приложения без
OTP, если остальные условия политики выполнены.Пользователь без нужных прикладных ролей не должен получать доступ только из-за прохождения
OTP.
Примечание
Если вход отклонен неожиданно, следует проверить журнал /var/log/roox-sso/roox-sso.log.
Особенности Платформы Astra Cloud#
Для Платформы Astra Cloud используется реалм employee. В качестве второго фактора используется TOTP/ OTP: пользователь сначала входит по паролю в кабинет самообслуживания и настраивает второй фактор, после чего `roox-sso` запрашивает OTP при следующих входах и политики разрешают вход в остальные приложения.
Текущие политики входа#
Фрагмент текущей конфигурации находится в файле /usr/share/tomcat/policy.properties, раздел LOGIN POLICY.
Политика |
Ресурс |
Правило |
|---|---|---|
|
|
Достаточно |
|
|
Нужны |
|
|
Нужны |
|
|
Нужны |
|
|
Нужны |
|
|
Нужны |
|
|
Нужны |
Группа обхода 2FA#
Группа обхода задана в выражениях политик в файле /usr/share/tomcat/policy.properties через роль acp_iam_2fa_bypass:
(token["claims"]["roles"]?.contains("acp_iam_2fa_bypass") ?: false )
Итоговое правило для обычного приложения выглядит так:
com.rooxteam.sso.authz.policies.employee_aic.conditions.spelTokenCondition1.parameters.allow-if=(token["claims"]["amr"]?.contains("pwd") ?: false ) and (token["claims"]["amr"].contains("otp") or (token["claims"]["roles"]?.contains("acp_iam_2fa_bypass") ?: false ))
Роль acp_iam_2fa_bypass должна попадать в роли пользователя. В текущей LDAP-конфигурации роли читаются из атрибута memberOf:
com.rooxteam.uidm.ldapv3repository.attributes.map=login=uid,displayName=displayName,contactEmail=mail,contactPhone=mobile,uid=ipaUniqueID,roles=memberOf,organization_id=street,rbtadp=rbtadp,rbtaou=rbtaou,givenname=givenName,sn=sn
com.rooxteam.uidm.ldapv3repository.ldap.domain.local.profileAttributesToFetch=displayName,memberOf,mail,telephoneNumber,mobile,ipaUniqueID,userPrincipalName,street,rbtadp,rbtaou,givenName,sn
Если в LDAP используется другое имя группы для обхода 2FA, необходимо изменить имя роли в выражениях политик или настроить сопоставление LDAP-группы с ролью acp_iam_2fa_bypass в фпйле /usr/share/tomcat/ldap.properties.