S3 버킷이나 EBS 볼륨, RDS 데이터베이스를 만들다 보면 암호화 설정에서 "AWS 관리형 키"와 "고객 관리형 키" 중 하나를 고르라는 화면을 만납니다. 둘 다 데이터를 암호화한다는 점은 같은데, 무엇이 다르고 언제 어느 쪽을 골라야 하는지는 설명 없이 넘어가는 경우가 많습니다.
AWS Key Management Service(KMS)는 암호화 키를 만들고 보관하며, 키를 쓰는 권한과 사용 기록을 관리하는 서비스입니다. 키 자체는 KMS 밖으로 암호화되지 않은 상태로 나가지 않고, 다른 AWS 서비스가 KMS에 요청해서 암호화와 복호화를 처리합니다.
이 글에서는 KMS가 데이터를 직접 암호화하지 않고 데이터 키를 감싸는 방식으로 동작하는 원리, 세 가지 키 종류의 차이, 키 교체와 삭제 대기 기간, 그리고 요금을 계산하는 방법을 정리합니다.
먼저 답부터 정리하면, 키 정책을 직접 관리하거나 교체 주기·삭제 시점을 통제해야 한다면 고객 관리형 키를, 그렇지 않다면 월 보관 요금이 없는 AWS 관리형 키로도 충분합니다. 고객 관리형 키는 키당 월 1달러이고, 요청은 1만 건당 0.03달러이며 매달 2만 건까지는 무료입니다.

KMS 키는 데이터 키를 감싸는 열쇠입니다
대용량 데이터를 KMS 키로 직접 암호화하면 모든 데이터를 KMS로 보내야 해서 느리고 비효율적입니다. 그래서 AWS 서비스는 봉투 암호화라는 방식을 씁니다. 데이터 자체는 데이터 키로 암호화하고, 그 데이터 키를 다시 KMS 키로 암호화해서 데이터 옆에 함께 저장하는 방식입니다.

- 서비스가 KMS에 데이터 키를 요청하면, KMS는 평문 데이터 키와 KMS 키로 암호화한 데이터 키를 함께 돌려줍니다.
- 서비스는 평문 데이터 키로 데이터를 암호화한 뒤 평문 데이터 키는 메모리에서 지웁니다.
- 암호화된 데이터 키는 암호화된 데이터와 함께 저장합니다.
- 읽을 때는 암호화된 데이터 키를 KMS에 보내 복호화를 요청하고, 돌려받은 데이터 키로 데이터를 풉니다.
이 구조 덕분에 KMS 키는 데이터 키를 감싸는 데에만 쓰이고, 실제 데이터는 각 서비스 안에서 빠르게 처리됩니다. 동시에 데이터를 읽으려면 반드시 KMS의 복호화 권한이 필요하므로, 키 정책과 IAM 권한으로 누가 데이터를 볼 수 있는지 통제할 수 있습니다.
KMS 키는 데이터를 직접 암호화하기보다 데이터 키를 감싸는 열쇠이며, 복호화 권한을 쥐고 있기 때문에 데이터 접근 통제의 중심이 됩니다.
세 가지 키 종류의 차이
| 구분 | AWS 소유 키 | AWS 관리형 키 | 고객 관리형 키 |
|---|---|---|---|
| 누가 만드나 | AWS 서비스가 여러 계정에 공통으로 사용 | AWS 서비스가 내 계정에 만듦(aws/s3 같은 별칭) | 사용자가 직접 만듦 |
| 내 계정에서 보이나 | 보이지 않음 | 보임 | 보임 |
| 키 정책 수정 | 불가 | 불가 | 가능 |
| 키 교체 | 서비스가 관리 | 매년 자동(끌 수 없음) | 자동 교체 선택, 필요할 때 즉시 교체 |
| 삭제 | 불가 | 불가 | 7~30일 대기 후 삭제 |
| 월 보관 요금 | 없음 | 없음 | 키당 1달러 |
AWS 관리형 키는 만들고 보관하는 요금은 없지만, 이 키를 쓰는 API 요청에는 요청 요금이 붙습니다. 예를 들어 S3 버킷의 기본 암호화를 aws/s3 키로 설정하면 객체를 올리고 읽을 때마다 KMS 요청이 생길 수 있습니다.
고객 관리형 키가 필요한 대표적인 경우는 세 가지입니다. 특정 역할만 복호화할 수 있도록 키 정책을 직접 써야 할 때, 다른 AWS 계정과 암호화된 데이터를 공유해야 할 때, 그리고 감사 기준에 따라 교체 주기나 삭제 시점을 직접 정해야 할 때입니다.
키 정책·교체·삭제를 직접 통제해야 하면 고객 관리형 키, 그런 요구가 없으면 보관 요금이 없는 AWS 관리형 키를 고르면 됩니다.
키 교체와 삭제 대기 기간
키 교체는 KMS 키의 키 ID와 별칭, 정책은 그대로 둔 채 내부의 키 구성 요소만 새로 만드는 작업입니다. 새로 암호화할 때는 새 구성 요소를 쓰고, 예전에 암호화한 데이터는 KMS가 그때 쓴 구성 요소를 알아서 골라 복호화하므로 애플리케이션 코드를 바꿀 필요가 없습니다. 다만 교체가 기존 데이터를 다시 암호화해 주지는 않습니다.
| 항목 | AWS 관리형 키 | 고객 관리형 키 |
|---|---|---|
| 자동 교체 | 매년(약 365일) 항상 | 선택 사항, 켜면 기본 365일 주기 |
| 교체 주기 변경 | 불가 | 직접 지정 가능 |
| 즉시(온디맨드) 교체 | 불가 | 가능 |
| 교체에 따른 추가 요금 | 없음 | 첫 번째와 두 번째 교체마다 월 1달러씩, 세 번째부터는 추가 없음 |
삭제는 훨씬 신중해야 합니다. 고객 관리형 키를 삭제하면 그 키로 암호화한 데이터는 다시는 복호화할 수 없습니다. 그래서 KMS는 삭제를 바로 실행하지 않고 7~30일의 대기 기간을 둡니다. 기본값은 30일이며, 대기 중에는 키를 쓸 수 없고 언제든 삭제를 취소할 수 있습니다. 확신이 없다면 삭제 대신 키를 비활성화해 두었다가 문제가 없을 때 삭제를 예약하는 것이 안전합니다.
교체는 키 ID를 유지한 채 구성 요소만 바꾸므로 코드 수정이 필요 없고, 삭제는 되돌릴 수 없으니 비활성화로 먼저 영향을 확인한 뒤 진행합니다.
KMS 요금 계산
| 항목 | 요금(2026년 9월 기준) |
|---|---|
| 고객 관리형 키 보관 | 키당 월 1달러(시간 단위 비례 계산) |
| AWS 관리형 키·AWS 소유 키 보관 | 무료 |
| 일반 API 요청 | 1만 건당 0.03달러 |
| 무료 사용량 | 모든 리전 합계 월 2만 건 요청 |
| 교체된 키 구성 요소 | 첫 번째·두 번째 교체마다 월 1달러 추가, 이후 추가 없음 |
예를 들어 고객 관리형 키 3개를 쓰고 한 달 요청이 200만 건이라면, 키 보관 3 × 1달러 = 3달러, 요청은 (200만 − 무료 2만) ÷ 1만 × 0.03달러 = 5.94달러로 합계 월 8.94달러입니다. 세 키 모두 자동 교체를 켜 두었다면 교체가 두 번 이상 일어난 뒤부터는 키 하나당 월 3달러까지 올라가므로, 키 보관 요금은 최대 9달러가 됩니다.
비대칭 키를 쓰는 서명·검증 요청이나 데이터 키 쌍 생성 요청은 무료 사용량에서 제외되고 일반 요청보다 비쌀 수 있습니다. 요청이 많은 S3 버킷은 S3 버킷 키 기능을 켜면 객체마다 KMS를 호출하지 않아 요청 수를 크게 줄일 수 있습니다.
비용은 고객 관리형 키 개수와 요청 수로 결정되며, 요청이 많은 버킷은 S3 버킷 키로 KMS 호출을 줄이는 것이 효과적입니다.
키 정책과 IAM 정책의 관계
KMS 키에 대한 권한은 다른 AWS 리소스와 조금 다르게 동작합니다. 모든 KMS 키에는 반드시 키 정책이 하나 붙어 있고, 키 정책이 허용하지 않으면 IAM 정책만으로는 그 키를 쓸 수 없습니다. 키 정책이 권한의 출발점인 셈입니다.
콘솔에서 고객 관리형 키를 만들면 기본 키 정책이 함께 만들어지는데, 이 정책은 키가 속한 AWS 계정에 키에 대한 전체 권한을 주면서 계정의 IAM 정책으로 키 사용 권한을 나눠 줄 수 있게 합니다. 그래서 보통은 키 정책은 기본값으로 두고, 실제 사용자와 역할에게는 IAM 정책으로 Encrypt, Decrypt 같은 필요한 작업만 허용합니다.
| 구분 | 키 정책 | IAM 정책 |
|---|---|---|
| 붙는 곳 | KMS 키 자체 | IAM 사용자·그룹·역할 |
| 필수 여부 | 키마다 반드시 하나 | 선택 |
| 주 용도 | 계정과 키 관리자, 다른 계정 공유 | 계정 안 사용자에게 작업별 권한 부여 |
다른 AWS 계정과 암호화된 데이터를 공유해야 할 때는 키 정책에 상대 계정을 추가해야 하며, 이 작업은 키 정책을 수정할 수 없는 AWS 관리형 키로는 할 수 없습니다. 키가 쓰일 때마다 Decrypt, GenerateDataKey 같은 호출이 CloudTrail에 기록되므로, 누가 어떤 데이터를 복호화했는지도 나중에 확인할 수 있습니다.
KMS 권한은 키 정책이 허용해야 시작되며, 계정 안에서는 기본 키 정책을 두고 IAM 정책으로 작업별 권한을 나누는 방식이 일반적입니다.
정리하면
KMS 키는 데이터 키를 감싸는 열쇠로, 복호화 권한을 통해 데이터 접근을 통제합니다. AWS 관리형 키는 보관 요금이 없고 매년 자동 교체되지만 정책을 바꿀 수 없으며, 고객 관리형 키는 월 1달러에 정책·교체·삭제를 직접 관리할 수 있습니다. 요청은 1만 건당 0.03달러이고 월 2만 건까지 무료이며, 키 삭제는 7~30일 대기 후 되돌릴 수 없으므로 비활성화로 먼저 확인하는 것이 안전합니다.
헷갈리기 쉬운 질문
암호화 설정을 기본값으로 두면 KMS 요금이 나오나요?
서비스마다 기본값이 다릅니다. S3의 기본 암호화(SSE-S3)처럼 KMS를 거치지 않는 방식은 KMS 요금이 없고, aws/s3 같은 AWS 관리형 키나 고객 관리형 키를 고르면 요청 요금이 생길 수 있습니다. 설정 화면에서 어떤 방식과 키를 쓰는지 확인하세요.
키를 실수로 삭제 예약했어요.
대기 기간이 끝나기 전이라면 KMS 콘솔에서 키 삭제를 취소할 수 있습니다. 취소한 키는 비활성화 상태로 돌아오므로 다시 활성화해야 사용할 수 있습니다.
다른 리전에서도 같은 키를 쓸 수 있나요?
KMS 키는 리전 단위 리소스라 기본적으로 만든 리전에서만 쓸 수 있습니다. 여러 리전에서 같은 키로 암호화된 데이터를 다뤄야 한다면 다중 리전 키를 만들어 복제본을 두는 방법이 있습니다.
키 교체를 켜면 예전 데이터를 다시 암호화해야 하나요?
아닙니다. 예전 데이터는 KMS가 이전 구성 요소로 알아서 복호화합니다. 교체는 이후 새로 암호화하는 데이터에만 새 구성 요소를 쓰는 방식입니다.
키 별칭은 왜 쓰나요?
별칭은 alias/app-data처럼 키에 붙이는 이름입니다. 애플리케이션이 키 ID 대신 별칭을 쓰게 해 두면, 나중에 새 키를 만들어 별칭이 가리키는 대상만 바꾸는 방식으로 코드 수정 없이 키를 교체할 수 있습니다.
이미 암호화된 데이터의 키를 다른 키로 바꿀 수 있나요?
데이터는 처음 암호화한 키에 묶여 있으므로, 다른 키를 쓰려면 서비스별로 다시 암호화해야 합니다. S3 객체는 새 키를 지정해 복사하고, EBS 볼륨은 스냅샷을 새 키로 복사한 뒤 그 스냅샷으로 볼륨을 만드는 식입니다.
암호화는 켜는 것보다 키를 어떻게 관리하느냐가 더 중요합니다. 같은 암호화라도 누가 복호화할 수 있는지, 키를 언제 바꾸고 언제 지우는지를 정해 두어야 실제로 데이터를 지키는 장치가 됩니다.
지금 쓰는 S3 버킷과 EBS 볼륨이 어떤 키로 암호화되어 있는지 한 번 확인해 보세요. 특별한 통제가 필요 없다면 AWS 관리형 키로 충분하고, 공유나 감사 요구가 있는 데이터만 고객 관리형 키로 옮기면 비용과 관리 부담을 함께 줄일 수 있습니다.
함께 읽으면 좋은 글: 클라우드 공동 책임 모델 / S3 퍼블릭 액세스 차단 설정
참고 자료: AWS KMS 개념, KMS 키 교체, KMS 키 삭제, AWS KMS 요금
※ 본 글은 2026년 9월 기준 AWS KMS 개발자 안내서와 요금 페이지를 참고해 작성했으며, 요금과 기능은 변경될 수 있으니 최신 내용은 AWS 공식 문서에서 확인해 주세요.
'IT 클라우드 정보' 카테고리의 다른 글
| CloudTrail로 누가 언제 무엇을 바꿨는지 찾는 법, 이벤트 기록과 추적의 차이 (0) | 2026.10.07 |
|---|---|
| Route 53 DNS 레코드 A CNAME 별칭 레코드 차이와 도메인 연결 순서 (0) | 2026.10.06 |
| Amazon RDS와 EC2에 직접 설치한 데이터베이스 차이 관리형 DB가 대신해 주는 일 (0) | 2026.10.05 |
| EC2 Auto Scaling 최소 최대 원하는 용량 의미와 대상 추적 조정 정책 설정 방법 (0) | 2026.10.04 |
| AWS 로드 밸런서 ALB NLB GWLB 차이와 용도별 선택 기준 정리 (0) | 2026.10.03 |