Vault 시크릿

Vault 시크릿 (Secrets)

Vault가 다루는 핵심 개념 중 하나가 시크릿이에요. 시크릿은 비밀번호, API 키, 인증서, 그리고 하이-센서티브 데이터처럼 비밀로 취급해야 하는 모든 것을 아우르는 단어예요. 크게 정적 시크릿과 동적 시크릿으로 나뉘어요.

출처: https://developer.hashicorp.com/vault/docs/concepts/secrets

  • 정적 시크릿(Static secrets): Vault에 저장돼 있고, 명시적으로 변경·폐기할 때까지 존재하는 시크릿이에요. KV(Key-Value) 시크릿 엔진이 대표적이에요. 사용자 이름·비밀번호처럼 미리 정해진 값을 보관하고 조회하는 데 쓰여요. Vault가 시크릿을 생성하는 것이 아니라 저장·관리만 해요.
  • 동적 시크릿(Dynamic secrets): 요청이 있을 때 그때그때 생성되는 시크릿이에요. 생성 즉시 **리스(lease)**가 붙고 유효기간(TTL)이 정해져요. 예를 들어 AWS 시크릿 엔진이 임시 액세스 키를 발급하면, 그 키는 유효기간이 지나거나 리스를 폐기하면 자동으로 무효화돼요. 그래서 "만료되는 자격증명"이 가능해져요.

동적 시크릿의 가장 큰 장점은 수명이 짧다는 거예요. 시크릿이 유출되어도 유효기간이 지나면 자동으로 쓸 수 없게 되죠. 또 중앙에서 생성을 통제하므로, 같은 시크릿을 여러 곳에 복사해 두지 않아도 돼요.

시크릿은 **시크릿 엔진(secrets engine)**이 관리해요. 시크릿 엔진은 mount된 경로를 통해 시크릿을 저장·생성·암호화하고, 그 안에서 시크릿을 다루는 작업(읽기·쓰기·나열)을 경로 기반으로 노출해요. KV 엔진은 정적 시크릿을, AWS·데이터베이스 같은 엔진은 동적 시크릿을 다뤄요.

리스를 자세히 보면, 모든 동적 시크릿은 리스를 가져야 해요 — 영원히 유효하게 하고 싶어도 리스가 있어서 소비자가 주기적으로 갱신해야 해요. 그래서 감사 로그가 더 가치 있어지고 키 회전도 쉬워져요. 반대로 KV 백엔드는 시크릿의 리스를 발급하지 않아요(경우에 따라 lease duration만 돌려주기도 하지만, 실제 리스는 아니에요).

더 알아보기