AWS Key Management Service란?

1. AWS KMS란?

AWS KMS(Amazon Web Services Key Management Service)는 클라우드 환경에서 데이터를 보호하기 위한 핵심 서비스입니다. KMS는 암호화 키를 안전하게 생성, 저장, 관리할 수 있도록 도와주며, 이러한 키를 사용하여 데이터를 암호화하거나 복호화하는 기능을 제공합니다. KMS는 고객이 직접 키를 관리할 수 있는 기능을 제공하며, 필요한 경우 자동으로 키를 생성하고 관리하는 기능도 지원합니다.

KMS는 HSM(하드웨어 보안 모듈)과 달리 여러 계정에서 하드웨어를 공유할 수 있으며, AWS의 다양한 암호화 로직(S3, RDS, EBS 등)에 활용되어 데이터 보안을 강화합니다. 또한 감사 로그를 제공하여 키 사용 내역을 추적할 수 있어 보안 정책 준수를 지원합니다.

2. KMS의 주요 기능

2.1. 키 생성 및 관리: 대칭 및 비대칭 키의 생성 방법

AWS KMS는 대칭 키와 비대칭 키를 모두 지원하여, 사용자 요구에 맞게 키를 생성할 수 있습니다. 대칭 키는 동일한 키로 암호화와 복호화를 수행하며, 비대칭 키는 공개 키로 암호화하고 개인 키로 복호화하는 방식입니다. KMS는 키의 생애 주기를 관리할 수 있는 기능을 제공하여, 키의 활성화, 비활성화 및 삭제를 쉽게 처리할 수 있습니다.

2.2. 키 정책: 권한 관리 및 키 사용 정책 설정

KMS는 강력한 권한 관리 기능을 제공하여, 키 사용 권한을 세밀하게 설정할 수 있습니다. 사용자는 IAM 정책을 통해 특정 사용자나 그룹에 대해 키의 사용을 제한할 수 있으며, 이를 통해 보안성을 강화할 수 있습니다. 키 정책은 중앙 집중식 관리가 가능하여, 조직 전체의 키 사용 정책을 일관되게 적용할 수 있습니다.

2.3. 데이터 암호화: 암호화 및 복호화

KMS는 데이터를 안전하게 암호화하고 복호화하는 과정을 간소화합니다. 사용자는 KMS API를 통해 데이터를 암호화할 때 KMS에서 생성한 키를 활용하며, 복호화 시에도 동일한 키를 사용합니다. 이 과정은 자동화되어 있어, 개발자는 복잡한 암호화 알고리즘을 직접 구현할 필요 없이 KMS를 통해 쉽게 데이터 보호를 수행할 수 있습니다.

2.4. 감사 및 모니터링: AWS CloudTrail과의 통합 및 키 사용 이력 관리

KMS는 AWS CloudTrail과 통합되어 모든 키 사용 활동을 기록하고 모니터링할 수 있습니다. 이를 통해 키 생성, 사용, 삭제 등의 이벤트를 추적할 수 있으며, 보안 감사와 규정 준수를 위해 상세한 로그를 관리할 수 있습니다. 이러한 감사 기능은 기업이 보안 정책을 준수하고, 키 사용에 대한 투명성을 높이는 데 중요한 역할을 합니다.

3. AWS KMS의 종류

3.1. AWS Managed Key (AWS 관리형 키)

AWS에서 AWS 서비스에서 사용하기 위해 생성하고 관리하는 키

[ 특징 ]

  • ex. S3에서 SSE-KMS에서 Managed key 암호화 선택 가능(이 경우, 계정 간 공유 불가능)
  • 키 사용 정책/사용 기록 등은 볼 수 있으나 수정 불가능
  • 삭제/직접 키 로테이션 불가능 (내부적으로 365일에 한 번 씩 로테이션)
  • AWS/{서비스명}으로 이름 부여 (ex. aws/redshift)
  • 무료 (사용 비용은 발생)

3.2. Customer Managed Key (고객 관리 키)

: 고객이 고객 관리형 키의 수명 주기 및 키 정책을 생성하고 제어할 수 있는 키

[ 특징 ]

  • ex. S3에서 SSE-KMS에서 Customer key 암호화 선택 가능
  • 키 사용 정책 / IAM 정책 / 활성, 비활성화 / 태그 / 로테이션 설정 등 모두 가능
  • Customer Managed Key를 지원하지 않는 서비스 존재

3.3. AWS owned key (AWS 소유 키)

AWS의 여러 계정에서 AWS 서비스가 내부 암호화 작업을 수행하기 위해 사용하는 키

[ 특징 ]

  • 내 계정에 속한 key는 아니지만 AWS 서비스에서 키를 활용해서 리소스를 보호하는데 사용
    • ex. DynamoDB의 기본 암호화 방식
    • 내 계정이 아닌 다른 계정에도 활용됨
  • 속성 조회, 설정 불가능
  • 로테이션 설정 불가능
  • 완전한 비용 무료

출처 : https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/concepts.html#key-mgmt

4. Hands-on Guide: Cross-Account EC2 Migration with AWS Managed Key Encrypted AMI

Hands-on에서는 고객사의 요청에 따라 직접 수행했던 KMS 작업을 소개합니다. 이 과정은 AWS 관리형 키와 고객 관리 키(KMS)의 특성을 깊이 이해하는 데 도움이 되며, KMS를 활용한 실무 적용 사례를 잘 보여줍니다. 실제 기업 환경에서 자주 발생할 수 있는 시나리오이므로, 이 과정을 숙지해 두시면 유용하게 활용하실 수 있을 것입니다.

함께 시작해 보겠습니다.

  • 고객 요구 사항
  1. EC2 AMI 생성: 고객은 A 계정 내에서 특정 EC2 인스턴스의 AMI를 생성하고자 합니다.
  2. 신규 EC2 인스턴스 생성: 생성된 AMI 정보를 통해 B 계정에서 신규 EC2 인스턴스를 생성하려고 합니다.

작업 과정 중, 원본 EC2 인스턴스가 AWS 관리형 키로 암호화된 EBS를 사용하고 있다는 문제를 발견하였습니다. 이로 인해 AMI를 다른 계정으로 복사하는 데 장애가 발생했습니다. 이러한 문제를 해결하기 위한 과정을 Hands-On으로 진행하며, 암호화된 EBS를 다루는 방법을 탐구해 나갈 예정입니다.

  • 사전 구성 환경

AWS 관리형 키로 암호화된 EBS를 가진 EC2

  • 해결 과정

[1] 고객 관리 키 생성

A 계정에 고객 관리 키(KMS 키)를 생성합니다. 이 키는 EBS 볼륨을 암호화하고, 다른 계정과의 안전한 공유를 가능하게 합니다.

[2] AMI 생성

A 계정에서 원본 EC2 인스턴스의 AMI(Amazon Machine Image)를 생성합니다. AMI는 해당 인스턴스의 모든 설정과 데이터를 포함하고 있어, 이후의 인스턴스 생성에 필요한 기반이 됩니다.

[3] 신규 EC2 인스턴스 생성

생성된 AMI와 고객 관리 키를 사용하여 A 계정 내에 신규 EC2 인스턴스를 생성합니다. 이 과정에서 EBS는 고객 관리 키로 암호화되어 보안성을 높입니다.

[4] 신규 AMI 생성

새로 생성된 EC2 인스턴스에서 AMI를 다시 생성합니다. 이는 이후 작업에 필요한 인스턴스를 쉽게 배포할 수 있도록 준비하는 과정입니다.

[5] AMI 공유

A 계정에서 생성한 AMI를 B 계정과 공유합니다. 이때 고객 관리 키를 활용하여 AMI를 암호화된 상태로 안전하게 공유합니다.

[6] B 계정에서 신규 EC2 인스턴스 생성

B 계정에서 공유받은 AMI를 기반으로 신규 EC2 인스턴스를 생성합니다. 이 과정에서는 B 계정의 KMS 키(
AWS관리형키 또는 이미 생성되어 있는 고객 관리 키 등)를 사용하여 EBS를 암호화합니다.

이번 Hands-on 과정을 통해 AWS 관리형 키로 암호화된 EBS를 계정 간에 안전하게 공유하는 방법을 배웠습니다. AWS KMS와 고객 관리 키의 활용은 데이터 보안을 강화하는 데 필수적이며, 앞으로 이러한 기술을 활용하여 더욱 효율적이고 안전한 클라우드 환경을 구축하시기 바랍니다.

NDS는 많은 클라우드 경험을 통해 서비스 도입에 도움을 드릴 수 있습니다. 관련하여 문의 사항이나 기술 지원이 필요하신 경우 NDS Sales팀으로 연락주시길 바랍니다.

감사합니다.

5. 참고