🔎 왜 이 전략이 필요한가?
DevOps의 고질적 문제는 Secrets 관리의 파편화입니다.
개발 환경에서는 .env, 운영 환경에서는 AWS Secrets Manager, 일부는 K8s Secret 등…
결과적으로:
• 접근 권한이 불분명해 보안 위험 발생
• CI/CD 자동화 시 Secrets 삽입 위치가 복잡해짐
• 운영자 수동 배포 → 사람 오류 발생 가능성 증가
이를 해결하기 위해 실리콘밸리 및 대형 기업들은 다음과 같은 통합 전략을 사용합니다:
Terraform으로 Vault 인프라를 정의하고,
Vault에서 Secret을 관리하고,
ArgoCD에서 동적으로 Secrets를 주입하며,
CI/CD와 통합하여 자동화합니다.
⸻
🧱 전체 아키텍처 요약
Terraform → Vault 생성 및 초기화
Vault → Secrets 저장 및 K8s 인증 연동
ArgoCD → Vault와 연동된 Helm/Kustomize 템플릿으로 배포 시점에 Secrets 주입
GitHub Actions → Vault에 API로 Secrets 쓰기 + ArgoCD Refresh 트리거
⸻
📁 디렉토리 구조 예시
repo-root/
├── infra/
│ └── terraform/
│ └── vault/
├── app/
│ ├── values.yaml ← Vault 연동 변수 포함
│ └── templates/
└── .github/workflows/
├── vault-upload.yml
└── argo-refresh.yml
⸻
🔧 Terraform으로 Vault 구성 예시
provider "vault" {
address = "https://vault.example.com"
}
resource "vault_kv_secret_v2" "db_password" {
mount = "secret"
name = "prod/db"
data_json = jsonencode({
password = var.db_password
user = "admin"
})
}
⸻
🧪 GitHub Actions에서 Vault로 Secrets Push
name: Upload Secrets to Vault
on:
push:
branches: [main]
jobs:
upload:
runs-on: ubuntu-latest
steps:
- name: Write secret to Vault
run: |
curl --header "X-Vault-Token: ${{ secrets.VAULT_TOKEN }}" \
--request POST \
--data '{"data": {"password": "${{ secrets.DB_PASS }}"}}' \
https://vault.example.com/v1/secret/data/prod/db
⸻
🛠️ ArgoCD 연동: Vault-plugin으로 실시간 주입
ArgoCD + Helm 또는 Kustomize로 배포할 때, 아래처럼 Secret Generator Plugin을 연동:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: backend
spec:
source:
repoURL: https://github.com/org/repo
path: app/
plugin:
name: vault-helm
Helm chart 내부에서는 다음처럼 작성:
env:
DB_PASSWORD: "{{ .Values.vault.secret.db_password }}"
⸻
🧩 보안 강화 기술 스택
기술 목적
Vault Policies 팀·환경별 읽기/쓰기 권한 분리
AWS IAM 연동 K8s ServiceAccount 인증 허용
Lease TTL Secret 자동 만료/갱신 설정
ArgoCD RBAC 배포 주체별 권한 관리
Vault Audit Log 누가 어떤 시점에 어떤 Secret에 접근했는지 기록
⸻
✅ 기대 효과
항목 변화
Secrets 저장 Git이 아닌 Vault에 저장됨 (보안 강화)
CI/CD 환경 PR마다 Secrets 자동 주입 (사람 개입 최소화)
보안 감사 접근 기록 명확, 내부 감사를 위한 로깅 완비
운영 안정성 운영자 수동 관리 불필요, 자동 갱신 체계
⸻
🧠 결론
Vault, Terraform, ArgoCD를 결합하면 단순히 “Secret을 잘 저장한다” 수준을 넘어서,
CI/CD, 인프라, 애플리케이션에 안전하게 자동으로 주입되는 보안 시스템을 완성할 수 있습니다.
이는 보안이 최우선인 금융권, 헬스케어, 국방·정부 클라우드 환경에서도 사용되는 전략이며,
GitOps + Zero Trust 보안 철학을 실제로 구현하는 가장 실용적인 방식입니다.
'IT & Tech 정보' 카테고리의 다른 글
🧬 GitOps × 환경 메트릭 기반 자율 배포 파이프라인: “환경 반응형 배포 전략”의 실전 구현 (0) | 2025.05.29 |
---|---|
🔐 HashiCorp Vault + Kubernetes 동적 인증 완전 자동화: 서비스 계정으로 인증 받고 TTL 기반 시크릿 자동 주입까지 (0) | 2025.05.29 |
🧱 Terraform 기반 DB 마이그레이션 + GitOps 통합 구조: RDS/Cloud SQL/PlanetScale까지 자동화하는 법 (0) | 2025.05.29 |
🛠️ GitOps 기반 데이터 마이그레이션 자동화: PR 단위 DB 변경 추적, 롤백, 그리고 승인 체계까지 (0) | 2025.05.29 |
🏢 GitOps + Argo CD + Helm 기반 멀티테넌시 쿠버네티스 운영 전략 (0) | 2025.05.29 |