

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

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

從 2026 年 4 月開始，Amazon S3 會自動針對所有新的一般用途儲存貯體，使用客戶提供的金鑰 (SSE-C) 停用伺服器端加密。對於沒有 SSE-C 加密物件的帳戶中的現有儲存貯體，Amazon S3 也會停用 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 加密物件不受影響，您仍然可以使用 `GetObject`或 提供所需的 SSE-C 標頭`HeadObject`來讀取它們。

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

**重要**  
Amazon Simple Storage Service 現在會對所有新的一般用途儲存貯體套用新的預設儲存貯體安全設定，以客戶提供的金鑰 (SSE-C) 自動停用伺服器端加密。2026 年 4 月，Amazon S3 部署了更新，因此所有新的一般用途儲存貯體都會針對所有新的寫入請求停用 SSE-C 加密。對於 中沒有 SSE-C 加密物件 AWS 帳戶 的現有儲存貯體，Amazon S3 也會針對所有新的寫入請求停用 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。如需此變更的詳細資訊，請參閱 [新儲存貯體的預設 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>

如需針對一般用途儲存貯體封鎖或取消封鎖 SSE-C 加密的 Amazon S3 REST API 支援相關資訊，請參閱 *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) 