AWS Certified Solutions Architect - Associate (SAA-C03) #3 Domain 1-2 안전한 아키텍처: KMS와 암호화

6 분 소요

#2 IAM 깊이에서 “누가 무엇에 접근하는가"를 잡았습니다. 이번에는 한 단계 더 들어가, 접근이 뚫리더라도 데이터 자체를 읽지 못하게 하는 암호화를 다룹니다. SAA에서 암호화 문항은 대부분 “이 데이터를 어떻게 안전하게 저장/전송할 것인가"와 “키를 누가 통제하는가"라는 두 축으로 나옵니다. 그 중심에 KMS가 있습니다.

KMS는 무엇인가 #

AWS Key Management Service(KMS)는 암호화 키를 만들고 관리하는 관리형 서비스입니다. 중요한 전제 두 가지가 있습니다.

  • KMS는 리전 서비스입니다. 키는 생성된 리전을 벗어나지 않습니다(멀티 리전 키는 예외).
  • KMS는 한 번에 최대 4KB까지만 직접 암호화합니다. 그래서 실제 데이터는 봉투 암호화 방식으로 처리합니다(아래 설명).

키의 종류 #

키 종류누가 관리회전비용키 정책 제어
AWS 관리형 키 (AWS managed)AWS자동 (1년)무료불가
고객 관리형 키 (Customer managed, CMK)사용자선택 (자동/수동)월 $1 + 사용량가능
AWS 소유 키 (AWS owned)AWSAWS 재량무료불가 (보이지 않음)

시험에서 갈리는 지점은 **“키 사용을 감사하거나 통제해야 하는가”**입니다. 키 정책을 직접 제어하고 CloudTrail로 사용 기록을 남겨야 한다면 **고객 관리형 키(CMK)**가 답입니다. 단순히 “암호화만 되면 된다"면 AWS 관리형 키로 충분합니다.

대칭 키 vs 비대칭 키 #

KMS 키는 기본적으로 **대칭 키(256-bit AES)**입니다. 같은 키로 암호화,복호화하며, 키 자료가 KMS 밖으로 나가지 않습니다. **비대칭 키(RSA/ECC)**는 공개 키로 암호화하고 개인 키로 복호화하거나, 서명/검증에 사용합니다. 대부분의 저장 암호화는 대칭 키이며, 비대칭은 외부와 공개 키를 주고받아야 할 때만 씁니다.

봉투 암호화 (Envelope Encryption) #

KMS가 4KB까지만 직접 암호화하는데, 어떻게 수십 GB 파일을 암호화할까요. 답은 봉투 암호화입니다.

  1. KMS에 데이터 키(Data Key) 생성을 요청합니다(GenerateDataKey).
  2. KMS는 평문 데이터 키암호화된 데이터 키 두 개를 돌려줍니다.
  3. 평문 데이터 키로 실제 데이터를 암호화한 뒤, 평문 키는 메모리에서 폐기합니다.
  4. 암호화된 데이터와 암호화된 데이터 키를 함께 저장합니다.
  5. 복호화 시에는 암호화된 데이터 키를 KMS에 보내 평문 키를 받아, 그 키로 데이터를 풉니다.

핵심은 KMS 키(KEK)는 데이터 키(DEK)만 암호화하고, 실제 데이터는 데이터 키가 암호화한다는 점입니다. 덕분에 큰 데이터도 KMS 호출 한 번으로 처리하고, KMS 마스터 키는 KMS를 떠나지 않습니다. S3 SSE-KMS, EBS, RDS 암호화가 모두 내부적으로 이 방식을 씁니다.

at rest vs in transit #

구분의미대표 수단
저장 시 암호화 (at rest)디스크/스토리지에 쓰일 때 암호화S3 SSE, EBS 암호화, RDS 암호화
전송 중 암호화 (in transit)네트워크를 지날 때 암호화TLS/SSL, HTTPS

시험에서 “데이터를 저장과 전송 양쪽에서 보호하라"는 요구사항이 나오면, 저장은 KMS 기반 암호화, 전송은 TLS라는 두 축으로 답을 구성합니다.

S3 암호화 옵션 #

S3의 저장 암호화는 키를 누가 쥐느냐로 나뉩니다.

방식키 관리특징
SSE-S3AWS가 키 관리 (AES-256)가장 간단. 키 통제 불필요할 때
SSE-KMSKMS 키 사용키 사용 감사,접근 통제 가능
SSE-C고객이 키 제공키를 AWS에 맡기지 않음. 매 요청에 키 전달
클라이언트 측 암호화업로드 전 직접 암호화AWS가 평문을 전혀 보지 못함

“누가 객체를 복호화했는지 추적해야 한다"면 SSE-KMS, “키 자체를 AWS에 두면 안 된다"는 규제가 있으면 SSE-C 또는 클라이언트 측 암호화가 방향입니다.

EBS와 RDS: 이미 만든 리소스를 암호화하기 #

SAA 단골 함정이 여기 있습니다. EBS 볼륨과 RDS 인스턴스의 암호화는 생성 시점에만 켤 수 있고, 나중에 토글로 바꿀 수 없습니다. 이미 만들어진 비암호화 리소스를 암호화하려면 우회 경로가 필요합니다.

  • EBS. 비암호화 볼륨 → 스냅샷 생성 → 스냅샷을 암호화하여 복사 → 그 스냅샷으로 새 볼륨 생성. EBS 암호화는 볼륨,스냅샷,인스턴스와 볼륨 사이 전송까지 함께 보호합니다.
  • RDS. 비암호화 인스턴스 → 스냅샷 생성 → 스냅샷을 암호화하여 복사 → 그 스냅샷에서 새 인스턴스로 복원. 기존 인스턴스를 직접 암호화하는 옵션은 없습니다.

키 정책과 교차 계정 공유 #

KMS 키에는 **키 정책(Key Policy)**이라는 리소스 기반 정책이 반드시 붙습니다. 키 접근은 다음 조합으로 결정됩니다.

  • 키 정책. 키에 직접 붙는 정책. 기본 키 정책은 루트 계정에 전체 권한을 줍니다.
  • IAM 정책. 키 정책이 IAM에 위임을 허용한 경우에만 효력.
  • Grant. 일시적,세밀한 권한 위임.

다른 계정이 키를 쓰게 하려면 키 정책에서 그 계정 Principal을 허용하고, 상대 계정에서는 IAM 정책으로 키 사용을 허용합니다. 교차 계정 암호화 데이터(예: 다른 계정과 공유하는 암호화 S3, 암호화 스냅샷)는 이 키 정책 설정이 빠지면 접근이 막힙니다.

KMS vs CloudHSM #

항목KMSCloudHSM
테넌시멀티 테넌트(공유)싱글 테넌트(전용 하드웨어)
키 통제AWS와 공유 관리고객이 완전 통제
표준FIPS 140-2 Level 3 검증 모듈 사용전용 HSM, FIPS 140-2 Level 3
용도대부분의 AWS 통합 암호화규제로 키를 완전 단독 통제해야 할 때

“키 자료를 우리만 통제해야 한다”, “전용 하드웨어 보안 모듈이 규제 요건"이라는 단서가 있으면 CloudHSM이 답입니다. 그 외 대부분은 KMS로 충분합니다.

시험 출제 패턴 #

  • “저장 데이터를 암호화하되 누가 복호화했는지 감사해야 한다.” → SSE-KMS(고객 관리형 키)
  • “키를 AWS에 맡기면 안 된다는 규제가 있다.” → SSE-C / 클라이언트 측 / CloudHSM
  • 이미 운영 중인 비암호화 RDS를 암호화하려면?” → 스냅샷 → 암호화 복사 → 복원
  • “비암호화 EBS 볼륨을 암호화하려면?” → 스냅샷 → 암호화 복사 → 새 볼륨
  • “수십 GB 객체를 KMS로 암호화하는 원리는?” → 봉투 암호화(데이터 키)
  • “다른 계정이 우리 암호화 스냅샷을 복원하지 못한다.” → 키 정책에 그 계정 허용 누락

자주 만나는 함정 #

1) KMS가 데이터를 직접 다 암호화한다고 생각 #

KMS는 4KB까지만 직접 처리합니다. 큰 데이터는 봉투 암호화로 데이터 키가 처리합니다.

2) EBS/RDS 암호화를 나중에 켤 수 있다고 오해 #

생성 시점에만 가능합니다. 기존 리소스는 스냅샷 → 암호화 복사 경로를 거칩니다.

3) AWS 관리형 키의 회전을 끌 수 있다고 생각 #

AWS 관리형 키는 1년 주기로 자동 회전되며 끌 수 없습니다. 회전 주기를 제어하려면 고객 관리형 키를 써야 합니다.

4) 교차 계정에서 IAM 정책만 손본다 #

KMS 교차 계정 접근은 키 정책 허용이 먼저입니다. 키 정책에 상대 계정이 없으면 IAM에서 아무리 허용해도 막힙니다.

정리 #

이번 글에서 잡은 것:

  • KMS는 리전 서비스, 직접 암호화는 4KB까지. 큰 데이터는 봉투 암호화
  • 키 종류. AWS 관리형(통제 불가, 무료) vs 고객 관리형(통제,감사 가능, 월 $1)
  • S3. SSE-S3 / SSE-KMS(감사) / SSE-C / 클라이언트 측. 키 통제 요구에 따라 선택
  • EBS,RDS는 생성 시에만 암호화. 기존 리소스는 스냅샷 → 암호화 복사
  • 교차 계정. 키 정책 허용이 선행, 그다음 IAM
  • CloudHSM. 전용 하드웨어로 키를 완전 단독 통제해야 할 때

다음: Domain 1-3 VPC 보안 #

데이터 암호화를 잡았으니, 다음은 네트워크 경계에서의 보안입니다.

#4 Domain 1-3 VPC 보안에서는 보안 그룹(Security Group)과 네트워크 ACL의 차이(stateful vs stateless), VPC Endpoint의 두 종류(Gateway,Interface), PrivateLink로 서비스를 사설로 노출하는 방법, 그리고 VPC Flow Logs와 배스천 호스트까지 정리하겠습니다.

X