Transit Engine – Encryption as a Service
1️⃣2️⃣ Transit Engine – Encryption as a Service
Vault의 Transit Secret Engine은 데이터를 저장하지 않고, 암호화 및 복호화 서비스만 제공합니다. 애플리케이션은 민감한 데이터를 저장하기 전 Vault를 통해 실시간으로 암호화하거나, 복호화할 수 있습니다. 이를 통해 외부 시스템은 Vault를 암호화 서비스로 사용할 수 있습니다.
1. 외부 시스템의 암호화 지원 구성
Transit Engine은 “Encryption as a Service” 형태로 사용됩니다.
- 🔐 Vault는 데이터를 저장하지 않습니다.
- 🧩 단순히 암호화/복호화 연산만 수행합니다.
- 🛡️ 키는 Vault 내부에서 안전하게 관리됩니다.
🔧 기본 구성 흐름
- Vault 서버에서 Transit Engine 활성화
- 키 생성 (
payment-key
,auth-key
등) - 외부 시스템이 Vault API로 암호화/복호화 요청
🖼️ 아키텍처 다이어그램
┌────────────┐ ┌──────────────┐
│ Web App │──────────▶│ Vault API │
│ (Client) │ encrypt │ (Transit) │
└────────────┘ └────┬─────────┘
│
▼
┌────────────────┐
│ Key Ring │
│ (Managed in │
│ Vault) │
└────────────────┘
📌 주요 활용 예시
사용 예 | 설명 |
---|---|
결제 시스템 | 카드번호 암호화 후 DB 저장 |
인증 시스템 | 비밀번호, 인증 토큰 등 암호화 |
외부 파트너 연동 | 민감 정보 전달 시 Vault로 암호화 처리 |
2. 데이터 암호화/복호화 API 예시
🧪 실습: Transit Engine 구성
# Transit Secret Engine 활성화
vault secrets enable transit
# 키 생성
vault write -f transit/keys/payment-key
🔐 데이터 암호화
vault write transit/encrypt/payment-key \
plaintext=$(echo -n "card-1234-5678-9012" | base64)
📦 응답 예시:
{
"data": {
"ciphertext": "vault:v1:GHDsSlzU8uHgv..."
}
}
🔓 데이터 복호화
vault write transit/decrypt/payment-key \
ciphertext="vault:v1:GHDsSlzU8uHgv..."
📦 응답 예시:
{
"data": {
"plaintext": "Y2FyZC0xMjM0LTU2NzgtOTAxMg=="
}
}
🔄 출력된
plaintext
는 Base64로 인코딩된 값이므로, 복호화 후base64 -d
사용 필요
3. 실시간 암호화 아키텍처 예: 결제, 인증
Vault Transit Engine은 민감한 데이터를 안전하게 보호하면서 애플리케이션은 단순한 API 호출만으로 암호화를 처리할 수 있게 해줍니다.
💳 예시: 결제 시스템에서 카드번호 암호화
User → Web App → Vault Transit API → 암호화된 카드번호 저장
🖼️ 결제 시스템 아키텍처 예시
┌────────────┐
│ Client │
└─────┬──────┘
▼
┌─────────────┐
│ Web Backend │
└─────┬───────┘
▼
┌─────────────────────────┐
│ Call Vault Transit API │
│ /encrypt/payment-key │
└─────────────────────────┘
▼
┌────────────────┐
│Encrypted Data │
│ Stored in DB │
└────────────────┘
✅ 정리
항목 | 설명 |
---|---|
목적 | 실시간 암호화/복호화 서비스 제공 |
저장 여부 | Vault는 데이터를 저장하지 않음 |
키 관리 | Vault 내부에서 키 자동 관리 |
활용 사례 | 결제, 인증, 민감 정보 암호화 등 |
이점 | 앱은 Vault에 민감한 데이터를 맡기지 않으면서도, 안전하게 처리 가능 |
🧠 실전 팁
vault:v1:
은 키의 버전을 의미 → 키 롤링에도 안정적- Vault ACL 정책으로 특정 키에 대한 접근 제한 필수
- 퍼포먼스 문제 시 Vault Performance Standby Node와 함께 구성 추천
마지막 수정일자