

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

# 使用 AWS KMS (SSE-KMS) 指定伺服器端加密
<a name="specifying-kms-encryption"></a>

根據預設，所有 Amazon S3 儲存貯體都設定了加密，所有上傳到 S3 儲存貯體的新物件都會在靜態時自動加密。伺服器端加密與 Amazon S3 受管金鑰 (SSE-S3) 是 Amazon S3 中每個儲存貯體的預設加密組態。若要使用不同類型的加密，您可以指定 S3 `PUT` 請求中要使用的伺服器端加密類型，也可以在目的地儲存貯體中更新預設加密組態。

如果您想要在`PUT`請求中指定不同的加密類型，您可以使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)、雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS)，或伺服器端加密搭配客戶提供的金鑰 (SSE-C)。若您想在目的地儲存貯體中設定不同的預設加密組態，您可以使用 SSE-KMS 或 DSSE-KMS。

如需變更一般用途儲存貯體之預設加密組態的詳細資訊，請參閱 [設定預設加密](default-bucket-encryption.md)。

當您將儲存貯體的預設加密組態變更為 SSE-KMS 時，並不會變更儲存貯體中現有 Amazon S3 物件的加密類型。若要在將預設加密組態更新為 SSE-KMS 之後變更既有物件的加密類型，您可以使用 Amazon S3 Batch Operations。您為 S3 Batch Operations 提供物件清單，而批次操作會呼叫個別 API 操作。您可以使用 [複製物件](batch-ops-copy-object.md) 動作來複製現有物件，該動作會將它們寫回與 SSE-KMS 加密物件相同的儲存貯體。單一批次操作任務可在數十億個物件上執行指定的操作。如需詳細資訊，請參閱 [使用 Batch Operations 大量執行物件操作](batch-ops.md) 和 *AWS 儲存部落格*文章[如何使用 S3 庫存清單、Amazon Athena 和 S3 Batch Operations 來追溯加密 Amazon S3 中的現有物件](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/)。

您可以使用 Amazon S3 主控台、REST API 操作、SDK 和 () 來指定 SSE AWS SDKs AWS CLI。 AWS Command Line Interface 如需詳細資訊，請參閱下列主題。

**注意**  
您可以在 Amazon S3 AWS KMS keys 中使用多區域。但是，Amazon S3 目前將多區域金鑰視為單區域金鑰，並且不使用金鑰的多區域功能。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[使用多區域金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。

**注意**  
如果您想要使用其他帳戶擁有的 KMS 金鑰，您必須具有該金鑰的許可。如需詳細了解 KMS 金鑰跨帳戶權限，請參閱《AWS Key Management Service 開發人員指南》**中的[建立其他帳戶可使用的 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。

## 使用 S3 主控台
<a name="add-object-encryption-kms"></a>

本主題說明如何設定或變更物件的加密類型，以使用 Amazon S3 主控台搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 使用伺服器端加密。

**注意**  
如果您的物件小於 5 GB，您可以變更物件的加密。如果您的物件大於 5 GB，您必須使用 [AWS CLI](mpu-upload-object.md#UsingCLImpUpload) 或 [AWS SDK](CopyingObjectsMPUapi.md) 來變更物件的加密。
如需變更物件加密所需的其他許可清單，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。如需授予此許可的範例政策，請參閱[Amazon S3 的身分型政策範例](example-policies-s3.md)。
如果您變更物件的加密，則會建立新物件來取代舊物件。如果啟用 S3 版本控制，則系統會建立物件的新版本，且現有物件會變成較舊的版本。變更屬性的角色也會成為新物件 (或物件版本) 的擁有者。

**新增或變更物件的加密**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在導覽窗格中，選擇**儲存貯體**，然後選擇**一般用途儲存貯體**索引標籤。導覽至包含您要變更之物件的 Amazon S3 儲存貯體或資料夾。

1. 選取您要變更之物件的核取方塊。

1. 從**動作**功能表上顯示的選項清單中，選擇**編輯伺服器端加密**。

1. 捲動至**伺服器端加密**區段。

1. 在**加密設定**底下，選擇**使用預設加密的儲存貯體設定**或**覆寫預設加密的儲存貯體設定**。
**重要**  
如果您針對預設加密組態使用 SSE-KMS 選項，則受到 AWS KMS的每秒請求數目 (RPS) 配額限制。如需 AWS KMS 配額以及如何請求提高配額的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[配額](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。

1. 若您選擇**覆寫預設加密的儲存貯體設定**，請設定下列加密設定。

   1. 在**加密類型**下，選擇**伺服器端加密與 AWS Key Management Service 金鑰 (SSE-KMS)**。

   1. 在 **AWS KMS 金鑰**之下，執行下列其中一個動作，以選擇 KMS 金鑰：
      + 若要從可用的 KMS 金鑰清單中選擇，請選擇**從 AWS KMS keys中選擇**，然後從可用金鑰清單中選擇您的 **KMS 金鑰**。

         AWS 受管金鑰 (`aws/s3`) 和您的客戶受管金鑰都會顯示在此清單中。如需詳細了解客戶受管金鑰，請參閱《AWS Key Management Service 開發人員指南》**中的[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
      + 若要輸入 KMS 金鑰 ARN，請選擇**輸入 AWS KMS key ARN**，然後在出現的欄位中輸入您的 KMS 金鑰 ARN。
      + 若要在 AWS KMS 主控台中建立新的客戶受管金鑰，請選擇**建立 KMS 金鑰**。

        如需建立 的詳細資訊 AWS KMS key，請參閱《 *AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
您只能使用 AWS 區域 與儲存貯體相同的 KMS 金鑰。Amazon S3 主控台僅會列出與儲存貯體位於相同區域的前 100 個 KMS 金鑰。若要使用未列出的 KMS 金鑰，必須輸入 KMS 金鑰 ARN。若您想要使用其他帳戶的 KMS 金鑰，您必須先具有該金鑰的使用權限，然後輸入 KMS 金鑰 ARN。  
Amazon S3 僅支援對稱加密 KMS 金鑰，而不支援非對稱 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[識別對稱和非對稱 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

1. 在**其他複製設定**下，選擇**複製來源設定**、**不要指定設定**或**指定設定**。**複製來源設定**是預設選項。如果您只想複製物件但不想包含來源設定屬性，請選擇**不要指定設定**。選擇**指定設定**以指定儲存類別、ACL、物件標籤、中繼資料、伺服器端加密和額外檢查總和的設定。

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

**注意**  
此動作會將加密套用至所有指定的物件。加密資料夾時，請等待儲存作業完成，然後再將新物件新增至資料夾。

## 使用 REST API
<a name="KMSUsingRESTAPI"></a>

建立物件 (即上傳新物件或複製現有物件) 時，可以指定使用伺服器端加密和 AWS KMS keys (SSE-KMS) 來加密資料。若要執行這項操作，請將 `x-amz-server-side-encryption` 標頭新增至要求。將標頭的值設為加密演算法 `aws:kms`。Amazon S3 會傳回回應標頭 `x-amz-server-side-encryption`，確認已使用 SSE-KMS 存放物件。

如果您使用 `aws:kms` 的值指定 `x-amz-server-side-encryption` 標頭，也可以使用下列要求標頭：
+ `x-amz-server-side-encryption-aws-kms-key-id`
+ `x-amz-server-side-encryption-context`
+ `x-amz-server-side-encryption-bucket-key-enabled`

**Topics**
+ [支援 SSE-KMS 的 Amazon S3 REST API 操作](#sse-request-headers-kms)
+ [加密內容 (`x-amz-server-side-encryption-context`)](#s3-kms-encryption-context)
+ [AWS KMS 金鑰 ID (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-kms-key-id-api)
+ [S3 儲存貯體金鑰 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)](#bucket-key-api)

### 支援 SSE-KMS 的 Amazon S3 REST API 操作
<a name="sse-request-headers-kms"></a>

下列 REST API 操作接受 `x-amz-server-side-encryption`、`x-amz-server-side-encryption-aws-kms-key-id` 和 `x-amz-server-side-encryption-context` 請求標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) – 使用 `PUT` API 操作上傳資料時，您可以指定這些請求標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) – 複製物件時，您會同時有來源物件與目標物件。當您使用 `CopyObject` 操作傳遞 SSE-KMS 標頭時，這些標頭只會套用至目標物件。複製現有物件時，除非明確請求伺服器端加密，否則無論來源物件是否經過加密，都不會加密目的地物件。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) – 使用 `POST` 操作上傳物件時，您會提供與表單欄位中相同的資訊，而不是請求標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) – 使用分段上傳 API 操作上傳大型物件時，您可以指定這些標頭。您可以在 `CreateMultipartUpload` 請求中指定這些標頭。

使用伺服器端加密存放物件時，下列 REST API 操作的回應標頭會傳回 `x-amz-server-side-encryption` 標頭。
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**重要**  
如果您未使用 Secure Sockets Layer (SSL)、Transport Layer Security (TLS) 或第 4 版簽署程序，則受 AWS KMS 保護物件的所有 `GET` 和 `PUT` 請求將會失敗。
如果您的物件使用 SSE-KMS，請勿傳送 `GET` 請求與 `HEAD` 請求的加密請求標頭，否則您會收到 HTTP 400 BadRequest 錯誤。

### 加密內容 (`x-amz-server-side-encryption-context`)
<a name="s3-kms-encryption-context"></a>

如果您指定 `x-amz-server-side-encryption:aws:kms`，則 Amazon S3 API 支援具有 `x-amz-server-side-encryption-context` 標頭的加密內容。加密內容是一組金鑰值對，其中包含資料的其他相關內容資訊。

Amazon S3 會自動使用物件或儲存貯體 Amazon Resource Name (ARN) 作為加密內容對。如果您在未啟用 S3 儲存貯體金鑰的情況下使用 SSE-KMS，則您使用物件 ARN 做為加密內容，例如 `arn:aws:s3:::object_ARN`。不過，如果您使用 SSE-KMS 並啟用 S3 儲存貯體金鑰，則會將儲存貯體 ARN 用於加密內容，例如 `arn:aws:s3:::bucket_ARN`。

您可以使用 `x-amz-server-side-encryption-context` 標頭來提供其他加密內容對。不過，由於加密內容未加密，因此請確保其中不包含敏感資訊。Amazon S3 會一起存放此附加金鑰對與預設加密內容。

如需 Amazon S3 中加密內容的相關資訊，請參閱 [加密內容](UsingKMSEncryption.md#encryption-context)。如需有關加密內容的更多資訊，請參閱《AWS Key Management Service 開發人員指南》**中的 [AWS Key Management Service 概念：加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。

### AWS KMS 金鑰 ID (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-kms-key-id-api"></a>

您可以使用 `x-amz-server-side-encryption-aws-kms-key-id` 標頭來指定用來保護資料之客戶受管金鑰的 ID。如果您指定 `x-amz-server-side-encryption:aws:kms` 標頭，但未提供 `x-amz-server-side-encryption-aws-kms-key-id` 標頭，則 Amazon S3 會使用 AWS 受管金鑰 (`aws/s3`) 來保護資料。如果您想要使用客戶受管的金鑰，則必須提供客戶受管金鑰的 `x-amz-server-side-encryption-aws-kms-key-id` 標頭。

**重要**  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 只支援對稱加密 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[對稱加密 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks)。

### S3 儲存貯體金鑰 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
<a name="bucket-key-api"></a>

您可以使用 `x-amz-server-side-encryption-aws-bucket-key-enabled` 請求標頭在物件層級啟用或停用 S3 儲存貯體金鑰。S3 儲存貯體金鑰透過減少來自 AWS KMS Amazon S3 的請求流量來降低請求成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](bucket-key.md)。

如果您指定 `x-amz-server-side-encryption:aws:kms` 標頭但未提供 `x-amz-server-side-encryption-aws-bucket-key-enabled` 標頭，則您的物件使用目的地儲存貯體存儲桶的 S3 儲存貯體金鑰設定來加密您的物件。如需詳細資訊，請參閱[在物件層級設定 S3 儲存貯體金鑰](configuring-bucket-key-object.md)。

## 使用 AWS CLI
<a name="KMSUsingCLI"></a>

若要使用下列範例 AWS CLI 命令，請將 取代`user input placeholders`為您自己的資訊。

當您上傳新物件或複製現有物件時，您可以指定使用伺服器端加密搭配 AWS KMS 金鑰來加密資料。若要執行這項操作，請將 `--server-side-encryption aws:kms` 標頭新增至要求。使用 `--ssekms-key-id example-key-id` 新增您建立[的客戶受管 AWS KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk)。如果您指定 `--server-side-encryption aws:kms`，但未提供 AWS KMS 金鑰 ID，Amazon S3 將使用 AWS 受管金鑰。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --ssekms-key-id example-key-id --body filepath
```

您還可以透過新增 `--bucket-key-enabled` 或 `--no-bucket-key-enabled`，在 PUT 或 COPY 操作上啟用或停用 Amazon S3 儲存貯體金鑰。Amazon S3 儲存貯體金鑰可以透過減少來自 Amazon S3 的 AWS KMS 請求流量來降低請求成本 AWS KMS。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 成本](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-key.html)。

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

您可以將未加密的物件加密以使用 SSE-KMS，方法是將物件複製回原位。

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --body filepath --bucket amzn-s3-demo-bucket --key example-object-key --sse aws:kms --sse-kms-key-id example-key-id --body filepath
```

## 使用 AWS SDKs
<a name="kms-using-sdks"></a>

使用 AWS SDKs時，您可以請求 Amazon S3 使用 AWS KMS keys 進行伺服器端加密。下列範例示範如何使用 SSE-KMS 搭配適用於 Java 和 .NET AWS SDKs。如需其他 SDKs的資訊，請參閱《 AWS 開發人員中心》上的[範例程式碼和程式庫](https://aws.amazon.com/code)。

**重要**  
當您在 Amazon S3 中使用 AWS KMS key 進行伺服器端加密時，您必須選擇對稱加密 KMS 金鑰。Amazon S3 只支援對稱加密 KMS 金鑰。如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[對稱加密 KMS 金鑰](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks)。

### `CopyObject` 操作
<a name="kms-copy-operation"></a>

複製物件時，請新增相同的請求屬性 (`ServerSideEncryptionMethod` 與 `ServerSideEncryptionKeyManagementServiceKeyId`)，以請求 Amazon S3 使用 AWS KMS key。如需複製物件的詳細資訊，請參閱「[複製、移動和重新命名物件](copy-object.md)」。

### `PUT` 操作
<a name="kms-put-operation"></a>

------
#### [ Java ]

使用 上傳物件時 適用於 Java 的 AWS SDK，您可以透過 AWS KMS key 新增 `SSEAwsKeyManagementParams` 屬性來請求 Amazon S3 使用 ，如下列請求所示：

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());
```

在此情況下，Amazon S3 會使用 AWS 受管金鑰 (`aws/s3`)。如需詳細資訊，請參閱[搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)](UsingKMSEncryption.md)。您可以選擇建立對稱加密 KMS 金鑰，並在請求中指定該金鑰，如下列範例所示：

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));
```

如需建立客戶受管金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[程式設計 AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html)。

如需上傳物件的可行程式碼範例，請參閱下列主題。若要使用這些範例，您必須更新這些程式碼範例並提供加密資訊，如上述程式碼片段所示。
+ 如需以單一操作上傳物件，請參閱 [上傳物件](upload-objects.md)。
+ 如需使用高階或低階分段上傳 API 操作的分段上傳，請參閱[使用分段上傳來上傳物件](mpu-upload-object.md)。

------
#### [ .NET ]

使用 上傳物件時 適用於 .NET 的 AWS SDK，您可以透過 AWS KMS key 新增 `ServerSideEncryptionMethod` 屬性來請求 Amazon S3 使用 ，如下列請求所示：

```
PutObjectRequest putRequest = new PutObjectRequest
 {
     BucketName = amzn-s3-demo-bucket,
     Key = keyName,
     // other properties
     ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
 };
```

在此情況下，Amazon S3 會使用 AWS 受管金鑰。如需詳細資訊，請參閱[搭配 AWS KMS 金鑰使用伺服器端加密 (SSE-KMS)](UsingKMSEncryption.md)。您可以選擇建立自己的對稱加密客戶自管金鑰，並在請求中指定該金鑰，如下列範例所示：

```
PutObjectRequest putRequest1 = new PutObjectRequest
{
  BucketName = amzn-s3-demo-bucket,
  Key = keyName,
  // other properties
  ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
  ServerSideEncryptionKeyManagementServiceKeyId = keyId
};
```

如需建立客戶受管金鑰的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[程式設計 AWS KMS API](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html)。

如需上傳物件的可行程式碼範例，請參閱下列主題。若要使用這些範例，您必須更新這些程式碼範例並提供加密資訊，如上述程式碼片段所示。
+ 如需以單一操作上傳物件，請參閱 [上傳物件](upload-objects.md)。
+ 如需使用高階或低階分段上傳 API 操作的分段上傳，請參閱[使用分段上傳來上傳物件](mpu-upload-object.md)。

------

### 預先簽章的 URL
<a name="kms-presigned-urls"></a>

------
#### [ Java ]

為使用 AWS KMS key加密的物件建立預先簽章 URL 時，您必須明確指定第 4 版簽署程序，如下列範例所示：

```
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
        new ProfileCredentialsProvider(), clientConfiguration);
...
```

如需程式碼範例，請參閱「[使用預先簽章的 URL 來共用物件](ShareObjectPreSignedURL.md)」。

------
#### [ .NET ]

為使用 AWS KMS key加密的物件建立預先簽章 URL 時，您必須明確指定第 4 版簽署程序，如下列範例所示：

```
AWSConfigs.S3Config.UseSignatureVersion4 = true;
```

如需程式碼範例，請參閱「[使用預先簽章的 URL 來共用物件](ShareObjectPreSignedURL.md)」。

------