Files
runbooks/cloudflare-vault-integration.md
kappa 49fe96775a Add 5 more runbooks
- aws-ses-setup.md: AWS SES email configuration
- anvil-ses-final-setup.md: Anvil SES final setup
- n8n-setup-guide.md: n8n workflow automation
- gitea-setup.md: Gitea server installation
- cloudflare-vault-integration.md: Cloudflare + Vault integration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 00:39:06 +09:00

1.9 KiB

Cloudflare Vault 통합 가이드

저장 방식 권장사항

1. API Token 방식 (권장)

# Vault에 저장
vault kv put secret/cloudflare/tokens \
  api_token="your-api-token" \
  account_id="your-account-id"

# 사용
export CLOUDFLARE_API_TOKEN=$(vault kv get -field=api_token secret/cloudflare/tokens)

2. Global API Key 방식 (현재)

# 현재 Vault 구조
secret/cloudflare/
  ├── email
  └── api_key

# 사용
export CF_API_EMAIL=$(vault kv get -field=email secret/cloudflare)
export CF_API_KEY=$(vault kv get -field=api_key secret/cloudflare)

3. Tunnel 별 크레덴셜

# Vault에 터널별로 저장
vault kv put secret/cloudflare/tunnels/production \
  tunnel_id="uuid" \
  tunnel_secret="base64-secret" \
  account_id="account-id"

# JSON 파일로 추출
vault kv get -format=json secret/cloudflare/tunnels/production | \
  jq '.data.data' > ~/.cloudflared/production.json

자동화 스크립트

Fish Shell 함수

function cf-auth
    set -gx CF_API_EMAIL (vault kv get -field=email secret/cloudflare)
    set -gx CF_API_KEY (vault kv get -field=api_key secret/cloudflare)
    echo "Cloudflare 인증 설정 완료"
end

Bash 별칭

alias cf-auth='eval $(vault kv get -format=json secret/cloudflare | jq -r ".data.data | to_entries[] | \"export CF_\" + (.key | ascii_upcase) + \"=\" + .value")'

보안 고려사항

  1. 최소 권한 원칙: API Token 사용 시 필요한 권한만 부여
  2. 임시 인증: 환경변수는 세션 종료 시 자동 삭제
  3. 파일 권한: chmod 600 ~/.cloudflared/*
  4. Vault 통합: 모든 크레덴셜은 Vault에서 중앙 관리

추천 워크플로우

  1. Vault에 API Token 저장 (Global Key 대신)
  2. 필요시 환경변수로 로드
  3. 작업 완료 후 환경변수 정리
  4. CI/CD에서는 Vault Agent 사용