데이터 보안 제어 설계

SAA-C03 대비 KMS, 봉투 암호화, ACM, Secrets Manager 등을 활용한 데이터 보안 제어 설계 전략을 정리합니다.

SAA-C03에서 데이터 보안은 "저장 중(at rest)"과 "전송 중(in transit)" 두 가지 상태에서 모두 보호해야 합니다. 어떤 도구를 쓸지, 언제 쓸지를 구분하는 것이 핵심입니다.

 

AWS KMS — 클라우드의 열쇠 보관소

KMS(Key Management Service)는 암호화 키를 만들고, 보관하고, 관리하는 서비스입니다. 잠금장치 회사(열쇠 전문 업체)에 비유할 수 있습니다. 문(데이터)은 직접 잠그고 열지만, 열쇠 자체는 전문 업체(KMS)에 맡기는 방식입니다.

대부분의 AWS 서비스(S3, RDS, EBS, Lambda 등)는 KMS와 자동으로 통합됩니다. "이 S3 버킷을 암호화하세요"라고 설정하면 KMS가 자동으로 키를 관리합니다.

 

KMS 키의 세 가지 종류

AWS 관리형 키는 AWS가 자동으로 생성하고 관리합니다. 서비스별로 하나씩 존재하며(예: aws/s3, aws/rds) 별도 설정 없이 사용할 수 있습니다. 키 교체 주기도 AWS가 자동으로 처리합니다. 가장 편리하지만 세부 제어가 불가합니다.

고객 관리형 키(CMK, Customer Managed Key)는 고객이 직접 만들고 관리합니다. 키 정책, 교체 주기, 접근 권한을 직접 설정할 수 있습니다. 규정 준수 요구사항이 있거나 세밀한 접근 제어가 필요할 때 사용합니다.

AWS 소유 키는 AWS가 내부적으로 사용하는 키입니다. 고객에게 보이지 않으며 관리할 수 없습니다.

!KMS 키 3가지 유형

봉투 암호화 — 대용량 데이터를 효율적으로 암호화하는 방법

KMS로 데이터를 직접 암호화하면 문제가 있습니다. KMS는 최대 4KB 데이터만 처리할 수 있고, 모든 암호화 요청이 KMS API를 거치면 성능이 떨어집니다.

봉투 암호화는 이 문제를 해결하는 2단계 방식입니다:

1단계: KMS에서 데이터 암호화 키(DEK, Data Encryption Key)를 생성합니다. 이 DEK는 실제로 데이터를 암호화하는 데 사용됩니다.

2단계: DEK로 대용량 데이터를 로컬에서 직접 암호화합니다. 이 과정은 KMS API 호출 없이 빠르게 처리됩니다.

3단계: 사용한 DEK 자체를 KMS 마스터 키로 다시 암호화하여 안전하게 보관합니다. "봉투에 열쇠를 넣고 봉투를 잠근다"는 개념입니다.

이렇게 하면 대용량 데이터도 효율적으로 암호화하면서, 마스터 키는 KMS 안에서 안전하게 보호됩니다.

 

전송 중 암호화 — HTTPS와 인증서 관리

데이터가 네트워크를 통해 이동할 때도 암호화가 필요합니다.

HTTPS/TLS는 웹 트래픽을 암호화하는 표준입니다. 사용자가 웹사이트에 접속할 때 브라우저와 서버 사이의 통신을 암호화합니다.

AWS Certificate Manager(ACM)는 SSL/TLS 인증서를 무료로 발급하고 자동 갱신하는 서비스입니다. 인증서 만료를 걱정할 필요가 없습니다. CloudFront, ALB, API Gateway와 쉽게 통합됩니다.

시험 힌트: "사용자 지정 도메인에 HTTPS 적용" 또는 "SSL/TLS 인증서 자동 갱신"이 나오면 ACM을 선택합니다.

 

비밀 관리 — 비밀번호와 API 키를 안전하게 보관하기

코드에 데이터베이스 비밀번호를 직접 작성하는 것은 매우 위험합니다. AWS는 이런 민감한 정보를 안전하게 관리하는 전용 서비스를 제공합니다.

| 서비스 | 특징 | 사용 사례 | |--------|------|---------| | AWS Secrets Manager | 비밀 자동 교체 기능 | DB 비밀번호, API 키, OAuth 토큰 | | SSM Parameter Store | 계층적 저장, 무료 티어 있음 | 앱 설정값, 환경 변수 | | AWS CloudHSM | 물리적 하드웨어 기반 키 관리 | 엄격한 규정 준수 요구 환경 |

Secrets Manager의 자동 교체 기능은 특히 중요합니다. Lambda 함수를 사용하여 주기적으로 RDS 비밀번호를 자동으로 바꾸고, 새 비밀번호를 Secrets Manager에 저장합니다. 코드 변경 없이 주기적인 비밀번호 교체가 가능합니다.

 

S3 데이터 보호 — 실수를 방지하는 추가 보호막

S3 블록 퍼블릭 액세스는 실수로 S3 버킷이 공개되는 것을 계정 또는 버킷 수준에서 막는 기능입니다. "새 버킷을 만들 때 기본적으로 공개가 안 되도록" 설정할 수 있습니다.

S3 객체 잠금(Object Lock)은 WORM(Write Once Read Many) 모델을 구현합니다. 한 번 저장된 데이터는 설정한 기간 동안 삭제하거나 수정할 수 없습니다. 금융, 의료, 법률 분야의 규정 준수에 활용됩니다.

Amazon Macie는 S3 버킷에서 개인식별정보(PII)나 민감한 데이터를 자동으로 탐지하는 서비스입니다. 신용카드 번호, 주민등록번호 등이 실수로 S3에 저장되었는지 자동으로 감지합니다.

 

시험 핵심 정리

"대용량 데이터 암호화의 효율적 방법" — 봉투 암호화 (DEK로 데이터 암호화, CMK로 DEK 암호화)

"키 정책과 교체 주기를 직접 관리" — 고객 관리형 키 (CMK)

"SSL/TLS 인증서 무료 발급 + 자동 갱신" — AWS Certificate Manager (ACM)

"DB 비밀번호 자동 교체" — AWS Secrets Manager

"앱 설정값 계층적 저장, 무료" — SSM Parameter Store

"물리적 하드웨어 기반 암호화, 엄격한 규정 준수" — AWS CloudHSM

"S3 버킷 실수 공개 방지" — S3 블록 퍼블릭 액세스

"데이터 삭제/수정 불가, WORM 모델" — S3 객체 잠금 (Object Lock)

"S3에서 개인정보(PII) 자동 탐지" — Amazon Macie

KMS는 리전 단위 서비스 — 다른 리전 사용 시 멀티 리전 키 또는 키 복제 필요

블로그 목록으로 돌아가기