使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本 - Amazon Simple Storage Service

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

使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本

Amazon S3 儲存貯體金鑰使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 降低 Amazon S3 伺服器端加密的成本。使用 SSE-KMS 的儲存貯體層級金鑰,可透過減少從 Amazon S3 到 的 AWS KMS 請求流量,將請求成本降低高達 99% AWS KMS。只要在 AWS Management Console中點擊幾下,而無需對用戶端應用程式進行任何變更,您就可以設定儲存貯體,在新物件上使用 S3 儲存貯體金鑰進行 SSE-KMS 加密。

注意

使用 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 的雙層伺服器端加密不支援 S3 儲存貯體金鑰。

適用於 SSE-KMS 的 S3 儲存貯體金鑰

存取以 SSE-KMS 加密的數百萬或數十億個物件的工作負載可以產生大量的請求 AWS KMS。當您使用 SSE-KMS 來保護沒有 S3 儲存貯體金鑰的資料時,Amazon S3 會為每個物件使用個別 AWS KMS 資料金鑰。在此情況下,Amazon S3 AWS KMS 每次對 KMS 加密的物件提出請求時都會呼叫 。如需 SSE-KMS 如何運作的相關資訊,請參閱 搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)

當您將儲存貯體設定為使用 SSE-KMS 的 S3 儲存貯體金鑰時, 會從中 AWS 產生短期儲存貯體層級金鑰 AWS KMS,然後暫時將其保留在 S3 中。此儲存貯體層級金鑰會其生命週期中建立資料金鑰。S3 儲存貯體金鑰在 Amazon S3 內的有限期間內使用,減少 S3 向 提出請求 AWS KMS 以完成加密操作的需求。這可減少從 S3 到 的流量 AWS KMS,可讓您以先前成本的一小部分存取 Amazon S3 中的 AWS KMS加密物件。

每個請求者至少擷取一次唯一的儲存貯體層級金鑰,以確保在 an AWS KMS CloudTrail 事件中擷取請求者的金鑰存取權。當呼叫者使用不同的角色或帳戶,或具有不同範圍政策的相同角色時,Amazon S3 會將呼叫者視為不同的請求者。 AWS KMS 請求節省會反映請求者的數量、請求模式和請求物件的相對存留期。例如,較少的請求者數量、在有限的時間範圍內請求多個物件,以及使用相同的儲存貯體層級金鑰加密,會節省更多成本。

注意

使用 S3 儲存貯體金鑰可讓您透過使用儲存貯體層級金鑰,減少 AWS KMS 對 Encrypt、 和 Decrypt操作的請求GenerateDataKey,以節省 AWS KMS 請求成本。根據設計,利用此儲存貯體層級金鑰的後續請求不會導致 AWS KMS API 請求或根據 AWS KMS 金鑰政策驗證存取權。

當您設定 S3 儲存貯體金鑰時,儲存貯體中已存在的物件不會使用 S3 儲存貯體金鑰。若要為現有物件設定 S3 儲存貯體金鑰,您可以使用 CopyObject 操作。如需詳細資訊,請參閱在物件層級設定 S3 儲存貯體金鑰

Amazon S3 只會針對相同 AWS KMS key加密的物件共用 S3 儲存貯體金鑰。S3 儲存貯體金鑰與由 建立的 KMS 金鑰 AWS KMS、匯入的金鑰材料,以及由自訂金鑰存放區支援的金鑰材料相容。

圖表顯示 AWS KMS 產生儲存貯體金鑰,為儲存貯體中的物件建立資料金鑰。

設定 S3 儲存貯體金鑰

您可以透過 Amazon S3 主控台 AWS CLI、 AWS SDKs 或 REST API,將儲存貯體設定為在新物件上使用 SSE-KMS 的 S3 儲存貯體金鑰。 Amazon S3 在儲存貯體上啟用 S3 儲存貯體金鑰後,使用不同所指定 SSE-KMS 金鑰上傳的物件將使用自己的 S3 儲存貯體金鑰。無論您的 S3 儲存貯體金鑰設定為何,您都可以在請求中包含具有 truefalse 值的 x-amz-server-side-encryption-bucket-key-enabled 標頭,以覆寫儲存貯體設定。

在您將儲存貯體設定為使用 S3 儲存貯體金鑰之前,請先檢閱 啟用 S3 儲存貯體金鑰之前,要注意的變更

使用 Amazon S3 主控台設定 S3 儲存貯體金鑰

當您建立新儲存貯體時,您可以將儲存貯體設定為在新物件上使用 SSE-KMS 的 S3 儲存貯體金鑰。您也可以透過更新儲存貯體屬性,將現有儲存貯體設定為在新物件上使用 SSE-KMS 的 S3 儲存貯體金鑰。 

如需詳細資訊,請參閱設定您的儲存貯體以使用具有 SSE-KMS 的 S3 儲存貯體來獲取新物件

REST API AWS CLI和軟體 AWS 開發套件支援 S3 儲存貯體金鑰

您可以使用 REST API AWS CLI或 AWS SDK,將儲存貯體設定為在新物件上使用 SSE-KMS 的 S3 儲存貯體金鑰。您也可以在物件層級啟用 S3 儲存貯體金鑰。

如需詳細資訊,請參閱下列內容: 

下列 API 操作支援 SSE-KMS 的 S3 儲存貯體金鑰:

使用 AWS CloudFormation

在 中 AWS CloudFormation, AWS::S3::Bucket 資源包含名為 的加密屬性BucketKeyEnabled,可用來啟用或停用 S3 儲存貯體金鑰。

如需詳細資訊,請參閱使用 AWS CloudFormation

啟用 S3 儲存貯體金鑰之前,要注意的變更

啟用 S3 儲存貯體金鑰之前,請注意下列相關變更:

IAM 或 AWS KMS 金鑰政策

如果您現有的 AWS Identity and Access Management (IAM) 政策或 AWS KMS 金鑰政策使用物件 Amazon Resource Name (ARN) 做為加密內容,以精簡或限制對 KMS 金鑰的存取,這些政策將無法與 S3 儲存貯體金鑰搭配使用。S3 儲存貯體金鑰使用儲存貯體 ARN 作為加密內容。啟用 S3 儲存貯體金鑰之前,請更新您的 IAM 政策或 AWS KMS 金鑰政策,以使用儲存貯體 ARN 做為加密內容。

如需加密內容與 S3 儲存貯體金鑰的詳細資訊,請參閱 加密內容

的 CloudTrail 事件 AWS KMS

啟用 S3 儲存貯體金鑰後, AWS KMS CloudTrail 事件會記錄儲存貯體 ARN,而不是物件 ARN。此外,您會在日誌中看到較少的 SSE-KMS 物件 KMS CloudTrail 事件。由於金鑰材料在 Amazon S3 中受到時間限制,因此對 提出的請求較少 AWS KMS。

使用 S3 儲存貯體金鑰與複寫

您可以將 S3 儲存貯體金鑰與相同區域複寫 (SRR) 和跨區域複寫 (CRR) 搭配使用。

Amazon S3 複寫加密物件時,通常會在目的地儲存貯體中保留複本物件的加密設定。不過,如果來源物件未加密,且目的地儲存貯體使用預設加密或 S3 儲存貯體金鑰,Amazon S3 會使用目的地儲存貯體的組態加密物件。

下列範例說明 S3 儲存貯體金鑰如何與複寫搭配使用。如需詳細資訊,請參閱複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)。 

範例 1 — 來源物件使用 S3 儲存貯體金鑰,目的地儲存貯體使用預設加密

如果您的來源物件使用 S3 儲存貯體金鑰,但目的地儲存貯體使用預設加密搭配 SSE-KMS,則複本物件會在目的地儲存貯體中維護其 S3 儲存貯體金鑰加密設定。目的地儲存貯體仍使用預設加密搭配 SSE-KMS。

範例 2 — 來源物件未加密,目的地儲存貯體使用 S3 儲存貯體金鑰搭配 SSE-KMS

如果您的來源物件未加密,且目的地儲存貯體使用 SSE-KMS 的 S3 儲存貯體金鑰,則複本物件會使用目的地儲存貯體中的 SSE-KMS,使用 S3 儲存貯體金鑰加密。這會導致來源物件的 ETag 與複本物件的 ETag 不同。您必須更新可使用 ETag 的應用程式來容納這項差異。

使用 S3 儲存貯體金鑰

如需啟用及使用 S3 儲存貯體金鑰的詳細資訊,請參閱下列章節: