Encryption at rest - Amazon Simple Queue Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Encryption at rest

借助服务器端加密 (SSE),您可以采用加密队列的方式传输敏感数据。SSE 使用 AWS Key Management Service (AWS KMS) 中托管的密钥保护队列中消息的内容。有关管理 SSE 使用 AWS 管理控制台,参见 Configuring 服务器端加密 (SSE) for a queue (console).

有关管理 SSE 使用 AWS SDK for Java (和 CreateQueueSetQueueAttributes,和 GetQueueAttributes 操作),请参阅以下示例:

一旦 Amazon SQS 收到消息,SSE 就会对消息进行加密。这些消息以加密形式存储,仅当消息发送给授权使用者时,Amazon SQS 才会对消息进行解密。

重要

所有队列请求 SSE 已启用必须使用HTTPS和 签名版本4.

某些功能 AWS 可以发送通知至 Amazon SQS 使用 AWS Security Token Service AssumeRole 操作与 SSE 但工作 only with standard queues:

有关其他服务与加密队列兼容性的信息,请参阅 Configure KMS permissions for AWS services 以及您的服务文档。

AWS KMS 将安全、高度可用的硬件和软件结合起来,提供可扩展到云的密钥管理系统。将 Amazon SQS 与 AWS KMS 结合使用时,加密消息数据的数据密钥也将进行加密并且与其保护的数据存储在一起。

使用 AWS KMS 具有以下好处:

  • You can create and manage customer master keys (CMKs) yourself.

  • You can also use the AWS managed CMK for Amazon SQS, which is unique for each account and region.

  • The AWS KMS security standards can help you meet encryption-related compliance requirements.

有关详细信息,请参阅 什么是 AWS Key Management Service?AWS Key Management Service Developer GuideAWS Key Management Service 加密详细信息 白皮书。

Encryption scope

SSE 将对 Amazon SQS 队列中的消息正文进行加密。

SSE 不对以下各项进行加密:

  • Queue metadata (queue name and attributes)

  • Message metadata (message ID, timestamp, and attributes)

  • Per-queue metrics

对消息进行加密将使其内容对未经授权的或匿名的用户不可用。这不会影响 Amazon SQS 的正常功能:

  • A message is encrypted only if it is sent after the encryption of a queue is enabled. Amazon SQS doesn't encrypt backlogged messages.

  • Any encrypted message remains encrypted even if the encryption of its queue is disabled.

将消息移至死信队列不会影响其加密:

  • When Amazon SQS moves a message from an encrypted source queue to an unencrypted dead-letter queue, the message remains encrypted.

  • When Amazon SQS moves a message from a unencrypted source queue to an encrypted dead-letter queue, the message remains unencrypted.

Key terms

以下关键术语有助于您更好地了解 SSE 的功能。有关详细说明,请参阅 Amazon Simple Queue Service API Reference

Data key

数据加密密钥 (DEK) 负责加密 Amazon SQS 消息的内容。

有关详细信息,请参阅 数据键AWS Key Management Service Developer GuideAWS 加密 SDK 开发人员指南.

Data key reuse period

在再次调用 AWS KMS 之前,Amazon SQS 可以重用数据密钥对消息进行加密或者解密的时间长度(以秒为单位)。一个表示秒数的证书,介于 60 秒 (1 分钟) 和 86400 秒 (24 小时) 之间。默认值为 300 (5 分钟)。有关更多信息,请参阅 Understanding the data key reuse period。)

注意

在出现极少发生的无法到达 AWS KMS 的情况时,Amazon SQS 将继续使用缓存数据密钥,直至重新建立连接。

Customer master key ID

您的账户或另一账户中的 AWS 托管客户主密钥 (CMK) 或自定义 CMK— 的别名、别名 ARN、密钥 ID 或密钥 ARN。虽然别名 AWS 管理CMK Amazon SQS 始终是 alias/aws/sqs,自定义CMK的别名可以是 alias/MyAlias。您可以使用这些CMK来保护消息 Amazon SQS 队列。

注意

记住以下内容:

  • If you don't specify a custom CMK, Amazon SQS uses the AWS managed CMK for Amazon SQS.

  • The first time you use the AWS 管理控制台 to specify the AWS managed CMK for Amazon SQS for a queue, AWS KMS creates the AWS managed CMK for Amazon SQS.

  • Alternatively, the first time you use the SendMessage or SendMessageBatch action on a queue with SSE enabled, AWS KMS creates the AWS managed CMK for Amazon SQS.

您可以利用 AWS KMS 控制台的客户托管密钥部分或利用 CreateKey AWS KMS 操作来创建 CMK、定义控制 CMK 的使用方式的策略和审核 CMK 使用情况。有关详细信息,请参阅 客户主密钥(CMKS)创建密钥AWS Key Management Service Developer Guide。有关CMK标识符的更多示例,请参阅 钥匙IDAWS Key Management Service API Reference。有关查找CMK标识符的信息,请参阅 查找密钥ID和ARNAWS Key Management Service Developer Guide.

重要

使用 AWS KMS 无需支付额外费用。有关更多信息,请参阅Estimating AWS KMS costsAWS Key Management Service 定价

Envelope Encryption

加密数据的安全性部分取决于如何保护可解密该数据的数据密钥。Amazon SQS 使用 CMK 加密数据密钥,然后将加密的数据密钥与加密的消息一起存储。这种使用主密钥加密数据密钥的做法称为信封加密。

有关详细信息,请参阅 信封加密AWS 加密 SDK 开发人员指南.