

# 범용 버킷에 대한 SSE-C 차단 또는 차단 해제
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

Amazon S3 관리형 키(SSE-S3) 또는 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS)의 유연성이 부족하기 때문에 Amazon S3의 최신 사용 사례에서는 더 이상 고객 제공 키를 사용한 서버 측 암호화(SSE-C)를 사용하지 않습니다. SSE-C는 SSE-C 암호화 데이터와 상호 작용할 때마다 암호화 키를 제공해야 하므로 SSE-C 키를 S3 버킷에서 데이터를 읽는 다른 사용자, 역할 또는 AWS 서비스와 공유하여 데이터를 운영할 수 없습니다.

범용 버킷에서 사용할 수 있는 서버 측 암호화 유형을 제한하려면 버킷의 기본 암호화 구성을 업데이트하여 SSE-C 쓰기 요청을 차단하도록 선택할 수 있습니다. 이 버킷 수준 구성은 SSE-C를 지정하는 객체 업로드 요청을 차단합니다. 버킷에 대해 SSE-C가 차단되면 SSE-C 암호화를 지정하는 모든 `PutObject`, `CopyObject`, `PostObject` 또는 멀티파트 업로드 또는 복제 요청이 HTTP 403 `AccessDenied` 오류와 함께 거부됩니다.

이 설정은 `PutBucketEncryption` API의 파라미터이며 `s3:PutEncryptionConfiguration` 권한이 있는 경우 S3 콘솔, AWS CLI 및 AWS SDK를 사용하여 업데이트할 수도 있습니다.

유효한 값은 범용 버킷에 대한 SSE-C 암호화를 차단하는 `SSE-C`와 버킷에 대한 쓰기에 SSE-C를 사용하도록 허용하는 `NONE`입니다.

**중요**  
2026년 4월부터 AWS는 모든 새 버킷에 대해 고객 제공 키를 사용한 서버 측 암호화(SSE-C)를 비활성화합니다. 또한 SSE-C 암호화 데이터가 없는 AWS 계정의 모든 기존 버킷에 대해 SSE-C 암호화가 비활성화됩니다. 이러한 변경으로 인해 SSE-C 암호화가 필요한 몇 가지 애플리케이션은 버킷을 생성한 후 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) API를 통해 SSE-C 사용을 의도적으로 활성화해야 합니다. 이러한 경우 자동화 스크립트,CloudFormation 템플릿 또는 기타 인프라 구성 도구를 업데이트하여 해당 설정을 구성해야 할 수 있습니다. 자세한 내용은 [AWS 스토리지 블로그 게시물](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/)을 참조하세요.

## 권한
<a name="bucket-encryption-permissions"></a>

`PutBucketEncryption` API 또는 S3 콘솔, AWS SDK 또는 AWS CLI를 사용하여 범용 버킷의 암호화 유형을 차단하거나 차단 해제합니다. 이 경우 다음 권한이 있어야 합니다.
+ `s3:PutEncryptionConfiguration`

`GetBucketEncryption` API 또는 S3 콘솔, AWS SDK 또는 AWS CLI를 사용하여 범용 버킷에 대해 차단된 암호화 유형을 봅니다. 이 경우 다음 권한이 있어야 합니다.
+ `s3:GetEncryptionConfiguration`

## SSE-C 암호화 차단 전 고려 사항
<a name="considerations-before-blocking-sse-c"></a>

버킷에 대해 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](https://aws.amazon.com/cloudtrail/)과 같은 도구를 사용하여 데이터에 대한 액세스를 모니터링할 수 있습니다. 이 [블로그 게시물](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/)은 객체 업로드에 대한 암호화 방법을 실시간으로 감사하는 방법을 보여줍니다. 또한 이 [re:Post 문서를](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets) 참조하여 S3 인벤토리 보고서 쿼리를 통해 SSE-C 암호화 객체가 있는지 확인할 수 있습니다.

### 단계
<a name="block-sse-c-gpb-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API 및 AWS SDK를 사용하여 범용 버킷에 대해 고객 제공 키를 사용한 서버 측 암호화(SSE-C)를 차단하거나 차단 해제할 수 있습니다.

### S3 콘솔 사용
<a name="block-sse-c-gpb-console"></a>

Amazon S3 콘솔을 사용하여 버킷에 대한 SSE-C 암호화를 차단하거나 차단 해제하려면 다음을 수행합니다.

1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/ 페이지에서 Amazon S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. SSE-C 암호화를 차단하려는 버킷을 선택합니다.

1. 버킷의 **속성** 탭을 선택합니다.

1. 버킷의 **기본 암호화** 속성 패널로 이동하여 **편집**을 선택합니다.

1. **차단된 암호화 유형** 섹션에서 **고객 제공 키를 사용한 서버 측 암호화(SSE-C)** 옆의 확인란을 선택하여 SSE-C 암호화를 차단하거나 이 확인란을 선택 취소하여 SSE-C를 허용합니다.

1. **변경 사항 저장**을 선택합니다.

### AWS CLI 사용
<a name="block-sse-c-gpb-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*에서 [AWS 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예제에서는 AWS CLI를 사용하여 범용 버킷에 대한 SSE-C 암호화를 차단하거나 차단 해제하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

**범용 버킷에 대한 SSE-C 암호화 차단 요청:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**범용 버킷에서 SSE-C 암호화 사용 활성화 요청:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## AWS SDK 사용
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

다음 CLI 예제에서는 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"]
            }
        }]
    }
)
```

------

## REST API 사용
<a name="bucket-tag-add-api"></a>

범용 버킷에 대한 SSE-C 암호화를 차단 또는 차단 해제하기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon Simple Storage Service API 참조*의 다음 섹션을 참조하세요.
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) 및 [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) API 작업의 [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) 데이터 형식에 사용되는 [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html) 데이터 형식입니다.