본문 바로가기
[AWS-FRF]/Vault

[AWS] Vault 온프레미스 구축 개요!!

by METAVERSE STORY 2025. 7. 18.
반응형

 

 

 

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

댓글