Hashicorp Vault: CLI와 API를 통한 토큰 관리

발행: (2025년 12월 11일 오후 03:53 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

소개

HashiCorp Vault와 상호 작용할 때 토큰은 인증 및 인가 수단입니다. 다양한 엔진이 제공하고 정책 및 역할과 연계된 토큰은 Vault의 경로‑기반 기능에 대한 접근 권한을 부여합니다.

이 글에서는 토큰 관리를 위한 모든 CLI 및 API 옵션을 자세히 설명하고, 특정 속성을 가진 토큰을 생성하는 여러 실습 명령 예시를 제공합니다. 배경 자료는 공식 HashiCorp Vault 문서의 토큰 CLI 명령 및 Token 인증 방법(API)에서 가져왔습니다.

토큰 수명 주기

  1. 생성 – 토큰은 인증 방법을 통해, 정의된 시크릿 스토어에 vault write 명령을 실행하거나 명령줄에서 생성됩니다. 정적 정보와 메타데이터가 토큰에 저장됩니다.
  2. 업데이트 – 토큰에서 업데이트 가능한 유일한 값은 만료 날짜입니다. 토큰이 갱신 가능하고 아직 유효하며 명시적으로 정의된 max-ttl을 초과하지 않은 경우 갱신할 수 있습니다. 새로운 만료 시점은 현재 시간에 정의된 TTL을 더한 값입니다.
  3. 만료 / 폐기 – 루트 토큰을 제외한 모든 토큰은 TTL이 도달하거나 폐기되면 만료됩니다. 관련 데이터가 삭제되고 토큰에 연결된 모든 리스도 제거됩니다.

Vault 토큰 명령 그룹

vault token 명령 그룹은 토큰 수명 주기에 맞는 상호 작용을 구현합니다:

CommandDescription
create현재 토큰(성공적인 vault login 후 암묵적으로 저장되거나 VAULT_TOKEN으로 설정된)의 컨텍스트에서 새 토큰을 생성합니다.
capabilities특정 경로에 대한 토큰 권한(정책 조회)을 출력합니다.
lookup토큰 또는 토큰 액세서에 대한 모든 정보를 표시합니다.
renew만료되지 않았고 사용 제한을 초과하지 않은 토큰을 갱신합니다.
revoke토큰을 즉시 폐기하여 이후 사용을 차단합니다. 하위 토큰도 함께 폐기됩니다.

Note: 토큰 값은 92자이지만 아래 예시에서는 8자만 표시합니다.

vault token create

현재 토큰의 컨텍스트에서 새 관리 토큰을 인스턴스화합니다. 기본적으로 부모와 동일한 정책을 가진 하위 토큰이 생성됩니다. 정책은 제한할 수는 있지만 확장할 수는 없으며, 부모가 충분한 권한을 가지고 있어야 합니다. 명시적 TTL을 지정하면 갱신 가능한 토큰을 만들 수 있으며, 그렇지 않으면 비갱신 토큰이 됩니다. 두 경우 모두 max-ttl이 유효 기간의 상한을 제한합니다.

사용 가능한 플래그

Type

  • -typeservice 또는 batch 토큰 중 하나를 생성합니다.

Capabilities

  • -orphan – 생성에 사용된 토큰과의 관계를 끊습니다. 결과 토큰은 독립적이며 다른 토큰의 부모가 될 수 있습니다.
  • -renewable – 토큰은 기본적으로 갱신 가능하므로, 이 플래그를 사용해 갱신을 비활성화합니다.

Access Control

  • -policy – 토큰에 지정된 정책을 첨부합니다. 여러 정책을 지정하려면 플래그를 여러 번 사용합니다.
  • -role – 토큰에 역할(인증 전용 데이터 구조)을 할당하여 역할에 정의된 모든 속성을 상속합니다.

Validity

  • -explicit-max-ttl – 토큰에 대한 절대적이며 확장 불가능한 기간을 설정합니다.
  • -period – 갱신 시 토큰 TTL이 연장되는 기간(주기적 토큰)입니다.
  • -ttl – 초기 TTL 값입니다. 생략하면 엔진 또는 Vault 기본 설정 TTL이 사용됩니다.
  • -use-limit – 토큰을 사용할 수 있는 최대 횟수를 지정합니다.

Identification

  • -id – 사용자 정의 토큰 ID를 제공합니다(기본값은 무작위 92자 base62 문자열).
  • -display-name – 사람이 읽을 수 있는 메타데이터입니다.
  • -entity-alias – 정의된 별칭에 토큰을 연결합니다(allowed_entity_aliases에 허용되어야 함).
  • -metadata – 식별을 위한 추가 키‑값 쌍(반복 가능).

예시 생성

다중 정책 토큰

vault token create -policy=secret-management -policy=kv2-management

로그 출력

KeyValue
accessor32OK6kKt2rk7mw4jQ0ZbXT3E
creation_time1753526225
creation_ttl0s
display_nameroot
entity_idn/a
expire_time
explicit_max_ttl0s
idhvs.HTMdJOhL
meta
num_uses0
orphantrue
pathauth/token/root
policies[root]
ttl0s
typeservice

제한된 갱신 가능 주기 토큰

vault token create -policy=secret-management -period=24h -use-limit=10

로그 출력

KeyValue
accessorinIuUf1uTkYjxHBxOOVg442Q
creation_time1755334894
creation_ttl24h
display_nametoken
entity_idn/a
expire_time2025-08-17T11:01:34.540229+02:00
explicit_max_ttl0s
idhvs.CAESIOam
issue_time2025-08-16T11:01:34.540235+02:00
meta
num_uses10
orphanfalse
pathauth/token/create
period24h
policies[default secret-management]
renewabletrue
ttl23h59m39s
typeservice

배치 토큰

vault token create -policy=kv2-management -type=batch -ttl=1h

로그 출력

KeyValue
accessorn/a
creation_time1755335083
creation_ttl1h
display_nametoken
entity_idn/a
expire_time2025-08-16T12:04:43+02:00
explicit_max_ttl0s
idhvb.AAAAAQLX
issue_time2025-08-16T11:04:43+02:00
meta
num_uses0
orphantrue
pathauth/token/create
policies[default kv2-management]
renewablefalse
ttl59m45s
typebatch

고아 토큰(Explicit Max TTL 지정)

vault token create -policy=kv2-management -orphan -explicit-max-ttl=24h

로그 출력

KeyValue
accessoraiLPJrzGBU0lC1QdKDN1gHak
creation_time1755335696
creation_ttl24h
display_nametoken
entity_idn/a
expire_time2025-08-17T11:14:56.773281+02:00
explicit_max_ttl24h
idhvs.CAESIIpt
issue_time2025-08-16T11:14:56.77329+02:00
meta
num_uses0
orphantrue
pathauth/token/create
policies[default kv2-management]
renewabletrue
ttl23h59m44s
typeservice

vault token lookup

토큰에 대한 모든 운영 및 메타데이터 정보를 표시합니다. 여기에는 생성 시점, 만료 타임스탬프, 유형, 관계, 연결된 정책 및 접근 경로가 포함됩니다. 토큰은 값 자체 또는 액세서로 지정할 수 있습니다.

vault token lookup $TOKEN

로그 출력 (예시)

KeyValue
accessore1FpV6OfhwrqwE8LWF0pldTN
creation_time1755361260
creation_ttl1h
display_nametoken
entity_idn/a
expire_time2025-08-16T18:52:24.218038+02:00
explicit_max_ttl24h
idhvs.CAESIPEd
issue_time2025-08-16T17:52:24.218038+02:00

(추가 필드들은 간략히 생략되었습니다.)

Back to Blog

관련 글

더 보기 »