在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS) - Amazon Simple Storage Service

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

在目錄儲存貯體中使用伺服器端加密與 AWS KMS 金鑰 (SSE-KMS)

中的安全控制項 AWS KMS 可協助您符合加密相關的合規要求。您可以選擇設定目錄儲存貯體以使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS),並使用這些 KMS 金鑰來保護 Amazon S3 目錄儲存貯體中的資料。如需 SSE-KMS 的詳細資訊,請參閱 將伺服器端加密與 AWS KMS 金鑰搭配使用 (SSE-KMS)

許可

若要在 Amazon S3 AWS KMS key 之間上傳或下載使用 加密的物件,您需要 金鑰的 kms:GenerateDataKeykms:Decrypt 許可。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的允許金鑰使用者使用 KMS 金鑰進行密碼編譯操作。如需分段上傳所需的 AWS KMS 許可資訊,請參閱 分段上傳 API 和許可

如需 KMS-KMS 的 SSE 金鑰詳細資訊,請參閱 使用 AWS KMS (SSE-KMS) 指定伺服器端加密

AWS KMS keys

您的 SSE-KMS 組態在儲存貯體的生命週期內,每個目錄儲存貯體只能支援 1 個客戶受管金鑰AWS 受管金鑰 不支援 (aws/s3)。此外,在為 SSE-KMS 指定客戶受管金鑰之後,您無法覆寫儲存貯體的 SSE-KMS 組態的客戶受管金鑰。

您可以透過以下方式識別您為儲存貯體的 SSE-KMS 組態指定的客戶受管金鑰:

  • 您可以提出 API HeadObject 操作請求,以便在回應x-amz-server-side-encryption-aws-kms-key-id中尋找 的值。

若要為您的資料使用新的客戶受管金鑰,建議您使用新的客戶受管金鑰,將現有的物件複製到新的目錄儲存貯體。

當您在目錄儲存貯體中指定用於加密AWS KMS 的客戶受管金鑰時,請僅使用金鑰 ID 或金鑰 ARN。不支援 KMS 金鑰的金鑰別名格式。

如需 KMS-KMS 的 SSE 金鑰詳細資訊,請參閱 AWS KMS keys

使用 SSE-KMS 進行跨帳戶操作

在目錄儲存貯體中使用加密進行跨帳戶操作時,請注意下列事項:

  • 如果您想要授予 S3 物件的跨帳戶存取權,請設定客戶受管金鑰的政策,以允許從另一個帳戶存取。

  • 若要指定客戶受管金鑰,您必須使用完全合格的 KMS 金鑰 ARN。

Amazon S3 儲存貯體金鑰

S3 儲存貯體金鑰一律會在目錄儲存貯體中為 GETPUT操作啟用,且無法停用。當您將 SSE-KMS 加密物件從一般用途儲存貯體複製到目錄儲存貯體、從目錄儲存貯體複製到一般用途儲存貯體或目錄儲存貯體之間時,透過 ,不支援 S3 儲存貯體金鑰 CopyObject, UploadPartCopyCopy 批次操作中的 操作,或 import 任務。在此情況下,Amazon S3 AWS KMS 每次針對 KMS 加密的物件提出複製請求時,都會呼叫 。

對於區域端點 (物件層級) API 操作,除了 CopyObject UploadPartCopy 之外,您可以透過 驗證和授權請求 CreateSession 來降低延遲。我們建議儲存貯體的預設加密使用所需的加密組態,而且您不會覆寫CreateSession請求或PUT物件請求中的儲存貯體預設加密。然後,使用所需的加密設定自動加密新物件。若要使用 SSE-KMS 加密目錄儲存貯體中的新物件,您必須使用 SSE 金鑰 (特別是客戶受管金鑰) 將 KMS-KMS 指定為目錄儲存貯體的預設加密組態。然後,在為區域端點 API 操作建立工作階段時,會在工作階段期間使用 SSE-KMS 和 S3 儲存貯體金鑰自動加密和解密新物件。如需在目錄儲存貯體中覆寫加密行為的詳細資訊,請參閱使用 指定伺服器端加密 AWS KMS 以進行新物件上傳

S3 儲存貯體金鑰在 Amazon S3 內使用一段時間,進一步減少 Amazon S3 向 提出請求 AWS KMS 以完成加密操作的需求。如需使用 S3 儲存貯體金鑰的詳細資訊,請參閱 Amazon S3 儲存貯體金鑰使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本

需要 SSE-KMS

若要要求特定目錄儲存貯體中所有物件的 SSE-KMS,您可以使用儲存貯體政策。例如,當您使用 CreateSession API 操作來授予上傳新物件 (PutObject、 和 CreateMultipartUpload) 的許可時CopyObject,如果CreateSession請求不包含請求 SSE-KMS 的x-amz-server-side-encryption-aws-kms-key-id標頭,則下列儲存貯體政策會拒絕向所有人上傳物件的許可 (s3express:CreateSession)。

{ "Version":"2012-10-17", "Id":"UploadObjectPolicy", "Statement":[{ "Sid":"DenyObjectsThatAreNotSSEKMS", "Effect":"Deny", "Principal":"*", "Action":"s3express:CreateSession", "Resource":"arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3/*", "Condition":{ "Null":{ "s3express:x-amz-server-side-encryption-aws-kms-key-id":"true" } } } ] }

若要要求 AWS KMS key 使用特定 來加密儲存貯體中的物件,您可以使用 s3express:x-amz-server-side-encryption-aws-kms-key-id 條件金鑰。若要指定 KMS 金鑰,您必須使用 arn:aws:kms:region:acct-id:key/key-id 格式的金鑰 Amazon Resource Name (ARN)。 AWS Identity and Access Management 不會驗證 的字串s3express:x-amz-server-side-encryption-aws-kms-key-id是否存在。Amazon S3 用於物件加密的 AWS KMS 金鑰 ID 必須符合政策中的 AWS KMS 金鑰 ID,否則 Amazon S3 會拒絕請求。

如需如何使用 SSE-KMS 進行新物件上傳的詳細資訊,請參閱 使用 AWS KMS (SSE-KMS) 為目錄儲存貯體中的新物件上傳指定伺服器端加密

如需目錄儲存貯體特定條件索引鍵的完整清單,請參閱 使用 APIs 授權區域端點 IAM

加密內容

對於目錄儲存貯體,加密內容是一組金鑰值對,其中包含有關資料的內容資訊。不支援其他加密內容值。如需加密內容的詳細資訊,請參閱加密內容

根據預設,如果您在目錄儲存貯體上使用 SSE-KMS,Amazon S3 會使用儲存貯體 Amazon Resource Name (ARN) 作為加密內容對:

arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3

確保您的 IAM 政策或 AWS KMS 金鑰政策使用儲存貯體 ARN 作為加密內容。

您可以在 Word 等區域端點 API 請求中使用 x-amz-server-side-encryption-context 標頭,選擇性地提供明確的加密內容對。 CreateSession此標頭的值是 Base64-encoded 編碼字串,其中包含作為鍵值對的加密內容。 UTF JSON對於目錄儲存貯體,加密內容必須符合預設加密內容 – 儲存貯體 Amazon Resource Name (ARN)。此外,由於加密內容未加密,請確保其中不包含敏感資訊。

您可以使用加密內容來識別和分類密碼編譯操作。您也可以使用預設加密內容 ARN 值, AWS CloudTrail 透過檢視與哪個加密金鑰搭配使用的目錄儲存貯體 ARN,在 中追蹤相關請求。

在 a CloudTrail 日誌檔案的 requestParameters欄位中,如果您在目錄儲存貯體上使用 SSE-KMS,加密內容值就是儲存貯體的 ARN。

"encryptionContext": { "aws:s3express:arn": "arn:aws:s3:::arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3" }

此外,對於目錄儲存貯體中使用 SSE-KMS 進行物件加密,Word AWS KMS CloudTrail 事件會記錄儲存貯體 ARN,而不是物件 ARN。

傳送 AWS KMS 加密物件的請求

目錄儲存貯體只能透過 HTTPS (TLS) 存取。此外,目錄儲存貯體會使用 AWS Signature 第 4 版 (SigV4) 簽署請求。如需傳送 AWS KMS 加密物件請求的詳細資訊,請參閱 傳送 AWS KMS 加密物件的請求

如果您的物件使用 SSE-KMS,請勿傳送GET請求和請求的加密HEAD請求標頭。否則,您會收到 HTTP 400 錯誤請求錯誤。

稽核目錄儲存貯體中的 SSE-KMS 加密

若要稽核 SSE-KMS 加密資料的 AWS KMS 金鑰使用情況,您可以使用 AWS CloudTrail 日誌。您可以深入了解密碼編譯操作,例如 GenerateDataKeyDecrypt。 CloudTrail 支援許多屬性值來篩選您的搜尋,包括事件名稱、使用者名稱和事件來源。