

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 封鎖或取消封鎖一般用途儲存貯體的 SSE-C
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

Amazon S3 中的大多數現代使用案例不再搭配客戶提供的金鑰 (SSE-C) 使用伺服器端加密，因為它缺乏使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密或 AWS KMS 金鑰 (SSE-KMS) 的伺服器端加密彈性。每次與 SSE-C 加密資料互動時，SSE-C 需要提供加密金鑰，因此與從 S3 儲存貯體讀取資料的其他使用者、角色 AWS 或服務共用 SSE-C 金鑰，以便操作您的資料並不切實際。

若要限制您可以在一般用途儲存貯體中使用的伺服器端加密類型，您可以選擇透過更新儲存貯體的預設加密組態來封鎖 SSE-C 寫入請求。此儲存貯體層級組態會封鎖上傳指定 SSE-C 物件的請求。 當儲存貯體的 SSE-C 遭到封鎖時，任何指定 SSE-C 加密的 `PutObject`、`CopyObject``PostObject`、 或 分段上傳或複寫請求都會遭到 HTTP 403 `AccessDenied`錯誤拒絕。

此設定是 `PutBucketEncryption` API 上的參數，如果您有 `s3:PutEncryptionConfiguration`許可，也可以使用 S3 主控台、 AWS CLI 和 AWS SDKs進行更新。

有效值為 `SSE-C`，可封鎖一般用途儲存貯體的 SSE-C 加密，以及 `NONE`，允許使用 SSE-C 寫入儲存貯體。

**重要**  
如 [2025 年 11 月 19 日所宣布](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/)，Amazon Simple Storage Service 正在部署新的預設儲存貯體安全設定，以針對所有新的一般用途儲存貯體自動停用使用客戶提供金鑰 (SSE-C) 的伺服器端加密。對於 中沒有 SSE-C 加密物件 AWS 帳戶 的現有儲存貯體，Amazon S3 也會為所有新的寫入請求停用 SSE-C。對於 AWS 帳戶 使用 SSE-C 的 ，Amazon S3 不會變更這些帳戶中任何現有儲存貯體的儲存貯體加密組態。此部署從 2026 年 4 月 6 日開始，並將在接下來的幾週內在 37 AWS 個區域完成，包括 AWS 中國和 AWS GovCloud (US) 區域。  
透過這些變更，需要 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。如需此變更的詳細資訊，請參閱 [新儲存貯體的預設 SSE-C 設定常見問答集](default-s3-c-encryption-setting-faq.md)。

## 許可
<a name="bucket-encryption-permissions"></a>

使用 `PutBucketEncryption` API 或 S3 主控台、 AWS SDKs或 AWS CLI 來封鎖或取消封鎖一般用途儲存貯體的加密類型。您必須擁有下列許可：
+ `s3:PutEncryptionConfiguration`

使用 `GetBucketEncryption` API 或 S3 主控台、 AWS SDKs或 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 ()、Amazon S3 REST API 和 AWS SDKs，針對一般用途儲存貯體使用客戶提供的金鑰 (SSE-C AWS CLI) 來封鎖或取消封鎖伺服器端加密。

### 使用 S3 主控台
<a name="block-sse-c-gpb-console"></a>

若要使用 Amazon S3 主控台封鎖或取消封鎖儲存貯體的 SSE-C 加密：

1. 登入 AWS 管理主控台，並在 https://console.aws.amazon.com/s3/：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯**體。

1. 選取您要封鎖 SSE-C 加密的儲存貯體。

1. 選取儲存貯體的**屬性**索引標籤。

1. 導覽至儲存貯體**的預設加密**屬性面板，然後選取**編輯**。

1. 在**封鎖加密類型**區段中，核取**使用客戶提供金鑰 (SSE-C) 的伺服器端加密**旁的方塊，以封鎖 SSE-C 加密，或取消核取此方塊以允許 SSE-C。

1. 選取 **Save Changes** (儲存變更)。

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

若要安裝 AWS CLI，請參閱《 [AWS 使用者指南》中的安裝 CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。 *AWS Command Line Interface *

下列 CLI 範例說明如何使用 來封鎖或取消封鎖一般用途儲存貯體的 SSE-C 加密 AWS CLI。若要使用此命令，請以您自己的資訊取代*使用者輸入預留位置*。

**請求封鎖一般用途儲存貯體的 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 SDKs
<a name="block-sse-c-gpb-sdks"></a>

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

下列範例說明如何使用 AWS SDKs 封鎖或取消封鎖 SSE-C 加密寫入您的一般用途儲存貯體

**範例 - PutBucketEncryption 請求將預設加密組態設定為 SSE-S3 並封鎖 SSE-C**

```
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)));
```

**範例 - PutBucketEncryption 請求將預設加密組態設定為 SSE-S3 並解除封鎖 SSE-C**

```
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 ]

**範例 - PutBucketEncryption 請求將預設加密組態設定為 SSE-S3 並封鎖 SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**範例 - PutBucketEncryption 請求將預設加密組態設定為 SSE-S3 並解除封鎖 SSE-C**

```
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>

如需有關 Amazon S3 REST API 支援為一般用途儲存貯體破解或取消封鎖 SSE-C 加密的資訊，請參閱《*Amazon Simple Storage Service API 參考*》中的下列章節：
+ 在 [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) 和 GetBucketEncryption API 操作的 ServerSideEncryptionRule 資料類型中使用的 [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html) 資料類型。 [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) 