使用加密的 Amazon SQS 队列订阅设置 Amazon SNS 主题加密 - Amazon Simple Notification Service

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

使用加密的 Amazon SQS 队列订阅设置 Amazon SNS 主题加密

您可以为主题启用服务器端加密 (SSE) 以保护其数据。要允许 Amazon SNS 将消息发送到加密的 Amazon SQS 队列,与 Amazon SQS 队列关联的客户自主管理型密钥必须具有一个策略语句,该语句向 Amazon SNS 服务主体授予对 AWS KMS API 操作 GenerateDataKeyDecrypt 的访问权限。有关使用 SSE 的更多信息,请参阅使用服务器端加密保护 Amazon SNS 数据安全

本主题介绍如何使用加密的 Amazon SQS 队列订阅为亚马逊 SNS 主题启用 SSE。 AWS Management Console

步骤 1:创建自定义 KMS 密钥

  1. 通过至少具有 AWSKeyManagementServicePowerUser 策略的用户登录 AWS KMS 控制台

  2. 选择 Create a key (创建密钥)

  3. 要创建对称加密 KMS 密钥,请为 Key type(密钥类型)选择 Symmetric(对称)。

    有关如何在 AWS KMS 控制台中创建非对称 KMS 密钥的信息,请参阅创建非对称 KMS 密钥(控制台)

  4. Key usage(密钥用法)中,已为您选择了 Encrypt and decrypt(加密和解密)选项。

    有关如何创建用于生成和验证 MAC 代码的 KMS 密钥的信息,请参阅创建 HMAC KMS 密钥

    有关高级选项的更多信息,请参阅专用密钥

  5. 选择下一步

  6. 键入 KMS 密钥的别名。别名名称不能以 aws/ 开头。该aws/前缀由 Amazon Web Services 保留,用于 AWS 托管式密钥 在您的账户中表示。

    注意

    添加、删除或更新别名可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅适用于 AWS KMS的 ABAC使用别名控制 KMS 密钥的访问权限

    别名是一个显示名称,您可以使用它来标识 KMS 密钥。我们建议您选择一个别名,用来指示您计划保护的数据类型或计划与 KMS 密钥搭配使用的应用程序。

    在 AWS Management Console中创建 KMS 密钥时需要别名。当您使用CreateKey操作时,它们是可选的。

  7. (可选)为 KMS 密钥键入描述。

    现在,除非密钥状态Pending DeletionPending Replica Deletion,否则您可以随时添加描述或更新描述。要添加、更改或删除现有客户托管密钥的描述,请在中编辑描述 AWS Management Console 或使用UpdateKeyDescription操作。

  8. (可选) 键入标签键和一个可选标签值。要向 KMS 密钥添加多个标签,请选择 Add tag(添加标签)。

    注意

    标记或取消标记 KMS 密钥可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅适用于 AWS KMS的 ABAC使用标签控制 KMS 密钥的访问权限

    向 AWS 资源添加标签时, AWS 会生成一份成本分配报告,其中包含按标签汇总的使用量和成本。标签还可以用来控制对 KMS 密钥的访问。有关标记 KMS 密钥的信息,请参阅标记密钥适用于 AWS KMS的 ABAC

  9. 选择下一步

  10. 选择可管理 KMS 密钥的 IAM 用户和角色。

    注意

    此密钥策略赋予了对此 KMS 密钥的 AWS 账户 完全控制权。此控制权允许账户管理员使用 IAM policy 授予其他主体管理 KMS 密钥的权限。有关详细信息,请参阅原定设置密钥策略

     

    IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

  11. (可选)要阻止选定 IAM 用户和角色删除此 KMS 密钥,请在页面底部的 Key deletion(密钥删除)部分中,清除 Allow key administrators to delete this key(允许密钥管理员删除此密钥)复选框。

  12. 选择下一步

  13. 选择可在加密操作中使用密钥的 IAM 用户和角色。选择下一步

  14. Review and edit key policy (审核和编辑密钥策略) 页面上,向密钥策略添加以下语句,然后选择 Finish (完成)

    { "Sid": "Allow Amazon SNS to use this key", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" }

新的客户自主管理型密钥将显示在密钥列表中。

步骤 2:创建加密的 Amazon SNS 主题

  1. 登录 Amazon SNS 控制台

  2. 在导航面板上,选择主题

  3. 选择创建主题

  4. Create new topic (创建新主题) 页面上,对于 Name (名称),输入主题名称(例如,MyEncryptedTopic),然后选择 Create topic (创建主题)

  5. 展开加密部分并执行以下操作:

    1. 选择 Enable server-side encryption (启用服务器端加密)

    2. 指定客户自主管理型密钥。有关更多信息,请参阅 关键术语

      对于每种客户自主管理型密钥类型,将显示描述账户和客户自主管理型密钥 ARN

      重要

      如果您不是客户自主管理型密钥的拥有者,或者您登录的账户没有 kms:ListAliaseskms:DescribeKey 权限,则无法在 Amazon SNS 控制台上查看有关客户自主管理型密钥的信息。

      要求客户自主管理型密钥的拥有者授予您这些权限。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的 AWS KMS API 权限:操作和资源参考

    3. 对于客户托管密钥 MyCustomKey,请选择您之前创建的密钥,然后选择启用服务器端加密

  6. 选择 Save changes(保存更改)

    您的主题已启用 SSE 并显示MyTopic页面。

    主题的加密状态、 AWS 账户客户自主管理型密钥、客户自主管理型密钥 ARN描述将显示在加密选项卡上。

您的新的加密主题将显示在主题列表中。

步骤 3:创建并订阅加密的 Amazon SQS 队列

  1. 登录 Amazon SQS 控制台

  2. 选择 Create New Queue(创建队列)。

  3. Create New Queue (创建新队列) 页面上,执行以下操作:

    1. 输入 Queue Name (队列名称)(例如,MyEncryptedQueue1)。

    2. 选择 Standard Queue (标准队列),然后选择 Configure Queue (配置队列)

    3. 选择 Use SSE (使用 SSE)

    4. 对于 AWS KMS keyMyCustomKey,选择您之前创建的队列,然后选择创建队列

  4. 重复该过程以创建第二个队列(例如,名为 MyEncryptedQueue2)。

    您的新的加密队列将显示在队列列表中。

  5. 在 Amazon SQS 控制台上,选择 MyEncryptedQueue1MyEncryptedQueue2,然后选择 Queue Actions(队列操作)、Subscribe Queues to SNS Topic(订阅队列至 SNS 主题)。

  6. 在 “订阅主题” 对话框中,选择 “选择主题MyEncryptedTopic,然后选择 “订阅”。

    您的加密队列对加密主题的订阅将显示在 Topic Subscription Result (主题订阅结果) 对话框中。

  7. 选择确定

步骤 4:向加密的主题发布消息

  1. 登录 Amazon SNS 控制台

  2. 在导航面板上,选择主题

  3. 从主题列表中选择,MyEncryptedTopic然后选择发布消息

  4. Publish a message (发布消息) 页面上,执行以下操作:

    1. (可选)在 Message details (消息详细信息) 部分中,输入 Subject (主题)(例如:Testing message publishing)。

    2. Message body (消息正文) 部分中,输入消息正文(例如,My message body is encrypted at rest.)。

    3. 选择发布消息

您的消息将发布到订阅的加密队列。

步骤 5:验证消息传输

  1. 登录 Amazon SQS 控制台

  2. 从队列列表中选择 MyEncryptedQueue1,然后选择发送和接收消息

  3. 在 “在 MyEncryptedQueue1 页中发送和接收消息” 上,选择 “轮询留言”。

    此时将显示您之前发送的消息。

  4. 选择 More Details (更多详细信息) 以查看您的消息。

  5. 完成后,选择 Close (关闭)

  6. MyEncryptedQueue2 重复该过程。