Vault 설치 및 초기 구성

Vault 설치 및 초기 구성

3️⃣ Vault 설치 및 초기 구성

HashiCorp Vault를 제대로 이해하려면, 먼저 직접 설치하고 실행해보는 경험이 가장 중요합니다.
이번 파트에서는 개발용 Standalone 모드, HA 구성 개요, Kubernetes 설치, 그리고 초기화 & unseal 실습까지 다룹니다.


1. Standalone 모드 설치 (개발 테스트용)

이 모드는 학습 및 로컬 테스트에 적합하며, 단일 Vault 서버가 로컬 스토리지에 데이터를 저장합니다.
가볍고 빠르지만, 프로덕션 용도로는 적합하지 않습니다.

📦 설치 및 실행 예제 (Linux 기준)

# 1. Vault 설치
wget https://releases.hashicorp.com/vault/1.15.3/vault_1.15.3_linux_amd64.zip
unzip vault_1.15.3_linux_amd64.zip
sudo mv vault /usr/local/bin/

# 2. 개발 모드 실행
vault server -dev

💡 개발 모드에서는 Vault가 자동으로 초기화되고 Unseal 되어, 학습이 매우 쉬워집니다.

📘 접속 테스트

export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN=<출력된 root token>

vault status
vault kv put secret/hello value=world
vault kv get secret/hello

🖼️ 구조도

+-----------+
|  Client   |
+-----+-----+
      |
      v
+-----+------+
| Vault Core |
| - Dev Mode |
+------------+
      |
      v
+-------------+
| File Storage|
+-------------+

2. HA 모드 구성 개요 (Raft, Consul 백엔드)

프로덕션 환경에서는 당연히 고가용성(HA) 이 필수입니다.
Vault는 다음과 같은 스토리지 백엔드를 통해 HA 구성을 지원합니다.

🔹 Option 1: Integrated Storage (Raft)

  • Vault 자체에 내장된 Raft 기반 스토리지
  • 외부 종속성 없고 구성 간단
  • 추천

🔹 Option 2: Consul 백엔드

  • Vault는 데이터를 Consul에 저장하고, Consul이 리더 선출 및 HA를 관리
  • 기존에 Consul 사용 중이라면 유리

🖼️ HA 아키텍처 개요

               +-------------+
               |  Clients    |
               +------+------+
                      |
       +--------------v--------------+
       |     Load Balancer (LB)     |
       +--------+-----------+-------+
                |           |
        +-------v--+   +----v-------+
        | Vault #1 |   |  Vault #2  |
        | (Leader) |   | (Follower) |
        +----------+   +------------+
              |
      +-------v-------+
      | Raft/Consul DB|
      +---------------+

📘 간단한 Raft 구성 예시

# vault.hcl
storage "raft" {
  path = "/opt/vault/data"
  node_id = "vault-node-1"
}

listener "tcp" {
  address     = "0.0.0.0:8200"
  tls_disable = 1
}

api_addr = "http://<your-vault-ip>:8200"
cluster_addr = "http://<your-vault-ip>:8201"

3. Helm Chart를 통한 Kubernetes 설치

Vault는 공식적으로 Helm Chart를 통해 Kubernetes 클러스터에 쉽게 설치할 수 있습니다.

✅ 필수 조건

  • Helm 설치
  • Kubernetes 클러스터 접근 가능 (e.g., minikube, EKS, GKE 등)

📦 설치 예제

helm repo add hashicorp https://helm.releases.hashicorp.com
helm install vault hashicorp/vault \
  --set "server.dev.enabled=true"

📘 설치 후 상태 확인

kubectl get pods
kubectl exec -it vault-0 -- vault status

💡 dev 모드이므로 자동 초기화 및 unseal 상태입니다.

🖼️ K8s 구조도

+-------------------+
|  K8s Client (kubectl) |
+-------------------+
           |
    +------v------+
    |  Vault Pod  |
    +-------------+
           |
     +-----v------+
     | EmptyDir / Ephemeral Storage |
     +-----------------------------+

4. 초기화(Init), Unseal 프로세스 실습

Vault는 보안 강화를 위해 초기화 후, Unseal 키를 나눠 보관합니다.
이 키 없이는 Vault의 Master Key가 활성화되지 않으며, 따라서 사용할 수 없습니다.

📦 초기화 (Init)

vault operator init
Unseal Key 1: xxxxx
Unseal Key 2: yyyyy
Unseal Key 3: zzzzz
...
Initial Root Token: s.mega-secure-root-token

📘 주의: 이 키들을 안전하게 백업하시오!

📦 Unseal 명령

vault operator unseal <key1>
vault operator unseal <key2>
vault operator unseal <key3>

기본적으로 5개의 키 중 3개가 필요합니다 (key threshold = 3)

🖼️ Init → Unseal 플로우

+--------------------+
| vault operator init|
+--------------------+
         |
         v
+----------------------------+
| Shamir Secret Shares (5)  |
|   + Threshold (3)         |
+----------------------------+
         |
         v
+---------------------+
| vault operator unseal|
+---------------------+
         |
         v
+---------------------+
| Vault becomes active|
+---------------------+

📍 정리 요약

항목 설명
Standalone 모드 빠른 개발 테스트용 로컬 실행
HA 구성 Raft 또는 Consul로 구성 가능, 실제 운영 환경용
Kubernetes 설치 Helm Chart 이용해 K8s 환경에 손쉽게 설치 가능
Init / Unseal 시크릿 보호를 위한 보안 절차 필수 이해 항목

RSS Feed
마지막 수정일자