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

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

Amazon 中的静态加密 SQS

服务器端加密 (SSE) 允许您在加密队列中传输敏感数据。SSE使用管理的加密密钥 (SSE-SQS) 或中SQS管理的密钥保护队列中邮件的内容 Amazon Key Management Service (SSE-KMS)。有关SSE使用进行管理的信息 Amazon Web Services Management Console,请参阅以下内容:

有关SSE使用进行管理的信息 Amazon SDK for Java (以及CreateQueueSetQueueAttributes、和GetQueueAttributes操作),请参见以下示例:

SSEAmazon SQS 收到消息后立即对其进行加密。消息以加密形式存储,Amazon 仅在消息发送给授权消费者时才会对其进行SQS解密。

重要

所有向SSE启用了签名版本的队列发出的请求都必须使用HTTPS签名版本 4

的一些特点 Amazon 可以SQS使用 Amazon 向 Amazon 发送通知的服务 Amazon Security Token Service AssumeRoleaction 与标准队列兼容,SSE但仅适用于标准队列:

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

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

以下是使用的好处 Amazon KMS:

  • 你可以创建和管理 Amazon KMS keys你自己。

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

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

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

加密范围

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

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

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

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

  • 每队列指标

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

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

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

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

  • 当 Amazon SQS 将消息从加密的源队列移动到未加密的死信队列时,该消息将保持加密状态。

  • 当 Amazon SQS 将消息从未加密的源队列移到加密的死信队列时,该消息将保持未加密状态。

关键术语

以下关键术语可以帮助您更好地理解的功能SSE。有关详细说明,请参阅《Amazon 简单队列服务API参考》。

数据密钥

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

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

数据密钥重用周期

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

注意

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

KMS 密钥 ID

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

注意

记住以下内容:

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

  • 你第一次使用 Amazon Web Services Management Console 指定 Amazon Amazon SQS 的队列托管KMS密钥, Amazon KMS 创建 Amazon Amazon 的托管KMS密钥SQS。

  • 或者,当你第一次对SSE已启用的队列使用SendMessageSendMessageBatch操作时, Amazon KMS 创建 Amazon Amazon 的托管KMS密钥SQS。

您可以创建KMS密钥,定义控制密KMS钥使用方式的策略,并使用的 “客户管理的KMS密钥” 部分来审核密钥的使用情况 Amazon KMS 控制台或 CreateKey Amazon KMS 行动。有关更多信息,请参阅中的KMS密钥创建密钥 Amazon Key Management Service 开发者指南。有关KMS密钥标识符的更多示例,请参阅KeyId中的 Amazon Key Management Service API参考。有关查找KMS密钥标识符的信息,请参阅查找密钥 ID 和ARNAmazon Key Management Service 开发者指南

重要

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

信封加密

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

有关更多信息,请参阅《信封加密》中的 Amazon Encryption SDK 开发者指南