Методы аутентификации. Login MFA
StarVault поддерживает многофакторную аутентификацию (MFA) для проверки подлинности метода аутентификации с использованием различных типов аутентификации. Login MFA построена поверх системы идентификации StarVault.
1. Типы MFA
|
Метод аутентификации Token не может быть настроен с помощью встроенной в StarVault функции Login MFA. |
MFA в StarVault включает следующие типы входа:
-
Одноразовый пароль на основе времени (TOTP) - если настроен и включен на пути входа в систему, то при запросе на вход в API потребуется ввести код TOTP вместе с токеном StarVault. Пароль будет проверен на соответствие ключу TOTP, присутствующему в идентификаторе вызывающего абонента в StarVault.
-
Duo - если Duo push настроен и включен на пути входа, то зарегистрированное устройство пользователя получит push-уведомление, чтобы одобрить или запретить доступ к API. Имя пользователя Duo будет получено из псевдонима вызывающего пользователя. Обратите внимание, что Duo также можно настроить на использование кодов для аутентификации.
-
PingID - если PingID push настроен и включен на пути входа, зарегистрированное устройство пользователя получит push-уведомление, чтобы одобрить или отклонить доступ к API. Имя пользователя PingID будет получено из псевдонима вызывающего абонента.
2. Процедура Login MFA
|
Встроенная в StarVault функция Login MFA по умолчанию не защищает от грубого взлома паролей TOTP. Рекомендуем применять ограничения скорости для каждого клиента к соответствующим путям входа и/или mfa (например, |
MFA для входа в систему может быть настроена для защиты дальнейшей аутентификации по методу аутентификации. Чтобы включить MFA для входа в систему, необходимо настроить метод MFA. Подробную информацию о настройке метода MFA см. в разделе API Login MFA.
После того как метод MFA настроен, оператор может настроить применение MFA, используя полученный уникальный идентификатор метода MFA. Подробнее о том, как настроить конфигурацию внедрения MFA, см. в Login MFA Enforcement API.
MFA может быть применена к сущности, группе сущностей, определенному аксессору метода аутентификации или типу метода аутентификации. Запрос на вход, соответствующий любым ограничениям MFA, перед аутентификацией проходит дополнительную проверку MFA, например, одноразовый код доступа.
Существует два способа проверки запроса на вход, который подлежит проверке MFA.
2.1. Вход за одну итерацию (Single-Phase login)
При входе в систему за одну итерацию необходимая информация MFA включается в запрос на вход с помощью заголовка X-Vault-MFA. В этом случае проверка MFA выполняется как часть запроса на вход.
Учетные данные MFA извлекаются из HTTP-заголовка X-Vault-MFA. Поддерживаются два формата заголовка: mfa_method_id[:passcode] или mfa_method_id[:passcode=<passcode>]. Элемент в [] является необязательным. Если необходимо подтвердить несколько методов MFA, пользователь может передать несколько HTTP-заголовков X-Vault-MFA.
2.1.1. Образец запроса
curl \
--header "X-Vault-Token: ..." \
--header "X-Vault-MFA: d16fd3c2-50de-0b9b-eed3-0301dadeca10:695452" \
http://127.0.0.1:8200/v1/auth/userpass/login/alice
Если метод MFA не требует ввода пароля, то заголовок MFA запроса на вход в систему содержит только идентификатор метода.
$ curl \
--header "X-Vault-Token: ..." \
--header "X-Vault-MFA: d16fd3c2-50de-0b9b-eed3-0301dadeca10" \
http://127.0.0.1:8200/v1/auth/userpass/login/alice
В StarVault оператор может задать имя для метода MFA. Это имя должно быть уникальным. Имя метода MFA может быть использовано в заголовке MFA.
curl \
--header "X-Vault-Token: ..." \
--header "X-Vault-MFA: sample_mfa_method_name:695452" \
http://127.0.0.1:8200/v1/auth/userpass/login/alice
2.2. Вход за две итерации
Более традиционным и распространенным методом MFA является механизм двух запросов. При входе в систему за две итерации в заголовок X-Vault-MFA в запросе не указывается.
При попытке входа, если требуется MFA, система возвращает ответ, в котором содержится вся необходимая информация для прохождения проверки:
-
Идентификатор запроса MFA — связывает текущий вход с процедурой проверки.
-
Список методов MFA, которые необходимо пройти (например, TOTP), с указанием их идентификаторов и того, используется ли код.
Подробнее о настройке с помощью TOTP см. статью Настройка MFA с использованием TOTP
На основе этих данных пользователь или система определяет, какие именно шаги нужно выполнить для завершения аутентификации.
Хотя в примере рассматривается вход через userpass, такое же поведение действует для любого метода аутентификации, для которого включена MFA.
2.2.1. Образец двухфазного ответа на вход в систему
{
"request_id": "1044c151-13ea-1cf5-f6ed-000c42efd477",
"lease_id": "",
"lease_duration": 0,
"renewable": false,
"data": null,
"warnings": [
"A login request was issued that is subject to MFA validation. Please make sure to validate the login by sending another request to mfa/validate endpoint."
],
"auth": {
"client_token": "",
"accessor": "",
"policies": null,
"token_policies": null,
"identity_policies": null,
"metadata": null,
"orphan": false,
"entity_id": "",
"lease_duration": 0,
"renewable": false,
"mfa_requirement": {
"mfa_request_id": "d0c9eec7-6921-8cc0-be62-202b289ef163",
"mfa_constraints": {
"enforcementConfigUserpass": {
"any": [
{
"type": "totp",
"id": "820997b3-110e-c251-7e8b-ff4aa428a6e1",
"uses_passcode": true,
"name": "sample_mfa_method_name",
}
]
}
}
}
}
}
Обратите внимание, что значение uses_passcode всегда будет показывать true для TOTP, и false PingID. Для метода Duo значение может быть настроено в рамках конфигурации метода с помощью параметра use_passcode. Подробную информацию о том, как настроить булево значение для Duo, см. в Duo API.
Чтобы подтвердить запрос на вход с ограничением MFA, пользователь отправляет второй запрос на конечную точку validate, содержащий идентификатор запроса MFA и полезную нагрузку MFA. Полезная нагрузка MFA содержит карту идентификаторов методов и связанных с ними учетных данных. Если настроенные методы MFA (PingID и Duo), не требуют ввода пароля, связанные с ними учетные данные будут представлять собой список с одной пустой строкой.
2.2.2. Образец полезной нагрузки
{
"mfa_request_id": "5879c74a-1418-1948-7be9-97b209d693a7",
"mfa_payload": {
"d16fd3c2-50de-0b9b-eed3-0301dadeca10": ["910201"]
}
}
2.2.3. Образец запроса
curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/sys/mfa/validate
2.2.4. Образец запроса через CLI
Пользователь также может использовать команду CLI write для подтверждения запроса на вход.
starvault write sys/mfa/validate -format=json @payload.json
2.2.5. Интерактивный CLI для входа в систему MFA
StarVault поддерживает интерактивный способ аутентификации в методе аутентификации с помощью CLI только в том случае, если запрос на вход подвергается проверке одним методом MFA. В этой ситуации, если метод MFA настроен на использование кодов, после отправки обычного запроса на вход пользователю предлагается ввести код. При успешной проверке MFA возвращается клиентский токен. Если настроенные методы MFA — PingID и Duo — не требуют ввода пароля и имеют внеполосные механизмы проверки дополнительного фактора, пользователю сообщается о необходимости проверить приложение аутентификатора. Это избавляет пользователя от необходимости отправлять второй запрос отдельно для проверки запроса на вход. Чтобы отключить интерактивный вход, пользователю необходимо передать флаг non-interactive в запросе на вход.
starvault write -non-interactive sys/mfa/validate -format=json @payload.json
2.3. Ограничение скорости проверки пароля TOTP
В StarVault по умолчанию включено ограничение скорости входа в MFA. По умолчанию StarVault допускает 5 последовательных неудачных попыток проверки пароля TOTP. Это значение также можно настроить, добавив max_validation_attempts в конфигурацию TOTP. Если количество неудачных попыток проверки пароля TOTP превысит заданное значение, пользователю придется подождать, пока не будет получен новый код TOTP.