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

69 lines
1.9 KiB
Markdown

# Cloudflare Vault 통합 가이드
## 저장 방식 권장사항
### 1. **API Token 방식 (권장)**
```bash
# 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 방식 (현재)**
```bash
# 현재 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 별 크레덴셜**
```bash
# 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 함수
```fish
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 별칭
```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 사용