사용자 이름·비밀번호(Userpass) 인증 메서드

사용자 이름·비밀번호(Userpass) 인증 메서드

userpass 인증 메서드는 사용자가 사용자 이름과 비밀번호 조합으로 Vault에 인증할 수 있게 해줘요.

출처: 문서

본문

사용자 이름/비밀번호 조합은 users/ 경로를 사용해 인증 메서드에 직접 구성돼요. 이 메서드는 외부 소스에서 사용자 이름과 비밀번호를 읽을 수 없어요.

이 메서드는 제출된 모든 사용자 이름을 소문자로 변환해요. 예를 들어 Marymary는 같은 엔트리예요.

이 문서는 Username & Password 메서드가 Vault의 기본 /auth/userpass 경로에 마운트되어 있다고 가정해요. 인증 메서드는 어디에든 활성화할 수 있으므로 -path 플래그로 CLI 호출을 그에 맞게 업데이트하세요.

인증

CLI 사용

$ vault login -method=userpass \
    username=mitchellh \
    password=foo

API 사용

$ curl \
    --request POST \
    --data '{"password": "foo"}' \
    http://127.0.0.1:8200/v1/auth/userpass/login/mitchellh

응답은 auth.client_token에 토큰을 포함해요.

{
  "lease_id": "",
  "renewable": false,
  "lease_duration": 0,
  "data": null,
  "auth": {
    "client_token": "c4f280f6-fdb2-18eb-89d3-589e2e834cdb",
    "policies": ["admins"],
    "metadata": {
      "username": "mitchellh"
    },
    "lease_duration": 0,
    "renewable": false
  }
}

구성

사용자나 머신이 인증하기 전에 인증 메서드를 미리 구성해야 해요. 이러한 단계는 보통 운영자나 구성 관리 도구가 완료해요.

  • userpass 인증 메서드를 활성화하세요. 기본 auth/userpass 경로에 userpass 인증 메서드를 활성화해요. -path 플래그로 다른 경로를 선택할 수도 있어요.
$ vault auth enable userpass
$ vault auth enable -path=<path> userpass
  • 인증을 허용할 사용자로 구성하세요. 이렇게 하면 "admins" 정책에 연결되는 비밀번호 "foo"를 가진 새 사용자 "mitchellh"가 생성돼요. 이것이 필요한 유일한 구성이에요.
$ vault write auth/<userpass:path>/users/mitchellh \
    password=foo \
    policies=admins

사용자 잠금(User lockout)

사용자가 짧은 시간에 연속으로 잘못된 자격 증명을 여러 번 제공하면 Vault는 잠시 동안 자격 증명 검증을 중단하고, 대신 즉시 permission denied 오류를 반환해요. 이 동작을 "사용자 잠금(user lockout)"이라고 불러요. 사용자가 잠기는 시간을 "잠금 기간(lockout duration)"이라고 해요. 잠금 기간이 지난 후 사용자는 로그인할 수 있어요. 사용자가 잠기게 되는 실패한 로그인 시도 횟수를 "잠금 임계값(lockout threshold)"이라고 해요. 잠금 임계값 카운터는 몇 분 동안 로그인 시도가 없거나 성공적인 로그인 시도가 있으면 0으로 리셋돼요. 로그인 시도가 없을 때 카운터가 0으로 리셋되는 기간을 "잠금 카운터 리셋(lockout counter reset)"이라고 해요. 이 기능은 자동화된 요청과 표적화된 요청, 즉 사용자 기반 비밀번호 추측 공격과 자동화된 공격을 모두 무력화할 수 있어요.

사용자 잠금 기능은 기본적으로 활성화돼요. 기본값은 "잠금 임계값" 5회 시도, "잠금 기간" 15분, "잠금 카운터 리셋" 15분이에요.

사용자 잠금 기능은 다음과 같이 비활성화할 수 있어요.

  • 환경 변수 VAULT_DISABLE_USER_LOCKOUT를 사용해 전역적으로 비활성화할 수 있어요.
  • 구성 파일의 user_lockout 스탠자(stanza)에 disable_lockout 매개변수를 사용해 지원되는 모든 인증 메서드(ldap, userpass, approle) 또는 특정 지원 인증 메서드에 대해 비활성화할 수 있어요. 자세한 내용은 사용자 잠금 구성을 참조하세요.
  • "auth tune"을 사용해 특정 인증 마운트에 대해 비활성화할 수 있어요. 자세한 내용은 auth tune 명령 또는 auth tune API를 참조하세요.

참고: 이 기능은 Vault 1.13 버전부터 사용할 수 있으며 userpass, ldap, approle 인증 메서드만 지원해요.

API

Userpass 인증 메서드는 완전한 HTTP API를 제공해요. 자세한 내용은 Userpass 인증 메서드 API를 참조하세요.

더 알아보기 (Learn more)