Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Методы аутентификации. Login MFA

StarVault поддерживает многофакторную аутентификацию (MFA) для проверки подлинности метода аутентификации с использованием различных типов аутентификации. Login MFA построена поверх системы идентификации StarVault.

1. Типы MFA

MFA в StarVault включает следующие типы входа:

Метод аутентификации Token не может быть настроен с помощью встроенной в StarVault функции Login MFA.

  • Одноразовый пароль на основе времени (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 (например, /sys/mfa/validate). Внешние методы MFA (Duo, Ping) могут уже предоставлять настраиваемое ограничение скорости. Ограничение скорости для путей Login 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. Вход за две итерации (Two-Phase login)

Более традиционным и распространенным методом MFA является механизм двух запросов, также называемый Two-phase Login MFA. При входе в систему за две итерации в заголовок X-Vault-MFA в запросе не указывается. В этом случае после отправки обычного запроса на вход пользователь получает ответ auth, в котором содержатся требования MFA. Требования MFA содержат идентификатор запроса MFA, который идентифицирует запрос на вход в систему, нуждающийся в проверке. Кроме того, требования MFA содержат ограничения MFA, которые определяют необходимые типы MFA для проверки запроса, соответствующие идентификаторы методов и булево значение, показывающее, использует ли метод MFA коды или нет. Ограничения MFA образуют вложенную карту в MFA Requirement и представляют все принудительные меры MFA, которые соответствуют запросу на вход. Хотя приведенный ниже пример относится к логину 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.

3. FAQ по Login MFA

В этом разделе FAQ собраны часто задаваемые вопросы о функции Login MFA.

3.1. Вопрос: Какие различные рабочие процессы MFA доступны как пользователю StarVault, и чем они отличаются?

Поток работ MFA Что он делает? Кто управляет MFA?

Login MFA

MFA в StarVault обеспечивает MFA при входе в систему. Поддерживается вход через CLI, API и пользовательский интерфейс

MFA управляется StarVault

3.2. Вопрос: Что такое однофазный MFA по сравнению с двухфазным MFA?

  • Вход за одну итерацию (Single-Phase login) — Это механизм одного запроса, в котором необходимая информация MFA, например идентификатор метода MFA, предоставляется через заголовок X-Vault-MFA в одном MFA-запросе, который используется для аутентификации в Vault.

    Если настроенные методы MFA требуют пароля, его необходимо указать в запросе, как, например, в случае TOTP или Duo. Если настроенные методы MFA, такие как PingID или Duo, не требуют пароля и имеют внеполосные механизмы проверки дополнительного фактора, Vault отправит запрос в API другого сервиса, чтобы определить, был ли запрос MFA уже проверен.

  • Вход за две итерации (Two-Phase login) — метод MFA, который используется более традиционно/

    • Пароль MFA, необходимый для настроенного метода MFA, не предоставляется в заголовке запроса на вход, который ограничен MFA. Вместо этого пользователь сначала проходит аутентификацию в методе аутентификации, и после успешной аутентификации в методе аутентификации пользователю возвращается требование MFA. Требование MFA содержит идентификатор запроса MFA и ограничения, применимые к MFA, как настроено оператором.

    • Затем пользователь должен сделать второй запрос к новой конечной точке sys/mfa/validate, указав в запросе MFA RequestID и полезную нагрузку MFA, включающую код доступа MFA methodIDs (если применимо). Если проверка MFA пройдет, новый токен Vault будет сохранен и возвращен пользователю в ответе, как и обычный токен Vault, созданный с помощью метода авторизации без ограничений MFA.

3.3. Вопрос: Какие существуют конечные точки MFA API в StarVault MFA для входа в систему?

Эта функция опирается на следующие конечные точки конфигурации MFA: identity/mfa/method, identity/mfa/login-enforcement и sys/mfa/validate. Более подробную информацию см. в документации.

3.4. Вопрос: Какие существуют способы настройки различных рабочих процессов MFA?

Поток работ MFA Методы конфигурирования Детали

Login MFA

CLI/API/UI.

Настраивается с помощью конечных точек identity/mfa/method, затем передаются идентификаторы методов в конечную точку identity/mfa/login-enforcement. Поддерживаемые методы MFA: TOTP, Okta, Duo, PingID.

3.5. Вопрос: Какой механизм MFA используется с различными рабочими процессами MFA в StarVault?

Поток работ MFA UI CLI/API Single-Phase Two-Phase

Login MFA

Поддерживается

Поддерживается. Можете выбрать вход за одну итерацию MFA, предоставив заголовок X-Vault-MFA. При отсутствии этого заголовка используется вход за две итерации MFA

N/A

Поддерживается

3.6. Вопрос: Если используется StarVault Agent, возникнут ли у проблемы с MFA?

Агент StarVault Agent не должен использовать MFA для аутентификации в StarVault; он должен быть в состоянии успешно передавать запросы с заголовками, связанными с MFA, в StarVault.