인증 방법(Auth Methods) — 사람과 머신이 Vault에 들어오는 길

인증 방법(Auth Methods) — 사람과 머신이 Vault에 들어오는 길

Vault에 처음 접근하려는 클라이언트는 우선 "내가 누구인지" 증명해야 해요. 그 증명 과정이 바로 인증(Authentication) 이고, Vault에서 인증을 담당하는 컴포넌트가 인증 방법(auth method) 입니다. 인증 방법은 사용자에게 신원(identity)과 정책(policy) 집합을 부여하는 역할을 해요.

Vault는 GitHub, LDAP, AppRole, Kubernetes, AWS, Azure 같은 여러 인증 방법을 동시에 지원합니다. 각각은 특정 사용 사례에 맞춰져 있어서, 조직과 Vault 사용 방식에 가장 잘 맞는 것을 골라 쓸 수 있어요. 인증이 완료되면 토큰이 생성되는데, 이 토큰은 웹사이트의 세션 ID와 개념적으로 비슷해요.

출처: Auth Methods — HashiCorp Vault 공식 문서

인증 방법 활성화/비활성화

인증 방법은 CLI나 API로 활성화/비활성화할 수 있어요.

$ vault auth enable userpass

활성화된 인증 방법은 비밀 엔진과 비슷하게 Vault의 마운트 테이블에 올라가고, 표준 읽기/쓰기 API로 접근·설정할 수 있습니다. 모든 인증 방법은 auth/ 프리픽스 아래에 마운트돼요.

기본적으로 인증 방법은 auth/<type>에 마운트됩니다. 예를 들어 github를 활성화하면 auth/github에서 상호작용할 수 있죠. 단 이 경로는 커스터마이즈 가능해서, 고급 사용 사례에서는 같은 인증 방법을 여러 번 마운트할 수도 있어요.

$ vault auth enable -path=my-login userpass

인증 방법이 비활성화되면, 그 방법으로 인증했던 모든 사용자는 자동으로 로그아웃됩니다.

외부 인증 방법 사용 시 고려사항

GitHub 같은 외부 인증 방법을 쓸 때는, Vault가 인증 시점과 이후 토큰 갱신 시점에 그 외부 서비스를 호출해요. 엔티티의 상태가 외부 시스템에서 바뀌면(예: 계정 만료나 비활성화), Vault는 그 엔티티와 연결된 토큰의 갱신 요청을 거부합니다. 다만 이미 발급된 토큰은 Vault에서 명시적으로 폐기하지 않는 한 원래 부여된 기간 동안 유효하게 남아 있어요. 따라서 외부 인증 방법을 쓸 때는 적절한 토큰 TTL을 설정해 두는 것이 좋습니다.

인증 개념 — 은 어떻게 토큰이 만들어질까

인증은 본질적으로 "신원을 확인하고, 그 신원에 연결할 토큰을 생성"하는 과정이에요. GitHub로 인증했더라도 Vault는 이후 요청에 쓸 고유의 접근 토큰을 생성합니다.

  • CLI로 인증vault login을 쓰면 내장 인증 방법 대부분을 지원해요. 예: vault login -method=github token=<token>. 인증 후 CLI가 원시 토큰을 출력하는데, 이 토큰은 폐기·갱신에 사용돼요. 특정 방법이 필요로 하는 변수를 알려면 -method 플래그만 주고 인수 없이 실행하면 도움말이 표시됩니다.
  • API로 인증 — 일반적으로 머신(machine) 인증에 쓰여요. 각 인증 방법은 자체 로그인 엔드포인트를 구현합니다. 예를 들어 GitHub 로그인 엔드포인트는 auth/github/login에 있고, 필요한 인수는 vault path-help auth/github/login으로 확인할 수 있어요.

인증 임대(Auth Leases)

시크릿과 마찬가지로 신원(identity)에도 임대가 붙어요. 즉, Vault에 계속 접근하려면 주어진 임대 기간이 지난 후 다시 인증해야 합니다. 신원에 연결된 임대는 완전히 재인증하지 않고도 갱신할 수 있어요 — 신원과 연결된 토큰으로 vault token renew <token>을 실행하면 됩니다.

더 알아보기