Vault의 다중 인증(MFA) 지원

Vault의 다중 인증(MFA) 지원

Vault Enterprise는 다양한 인증 유형을 사용한 다중 인증(Multi-factor Authentication, MFA) 을 지원합니다. MFA는 Vault의 Identity 시스템 위에 구축되어 있습니다.

출처: 문서

본문

MFA 유형

Vault의 MFA에는 다음과 같은 유형이 있습니다.

  • 시간 기반 일회용 비밀번호(TOTP): 경로에 구성·활성화되면 API 요청을 호출할 때 Vault 토큰과 함께 TOTP 패스코드를 제시해야 합니다. 패스코드는 Vault에서 호출자 ID에 존재하는 TOTP 키로 검증됩니다.
  • Okta: 경로에 Okta 푸시(push)가 구성·활성화되면 사용자의 등록된 기기에 API 접근 승인/거부를 묻는 푸시 알림이 전송됩니다. Okta 사용자 이름은 호출자 ID의 별칭(alias)에서 파생됩니다.
  • Duo: 경로에 Duo 푸시가 구성·활성화되면 사용자의 등록된 기기에 API 접근 승인/거부를 묻는 푸시 알림이 전송됩니다. Duo 사용자 이름은 호출자 ID의 별칭에서 파생됩니다.
  • PingID: 경로에 PingID 푸시가 구성·활성화되면 사용자의 등록된 기기에 API 접근 승인/거부를 묻는 푸시 알림이 전송됩니다. PingID 사용자 이름은 호출자 ID의 별칭에서 파생됩니다.

MFA 메서드 구성하기

MFA 메서드는 System Backend 내에서 HTTP API로 전역적으로 관리됩니다. MFA 메서드를 구성하는 방법은 MFA API를 참고하세요.

정책의 MFA 메서드

경로에 대한 MFA 요구사항은 다른 ACL 매개변수와 함께 mfa_methods로 지정됩니다.

샘플 정책

path "secret/foo" {
  capabilities = ["read"]
  mfa_methods  = ["dev_team_duo", "sales_team_totp"]
}

위 정책은 dev_team_duosales_team_totp 두 MFA 메서드가 모두 검증된 후에만 secret/foo에 대한 읽기 접근을 부여합니다.

네임스페이스

모든 MFA 구성은 루트 네임스페이스에 구성해야 합니다. 이들은 모든 네임스페이스의 ACL 및 Sentinel 정책에서 메서드 이름으로 참조할 수 있고, 모든 네임스페이스의 마운트 액세서(accessor)에 연결할 수 있습니다.

Sentinel EGP를 사용할 때 지정된 MFA 구성은 정책의 영향을 받는 모든 요청에서 충족되어야 하며, 구성된 경로가 네임스페이스에 걸쳐 퍼져 있으면 어려울 수 있습니다. 이를 해결하는 한 가지 방법은 or 연산자를 사용해 각 네임스페이스의 마운트 액세서에 연결된 MFA 구성을 허용하는 다음과 같은 정책을 사용하는 것입니다.

import "mfa"

has_mfa = rule {
    mfa.methods.duons1.valid
}

has_mfa2 = rule {
    mfa.methods.duons2.valid
}

main = rule {
    has_mfa or has_mfa2
}

TOTP를 사용할 때 ACL 권한이 있는 사용자는 자체 자격증명을 생성할 수 있습니다. 관리자는 대상 엔티티가 같은 네임스페이스에 있을 때만 자격증명을 생성하거나 파기할 수 있습니다.

MFA 자격증명 제공하기

MFA 자격증명은 X-Vault-MFA HTTP 헤더에서 가져옵니다. 헤더 형식은 mfa_method_name[:key[=value]]입니다. [] 안의 항목은 선택 사항입니다.

샘플 요청

$ curl \
    --header "X-Vault-Token: ..." \
    --header "X-Vault-MFA:my_totp:695452" \
    http://127.0.0.1:8200/v1/secret/foo

API

MFA는 HTTP API로 완전히 관리할 수 있습니다. 자세한 내용은 MFA API를 참고하세요.

추가 리소스

  • Duo MFA 문서
  • Okta MFA 문서
  • PingID MFA 문서
  • TOTP MFA 문서

더 알아보기 (Learn more)