

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

# Amazon SQS 中的靜態加密
<a name="sqs-server-side-encryption"></a>

伺服器端加密 (SSE) 可讓您在加密佇列中傳輸敏感資料。SSE 會使用 SQS 受管加密金鑰 (SSE-SQS) 或 AWS Key Management Service (SSE-KMS) 中管理的金鑰來保護佇列中的訊息內容。如需使用 管理 SSE 的資訊 AWS 管理主控台，請參閱下列內容：
+ [為佇列 (主控台) 設定 SSE-SQS](sqs-configure-sqs-sse-queue.md)
+ [為佇列 (主控台) 設定 SSE-KMS](sqs-configure-sse-existing-queue.md)

 如需使用 適用於 Java 的 AWS SDK （以及 `[CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)`、 和 `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)`動作） 管理 SSE 的資訊`[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)`，請參閱下列範例：
+ [搭配 Amazon SQS 佇列使用伺服器端加密](sqs-java-configure-sse.md)
+ [設定 的 KMS 許可 AWS 服務](sqs-key-management.md#compatibility-with-aws-services)

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/Mw1NVpJsOZc?rel=0&amp;controls=0&amp;showinfo=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/Mw1NVpJsOZc?rel=0&amp;controls=0&amp;showinfo=0)


Amazon SQS 一收到訊息，SSE 就會將其加密。這些訊息以加密形式存放，並且 Amazon SQS 僅在將訊息傳送給授權的消費者時才會解密訊息。

**重要**  
所有對啟用 SSE 之佇列的請求都必須使用 HTTPS 和[簽章版本 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。  
使用預設金鑰 (Amazon SQS 的AWS 受管 KMS 金鑰） 的[加密佇列](#sqs-server-side-encryption)無法在不同的 中叫用 Lambda 函數 AWS 帳戶。  
可使用 AWS Security Token Service `[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)`動作將通知傳送至 Amazon SQS AWS 的服務的某些功能與 SSE 相容，但*僅適用於標準佇列：*  
[Auto Scaling Lifecycle Hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)
[AWS Lambda 無效字母佇列](https://docs.aws.amazon.com/lambda/latest/dg/dlq.html)
如需有關其他服務與加密主題相容的資訊，請參閱 [設定 AWS 服務的 KMS 許可](sqs-key-management.md#compatibility-with-aws-services) 與您的服務文件。

AWS KMS 結合了安全、高可用性的硬體和軟體，以提供針對雲端擴展的金鑰管理系統。當您搭配 使用 Amazon SQS 時 AWS KMS，加密訊息資料[的資料金鑰](#sqs-sse-key-terms)也會加密，並使用其保護的資料存放。

以下為使用 AWS KMS的優點：
+ 您可以自行建立和管理 [AWS KMS keys](#sqs-sse-key-terms)。
+ 您也可以將 AWS 受管 KMS 金鑰用於 Amazon SQS，這對於每個帳戶和區域都是唯一的。
+  AWS KMS 安全標準可協助您符合加密相關的合規要求。

如需詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[什麼是 AWS Key Management Service？](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

## 加密範圍
<a name="sqs-encryption-what-does-sse-encrypt"></a>

SSE 會加密 Amazon SQS 佇列中的訊息內文。

SSE 不會加密下列項目：
+ 佇列中繼資料 （佇列名稱和屬性）
+ 訊息中繼資料 (訊息 ID、時間戳記和屬性)
+ 每個佇列指標

加密訊息可讓未授權或匿名使用者無法使用其內容。啟用 SSE 後，對加密佇列的匿名 `SendMessage` 和 `ReceiveMessage` 請求將被拒絕。Amazon SQS 安全性最佳實務建議您不要使用匿名請求。如果您希望將匿名請求傳送到 Amazon SQS 佇列，請務必停用 SSE。這不會影響 Amazon SQS 的正常運作：
+ 只有在啟用加密佇列後傳送的訊息，才會對訊息進行加密。Amazon SQS 不會加密待處理訊息。
+ 即使已停用其佇列的加密，已加密訊息仍會維持加密。

將訊息移到[無效信件佇列](sqs-dead-letter-queues.md)並不會影響其加密：
+ 當 Amazon SQS 將訊息從已加密來源佇列移到未加密的無效字母佇列，訊息會保持加密。
+ 當 Amazon SQS 將訊息從未加密來源佇列移到已加密的無效字母佇列，訊息仍會保持未加密。

## 重要用語
<a name="sqs-sse-key-terms"></a>

以下重要術語有助於您更加了解 SSE 的功能。如需描述的詳細資訊，請參閱 *[Amazon Simple Queue Service API 參考](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/)*。

**資料金鑰**  
金鑰 (DEK) 負責加密 Amazon SNS 訊息的內容。  
如需詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》和《*AWS Encryption SDK 開發人員指南*》中的[資料金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)。

**資料金鑰重複使用期間**  
Amazon SQS 可以在 AWS KMS 再次呼叫之前重複使用資料金鑰來加密或解密訊息的時間長度，以秒為單位。代表秒數的整數，介於 60 秒 (1 分鐘) 和 86,400 秒 (24 小時) 之間。預設值為 300 (5 分鐘)。如需詳細資訊，請參閱[了解資料金鑰重複使用期間](sqs-key-management.md#sqs-how-does-the-data-key-reuse-period-work)。  
萬一無法連線 AWS KMS，Amazon SQS 會繼續使用快取的資料金鑰，直到重新建立連線為止。

**KMS 金鑰 ID**  
在您的帳戶或其他帳戶中， AWS 受管 KMS 金鑰或自訂 KMS 金鑰的別名、別名 ARN、金鑰 ID 或金鑰 ARN。雖然 Amazon SQS 的 AWS 受管 KMS 金鑰別名一律為 `alias/aws/sqs`，但自訂 KMS 金鑰的別名可以是 `alias/MyAlias`。您可以使用這些 KMS 金鑰來保護 Amazon SQS 佇列中的訊息。  
請謹記以下幾點：  
+ 如果您未指定自訂 KMS 金鑰，Amazon SQS 會使用 Amazon SQS 的 AWS 受管 KMS 金鑰。
+ 第一次使用 AWS 管理主控台 為佇列指定 Amazon SQS 的 AWS 受管 KMS 金鑰時， AWS KMS 會為 Amazon SQS 建立 AWS 受管 KMS 金鑰。
+ 或者，當您第一次在啟用 SSE 的佇列上使用 `SendMessage`或 `SendMessageBatch`動作時， 會為 Amazon SQS AWS KMS 建立 AWS 受管 KMS 金鑰。
您可以建立 KMS 金鑰、定義控制如何使用 KMS 金鑰的政策，以及使用主控台**的客戶受管金鑰區段或 動作來稽核 KMS 金鑰**用量。 AWS KMS `[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)` AWS KMS 如需詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的 [KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)和[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。如需 KMS 金鑰識別碼的更多範例，請參閱 *AWS Key Management Service API 參考* API 中的 [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters)。如需有關尋找 KMS 金鑰識別碼的資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[尋找金鑰 ID 和 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn)。  
使用 需支付額外費用 AWS KMS。如需詳細資訊，請參閱 [估算 AWS KMS 成本](sqs-key-management.md#sqs-estimate-kms-usage-costs) 和 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing)。

**信封加密**  
加密資料的安全性有一部分取決於保護能夠解密資料的資料金鑰。Amazon SQS 會使用 KMS 金鑰為資料金鑰加密，然後使用加密的訊息儲存加密的資料金鑰。這種使用 KMS 金鑰來加密資料金鑰的做法，就是所謂的信封加密。  
如需詳細資訊，請參閱《AWS Encryption SDK 開發人員指南》**中的[信封加密](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption)。