S3 SSE-KMS 암호화 적용 가이드
1. 기본 암호화(Default Encryption) 설정하기 (권장)
가장 쉬운 방법은 버킷 전체에 기본 설정을 거는 것입니다. 이렇게 하면 이후에 업로드되는 모든 객체에 자동으로 암호화가 적용됩니다.
S3 콘솔에서 해당 버킷을 선택합니다.
[속성(Properties)] 탭으로 이동합니다.
[기본 암호화(Default encryption)] 섹션에서 [편집(Edit)]을 누릅니다.
암호화 유형:
서버 측 암호화(SSE-KMS)를 선택합니다.AWS KMS 키: *
aws/s3(AWS 관리형 키): 가장 간편하지만 권한 제어가 제한적입니다.사용자 지정 KMS 키 (CMK): 보안 규정이 까다롭다면 직접 만든 키를 선택하세요. (가장 권장)
[변경 사항 저장]을 클릭합니다.
2. S3 버킷 키(Bucket Key) 활성화 (비용 절감 핵심!)
2026년 현재, SSE-KMS를 쓸 때 'S3 버킷 키' 옵션을 끄는 것은 예산 낭비입니다.
기능: KMS에 매번 물어보는 대신, S3 내부에서 암호화 키를 잠시 보관하여 KMS 호출 횟수를 대폭 줄여줍니다.
효과: KMS 비용을 최대 99%까지 절감할 수 있습니다. 설정 시 반드시 '활성화(Enable)'하세요.
3. 암호화 강제하기 (Bucket Policy)
설정만으로는 부족합니다. 실수로 암호화되지 않은 파일이 올라오는 것을 막기 위해 버킷 정책을 추가하는 것이 좋습니다.
정책 예시: "SSE-KMS 암호화 헤더가 없는 업로드 요청은 거부한다."
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::내-버킷-이름/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
}
]
}
SSE-S3 vs SSE-KMS 비교
항목 | SSE-S3 (기본) | SSE-KMS (고급) |
관리 주체 | S3가 키를 관리함 | 사용자가 KMS를 통해 관리 |
권한 제어 | S3 접근 권한만 있으면 됨 | S3 권한 + KMS 사용 권한 둘 다 필요 |
감사 로그 | 기록되지 않음 | CloudTrail에 모든 키 사용 기록 남음 |
추가 비용 | 없음 | KMS 키 유지비 및 호출 비용 발생 |
Tip
키 권한 주의: 파일을 올린 사람(IAM User/Role)에게
kms:GenerateDataKey권한이 없거나, 내려받는 사람에게kms:Decrypt권한이 없으면 S3 권한이 아무리 많아도 "Access Denied" 에러를 만납니다. 에러가 나면 꼭 KMS 키 정책(Key Policy)을 확인하세요.기존 파일은 소급 적용 안 됨: 기본 암호화 설정을 켠다고 해서 이미 버킷에 있던 파일들이 마법처럼 암호화되지는 않습니다. 기존 파일들은
CopyObject명령을 통해 다시 복사(Self-copy)해야 암호화가 적용됩니다.
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.