KMS(Key Management Service)는 데이터 암호화에 사용되는 Key를 안전하게 생성하고 관리하는 서비스이다. KMS는 AWS 서비스와 연동되어 작동하며, 다양한 형태의 키 관리 방식을 제공한다.


| 키 유형 | 설명 | 제어 수준 | 요금 | 사용 사례 |
|---|---|---|---|---|
| 고객 관리형 키 | 사용자가 직접 생성하고 관리 | ✅ 완전 제어 가능 | 💰 월별 요금 + 사용량 요금 | 민감 데이터 암호화 |
| AWS 관리형 키 | AWS 서비스가 생성·관리 | ❌ 제어 불가 | 일부 사용량 요금 (월 요금 없음) | 암호화 자동화, 비용 효율 |
| AWS 소유 키 | AWS 내부용 | ❌ 완전 비공개 | 💸 요금 없음 | AWS 옵션 Default |

| 구분 | 클라이언트 측 암호화 (Client-side) | 서버 측 암호화 (Server-side) |
|---|---|---|
| 암호화 주체 | 사용자가 직접 데이터를 암호화 후 업로드 | AWS가 업로드 시점에 암호화 수행 |
| 키 관리 | 사용자 (로컬 또는 KMS 활용 가능) | AWS 관리 또는 KMS 연동 |
| 사용 예 | 자체 보안 정책이 엄격한 조직 | 대부분의 AWS 서비스 기본 암호화 |
![]

KMS는 Envelope Encryption 방식을 사용한다. 즉, CMK(고객 마스터 키)를 사용해 데이터 키(Data Key)를 생성하고, 이 데이터 키로 실제 데이터를 암호화한다.
[CMK] → GenerateDataKey → [Plaintext DataKey, Encrypted DataKey]
↓ ↓
데이터 암호화 보관용으로 함께 저장
📌 이 구조를 Envelope Encryption이라 부른다.
[Encrypted DataKey] → KMS 복호화(CMK) → Plaintext DataKey → 복호화된 데이터
| 항목 | KMS | CloudHSM |
|---|---|---|
| 관리 주체 | AWS | 사용자(전용 HSM) |
| 보안 수준 | FIPS 140-2 레벨 2 | FIPS 140-2 레벨 3 |
| 비용 | 상대적으로 저렴 | 고가 (전용 리소스) |
| 접근 방식 | 공유형 키 관리 | 전용형 키 하드웨어 장치 |
✅ KMS는 멀티 테넌트 환경에서 간편한 관리에 적합하며, CloudHSM은 강력한 규제 준수와 보안이 필요한 환경에 적합하다.