AWS KMS 개념
AWS KMS는 중앙 집중화된 키 관리 시스템으로, 봉투암호화를 통해 데이터를 보호하기 위해 암호화 키를 생성하고 관리하는 역할을 합니다. AWS KMS를 사용하면 AWS 서비스 및 애플리케이션에서 암호화된 데이터를 안전하게 보호할 수 있으며, 키에 대한 접근 제어 및 사용 로그를 AWS CloudTrail과 연동하여 감사할 수 있습니다.
AWS KMS의 주요 기능
- 암호화 키(CMK) 생성 및 관리
- 데이터 암호화 및 복호화
- AWS 서비스와 자동 통합 (S3, RDS, EBS, DynamoDB 등)
- 세분화된 IAM 정책 기반 접근 제어
- AWS CloudTrail과 연동하여 키 사용 감사 가능
- BYOK(Bring Your Own Key) 기능을 통해 자체 키 가져오기 가능
- HSM 기반 보안 (FIPS 140-2 인증 지원)
AWS KMS Key 유형
AWS KMS는 두 개의 키유형을 제공합니다.
구분 | AW 관리형키(AWS Managed Key) | 고객 관리형 키 (CMK) |
소유권 | AWS에서 자동으로 생성 및 관리 | 사용자가 직접 생성 및 관리 |
사용 가능 서비스 | 특정 AWS 서비스에서만 사용 가능 (예: S3, RDS, EBS 등) | 여러 AWS 서비스 및 애플리케이션에서 사용 가능 |
키 회전 지원 | X (AWS 내부적으로 관리되지만 사용자 제어 불가) | O (자동 회전 활성화 가능) |
키 정책(Custom Policy) 적용 | X (AWS가 기본 정책 설정) | O (사용자가 IAM 및 Key Policy 설정 가능) |
삭제 가능 여부 | X (사용자가 직접 삭제 불가) | O (삭제 가능, 다만 보류 기간 설정 필요) |
비용 | 무료 (API 호출 비용만 부과됨) | 월별 키 저장 비용 + API 호출 비용 부과됨 |
예제 사용 사례 | S3, EBS, RDS, DynamoDB 등의 기본 암호화 키 | 고유한 키 관리가 필요한 금융, 의료, 보안 강화를 요구하는 기업 |
AWS Key Management Service(AWS KMS)는 AWS 클라우드에서 암호화 키를 생성, 저장 및 관리할 수 있도록 지원하는 완전 관리형 서비스입니다. AWS KMS를 사용하면 민감한 데이터를 보호하고, 암호화 키의 라이프사이클을 효율적으로 관리하며, 보안 규정을 준수할 수 있습니다.
구조 및 원리
AWS KMS는 고객 마스터 키(CMK)를 기반으로 작동하며, 키 생성 및 사용 과정에서 높은 보안성과 효율성을 제공합니다.
구성 요소
- 고객 마스터 키(CMK): AWS KMS에서 생성 및 관리하는 기본 암호화 키
- 데이터 키(Data Key): CMK를 사용하여 생성되며, 개별 데이터 암호화에 사용
- 키 정책(Key Policy): IAM 사용자 및 AWS 서비스에 대한 키 사용 권한을 정의하는 정책
- AWS CloudTrail 통합: 모든 키 사용 로그를 기록하여 보안 감사 가능
- BYOK(Bring Your Own Key): 자체 키를 업로드하여 AWS KMS에서 관리 가능
- AWS KMS Multi-Region Keys: 여러 리전에서 동일한 키를 사용하여 글로벌 암호화 관리 가능
AWS KMS 봉투암호화 원리
AWS KMS 봉투 암호화는 데이터 암호화 키(Data Key)와 고객 마스터 키(CMK)를 활용하여 보안성을 강화하는 방식입니다.
동작방식은 아래와 같습니다.
1. 데이터 키(Data Key) 생성
- AWS KMS에서 CMK를 사용하여 새로운 데이터 키(Data Key, 대칭키) 생성
- 생성된 데이터 키는 암호화된 버전과 평문 버전 두 개 제공
2. 데이터 암호화
- 평문 데이터 키를 사용하여 애플리케이션에서 데이터를 암호화
- 이후, 평문 데이터 키는 메모리에서 즉시 삭제
3. 데이터 키 암호화
- 생성된 데이터 키의 암호화된 버전(CMK로 암호화된 상태)만 저장
- 암호화된 데이터 키는 S3, RDS 등 다양한 스토리지 서비스에 안전하게 보관 가능
4. 데이터 복호화
- 저장된 암호화된 데이터 키를 AWS KMS에 전달하여 복호화 요청
- AWS KMS는 CMK를 사용하여 데이터 키를 복호화
- 복호화된 데이터 키를 이용해 애플리케이션에서 원본 데이터를 복호화
활용 사례
1. 데이터 보호 및 암호화
AWS KMS를 사용하면 AWS 리소스 및 애플리케이션에서 데이터를 안전하게 암호화할 수 있습니다.
- S3 버킷 암호화: S3 객체를 AWS KMS 키를 사용하여 암호화
- EBS 볼륨 암호화: EC2 인스턴스의 디스크 데이터를 암호화하여 보안 강화
- RDS 및 DynamoDB 암호화: 데이터베이스 데이터를 저장할 때 자동 암호화 적용
2. 보안 및 규정 준수
AWS KMS는 기업이 보안 및 컴플라이언스 요구 사항을 충족하도록 도와줍니다.
- FIPS 140-2 인증을 통한 보안 강화
- GDPR, HIPAA, PCI-DSS 등의 보안 규정 준수
- AWS CloudTrail 로그를 통한 키 사용 감사 및 모니터링
3. 애플리케이션 및 서비스 통합
AWS KMS는 AWS 서비스 및 외부 애플리케이션과 쉽게 통합할 수 있습니다.
- Lambda 함수 내 데이터 암호화: 서버리스 애플리케이션에서 데이터 보안 강화
- API Gateway 암호화: API 요청 데이터를 AWS KMS로 보호
- Secrets Manager 연동: 애플리케이션 자격 증명 및 API 키를 안전하게 관리
4. 키 수명 주기 관리 및 BYOK
기업이 자체 보안 정책을 준수할 수 있도록 키 수명 주기를 관리할 수 있습니다.
- 키 자동 순환(Rotation) 기능 제공
- BYOK(Bring Your Own Key)를 사용하여 자체 암호화 키 업로드 가능
- 삭제 보호 기능을 활용하여 실수로 키를 삭제하는 것을 방지
5. 다중 리전 키(Multi-Region Keys) 활용
AWS KMS는 여러 리전에서 동일한 키를 사용하여 글로벌 애플리케이션의 암호화를 단순화할 수 있습니다.
- 재해 복구(Disaster Recovery) 시 동일한 키를 사용하여 데이터 복호화 가능
- 국가별 데이터 보호 규정을 준수하면서 보안 정책 유지
- 다중 리전 키를 활용한 성능 최적화 및 낮은 레이턴시 유지