2026-01-30 22:09:45 +09:00
2026-02-03 11:21:00 +09:00
2026-01-30 22:09:45 +09:00

Vault Backup to Cloudflare R2

HashiCorp Vault 시크릿을 Cloudflare R2에 자동 백업하는 도구

구조

vault-backup/
├── scripts/
│   ├── vault-backup-r2.sh     # 전체 백업 (Raft 스냅샷 + fallback)
│   └── vault-backup-mcp.sh    # 경로 기반 백업
├── docs/
├── old-backups/               # 기존 로컬 백업
├── .env.example               # 환경변수 예제
└── README.md

요구사항

  • curl, jq, aws CLI
  • Cloudflare R2 API 토큰
  • Vault 접근 토큰

설정

1. 환경변수 설정

cp .env.example .env
vi .env

2. R2 API 토큰 생성

  1. Cloudflare Dashboard → R2
  2. Manage R2 API TokensCreate API Token
  3. 권한: Object Read & Write
  4. 버킷: vault-backup

3. Account ID 확인

Cloudflare Dashboard → 우측 하단 Account ID 복사

사용법

수동 백업

source .env
./scripts/vault-backup-r2.sh

자동 백업 (Cron)

# 매일 새벽 3시 백업
0 3 * * * cd ~/vault-backup && source .env && ./scripts/vault-backup-r2.sh >> logs/backup.log 2>&1

특정 이름으로 백업

./scripts/vault-backup-r2.sh my-custom-backup-name

백업 방식

스크립트 방식 용도
vault-backup-r2.sh Raft 스냅샷 우선, 실패시 시크릿 export 전체 백업
vault-backup-mcp.sh 지정된 경로만 백업 선택적 백업

환경변수

변수 설명 기본값
VAULT_ADDR Vault 서버 주소 -
VAULT_TOKEN Vault 인증 토큰 -
R2_ACCOUNT_ID Cloudflare Account ID -
R2_ACCESS_KEY R2 Access Key ID -
R2_SECRET_KEY R2 Secret Access Key -
R2_BUCKET R2 버킷 이름 vault-backup
RETENTION_DAYS 백업 보존 기간 (일) 30

복원

# R2에서 다운로드
aws s3 cp s3://vault-backup/vault-snapshot-YYYYMMDD-HHMMSS.snap ./restore.snap \
    --endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com

# Vault 복원 (Raft)
vault operator raft snapshot restore restore.snap

라이선스

MIT

Description
HashiCorp Vault 시크릿을 Cloudflare R2에 자동 백업하는 도구
Readme MIT 37 KiB
Languages
Shell 100%