本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon 中的静态加密 SQS
服务器端加密 (SSE) 允许您在加密队列中传输敏感数据。SSE使用SQS管理的加密密钥 (SSE-SQS) 或在 (-) 中管理的密钥保护队列中的 Amazon Key Management Service 邮件内容。SSE KMS有关SSE使用进行管理的信息 Amazon Web Services Management Console,请参阅以下内容:
有关SSE使用 Amazon SDK for Java (以及CreateQueue
SetQueueAttributes
、和GetQueueAttributes
操作)进行管理的信息,请参阅以下示例:
SSEAmazon SQS 收到消息后立即对其进行加密。消息以加密形式存储,Amazon 仅在消息发送给授权消费者时才会对其进行SQS解密。
重要
所有向SSE启用了签名版本的队列发出的请求都必须使用HTTPS签名版本 4。
可以使用 Amazon Security Token Service AssumeRole
操作向 Amazon SQS 发送通知的 Amazon 服务的某些功能与标准队列兼容,SSE但仅适用于标准队列:
有关其他服务与加密队列的兼容性的信息,请参阅 为 Amazon 服务配置KMS权限 和服务文档。
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 Encryption SDK 开发人员指南》中《Amazon Key Management Service 开发人员指南》的数据密钥。
- 数据密钥重用周期
-
在再次调 Amazon KMS 用之前,Amazon SQS 可以重复使用数据密钥来加密或解密消息的时间长度,以秒为单位。一个表示秒数的证书,介于 60 秒(1 分钟)和 86400 秒(24 小时)之间。默认值为 300(5 分钟)。有关更多信息,请参阅 了解数据密钥重用周期。
注意
万一出现无法访问的情况 Amazon KMS,Amazon SQS 将继续使用缓存的数据密钥,直到重新建立连接。
- KMS 密钥 ID
-
您的账户或其他账户KMS中的 Amazon 托管密钥或自定义密KMS钥ARN的别名ARN、别名、密钥 ID 或密钥。虽然 Amazon Amazon 托管KMS密钥的别名始终SQS为
alias/aws/sqs
,但例如,自定义KMS密钥的别名可以是alias/
。您可以使用这些KMS密钥来保护 Amazon SQS 队列中的消息。MyAlias
注意
记住以下内容:
-
如果您未指定自定义KMS密钥,亚马逊将SQS使用亚马逊的 Amazon 托管KMS密钥SQS。
-
首次使用为队列指定亚马逊的 Amazon 托管KMS密钥时, Amazon KMS 会SQS为亚马逊创建 Amazon 托管KMS密钥SQS。 Amazon Web Services Management Console
-
或者,首次对SSE已启用的队列使用
SendMessage
或SendMessageBatch
操作时, Amazon KMS 会为 Amazon 创建 Amazon 托管KMS密钥SQS。
您可以创建KMS密钥,定义控制密KMS钥使用方式的策略,并使用控制 Amazon KMS 台的 “客户管理的密钥” 部分或
CreateKey
Amazon KMS 操作来审计KMS密钥的使用情况。有关更多信息,请参阅《Amazon Key Management Service 开发者指南》中的密KMS钥和创建密钥。有关KMS密钥标识符的更多示例,请参阅Amazon Key Management Service API参考文献KeyId中的。有关查找KMS密钥标识符的信息,请参阅查找密钥 ID 和ARN《Amazon Key Management Service 开发者指南》。重要
使用需要支付额外费用 Amazon KMS。有关更多信息,请参阅 估算成本 Amazon KMS 和 Amazon Key Management Service 定价
。 -
- 信封加密
-
加密的数据的安全性部分取决于如何保护可解密该数据的数据密钥。Amazon SQS 使用KMS密钥对数据密钥进行加密,然后加密的数据密钥与加密的消息一起存储。这种使用KMS密钥加密数据密钥的做法称为信封加密。
有关封装加密的更多信息,请参阅 Amazon Encryption SDK 开发人员指南的封装加密。