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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

静态加密

借助服务器端加密 (SSE),您可以采用加密队列的方式传输敏感数据。SSE 使用 SQS 托管的加密密钥 (SSE-SQS) 或在 (SSE-KMS) 中管理的密钥来保护队列中消息的内容。 Amazon Key Management Service 有关使用管理 SSE 的信息 Amazon Web Services Management Console,请参阅以下内容:

有关使用 Amazon SDK for Java (以及CreateQueueSetQueueAttributesGetQueueAttributes操作)管理 SSE 的信息,请参阅以下示例:

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

重要

针对启用了 SSE 的队列的所有请求都必须使用 HTTPS 和 Signature Version 4

可以使用 Amazon Security Token Service AssumeRole操作向 Amazon SQS 发送通知的 Amazon 服务的某些功能与 SSE 兼容,但仅适用于标准队列

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

Amazon KMS 将安全、高度可用的硬件和软件相结合,提供可扩展到云端的密钥管理系统。当您将 Amazon SQS 与一起使用时 Amazon KMS,加密消息数据的数据密钥也会被加密并与它们保护的数据一起存储。

使用 Amazon KMS 具有以下好处:

  • 您可以自行创建和管理 Amazon KMS keys

  • 您也可以使用适用于 Amazon SQS 的 Amazon 托管 KMS 密钥,该密钥对于每个账户和地区都是唯一的。

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

有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的什么是 Amazon Key Management Service?

加密范围

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

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

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

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

  • 每队列指标

对消息进行加密将使其内容对未经授权的或匿名的用户不可用。启用 SSE 后,对加密队列的匿名 SendMessageReceiveMessage 请求将被拒绝。Amazon SQS 安全最佳实践建议不要使用匿名请求。如果您想向 Amazon SQS 队列发送匿名请求,请确保禁用 SSE。这不会影响 Amazon SQS 的正常功能:

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

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

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

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

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

关键术语

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

数据密钥

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

有关更多信息,请参阅《Amazon Encryption SDK 开发人员指南》中《Amazon Key Management Service 开发人员指南》数据密钥

数据密钥重用周期

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

注意

万一出现无法访问的情况 Amazon KMS,Amazon SQS 将继续使用缓存的数据密钥,直到重新建立连接。

KMS 密钥 ID

您的账户或其他账户中的 Amazon 托管 KMS 密钥或自定义 KMS 密钥的别名、别名 ARN、密钥 ID 或密钥 ARN。虽然 Amazon SQS 的 Amazon 托管 KMS 密钥的别名始终是alias/aws/sqs,但例如,自定义 KMS 密钥的别名可以是。alias/MyAlias您可以利用这些 KMS 密钥保护 Amazon SQS 队列中的消息。

注意

记住以下内容:

  • 如果您未指定自定义 KMS 密钥,Amazon SQS 将使用亚马逊 SQS 的 Amazon 托管 KMS 密钥。

  • 首次使用为队列指定亚马逊 SQS 的 Amazon 托管 KMS 密钥时, Amazon KMS 会为亚马逊 SQS 创建 Amazon 托管 KMS 密钥。 Amazon Web Services Management Console

  • 或者,首次对启用了 SSE 的队列使用SendMessageSendMessageBatch操作时, Amazon KMS 会为 Amazon SQS 创建 Amazon 托管 KMS 密钥。

您可以创建 KMS 密钥,定义控制如何使用 KMS 密钥的策略,并使用控制 Amazon KMS 台的 “客户托管密钥” 部分或CreateKey Amazon KMS 操作来审计 KMS 密钥的使用情况。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的 KMS 密钥创建密钥。有关 KMS 密钥标识符的更多示例,请参阅 Amazon Key Management Service API 参考KeyId中的。有关查找 KMS 密钥标识符的信息,请参阅《Amazon Key Management Service 开发人员指南》中的查找密钥 ID 和 ARN

重要

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

信封加密

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

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