Airlock поддерживает многофакторную аутентификацию (MFA) для локальных пользователей. Тип otp реализует стандарт TOTP — одноразовые коды на основе времени.
Для генерации кодов можно использовать любой TOTP-клиент: Authy, FreeOTP, KeePassXC и аналоги.
Доступные режимы second_factor
| Значение | Описание |
|---|---|
otp | Только TOTP (по умолчанию) |
webauthn | Только WebAuthn (аппаратные ключи, биометрия) |
on | TOTP и WebAuthn; у каждого пользователя должно быть хотя бы одно MFA-устройство |
optional | TOTP и WebAuthn доступны, но не обязательны |
off | MFA отключена |
Для пользователей SSO MFA настраивается на стороне IdP. Airlock не запрашивает MFA при SSO-входе, хотя пользователи могут зарегистрировать устройства.
Включение TOTP
Динамическая конфигурация
Получите текущий ресурс cluster_auth_preference:
airctl get cap > cap.yamlУстановите second_factor:
kind: cluster_auth_preference
metadata:
name: cluster-auth-preference
spec:
type: local
second_factor: "otp"
version: v2Примените:
airctl create -f cap.yamlДля обязательного MFA используйте second_factor: "on". Для постепенного внедрения — "optional".
Статическая конфигурация
Добавьте в /etc/airlock.yaml:
auth_service:
authentication:
type: local
second_factor: otpПерезапустите Auth Service после изменения.
Регистрация TOTP-устройства
Пользователь регистрирует TOTP через airsh:
airsh mfa add
# Choose device type [TOTP, WEBAUTHN]: totp
# Enter device name: phone
# Scan QR code with your TOTP app
# Enter an OTP token from the device: 123456
# MFA device "phone" added.Список зарегистрированных устройств:
airsh mfa lsУдаление устройства:
airsh mfa rm phoneВход с TOTP
После регистрации устройства при входе запрашивается одноразовый код:
airsh login --proxy=airlock.example.com
# Enter password for Airlock user alice:
# Enter an OTP token from a registered device: 654321Блокировка после неудачных попыток
Локальный пользователь блокируется на 20 минут при нескольких неудачных попытках входа или сброса пароля за 30 минут.
Разблокировка администратором:
airctl get users/alice > user.yamlУстановите status.is_locked: false и примените:
airctl create -f user.yamlСледующие шаги
- Настройте WebAuthn для аппаратных ключей
- Ознакомьтесь с локальными пользователями и управлением ролями