AWS DVA 보안·암호화 — KMS·SSM·Secrets Manager

2026-05-03확률과 통계 마스터 노트

AWS DVA-C02 마스터 노트 시리즈 10편. KMS 봉투 암호화·CMK 종류·키 정책, SSM Parameter Store 무료 vs Advanced·SecureString, Secrets Manager 자동 회전과 RDS 통합, Encryption SDK 클라이언트측 암호화까지 — 시험 보안 도메인의 마지막 핵심을 한 흐름으로.

이 글은 AWS DVA-C02 마스터 노트 시리즈의 열 번째 편입니다. 1편 IAM이 "누가 접근하는가"였다면, 10편은 "데이터를 어떻게 보호하는가" — KMS·SSM Parameter Store·Secrets Manager·Encryption SDK.

시험 도메인 2 (보안) 26%의 두 번째 절반.

KMS — 키 관리

비유 — 회사 금고와 마스터키 보안실. 모든 AWS 서비스의 암호화 키 중앙 관리.

CMK 종류

종류 설명 비용
AWS Owned AWS가 소유, 일반 사용자는 안 보임 무료
AWS Managed 서비스별 자동 (예: aws/s3) 무료
Customer Managed 사용자가 만든 키 $1/월 + 사용량

여기서 시험 함정이 하나 있어요. Customer Managed Key 만 키 정책을 직접 설정할 수 있어요. AWS Managed는 정책 변경 X.

대칭 vs 비대칭

종류 용도
대칭 (Symmetric) 일반 데이터 암호화 (AES-256)
비대칭 (Asymmetric) 디지털 서명·검증 (RSA·ECC)

대부분 시나리오는 대칭. 비대칭은 외부 시스템 통합·서명 검증 같은 특수 자리.

키 정책 (Key Policy)

키에 직접 붙는 정책. IAM과 별도 평가.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
      "Action": "kms:*",
      "Resource": "*"
    },
    {
      "Sid": "Allow use for encryption",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" },
      "Action": ["kms:Encrypt", "kms:Decrypt"],
      "Resource": "*"
    }
  ]
}

키 자동 회전

Customer Managed Key — 매년 자동 회전 (활성 시)
AWS Managed Key — 매년 자동 (사용자가 끌 수 없음)

기존 데이터는 옛 키로 복호화 가능 (백워드 호환).

여기서 시험 함정이 하나 있어요. 자동 회전은 매년 1회. 더 자주 회전 필요하면 수동 회전 (새 키 만들고 별칭 이동).

봉투 암호화 (Envelope Encryption)

큰 데이터는 KMS 직접 암호화 X (4KB 한도). 대신:

1. KMS GenerateDataKey → Data Key (DEK) 받음
   - 평문 DEK + 암호화된 DEK
2. 평문 DEK로 큰 데이터 암호화
3. 평문 DEK는 메모리에서 폐기
4. 암호화된 데이터 + 암호화된 DEK 함께 저장

복호화:
1. KMS Decrypt(암호화된 DEK) → 평문 DEK
2. 평문 DEK로 데이터 복호화

여기서 정말 중요한 시험 함정 — KMS 직접 호출은 4KB 한도. 이상은 봉투 암호화 패턴. AWS Encryption SDK·S3 SSE-KMS 모두 내부적으로 봉투 암호화 사용.

KMS API

API 용도
Encrypt ≤4KB 직접 암호화
Decrypt 복호화
GenerateDataKey DEK 생성 (봉투 암호화)
GenerateDataKeyWithoutPlaintext 암호화된 DEK만 (저장용)
ReEncrypt DEK를 다른 CMK로 재암호화

SSM Parameter Store

비유 — 회사 공용 설정 게시판. 환경 변수·설정·일부 비밀을 중앙 관리.

계층 (Tier)

계층 한도 비용
Standard 10,000 파라미터 / 4KB 무료
Advanced 100,000 / 8KB $0.05/파라미터/월

타입

타입 설명
String 일반 문자열
StringList 콤마 구분
SecureString KMS 암호화 (비밀번호·API Key)

계층 구조

/myapp/dev/db_host
/myapp/dev/db_password (SecureString)
/myapp/prod/db_host
/myapp/prod/db_password (SecureString)

경로별 IAM 권한 관리 가능.

사용 예시

import boto3
ssm = boto3.client('ssm')

# 일반
db_host = ssm.get_parameter(Name='/myapp/prod/db_host')['Parameter']['Value']

# SecureString
db_password = ssm.get_parameter(
    Name='/myapp/prod/db_password',
    WithDecryption=True
)['Parameter']['Value']

여기서 시험 함정이 하나 있어요. SecureString 조회 시 WithDecryption=True 필수. 안 하면 암호화된 값 그대로.

Parameter Store vs 환경 변수

환경 변수 — 빌드 시 박힘, 변경 = 재배포
Parameter Store — 런타임 조회, 변경 즉시 반영

Secrets Manager — 비밀 관리·자동 회전

비유 — 자동 비밀번호 갱신 금고. DB 비밀번호·API 키 자동 회전.

Parameter Store와의 차이

구분 Parameter Store Secrets Manager
비용 무료 (Standard) $0.40/시크릿/월 + API 호출
자동 회전 X
RDS 통합 X (자동 관리)
최대 크기 4KB / 8KB 64KB
적합 설정·일반 비밀 DB 비밀번호·API Key

자동 회전

Lambda 함수가 주기적(기본 30일) 새 비밀번호 생성·DB 업데이트.

Day 0: 시크릿 생성, 비밀번호 P1
Day 30: 자동 회전 → P2 (애플리케이션 무중단)
Day 60: P3

여기서 정말 중요한 시험 함정 — DB 비밀번호 자동 회전 = Secrets Manager 표준. Parameter Store로는 자동 회전 X. RDS·Aurora는 Secrets Manager와 자동 통합 가능.

사용 예시

import boto3
import json

secrets = boto3.client('secretsmanager')
response = secrets.get_secret_value(SecretId='myapp/db/credentials')
credentials = json.loads(response['SecretString'])

db_user = credentials['username']
db_pass = credentials['password']

CloudHSM

비유 — 하드웨어 보안 모듈 (HSM) 임대. 규제 산업(금융·의료) 자체 키 관리.

구분 KMS CloudHSM
키 소유 AWS (공유) 사용자 (전용 HSM)
비용 저렴 매우 비쌈
FIPS 140-2 Level 2 Level 3
적합 일반 규제·컴플라이언스

대부분 시나리오는 KMS. CloudHSM은 특수 자리만.

AWS Encryption SDK

클라이언트측 암호화 라이브러리.

import aws_encryption_sdk
from aws_encryption_sdk import CommitmentPolicy

client = aws_encryption_sdk.EncryptionSDKClient(
    commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
)

key_provider = aws_encryption_sdk.StrictAwsKmsMasterKeyProvider(
    key_ids=['arn:aws:kms:us-east-1:...:key/abcd-1234-...']
)

# 암호화
ciphertext, header = client.encrypt(
    source=b'sensitive data',
    key_provider=key_provider
)

# 복호화
plaintext, header = client.decrypt(
    source=ciphertext,
    key_provider=key_provider
)

특징:

  • 봉투 암호화 자동 처리
  • 다중 KMS 키 지원 (복원력)
  • AWS 외부에도 사용 가능

여기서 시험 함정이 하나 있어요. 클라이언트측 암호화 = AWS는 평문 못 봄. 가장 강한 보안 모드. 단, 키 관리·복호화 로직 사용자 책임.

DynamoDB Encryption Client

DynamoDB 항목 단위 클라이언트측 암호화.

특정 컬럼만 암호화 (PII 필드 등). 평문 검색은 X (인덱스 못 만듦).

ACM (Certificate Manager)

SSL/TLS 인증서 무료 발급·관리. ELB·CloudFront·API Gateway에 자동 배포.

ACM에서 발급 → ALB 리스너에 부착 → HTTPS 자동

자동 갱신. 인증서 만료 걱정 X.

여기서 시험 함정이 하나 있어요. ACM 인증서는 AWS 서비스에만 사용 가능. EC2 직접 부착 X (ELB·CloudFront 통해야).

WAF — Web Application Firewall

XSS·SQL Injection·봇 차단. CloudFront·ALB·API Gateway에 적용.

룰 종류

  • IP 차단·허용
  • 지리적 위치
  • SQL Injection·XSS 패턴
  • Rate-based (DDoS)
  • 매니지드 룰 (AWS·서드파티)

Shield — DDoS 방어

종류 설명
Shield Standard 자동, 모든 AWS 사용자 (무료)
Shield Advanced $3,000/월, 24/7 DDoS Response Team

대부분 Standard로 충분.

시험 직전 한 번 더 — 자주 헷갈리는 함정 모음

여기까지가 10편의 핵심입니다. 시험 직전 또는 실무에서 헷갈릴 때 다시 펼쳐 볼 수 있게 압축 노트로 마무리할게요.

  • KMS CMK 3종 — AWS Owned (무료) / AWS Managed (서비스별) / Customer Managed (정책 직접)
  • 대칭 (AES-256) / 비대칭 (RSA·ECC, 서명)
  • Key Policy — 키에 직접 붙는 정책, IAM과 별도
  • 자동 회전 매년 1회, Customer Managed 활성 시
  • 봉투 암호화 — KMS GenerateDataKey → DEK → 큰 데이터 암호화
  • KMS 직접 암호화 4KB 한도
  • API — Encrypt / Decrypt / GenerateDataKey / GenerateDataKeyWithoutPlaintext / ReEncrypt
  • SSM Parameter Store — Standard (무료, 10K, 4KB) / Advanced (100K, 8KB)
  • 타입 — String / StringList / SecureString (KMS 암호화)
  • 계층 구조 (/myapp/prod/db_host) — IAM 권한 관리
  • WithDecryption=True — SecureString 평문 조회
  • Secrets Manager = DB 비밀번호 / API Key, 자동 회전
  • 회전 기본 30일, Lambda로 갱신
  • RDS·Aurora 자동 통합
  • 비용 $0.40/시크릿/월
  • Parameter Store ≠ Secrets Manager — 자동 회전 차이
  • CloudHSM = 전용 HSM, FIPS Level 3, 규제·컴플라이언스
  • 대부분 KMS로 충분
  • Encryption SDK = 클라이언트측 암호화
  • AWS는 평문 못 봄 — 가장 강한 보안
  • DynamoDB Encryption Client = 항목 단위 (PII 컬럼)
  • 인덱스 못 만듦
  • ACM = SSL/TLS 무료 발급·자동 갱신
  • ELB·CloudFront·API Gateway만 (EC2 직접 X)
  • WAF = XSS·SQL Injection·DDoS, CloudFront·ALB·API Gateway
  • Rate-based 룰 = DDoS 완화
  • Shield Standard (무료, 자동) / Shield Advanced ($3,000/월)

시리즈 다른 편

공식 문서: KMS Developer Guide / Secrets Manager User Guide 에서 더 깊이.

다음 글(11편)에서는 컨테이너 — ECS Cluster·Task Definition, Fargate 서버리스, ECR Image, EKS Kubernetes까지 풀어 갑니다.

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!