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

静态加密

借助服务器端加密 (SSE),您可以采用加密队列的方式传输敏感数据。SSE 使用 AWS Key Management Service (AWS KMS) 中托管的密钥保护队列中消息的内容。有关使用 AWS 管理控制台或 AWS SDK for Java(以及 CreateQueueSetQueueAttributesGetQueueAttributes 操作)来管理 SSE 的信息,请参阅以下教程:

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

重要

对于启用了 SSE 的队列的所有请求都必须使用 HTTPS 和 签名版本 4

AWS 服务的一些可使用 AWS Security Token Service AssumeRole 操作向 Amazon SQS 发送通知的功能与 SSE 兼容,但仅对 标准 队列有效

有关其他服务与加密队列的兼容性的信息,请参阅配置 AWS 服务的 KMS 权限 以及您的服务文档。

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

使用 AWS KMS 具有以下好处:

  • 您可以自行创建和管理客户主密钥 (CMK)

  • 还可以使用适用于 Amazon SQS 的 AWS 托管 CMK,它对于每个账户和区域都是唯一的。

  • AWS KMS 安全标准可帮助您满足与加密相关的合规性要求。

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

加密范围

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

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

  • 队列元数据 (队列名称和属性)

  • 消息元数据 (消息 ID、时间戳和属性)

  • 每队列指标

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

  • 仅在启用队列加密后发送消息时对其进行加密。Amazon SQS 不对积压消息进行加密。

  • 任何加密的消息将保持加密状态,即使已禁用其队列的加密。

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

  • 如果 Amazon SQS 将一条消息从加密的源队列移至未加密的死信队列,则该消息将保持加密状态。

  • 如果 Amazon SQS 将一条消息从未加密的源队列移值加密的死信队列,则该消息将保持未加密状态。

关键术语

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

数据密钥

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

有关更多信息,请参阅 AWS 加密 SDK 开发人员指南AWS Key Management Service Developer Guide 中的数据密钥

数据密钥重用周期

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

注意

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

客户主密钥 ID

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

注意

记住以下内容:

  • 如果您未指定自定义 CMK,Amazon SQS 将为 Amazon SQS 使用 AWS 托管的 CMK。有关创建自定义 CMK 的说明,请参阅 AWS Key Management Service Developer Guide 中的创建密钥

  • 在首次使用 AWS 管理控制台为队列的 Amazon SQS 指定 AWS 托管的 CMK 时,AWS KMS 将为 Amazon SQS 创建 AWS 托管的 CMK。

  • 或者,首次在启用 SSE 的队列中使用 SendMessageSendMessageBatch 操作时,AWS KMS 将为 Amazon SQS 创建 AWS 托管的 CMK。

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

重要

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

信封加密

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

有关更多信息,请参阅 AWS 加密 SDK 开发人员指南 中的信封加密