정책과 권한 제어 (ACL)

정책과 권한 제어 (ACL)

6️⃣ 정책과 권한 제어 (ACL)

Vault는 민감한 정보를 다루기 때문에 세밀한 권한 제어가 필수입니다. Vault는 정책 기반의 접근 제어를 통해 다양한 사용자, 시스템, 애플리케이션이 필요한 정보만 접근하도록 통제할 수 있습니다.


1. Vault Policy 구조 (HCL vs JSON)

Vault의 정책은 두 가지 형식으로 작성할 수 있습니다:

포맷 설명
HCL (HashiCorp Configuration Language) 사람이 읽기 쉬운 형식
JSON 기계 친화적인 형식, API로 사용 시 유용

📘 예시 - HCL 포맷 (운영팀 read-only 정책)

path "secret/data/ops/*" {
  capabilities = ["read", "list"]
}

📘 예시 - JSON 포맷

{
  "path": {
    "secret/data/ops/*": {
      "capabilities": ["read", "list"]
    }
  }
}

2. Policy 생성 및 사용자 할당

Vault에서는 다음과 같은 흐름으로 정책을 생성하고 사용자에게 할당합니다.

📌 정책 생성

vault policy write devs dev-policy.hcl

📌 토큰 사용자에게 정책 부여

vault token create -policy="devs"

📌 LDAP / OIDC 인증에 할당

vault auth enable ldap
vault write auth/ldap/groups/dev_team policies=devs

3. Path 기반 접근 제어 개념

Vault의 핵심은 path 단위로 접근 권한을 제어하는 것입니다. 아래는 주요 Path 예시입니다:

Path 예시 설명
secret/data/dev/* 개발 환경의 시크릿
database/creds/readonly DB Read-only 동적 인증
auth/kubernetes/login K8s 기반 인증 경로

🔒 각 Path 별로 create, read, update, delete, list, sudo 등의 권한을 세부적으로 설정할 수 있습니다.


4. 실무 예시: 운영/개발자 정책 분리

💼 운영자 (Ops)

path "secret/data/prod/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}

🧑‍💻 개발자 (Dev)

path "secret/data/dev/*" {
  capabilities = ["read", "list"]
}

📌 이렇게 하면 운영자는 모든 프로덕션 정보를 관리할 수 있고, 개발자는 자신이 필요한 dev 환경 정보만 접근할 수 있습니다.


📊 아키텍처 플로우 그림

![정책과_권한_제어_아키텍처](sandbox:/mnt/data/A_presentation_slide_in_Korean_titled_“정책과_권한_제어_(.png)

설명:

  • 사용자는 다양한 인증 방식(Token, LDAP, K8s 등)을 통해 Vault에 접근합니다.
  • Vault는 사용자에게 할당된 정책을 기준으로 해당 path에 접근 가능한지 판단합니다.
  • 스토리지 백엔드에는 실제 시크릿이 저장되어 있으며, Vault를 통해 안전하게 통제됩니다.

🧠 TIP: 정책은 최소 권한 원칙(Principle of Least Privilege)을 지켜야 하며, 각 팀/환경별로 분리해서 관리하는 것이 좋습니다.


RSS Feed
마지막 수정일자