Hashicorp Vault: 정밀한 액세스 제어와 정책
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (or the portion you want translated) here? Once I have that, I’ll provide the Korean translation while keeping the source link, formatting, and any code blocks unchanged.
소개
HashiCorp Vault는 다양한 인증 및 인가 메커니즘을 제공하는 유연한 비밀 관리 엔진입니다. 자격 증명, 암호화 키, 인증서와 같은 비밀을 저장합니다. Vault의 기능을 사용하려면 클라이언트가 먼저 인증을 수행하여 액세스 토큰과 해당 토큰에 연결된 정책을 받아야 합니다. 이러한 정책은 어떤 마운트 경로에서 어떤 작업을 허용할지 결정합니다.
이 문서에서는 Vault 정책에 대해 자세히 설명하고, HCL로 정책을 작성하는 방법을 보여주며, 동작 동사와 경로 패턴을 설명하고 실용적인 예제를 제공합니다. 기술적 컨텍스트는 hashicorp_vault_v1.21.1(2025‑11‑18 출시)이며, 예제는 최신 버전에서도 유효합니다.
정책 기본
- 정책은 특정 마운트 경로에서 허용되는 동작(예:
create,read,delete)을 인코딩합니다. - 모든 Vault 기능은 CLI든 HTTP API든 마운트 경로를 통해 접근합니다.
- 토큰에 해당 경로/동작을 허용하는 정책이 없으면 요청이 거부됩니다.
- 내장 정책은 두 가지가 있습니다:
- root – 모든 경로와 동작에 대한 전체 접근 권한; 초기 설정 시 루트 토큰에 부착됩니다.
- default – 모든 토큰에 부착(제거되지 않은 경우)되며, 토큰 자체에 대한 자체 조회 및 데이터 접근을 관리합니다.
토큰에 중첩된 경로 선언을 가진 여러 정책이 있을 경우, Vault는 우선순위 매칭 규칙에 따라 이를 해결한 뒤, 결합된 권한을 기준으로 요청된 동작을 확인합니다.
일부 경로는 root 정책이 있거나 해당 경로에 sudo 권한이 부여된 경우에만 접근할 수 있습니다(루트 보호 API 엔드포인트에 대한 문서 참고).
정책 구문 (HCL)
정책은 HashiCorp Configuration Language (HCL) 로 작성됩니다. 최소 구조는 path 블록과 capabilities 리스트를 포함합니다:
path "PATH" {
capabilities = ["cap"]
}
고급 옵션
HTTP API 엔드포인트에 대해 추가 매개변수를 명시적으로 허용, 거부, 또는 필수로 지정할 수 있습니다:
path "PATH" {
capabilities = ["cap"]
allowed_parameters = {
"key" = ["value1", "value2"]
}
denied_parameters = {
"key" = ["value3"]
}
required_parameters = {
"key" = ["value4"]
}
}
응답 래핑
응답 래핑을 지원하는 엔드포인트(민감한 데이터를 보호하기 위해)에서는 TTL을 지정할 수 있습니다:
path "PATH" {
capabilities = ["cap"]
min_wrapping_ttl = "5m"
max_wrapping_ttl = "1h"
}
경로 와일드카드
경로 선언에는 두 가지 와일드카드 기호를 포함할 수 있습니다:
| Symbol | Meaning |
|---|---|
+ | 하나의 경로 세그먼트와 일치합니다. 예: path "auth/token/+"는 /auth/token/create와 일치하지만 /auth/token/create/role와는 일치하지 않습니다. |
* | 0개 이상의 세그먼트와 일치합니다. 예: path "auth/token/*"는 /auth/token으로 시작하는 모든 경로와 일치하며, 예를 들어 /auth/token/create/role 또는 /auth/token/roles/role와 일치합니다. |
Capabilities (Action Verbs)
capabilities 속성은 접근을 제어하는 동사들의 목록입니다:
create– 새 엔티티 정의를 추가합니다.read– 엔티티 정의를 가져옵니다.update/patch– 기존 엔티티 정의를 수정합니다 (두 동사 모두 동일한 CLI 명령vault patch에 매핑됩니다).delete– 엔티티 정의를 삭제합니다.list– 이름이나 ID로 엔티티 정의를 열거합니다 (전체 상세 정보는 여전히read가 필요합니다).sudo– 엔티티에 대한 전체 접근 권한을 부여합니다. 여기에는 루트 보호 API 엔드포인트도 포함됩니다.deny– 리소스에 대한 모든 접근을 명시적으로 차단합니다.
sudo와 deny를 제외한 모든 동사는 HTTP 메서드 또는 CLI 명령에 직접 대응합니다.
Example Policies
1. KV v2 비밀 엔진 관리
path "kv2/*" {
capabilities = ["create", "read", "update", "delete"]
}
2. 인증 방법 관리
path "sys/auth" {
capabilities = ["create", "read", "update", "delete", "sudo"]
}
path "sys/auth/+/tune" {
capabilities = ["create", "read", "update", "delete", "sudo"]
}
3. 고아 토큰 생성
path "auth/token/create" {
capabilities = ["create", "sudo"]
}
Conclusion
HashiCorp Vault는 간결한 HCL 구문으로 작성된 정책을 통해 세밀한 접근 제어를 구현합니다. 정책은 다음으로 구성됩니다:
- Path 선언 – 고정 또는 와일드카드 사용 가능.
- Capabilities –
create,read,delete,list,sudo, 또는deny와 같은 동사.
정책은 토큰에 연결됩니다; 토큰이 경로에 접근할 때 Vault는 모든 적용 가능한 정책을 우선순위 순으로 해결하여 요청이 허용되는지 판단합니다. 위 예시들은 인증 방법을 관리하고, KV v2 비밀 엔진을 구성하며, 고아 토큰을 발행하는 방법을 보여줍니다.