封鎖或取消封鎖一般用途儲存貯體的 SSE-C - Amazon Simple Storage Service

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

封鎖或取消封鎖一般用途儲存貯體的 SSE-C

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 加密的 PutObjectPostObjectCopyObject或 分段上傳或複寫請求都會遭到 HTTP 403 AccessDenied錯誤拒絕。

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

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

重要

從 2026 年 4 月開始, AWS 將使用客戶提供的金鑰 (SSE-C) 停用所有新儲存貯體的伺服器端加密。此外,對於 中沒有任何 SSE-C 加密資料的所有現有儲存貯體 AWS 帳戶 ,將停用 SSE-C 加密。隨著這些變更,需要 SSE-C 加密的少數應用程式在建立儲存貯體之後,必須刻意透過 PutBucketEncryption API 啟用使用 SSE-C。在這些情況下,您可能需要更新自動化指令碼、 CloudFormation 範本或其他基礎設施組態工具來設定這些設定。如需詳細資訊,請參閱 AWS Storage 部落格文章

許可

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

  • s3:PutEncryptionConfiguration

使用 GetBucketEncryption API 或 S3 主控台、 AWS SDKs或 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 庫存報告,以查看是否有任何 SSE-C 加密物件。

步驟

您可以使用 Amazon S3 主控台、 AWS Command Line Interface ()、Amazon S3 REST API 和 AWS SDKs,針對一般用途儲存貯體使用客戶提供的金鑰 (SSE-C AWS CLI) 來封鎖或取消封鎖伺服器端加密。

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

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

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

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

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

  5. 導覽至儲存貯體的預設加密屬性面板,然後選取編輯

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

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

若要安裝 AWS CLI,請參閱《 AWS 使用者指南》中的安裝 CLIAWS 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" } }] }'
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"] } }] } )

如需有關 Amazon S3 REST API 支援為一般用途儲存貯體破解或取消封鎖 SSE-C 加密的資訊,請參閱《Amazon Simple Storage Service API 參考》中的下列章節: