SAABlog
보안중급

AWS KMS 키 관리: 고객 관리형 vs AWS 관리형, 키 정책 작성법

AWS KMS의 키 유형(고객 관리형, AWS 관리형, AWS 소유)별 차이점과 키 정책 작성 방법, IAM 정책과의 관계를 상세히 설명합니다.

PHILOLAMB-
KMS고객 관리형 키AWS 관리형 키키 정책암호화

관련 시험 도메인

  • Domain 1: Design Secure Architectures

핵심 요약: KMS 키 유형 선택

결론부터 말하면: 대부분의 경우 AWS 관리형 키로 충분합니다. 키 정책 수정, 키 교체 제어, 크로스 계정 액세스가 필요하면 고객 관리형 키를 선택하세요.

한눈에 보는 비교

구분고객 관리형 키AWS 관리형 키AWS 소유 키
키 정책 제어완전 제어읽기만 가능접근 불가
키 교체 제어선택적자동 (1년)AWS 관리
CloudTrail 감사가능가능불가
크로스 계정 공유가능불가불가
월별 비용$1/키무료무료
API 요청 비용있음있음없음

시험 팁

시험 핵심: "키 정책 수정" 또는 "크로스 계정 액세스" → 고객 관리형 키 필수. "최소 비용" → AWS 관리형 키 또는 AWS 소유 키


KMS 키 유형 이해하기

AWS KMS는 세 가지 유형의 키를 제공합니다.

┌─────────────────────────────────────────────────────────────┐
│                    AWS KMS 키 유형                          │
├─────────────────┬─────────────────┬─────────────────────────┤
│  고객 관리형 키  │  AWS 관리형 키   │      AWS 소유 키        │
│  (CMK)          │  (aws/service)  │                         │
├─────────────────┼─────────────────┼─────────────────────────┤
│ • 사용자 생성    │ • AWS 서비스    │ • AWS 내부 사용         │
│ • 완전 제어     │   자동 생성     │ • 고객 계정에 없음       │
│ • 월 $1/키     │ • 읽기만 가능   │ • 무료                   │
│ • 유연한 교체   │ • 자동 교체     │ • 투명한 암호화          │
└─────────────────┴─────────────────┴─────────────────────────┘

고객 관리형 키 (Customer Managed Keys)

사용자가 직접 생성, 소유, 관리하는 KMS 키입니다.

사용자
   │
   ├── 키 생성 (CreateKey)
   │
   ├── 키 정책 작성/수정
   │
   ├── 활성화/비활성화
   │
   ├── 키 교체 설정
   │
   ├── 태그/별칭 관리
   │
   └── 삭제 예약 (7-30일 대기)
특징설명
식별자DescribeKeyKeyManager = CUSTOMER
제어 수준키 정책, IAM 정책, 권한 부여 완전 제어
교체수동 또는 자동(1년) 선택 가능
비용월 $1/키 + API 요청 비용
CloudTrail모든 사용 기록 감사 가능

적합한 경우:

  • 키 정책을 직접 수정해야 할 때
  • 크로스 계정 액세스가 필요할 때
  • 키 교체 주기를 제어해야 할 때
  • 특정 규정 준수 요구사항이 있을 때

AWS 관리형 키 (AWS Managed Keys)

AWS 서비스가 자동으로 생성하고 관리하는 KMS 키입니다.

AWS 서비스 (S3, EBS, RDS 등)
   │
   └── aws/<service-name> 키 자동 생성
       │
       ├── alias/aws/s3
       ├── alias/aws/ebs
       ├── alias/aws/rds
       └── ...
특징설명
식별자alias/aws/<service> 형식 (예: aws/s3)
제어 수준읽기만 가능, 수정/삭제 불가
교체자동으로 연 1회 (약 365일)
비용월별 요금 없음, API 요청 비용만
CloudTrail모든 사용 기록 감사 가능

적합한 경우:

  • 키 관리 오버헤드를 피하고 싶을 때
  • 기본 암호화만 필요할 때
  • 비용을 최소화하고 싶을 때

시험 팁

주의: 2021년 이후 새 AWS 서비스는 AWS 관리형 키 대신 AWS 소유 키를 기본으로 사용합니다. 기존 서비스(S3, EBS 등)는 여전히 AWS 관리형 키를 사용합니다.

AWS 소유 키 (AWS Owned Keys)

AWS가 내부적으로 소유하고 관리하는 키입니다.

특징설명
위치고객 계정에 존재하지 않음
제어 수준고객이 관리 불가
가시성키 정책, CloudTrail 로그 볼 수 없음
비용완전 무료

적합한 경우:

  • 편의성이 최우선일 때
  • 비용을 완전히 제거하고 싶을 때
  • 감사 로그가 필요 없을 때

키 정책 (Key Policy)

키 정책이란?

키 정책은 KMS 키에 대한 리소스 정책으로, 모든 KMS 키에 필수입니다.

┌─────────────────────────────────────────────────────────────┐
│                    KMS 키 접근 제어                         │
│                                                             │
│   ┌─────────────────┐                                       │
│   │    키 정책      │ ◀── 필수! 모든 KMS 키에 반드시 필요  │
│   │  (Key Policy)   │                                       │
│   └────────┬────────┘                                       │
│            │                                                │
│            ▼                                                │
│   ┌─────────────────┐    ┌─────────────────┐               │
│   │   IAM 정책      │    │   권한 부여      │               │
│   │ (IAM Policy)   │    │   (Grants)      │               │
│   └─────────────────┘    └─────────────────┘               │
│         ▲                        ▲                         │
│         │                        │                         │
│         └── 키 정책에서 활성화해야 작동 ──┘                │
└─────────────────────────────────────────────────────────────┘

키 정책 vs IAM 정책

구분키 정책IAM 정책
필수 여부필수선택
적용 범위리전별글로벌
대상단일 KMS 키여러 KMS 키
우선순위더 높음키 정책에 종속

시험 팁

시험 필수 암기: 키 정책에서 명시적으로 허용하지 않으면, IAM 정책으로도 KMS 키에 접근할 수 없습니다! IAM 정책이 작동하려면 키 정책에서 먼저 IAM 정책 사용을 활성화해야 합니다.

기본 키 정책

AWS KMS 콘솔에서 생성한 키에는 기본 키 정책이 자동으로 포함됩니다.

{
  "Version": "2012-10-17",
  "Id": "key-default-1",
  "Statement": [
    {
      "Sid": "Enable IAM policies",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

이 정책의 의미:

  1. 계정 루트 사용자에게 모든 KMS 작업 허용
  2. IAM 정책 사용 활성화 (IAM 정책으로 권한 위임 가능)

키 정책 작성 예시

특정 사용자에게 암호화/복호화 권한 부여

{
  "Sid": "Allow encryption and decryption",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/ExampleUser"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}

크로스 계정 액세스 허용

{
  "Sid": "Allow cross-account access",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::444455556666:root"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

AWS 서비스에서 사용 허용

{
  "Sid": "Allow S3 service",
  "Effect": "Allow",
  "Principal": {
    "Service": "s3.amazonaws.com"
  },
  "Action": [
    "kms:GenerateDataKey*",
    "kms:Decrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:CallerAccount": "111122223333"
    }
  }
}

키 교체 (Key Rotation)

자동 키 교체

고객 관리형 키에 대해 자동 키 교체를 활성화할 수 있습니다.

활성화 전:
┌─────────────────┐
│   KMS 키 ARN    │───▶ HBK-1 (원본 백업 키)
└─────────────────┘

1년 후 (자동 교체):
┌─────────────────┐     ┌─────────────────────────────┐
│   KMS 키 ARN    │───▶ │ HBK-2 (새 키) - 암호화용   │
│  (동일 ARN)     │     │ HBK-1 (구 키) - 복호화만   │
└─────────────────┘     └─────────────────────────────┘
키 유형자동 교체
고객 관리형 키 (대칭)선택적 활성화 (기본 비활성화)
고객 관리형 키 (비대칭)지원 안 함
AWS 관리형 키자동 (1년 주기)
AWS 소유 키AWS 서비스별 상이

키 교체의 장점

✅ 키 ARN, 키 ID, 별칭 변경 없음
✅ 애플리케이션 코드 수정 불필요
✅ 이전 키로 암호화된 데이터도 복호화 가능
✅ CloudTrail에서 교체 이력 확인 가능

수동 키 교체

수동 교체는 새 KMS 키를 생성하고 별칭을 새 키로 변경하는 방식입니다.

수동 교체 전:
alias/my-app-key ───▶ key-1234abcd (구 키)

수동 교체 후:
alias/my-app-key ───▶ key-5678efgh (새 키)
key-1234abcd (구 키 유지 - 기존 데이터 복호화용)

수동 교체가 필요한 경우:

  • 비대칭 KMS 키
  • HMAC KMS 키
  • 교체 주기를 1년이 아닌 다른 주기로 설정

IAM 정책에서 KMS 키 사용

IAM 정책 작성 규칙

IAM 정책에서 KMS 키를 지정할 때는 키 ARN을 사용해야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  ]
}

주의사항:

  • 키 ID, 별칭 이름, 별칭 ARN은 IAM 정책에서 사용 불가
  • 반드시 키 ARN 사용

와일드카드 리소스가 필요한 작업

일부 KMS 작업은 특정 KMS 키를 지정할 수 없어 "Resource": "*"가 필요합니다:

{
  "Effect": "Allow",
  "Action": [
    "kms:CreateKey",
    "kms:ListKeys",
    "kms:ListAliases",
    "kms:CreateAlias"
  ],
  "Resource": "*"
}

비용 최적화

KMS 비용 구조

항목고객 관리형 키AWS 관리형 키
월별 키 요금$1/키무료
API 요청 비용$0.03/10,000 요청$0.03/10,000 요청

비용 절감 방법

  1. AWS 관리형 키 사용

    • 키 정책 수정이 필요 없다면 AWS 관리형 키 사용
    • 월별 키 요금 절약
  2. 불필요한 키 삭제

    • 사용하지 않는 고객 관리형 키 삭제 예약
    • 7-30일 대기 기간 후 삭제
  3. S3 버킷 키 활성화

    • S3에서 SSE-KMS 사용 시 버킷 키로 API 호출 최대 99% 감소

SAA-C03 시험 출제 포인트

자주 나오는 문제 유형

  1. 키 정책 수정이 필요한 경우

    • 정답: 고객 관리형 키
    • AWS 관리형 키는 키 정책 수정 불가
  2. 크로스 계정 KMS 키 공유

    • 정답: 고객 관리형 키 + 키 정책에 타 계정 추가
    • AWS 관리형 키는 크로스 계정 공유 불가
  3. IAM 정책과 키 정책의 관계

    • 정답: 키 정책에서 IAM 정책 사용을 활성화해야 함
    • 키 정책이 우선, IAM 정책은 종속적
  4. 최소 비용으로 암호화

    • 정답: AWS 관리형 키 또는 AWS 소유 키
    • 고객 관리형 키는 월 $1/키 비용 발생

시험 팁

시험 문제 예시: "회사는 S3 버킷의 데이터를 암호화하고, 다른 AWS 계정에서도 이 데이터에 접근할 수 있어야 합니다. 어떤 유형의 KMS 키를 사용해야 합니까?"

→ 정답: 고객 관리형 키 (크로스 계정 액세스는 고객 관리형 키에서만 가능)

핵심 암기 포인트

키워드연상
키 정책 수정고객 관리형 키
크로스 계정고객 관리형 키
자동 교체 (1년)AWS 관리형 키
CloudTrail 감사고객 관리형 / AWS 관리형
월별 비용고객 관리형 키만 $1/키
IAM 정책 키 지정키 ARN만 사용 가능
키 정책 우선IAM 정책보다 키 정책이 우선

FAQ

Q1: 고객 관리형 키와 AWS 관리형 키 중 어떤 것을 선택해야 하나요?

A: 대부분의 경우 AWS 관리형 키로 충분합니다. 다음 경우에만 고객 관리형 키를 선택하세요:

  • 키 정책을 직접 수정해야 할 때
  • 다른 AWS 계정과 키를 공유해야 할 때
  • 키 교체 주기를 제어해야 할 때

Q2: IAM 정책만으로 KMS 키에 접근할 수 있나요?

A: 아니오, 키 정책에서 먼저 IAM 정책 사용을 활성화해야 합니다. 기본 키 정책에는 이 설정이 포함되어 있지만, 키 정책을 수정했다면 확인이 필요합니다.

Q3: 키 교체 후 이전 데이터는 어떻게 되나요?

A: 이전 백업 키(HBK)가 유지되므로 이전 데이터도 복호화 가능합니다. 키 ARN과 키 ID는 변경되지 않아 애플리케이션 수정이 필요 없습니다.

Q4: AWS 관리형 키를 삭제할 수 있나요?

A: 아니오, AWS 관리형 키는 삭제할 수 없습니다. 고객 관리형 키만 삭제 예약이 가능합니다 (7-30일 대기 기간 후 삭제).

Q5: KMS 키 사용 비용을 줄이려면?

A:

  1. AWS 관리형 키 사용 (월별 키 요금 없음)
  2. S3에서 버킷 키 활성화 (API 호출 최대 99% 감소)
  3. 불필요한 고객 관리형 키 삭제

마무리

AWS KMS 키 관리의 핵심은 요구사항에 맞는 키 유형 선택입니다:

  1. 기본 암호화, 최소 비용: AWS 관리형 키 또는 AWS 소유 키
  2. 키 제어, 크로스 계정: 고객 관리형 키
  3. 감사 필요: 고객 관리형 키 또는 AWS 관리형 키

SAA-C03 시험에서는 키 정책과 IAM 정책의 관계, 키 유형별 기능 차이가 자주 출제됩니다. 특히 "키 정책 수정 필요" 또는 "크로스 계정 액세스"가 나오면 고객 관리형 키를 선택하세요.