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



Vault는 HashiCorp에서 개발한 비밀(Secret) 및 자격 증명 관리 시스템으로, 온프레미스 환경에서도 안전하게 구축할 수 있습니다.
이 문서에서는 Vault 서버의 온프레미스 구축 방법권장 아키텍처를 보안, 가용성, 확장성을 고려하여 구체적으로 설명합니다.



1. Vault 온프레미스 구축 개요

Vault는 민감한 데이터(예: API 키, 데이터베이스 자격증명, 인증 토큰)를 저장하고 제어된 방식으로 접근하게 해주는 솔루션입니다. 온프레미스 구축은 데이터 주권이나 보안 규제가 중요한 기업 환경에 적합합니다.


2. Vault 온프레미스 설치 사전 준비

2.1 요구사항

  • 운영체제: Linux (Ubuntu, CentOS, RHEL 등)

  • 메모리/CPU: 최소 2 vCPU, 4GB RAM

  • 디스크 용량: 최소 10GB (스토리지 백엔드에 따라 다름)

  • 네트워크 포트: 기본 HTTP 8200, 클러스터 통신 8201

2.2 주요 구성 요소

  • Vault 서버 바이너리

  • 스토리지 백엔드 (Consul, Raft, etcd 등)

  • TLS 인증서

  • systemd 또는 Supervisor로 서비스 등록


3. Vault 온프레미스 설치 및 설정

3.1 Vault 설치

bash

# 1. 바이너리 다운로드 wget https://releases.hashicorp.com/vault/1.16.1/vault_1.16.1_linux_amd64.zip # 2. 압축 해제 및 설치 unzip vault_1.16.1_linux_amd64.zip sudo mv vault /usr/local/bin/ # 3. 버전 확인 vault --version

3.2 스토리지 백엔드 구성

옵션 1: Consul (권장)

Consul을 함께 설치한 후 Vault 설정 파일에 아래처럼 지정합니다.

hcl

storage "consul" { address = "127.0.0.1:8500" path = "vault/" }

옵션 2: Integrated Storage (Raft 기반)

Vault 1.4 이상부터 자체 스토리지 사용 가능

hcl

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

3.3 TLS 설정

hcl

listener "tcp" { address = "0.0.0.0:8200" tls_cert_file = "/etc/vault/vault.crt" tls_key_file = "/etc/vault/vault.key" }

3.4 전체 설정 파일 예시 /etc/vault/config.hcl

hcl

ui = true storage "raft" { path = "/opt/vault/data" node_id = "vault-node-1" } listener "tcp" { address = "0.0.0.0:8200" tls_cert_file = "/etc/vault/vault.crt" tls_key_file = "/etc/vault/vault.key" } api_addr = "https://vault.example.local:8200" cluster_addr = "https://vault.example.local:8201" disable_mlock = true

4. Vault 서버 실행 및 초기화

4.1 systemd 등록 예시

ini

[Unit] Description=Vault Requires=network-online.target After=network-online.target [Service] ExecStart=/usr/local/bin/vault server -config=/etc/vault/config.hcl ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure LimitMEMLOCK=infinity User=vault Group=vault [Install] WantedBy=multi-user.target

4.2 Vault 초기화

bash

export VAULT_ADDR='https://vault.example.local:8200' # 초기화 vault operator init -key-shares=5 -key-threshold=3 > /root/vault-init.txt
  • Unseal Key 5개 중 3개 입력하면 Unseal 가능

  • Initial Root Token 저장 필수

4.3 Vault Unseal 및 로그인

bash

vault operator unseal <Unseal Key> vault login <Root Token>

5. 온프레미스 권장 아키텍처

5.1 단일 노드 구성 (테스트용 또는 소규모 환경)

css

[Client Apps] <--> [Vault Server] <--> [Raft Storage / Consul / etcd]
  • 단점: 장애 시 단일 실패점 (SPOF)

5.2 고가용성(HA) 구성 (생산 환경)

pgsql

+-------------------+ | Load Balancer | +--------+----------+ | +----------------+----------------+ | | +-------------+ +-------------+ | Vault Node1 | <--> Raft <--> Vault Node2 | +-------------+ +-------------+ | | [Local Storage] [Local Storage]
  • Vault는 Raft 또는 Consul을 사용하여 클러스터링

  • 최소 3개 노드 구성 권장

  • Load Balancer (HAProxy, NGINX 등)로 트래픽 분산

5.3 DR(재해복구) 및 성능 복제 구성

  • Primary ClusterDR Secondary Cluster

  • 비동기 복제 설정 가능

  • vault write sys/replication/dr/primary/... 로 구성


6. 보안 강화 권장 설정

6.1 TLS 필수 적용

  • 서버 간 통신은 무조건 TLS로 암호화

  • 자체 CA 또는 기업 CA를 통해 인증서 발급

6.2 Audit 로그 활성화

bash

vault audit enable file file_path=/var/log/vault_audit.log

6.3 정책 기반 접근 제어

  • vault policy write로 팀별 권한 구분

  • vault auth enable userpass 또는 OIDC 연동


7. 운영 시 고려사항

항목설명
백업/opt/vault/data 디렉토리 백업 (Raft 기준)
모니터링Prometheus + Grafana 연동 가능
장애 복구Unseal 키 분산 보관 (Shamir's Secret Sharing)
로그 분석감사 로그 + 시스템 로그 수집 필수

8. 마무리 및 추천 자료

Vault 온프레미스 구축은 단순한 설치를 넘어 고가용성, 보안, 정책, 인증 연동까지 고려해야 합니다. 아래 자료도 함께 참고해보세요:


 



댓글

이 블로그의 인기 게시물

[8/9] 1184회 로또 당첨번호 추천!!

[AWS] SCP, OU, Policy 사용하기 !!

[AWS] AWS Activate 스타트업 $1,000 지원 성공

[8/2] 1183회 로또 당첨번호 추천!!

[Gemini API] 구글 생성형 AI API 모델별 요금 및 청구 방식!!

[Shopizer E‑commerce] Shopizer란?

📘 ads.txt란 무엇인가? (2025 최신 가이드)