設定和監視目錄值區的預設加密 - Amazon Simple Storage Service

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

設定和監視目錄值區的預設加密

Amazon S3 儲存貯體預設已啟用儲存貯體加密,而新物件會透過使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3) 來自動加密。此加密免費適用於 Amazon S3 儲存貯體中的所有新物件。

如果您需要對加密金鑰進行更多控制,例如管理金鑰輪替和存取原則授與,您可以選擇使用伺服器端加密 AWS Key Management Service (AWS KMS)鍵(SSE-KMS)。

注意
  • 建議儲存貯體的預設加密使用所需的加密設定,且不要覆寫CreateSession要求或PUT物件要求中的儲存貯體預設加密。然後,新物件會使用所需的加密設定自動加密。如需目錄值區中加密覆寫行為的詳細資訊,請參閱使用以下指定伺服器端加密 AWS KMS 用於新對象上傳

  • 若要使用 SSE-來加密目錄值區中的新物件KMS,您必須使用KMS金鑰 (特別是客戶管理的金鑰) 將 SSE-指定KMS為目錄儲存貯體的預設加密組態。然後,當針對區域端點API作業建立工作階段時,會在工作階段期間使用 SSE-和 S3 儲存貯體金鑰自動加密KMS和解密新物件。

  • 將預設儲存貯體加密設定為 SSE-時KMS,S3 儲存貯體金鑰一律會在PUT目錄儲存貯體中啟用並且無法停用。GET當您將KMS加密物件從一般用途儲存貯體複製SSE到目錄儲存貯體、從目錄儲存貯體到一般用途儲存貯體,或在目錄儲存貯體之間複製時,不支援 S3 儲存貯體金鑰 CopyObject, UploadPartCopy該 Copy Batch 作業中的作業,或 import 工作。在這種情況下,Amazon S3 打電話 AWS KMS 每次對KMS加密對象發出複製請求時。有關 S3 存儲桶密鑰如何減少您的更多信息 AWS KMS 請求成本,請參閱KMS使用 Amazon S3 儲存貯體金鑰降低成本 SSE

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

  • 雙層伺服器端加密 AWS KMS 目錄儲存貯體中的預設加密不支援使用客戶提供的金鑰 (SSE-C) 的金鑰 (DSSE-KMS) 和伺服器端加密。

如需有關設定預設加密的更多資訊,請參閱設定預設加密

如需預設加密所需權限的詳細資訊,請參閱 PutBucketEncryptionAmazon 簡單存儲服務API參考中。

您可以使用 Amazon S3 主控台為 S3 儲存貯體設定 Amazon S3 預設加密 AWS SDKs,Amazon S3 REST API 和 AWS Command Line Interface (AWS CLI).

設定 Amazon S3 儲存貯體的預設加密
  1. 登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. Buckets (儲存貯體) 清單中,選擇您所需的儲存貯體名稱。

  4. 選擇屬性索引標籤。

  5. 伺服器端加密設定下,目錄儲存貯體使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密。

  6. 選擇 Save changes (儲存變更)。

這些範例說明如何使用 SSE-S3 或使用 SSE-KMS 搭配 S3 儲存貯體金鑰來設定預設加密。

如需預設加密的詳細資訊,請參閱對 Amazon S3 儲存貯體設定預設伺服器端加密行為。有關使用的更多信息 AWS CLI 若要設定預設加密,請參閱put-bucket-encryption

範例 — 使用 SSE-S3 進行默認加密

此範例會使用 Amazon S3 受管金鑰設定預設儲存貯體加密。若要使用指令,請取代 user input placeholders 使用您自己的信息。

aws s3api put-bucket-encryption --bucket bucket-base-name--azid--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
範例 — KMS 使用 S3 儲存貯體金鑰的SSE預設加密

此範例KMS使用 S3 儲存貯體金鑰設定預設儲存貯體加密。SSE若要使用指令,請取代 user input placeholders 使用您自己的信息。

aws s3api put-bucket-encryption --bucket bucket-base-name--azid--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "KMS-Key-ARN" }, "BucketKeyEnabled": true } ] }'

使用此RESTAPIPutBucketEncryption作業可以使用 SSE-S3 或 SSE-KMS 的伺服器端加密類型來設定預設加密。

如需詳細資訊,請參閱 PutBucketEncryptionAmazon 簡單存儲服務API參考中。

使用時 AWS SDKs,您可以請求 Amazon S3 使用 AWS KMS keys 用於伺服器端加密。如下所示 AWS SDKs對於 Java 和. NET範例使用 SSE-KMS 和 S3 儲存貯體金鑰設定目錄儲存貯體的預設加密組態。如需其他的相關資訊SDKs,請參閱上的範例程式碼和程式庫。 AWS 開發人員中心。

重要

當您使用 AWS KMS key 對於 Amazon S3 中的伺服器端加密,您必須選擇對稱加密KMS金鑰。Amazon S3 僅支援對稱加密KMS金鑰。如需有關這些金鑰的詳細資訊,請參閱 KMS AWS Key Management Service 開發人員指南

Java

隨著 AWS SDK for Java 2.x,您可以請求 Amazon S3 使用 AWS KMS key 使用applyServerSideEncryptionByDefault方法來指定目錄儲存貯體的預設加密配置,以便使用 SSE-進行資料加密KMS。您可以建立對稱加密KMS金鑰,並在要求中指定該金鑰。

import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutBucketEncryptionRequest; import software.amazon.awssdk.services.s3.model.ServerSideEncryption; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionByDefault; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionConfiguration; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionRule; public class Main { public static void main(String[] args) { S3Client s3 = S3Client.create(); String bucketName = "bucket-base-name--azid--x-s3"; String kmsKeyId = "your-kms-customer-managed-key-id"; // AWS managed KMS keys aren't supported. Only customer-managed keys are supported. ServerSideEncryptionByDefault serverSideEncryptionByDefault = ServerSideEncryptionByDefault.builder() .sseAlgorithm(ServerSideEncryption.AWS_KMS) .kmsMasterKeyID(kmsKeyId) .build(); // The bucketKeyEnabled field is enforced to be true. ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder() .bucketKeyEnabled(true) .applyServerSideEncryptionByDefault(serverSideEncryptionByDefault) .build(); ServerSideEncryptionConfiguration serverSideEncryptionConfiguration = ServerSideEncryptionConfiguration.builder() .rules(rule) .build(); PutBucketEncryptionRequest putRequest = PutBucketEncryptionRequest.builder() .bucket(bucketName) .serverSideEncryptionConfiguration(serverSideEncryptionConfiguration) .build(); s3.putBucketEncryption(putRequest); } }

如需有關建立客戶受管金鑰的詳細資訊,請參閱程式設計 AWS KMS APIAWS Key Management Service 開發人員指南

如需上傳物件的可行程式碼範例,請參閱下列主題。若要使用這些範例,您必須更新這些程式碼範例並提供加密資訊,如上述程式碼片段所示。

.NET

隨著 AWS SDK for .NET,您可以請求 Amazon S3 使用 AWS KMS key 使用ServerSideEncryptionByDefault屬性來指定目錄儲存貯體的預設加密配置,以便使用 SSE-進行資料加密KMS。您可以建立對稱加密客戶管理的金鑰,並在要求中指定該金鑰。

// Set the bucket server side encryption to use AWSKMS with a customer-managed key id. // bucketName: Name of the directory bucket. "bucket-base-name--azid--x-s3" // kmsKeyId: The Id of the customer managed KMS Key. "your-kms-customer-managed-key-id" // Returns True if successful. public static async Task<bool> SetBucketServerSideEncryption(string bucketName, string kmsKeyId) { var serverSideEncryptionByDefault = new ServerSideEncryptionConfiguration { ServerSideEncryptionRules = new List<ServerSideEncryptionRule> { new ServerSideEncryptionRule { ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault { ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = kmsKeyId } } } }; try { var encryptionResponse =await _s3Client.PutBucketEncryptionAsync(new PutBucketEncryptionRequest { BucketName = bucketName, ServerSideEncryptionConfiguration = serverSideEncryptionByDefault, }); return encryptionResponse.HttpStatusCode == HttpStatusCode.OK; } catch (AmazonS3Exception ex) { Console.WriteLine(ex.ErrorCode == "AccessDenied" ? $"This account does not have permission to set encryption on {bucketName}, please try again." : $"Unable to set bucket encryption for bucket {bucketName}, {ex.Message}"); } return false; }

如需有關建立客戶受管金鑰的詳細資訊,請參閱程式設計 AWS KMS APIAWS Key Management Service 開發人員指南

如需上傳物件的可行程式碼範例,請參閱下列主題。若要使用這些範例,您必須更新這些程式碼範例並提供加密資訊,如上述程式碼片段所示。

監視目錄值區的預設加密 AWS CloudTrail

您可以使用以下方式追蹤 Amazon S3 目錄儲存貯體的預設加密組態請求 AWS CloudTrail 事件。 CloudTrail 記錄檔中會使用下列API事件名稱:

  • PutBucketEncryption

  • GetBucketEncryption

  • DeleteBucketEncryption

注意
  • EventBridge 目錄值區不支援。

  • 雙層伺服器端加密 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 或伺服器端加密使用客戶提供的加密金鑰 (SSE-C) 在目錄儲存貯體中不支援。

如需使用監視預設加密的詳細資訊 AWS CloudTrail,請參閱監視默認加密 AWS CloudTrail 和 Amazon EventBridge