Двухфакторная аутентификация для Ansible AWX
Описание
Ansible AWX умеет аутентифицировать пользователей в каталоге по протоколу LDAP. Если указать в настройках адрес локального инстанса Simple2FA вместо адреса контроллера домена, вход в веб-интерфейс AWX получит второй фактор: пользователь подтверждает вход на своём устройстве, и только после этого AWX открывает сессию.
Метод подключения — LDAP-прокси. Второй фактор подтверждается push-уведомлением в мобильном приложении, в Telegram или в MAX.
Схема работы:
- Пользователь открывает AWX и вводит логин и пароль.
- AWX обращается по LDAP к локальному инстансу Simple2FA.
- Инстанс проверяет логин и пароль в каталоге организации.
- Инстанс запрашивает у пользователя подтверждение вторым фактором.
- Пользователь подтверждает вход, и AWX открывает сессию.
Перед началом работы
- В глобальных настройках инстанса включён LDAP-прокси, порты опубликованы на хосте — шаги 1 и 2 общей инструкции.
- С сервера AWX открыт доступ к инстансу по порту LDAP (
1389) или LDAPS (1636). - DN сервисной учётной записи добавлен в список сервисных в глобальных настройках Simple2FA.
- Сохранён доступ под локальным администратором AWX — он не зависит от настроек LDAP.
Подготовка в Simple2FA
В панели администратора создайте ресурс:
| Поле | Значение |
|---|---|
| Название | Ansible AWX |
| Протокол | LDAP |
| CIDR клиентов LDAP | IP-адрес сервера AWX, например 10.0.0.40/32 |
| Проверять первый фактор | Включить |
| Поставщики учётных записей | Каталог, в котором проверяется пароль |
Добавьте ресурс в группу пользователей, которым разрешён вход в AWX.
Настройка Ansible AWX
Войдите в AWX под администратором и откройте Settings → Authentication → LDAP settings. Заполните параметры:
- LDAP Server URI — адрес инстанса Simple2FA:
ldap://simple2fa.example.local:1389илиldaps://simple2fa.example.local:1636; - LDAP Bind DN — DN сервисной учётной записи, например
CN=ldapbind,CN=Users,DC=example,DC=local; - LDAP Bind Password — её пароль из каталога;
- LDAP Group Type —
ActiveDirectoryGroupTypeдля Active Directory; -
LDAP User Search — область и фильтр поиска пользователей в вашем каталоге:
[ "CN=Users,DC=example,DC=local", "SCOPE_SUBTREE", "(sAMAccountName=%(user)s)" ] -
LDAP Group Search — область и фильтр поиска групп:
[ "DC=example,DC=local", "SCOPE_SUBTREE", "(objectClass=group)" ] -
LDAP User Attribute Map — сопоставление атрибутов каталога с полями пользователя AWX:
{ "first_name": "givenName", "last_name": "sn", "email": "mail" } -
LDAP Connection Options — параметры соединения. Увеличьте сетевой таймаут, чтобы пользователь успел подтвердить вход:
{ "OPT_REFERRALS": 0, "OPT_NETWORK_TIMEOUT": 90 }
При необходимости заполните LDAP Organization Map или LDAP Team Map — они определяют, в какую организацию и команду попадают пользователи каталога. Нажмите Save.
Таймаут должен превышать время ожидания подтверждения
По умолчанию Simple2FA ждёт ответа пользователя 60 секунд. Если сетевой таймаут AWX меньше, соединение оборвётся раньше подтверждения, и вход не пройдёт. Значение 90 секунд даёт запас; при другом значении «Таймаута ожидания подтверждения» пересчитайте его.
Проверка работы
- Откройте страницу входа AWX в приватном окне браузера.
- Введите логин и пароль тестового пользователя каталога.
- Дождитесь запроса подтверждения и подтвердите вход.
- Убедитесь, что AWX открыл сессию, а в журнале «Попытки авторизации» появилась успешная попытка на ресурсе Ansible AWX.
Смотрите также
- Приложения с входом по LDAP — общая часть настройки и диагностика
- Ресурсы
- Настройка ресурсов