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

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

使用加密的亚马逊SQS队列订阅设置亚马逊SNS主题加密

您可以为主题启用服务器端加密 (SSE) 以保护其数据。要允许亚马逊SNS向加密的亚马逊SQS队列发送消息,与亚马逊队SQS列关联的客户托管密钥必须有政策声明,授予亚马逊SNS服务主体访问 AWS KMS API操作GenerateDataKeyDecrypt。有关使用的更多信息SSE,请参阅使用服务器端加密保护 Amazon SNS 数据

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

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

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

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

  3. 要创建对称加密KMS密钥,请在 “密钥类型” 中选择 “对称”。

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

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

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

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

  5. 选择下一步

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

    注意

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

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

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

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

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

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

    注意

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

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

  9. 选择下一步

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

    注意

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

     

    IAM最佳做法不鼓励使用具有长期凭证的IAM用户。只要有可能,就使用提供临时证书的IAM角色。有关详细信息,请参阅《IAM用户指南》IAM中的安全最佳实践

  11. (可选)要防止所选IAM用户和角色删除此KMS密钥,请在页面底部的密钥删除部分,清除 “允许密钥管理员删除此密钥” 复选框。

  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. 在导航面板上,选择 Topics(主题)。

  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. 选择 “使用” SSE。

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

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

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

  5. 在 Amazon SQS 控制台上MyEncryptedQueue1,选择队列操作MyEncryptedQueue2然后选择队列订阅SNS主题

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

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

  7. 选择确定

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

  1. 登录 Amazon SNS 控制台

  2. 在导航面板上,选择 Topics(主题)。

  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 重复该过程。