범용 버킷에 대한 SSE-C 차단 또는 차단 해제
범용 버킷에 대한 SSE-C 차단 또는 차단 해제 (Blocking or unblocking SSE-C for a general purpose bucket)
2026년 4월부터 Amazon S3는 모든 신규 범용 버킷에서 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 자동으로 비활성화해요. 필요하면 버킷의 기본 암호화 구성을 업데이트해 SSE-C를 명시적으로 활성화할 수 있어요.
출처: 문서
본문
2026년 4월부터 Amazon S3는 모든 신규 범용 버킷에서 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 자동으로 비활성화해요. Amazon S3는 SSE-C로 암호화된 객체가 없는 계정의 기존 버킷에서도 SSE-C를 비활성화했어요. 즉 기본적으로 SSE-C를 사용해 객체를 업로드하는 요청은 HTTP 403 AccessDenied 오류로 거부돼요.
SSE-C는 암호화된 객체를 읽거나 쓸 때마다 암호화 키를 제공해야 하므로 데이터를 운영하는 다른 사용자, 역할 또는 AWS 서비스와 접근을 공유하기 어려워요. 대부분의 워크로드는 대신 Amazon S3 관리 키(SSE-S3)나 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화를 사용해요.
워크로드에 SSE-C가 필요하다면 버킷의 기본 암호화 구성을 업데이트해 명시적으로 활성화할 수 있어요. 반대로 SSE-C가 여전히 허용되는 기존 버킷이 있다면 차단해 새로운 SSE-C 업로드를 방지할 수 있어요.
버킷에 SSE-C가 차단되면 SSE-C 암호화를 지정하는 모든 PutObject, CopyObject, PostObject, 멀티파트 업로드 또는 복제 요청이 HTTP 403 AccessDenied 오류로 거부돼요. 버킷에 있는 기존 SSE-C 암호화 객체는 영향을 받지 않으며, 필요한 SSE-C 헤더를 제공하면 GetObject 또는 HeadObject로 계속 읽을 수 있어요.
이 설정은 PutBucketEncryption API의 매개 변수이며 S3 콘솔, AWS CLI 또는 AWS SDK를 사용해 업데이트할 수도 있어요. s3:PutEncryptionConfiguration 권한이 있어야 해요.
중요 Amazon Simple Storage Service는 이제 모든 신규 범용 버킷에서 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 자동으로 비활성화하는 새 기본 버킷 보안 설정을 적용해요. 2026년 4월에 Amazon S3는 모든 신규 범용 버킷에서 모든 신규 쓰기 요청에 대해 SSE-C 암호화를 비활성화하는 업데이트를 배포했어요. SSE-C 암호화 객체가 없는 AWS 계정의 기존 버킷에서도 Amazon S3는 모든 신규 쓰기 요청에 대해 SSE-C를 비활성화했어요. 이 변경으로 인해 SSE-C 암호화가 필요한 애플리케이션은 새 버킷을 만든 후
PutBucketEncryptionAPI 작업을 사용해 SSE-C를 의도적으로 활성화해야 해요. 이 변경에 대한 자세한 내용은 신규 버킷의 기본 SSE-C 설정 FAQ를 참고하세요.
권한
PutBucketEncryption API 또는 S3 콘솔, AWS SDK, AWS CLI를 사용해 범용 버킷의 암호화 유형을 차단하거나 차단 해제할 수 있어요. 다음 권한이 있어야 해요.
s3:PutEncryptionConfiguration
GetBucketEncryption API 또는 S3 콘솔, AWS SDK, AWS CLI를 사용해 범용 버킷의 차단된 암호화 유형을 볼 수 있어요. 다음 권한이 있어야 해요.
s3:GetEncryptionConfiguration
SSE-C 암호화 차단 전 고려 사항
버킷에 대해 SSE-C를 차단한 후에는 다음 암호화 동작이 적용돼요.
- SSE-C 암호화를 차단하기 전에 버킷에 존재했던 객체의 암호화에는 변화가 없어요.
- SSE-C 암호화를 차단한 후에도 요청에 필요한 SSE-C 헤더를 제공하면 SSE-C로 암호화된 기존 객체에 대한
GetObject및HeadObject요청을 계속할 수 있어요. - 버킷에 SSE-C가 차단되면 SSE-C 암호화를 지정하는 모든
PutObject,CopyObject,PostObject또는 멀티파트 업로드 요청이 HTTP 403 AccessDenied 오류로 거부돼요. - 복제 대상 버킷에 SSE-C가 차단되어 있고 복제되는 원본 객체가 SSE-C로 암호화된 경우 복제가 HTTP 403 AccessDenied 오류로 실패해요.
이 암호화 유형을 차단하기 전에 버킷에서 SSE-C 암호화를 사용하고 있는지 검토하려면 AWS CloudTrail과 같은 도구를 사용해 데이터에 대한 접근을 모니터링할 수 있어요. 이 블로그 게시물은 객체 업로드에 대한 암호화 방법을 실시간으로 감사하는 방법을 보여줘요. 또한 이 re:Post 문서를 참고해 S3 Inventory 보고서를 쿼리하여 SSE-C 암호화 객체가 있는지 확인할 수도 있어요.
단계
Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용해 범용 버킷에 대한 고객 제공 키(SSE-C)를 사용한 서버 측 암호화를 차단하거나 차단 해제할 수 있어요.
Amazon S3 콘솔로 버킷에 대한 SSE-C 암호화를 차단하거나 차단 해제하려면:
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
- 왼쪽 탐색 창에서 **범용 버킷(General purpose buckets)**을 선택해요.
- SSE-C 암호화를 차단하려는 버킷을 선택해요.
- 버킷의 속성(Properties) 탭을 선택해요.
- 버킷의 기본 암호화(Default encryption) 속성 패널로 이동해 **편집(Edit)**을 선택해요.
- 차단된 암호화 유형(Blocked encryption types) 섹션에서 고객 제공 키를 사용한 서버 측 암호화(SSE-C) 옆의 확인란을 선택해 SSE-C 암호화를 차단하거나, 이 확인란을 선택 해제해 SSE-C를 허용해요.
- **변경 사항 저장(Save Changes)**을 선택해요.
AWS CLI 설치에 대한 내용은 AWS Command Line Interface 사용자 안내서의 AWS CLI 설치를 참고하세요.
다음 CLI 예제는 AWS CLI로 범용 버킷에 대한 SSE-C 암호화를 차단하거나 차단 해제하는 방법을 보여줘요. 명령을 사용하려면 사용자 입력 자리 표시자를 자신의 정보로 바꾸세요.
범용 버킷에 대한 SSE-C 암호화를 차단하는 요청:
aws s3api put-bucket-encryption \
--bucket amzn-s3-demo-bucket \
--server-side-encryption-configuration '{
"Rules": [
{
"BlockedEncryptionTypes": {
"EncryptionType": ["SSE-C"]
}
}
]
}'
범용 버킷에서 SSE-C 암호화 사용을 활성화하는 요청:
aws s3api put-bucket-encryption \
--bucket amzn-s3-demo-bucket \
--server-side-encryption-configuration '{
"Rules": [
{
"BlockedEncryptionTypes": {
"EncryptionType": ["NONE"]
}
}
]
}'
- SDK for Java 2.x: 다음 예제는 AWS SDK를 사용해 범용 버킷에 대한 SSE-C 암호화 쓰기를 차단하거나 차단 해제하는 방법을 보여줘요.
예제 - 기본 암호화 구성을 SSE-S3로 설정하고 SSE-C를 차단하는 PutBucketEncryption 요청
예제 - 기본 암호화 구성을 SSE-S3로 설정하고 SSE-C를 차단 해제하는 PutBucketEncryption 요청S3Client s3Client = ...; ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault .builder() .sseAlgorithm(ServerSideEncryption.AES256) .build(); BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes .builder() .encryptionType(EncryptionType.SSE_C) .build(); ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder() .applyServerSideEncryptionByDefault(defaultSse) .blockedEncryptionTypes(blockedEncryptionTypes) .build(); s3Client.putBucketEncryption(be -> be .bucket(bucketName) .serverSideEncryptionConfiguration(c -> c.rules(rule)));S3Client s3Client = ...; ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault .builder() .sseAlgorithm(ServerSideEncryption.AES256) .build(); BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes .builder() .encryptionType(EncryptionType.NONE) .build(); ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder() .applyServerSideEncryptionByDefault(defaultSse) .blockedEncryptionTypes(blockedEncryptionTypes) .build(); s3Client.putBucketEncryption(be -> be .bucket(bucketName) .serverSideEncryptionConfiguration(c -> c.rules(rule))); - SDK for Python (Boto3):
예제 - 기본 암호화 구성을 SSE-S3로 설정하고 SSE-C를 차단하는 PutBucketEncryption 요청
예제 - 기본 암호화 구성을 SSE-S3로 설정하고 SSE-C를 차단 해제하는 PutBucketEncryption 요청s3 = boto3.client("s3") s3.put_bucket_encryption( Bucket="amzn-s3-demo-bucket", ServerSideEncryptionConfiguration={ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" }, "BlockedEncryptionTypes": { "EncryptionType": ["SSE-C"] } } ] } )s3 = boto3.client("s3") s3.put_bucket_encryption( Bucket="amzn-s3-demo-bucket", ServerSideEncryptionConfiguration={ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" }, "BlockedEncryptionTypes": { "EncryptionType": ["NONE"] } } ] } )
범용 버킷에 대한 SSE-C 암호화 차단 또는 차단 해제를 위한 Amazon S3 REST API 지원에 대한 정보는 Amazon Simple Storage Service API 참조의 다음 섹션을 참고하세요.
PutBucketEncryption및GetBucketEncryptionAPI 작업의ServerSideEncryptionRule데이터 형식에 사용되는BlockedEncryptionTypes데이터 형식.