범용 버킷에 대한 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 암호화가 필요한 애플리케이션은 새 버킷을 만든 후 PutBucketEncryption API 작업을 사용해 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 암호화를 차단하거나 차단 해제하려면:

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
  2. 왼쪽 탐색 창에서 **범용 버킷(General purpose buckets)**을 선택해요.
  3. SSE-C 암호화를 차단하려는 버킷을 선택해요.
  4. 버킷의 속성(Properties) 탭을 선택해요.
  5. 버킷의 기본 암호화(Default encryption) 속성 패널로 이동해 **편집(Edit)**을 선택해요.
  6. 차단된 암호화 유형(Blocked encryption types) 섹션에서 고객 제공 키를 사용한 서버 측 암호화(SSE-C) 옆의 확인란을 선택해 SSE-C 암호화를 차단하거나, 이 확인란을 선택 해제해 SSE-C를 허용해요.
  7. **변경 사항 저장(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 요청
    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)));
    
    예제 - 기본 암호화 구성을 SSE-S3로 설정하고 SSE-C를 차단 해제하는 PutBucketEncryption 요청
    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 요청
    s3 = boto3.client("s3")
    s3.put_bucket_encryption(
        Bucket="amzn-s3-demo-bucket",
        ServerSideEncryptionConfiguration={
            "Rules": [
                {
                    "ApplyServerSideEncryptionByDefault": {
                        "SSEAlgorithm": "AES256"
                    },
                    "BlockedEncryptionTypes": {
                        "EncryptionType": ["SSE-C"]
                    }
                }
            ]
        }
    )
    
    예제 - 기본 암호화 구성을 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": ["NONE"]
                    }
                }
            ]
        }
    )
    

범용 버킷에 대한 SSE-C 암호화 차단 또는 차단 해제를 위한 Amazon S3 REST API 지원에 대한 정보는 Amazon Simple Storage Service API 참조의 다음 섹션을 참고하세요.

  • PutBucketEncryption 및 GetBucketEncryption API 작업의 ServerSideEncryptionRule 데이터 형식에 사용되는 BlockedEncryptionTypes 데이터 형식.

더 알아보기 (Learn more)