반응형

1. Vault 온프레미스 구축 개요
1-1. Vault란 무엇인가?
Vault는 HashiCorp에서 개발한 비밀(Secret) 관리 시스템으로, API 키, 데이터베이스 인증정보, TLS 인증서와 같은 민감한 데이터를 안전하게 저장하고 제어된 방식으로 접근할 수 있게 해줍니다.
- 온프레미스 구축은 보안 규제가 엄격한 조직에 적합하며, 외부 클라우드 환경과의 분리도 가능합니다.
- 주요 기능:
- 동적 비밀번호 발급
- 키 자동 회전(Rotation)
- 다양한 인증 방식 연동(LDAP, OIDC, Kubernetes 등)
1-2. Vault의 온프레미스 도입 이유
- 데이터 주권 확보: 민감한 데이터를 외부 클라우드에 맡기지 않음
- 보안 정책 준수: 컴플라이언스 대응에 용이
- 시스템 통합 유연성: 다양한 내부 시스템과의 연동 가능
2. Vault 설치 전 준비사항
2-1. 시스템 요구사항
| 항목 | 권장 사양 |
| OS | Ubuntu 20.04 / RHEL / CentOS |
| CPU | 최소 2 vCPU |
| 메모리 | 최소 4GB RAM |
| 디스크 | 최소 10GB |
| 네트워크 포트 | 8200 (API), 8201 (클러스터 내부 통신) |
2-2. 설치 환경 예시
- 환경: 사내 데이터센터 VM 또는 베어메탈 서버
- Vault 버전: 1.20.0 (2025년 최신 기준)
- 스토리지 백엔드: Raft 또는 Consul 권장
- 인증서: 내부 CA를 통한 TLS 인증서 필수
3. Vault 설치 및 구성 방법
3-1. Vault 설치
bash
복사편집
wget https://releases.hashicorp.com/vault/1.20.0/vault_1.20.0_linux_amd64.zip unzip vault_1.20.0_linux_amd64.zip sudo mv vault /usr/local/bin/ vault --version
3-2. 시스템 사용자 생성 및 디렉토리 준비
bash
복사편집
sudo useradd --system --home /etc/vault.d --shell /bin/false vault sudo mkdir -p /etc/vault.d /var/lib/vault sudo chown -R vault:vault /etc/vault.d /var/lib/vault
3-3. Vault 설정파일 작성 (/etc/vault.d/config.hcl)
hcl
복사편집
ui = true storage "raft" { path = "/var/lib/vault" node_id = "node1" } listener "tcp" { address = "0.0.0.0:8200" tls_cert_file = "/etc/vault.d/vault.crt" tls_key_file = "/etc/vault.d/vault.key" } api_addr = "https://vault.mycompany.local:8200" cluster_addr = "https://vault.mycompany.local:8201" disable_mlock = true
4. Vault 서버 실행 및 초기화
4-1. systemd 서비스 등록 (/etc/systemd/system/vault.service)
ini
복사편집
[Unit] Description=Vault Server After=network-online.target Requires=network-online.target [Service] User=vault Group=vault ExecStart=/usr/local/bin/vault server -config=/etc/vault.d/config.hcl ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure LimitMEMLOCK=infinity [Install] WantedBy=multi-user.target
4-2. 서비스 실행
bash
복사편집
sudo systemctl daemon-reexec sudo systemctl enable vault sudo systemctl start vault
4-3. Vault 초기화 및 Unseal
bash
복사편집
export VAULT_ADDR=https://vault.mycompany.local:8200 vault operator init -key-shares=5 -key-threshold=3 > /root/vault-init.txt vault operator unseal vault operator unseal vault operator unseal vault login
5. Vault 고가용성(HA) 아키텍처 설계
5-1. 단일 노드 (테스트용)
css
복사편집
[Client] --> [Vault Server (Raft, File)]
- 단일 실패점 존재
- 운영환경에는 부적합
5-2. 다중 노드 구성 (권장)
pgsql
복사편집
+---------------------+ | Load Balancer | +---------------------+ | | | +-------+ +-------+ +-------+ | Vault1 | | Vault2 | | Vault3 | +-------+ +-------+ +-------+ \ | / [Raft 스토리지 클러스터]
- Raft 스토리지 기반 복제
- 자동 failover, leader 선출 가능
- TLS 기반 암호화 필수
5-3. 재해복구 (DR) 클러스터
- Primary ↔ Secondary 복제 구성
- 비동기 복제로 DR 시나리오 대응
- 복제 활성화 명령:
bash
복사편집
vault write -f sys/replication/dr/primary/enable ...
6. 보안 설정 및 하드닝 가이드
6-1. TLS 암호화
- 모든 리스너에 TLS 적용 필수
- 자체 CA 또는 기업 내부 CA 활용
6-2. 감사 로그 활성화
bash
복사편집
vault audit enable file file_path=/var/log/vault_audit.log
- 접근 기록, 사용자 요청 내역 저장
- 보안 사고 대응 및 포렌식 필수
6-3. 인증 메커니즘 설정
bash
복사편집
vault auth enable userpass vault write auth/userpass/users/dev password="1234" policies="dev-policy"
- 지원 방식:
- LDAP
- OIDC (Google Workspace, Azure AD)
- AWS IAM
- Kubernetes
6-4. 접근 정책 (ACL) 설정
hcl
복사편집
# dev-policy.hcl path "secret/*" { capabilities = ["create", "read", "update", "delete", "list"] }
bash
복사편집
vault policy write dev-policy dev-policy.hcl
7. 백업, 복구, 모니터링
7-1. Raft 스냅샷 백업
bash
복사편집
vault operator raft snapshot save /backups/vault-$(date +%F).snap
7-2. 복구
bash
복사편집
vault operator raft snapshot restore vault-2025-07-01.snap
7-3. 모니터링 구성
- Prometheus + Grafana
- Vault 메트릭 노출: /v1/sys/metrics
- 알람 조건 예시: Raft 노드 수, 리더 여부 등
8. Vault 최신 트렌드 및 연동 사례 (2025 기준)
8-1. Kubernetes 연동
- Sidecar 패턴 또는 CSI 드라이버로 연동 가능
- 인증 방식: JWT 또는 Kubernetes 인증 플러그인
8-2. Azure Arc, OpenShift 통합
- Azure Key Vault 대신 내부 Vault 사용
- OpenShift Data Foundation과 KMS 연동
8-3. 외부 키관리 시스템(KMS) 연동
- Google Cloud KMS, AWS KMS로 자동 Unseal 구성 가능
9. 운영 시 유의사항
| 항목 | 설명 |
| 키 관리 | Unseal 키를 최소 3명 이상에게 분산 보관 |
| 자동화 | Ansible 또는 Terraform으로 프로비저닝 자동화 |
| 감사 | 로그 정기 분석 및 외부 SIEM 연동 |
| 인증서 갱신 | TLS 인증서 자동화 필요 (certbot, ACME 등 활용) |
| DR 리허설 | 정기적으로 복제 및 장애 시나리오 테스트 필요 |
반응형
'[AWS-FRF] > Vault' 카테고리의 다른 글
| [Vault] shamir's secret sharing algorithm !! (1) | 2025.07.18 |
|---|
댓글