문제 해결 및 트러블슈팅
1️⃣ + “Unseal Error”, “Permission Denied” 등 주요 이슈 대응법
1. Unseal Error
Vault는 초기화 후 Unseal 키가 입력되어야 작동합니다. 클러스터 내 Vault Pod가 재시작되거나 재배포되었을 때, Unseal 오류가 자주 발생합니다.
🔍 예시 에러:
Error unsealing vault: Error making API request.
URL: PUT https://127.0.0.1:8200/v1/sys/unseal
Code: 500. Errors: * unseal failed
✅ 대응법:
-
- Vault 상태 확인:
vault status
-
- Unseal 키를 3개 이상 입력:
vault operator unseal
🔐 권장 구성: Auto Unseal with KMS (AWS/GCP)
Vault를 자동 Unseal 하도록 설정 시, 위 문제 예방 가능
2. Permission Denied
🔍 예시 에러:
permission denied
📌 주요 원인:
- 토큰이 만료되었거나,
- 접근 권한(Policy)이 부족할 경우 발생
✅ 대응법:
vault token lookup
vault policy read <policy-name>
🔄 예:
default
policy만 할당된 토큰은secret/data
에 접근 불가
2️⃣ + 인증 실패, Policy 미적용 확인 절차
1. 인증 실패 대응 절차
📌 시나리오: Kubernetes 인증을 사용하는 서비스가 실패
Error: error authenticating: authentication failed
✅ 점검 체크리스트:
항목 | 명령어 |
---|---|
Kubernetes Auth 활성화 여부 | vault auth list |
JWT token 유효성 | kubectl exec <pod> -- cat /var/run/secrets/kubernetes.io/serviceaccount/token |
Vault Role 존재 여부 | vault read auth/kubernetes/role/<role-name> |
2. Policy 미적용 확인
📌 증상: 권한 있는 작업이 거절됨
✅ 점검 방법:
vault token capabilities <token> <path>
📍 예:
vault token capabilities $VAULT_TOKEN secret/data/db
결과가deny
일 경우, Policy 수정 필요
3️⃣ + HA 상태 불일치 해결
Vault는 HA(High Availability) 모드에서 Consul, Raft 등을 backend로 사용합니다.
📉 문제 증상:
- Leader가 응답하지 않음
- Follower 노드만 계속 증가
- Raft Snapshot 중 오류
🧩 구조 이해를 위한 다이어그램:
[Vault Cluster]
├─ Vault-0 (Leader)
├─ Vault-1 (Follower)
└─ Vault-2 (Follower)
[Storage Backend: Raft or Consul]
✅ 해결 절차:
-
노드 상태 확인:
vault operator raft list-peers
-
Leader가 살아있지 않을 경우:
-
문제 노드 제거:
vault operator raft remove-peer vault-1
-
재조인:
vault operator raft join http://vault-0:8200
-
4️⃣ + 실전 장애 복구 사례
🛠️ 사례: Vault 장애 + Raft Snapshot 손상
📍 증상:
- Vault 접근 시 모든 요청 500 오류 발생
- Raft snapshot이 깨져 있고, 데이터 접근 불가
✅ 복구 절차:
-
백업 Snapshot 로드:
vault operator raft snapshot restore backup.snap
-
장애 시점 복구 후 상태 확인:
vault status vault kv get secret/data/myapp
-
정책/토큰 재배포 및 서비스 점검
🔎 실제 운영 환경 점검 체크리스트
체크 항목 | 설명 |
---|---|
Vault Health API | /v1/sys/health 사용 |
Token TTL / Expire 확인 | vault token lookup |
Storage backend 오류 점검 | Consul / Raft 로그 확인 |
인증 backend 활성화 여부 | vault auth list |
Vault 로그 확인 | /vault/logs/vault.log |
✅ 요약 정리
문제 | 원인 | 해결 방법 |
---|---|---|
Unseal Error | Vault 재시작 | Unseal 키 입력 or Auto Unseal |
Permission Denied | 잘못된 Policy | Token & Policy 점검 |
인증 실패 | 인증 설정 오류 | JWT, Role 설정 확인 |
HA 불일치 | 노드 간 네트워크, Storage 오류 | raft remove-peer / join |
장애 복구 | Snapshot 손상 | snapshot restore 수행 |
마지막 수정일자