本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用加密的亚马逊SQS队列订阅设置亚马逊SNS主题加密
您可以为主题启用服务器端加密 (SSE) 以保护其数据。要允许亚马逊SNS向加密的亚马逊SQS队列发送消息,与亚马逊队SQS列关联的客户托管密钥必须有政策声明,授予亚马逊SNS服务主体访问 AWS KMS
API操作GenerateDataKey
和Decrypt
。有关使用的更多信息SSE,请参阅使用服务器端加密保护 Amazon SNS 数据。
本页介绍如何使用SSE为订阅了加密亚马逊SQS队列的亚马逊SNS主题启用该 AWS Management Console主题。
步骤 1:创建自定义KMS密钥
-
通过至少具有
AWSKeyManagementServicePowerUser
策略的用户登录 AWS KMS 控制台。 -
选择 Create a key (创建密钥)。
-
要创建对称加密KMS密钥,请在 “密钥类型” 中选择 “对称”。
有关如何在 AWS KMS 控制台中创建非对称KMS密钥的信息,请参阅创建非对称KMS密钥(控制台)。
-
在 Key usage(密钥用法)中,已为您选择了 Encrypt and decrypt(加密和解密)选项。
有关如何创建生成和验证MAC代码的KMS密钥的信息,请参阅创建HMACKMS密钥。
有关高级选项的更多信息,请参阅专用密钥。
-
选择下一步。
-
键入KMS密钥的别名。别名名称不能以
aws/
开头。该aws/
前缀由 Amazon Web Services 保留,用于 AWS 托管式密钥 在您的账户中表示。注意
添加、删除或更新别名可以允许或拒绝对KMS密钥的权限。有关详细信息,ABAC请参阅了解 AWS KMS和使用别名控制对KMS密钥的访问权限。
别名是可用于标识KMS密钥的显示名称。我们建议您选择一个别名,以表明您计划保护的数据类型或计划与KMS密钥一起使用的应用程序。
在中创建KMS密钥时需要使用别名。 AWS Management Console当您使用CreateKey操作时,它们是可选的。
-
(可选)键入KMS密钥的描述。
现在,除非密钥状态为
Pending Deletion
或Pending Replica Deletion
,否则您可以随时添加描述或更新描述。要添加、更改或删除现有客户托管密钥的描述,请在中编辑描述 AWS Management Console 或使用UpdateKeyDescription操作。 -
(可选) 键入标签键和一个可选标签值。要向KMS密钥添加多个标签,请选择添加标签。
注意
标记或取消标记KMS密钥可以允许或拒绝对密钥的权限。KMS有关详细信息,ABAC请参阅了解 AWS KMS和使用标签控制对KMS密钥的访问权限。
向 AWS 资源添加标签时, AWS 会生成一份成本分配报告,其中包含按标签汇总的使用量和成本。标签还可用于控制对KMS密钥的访问。有关为KMS密钥添加标签的信息,请参阅为密钥添加标签和。ABAC AWS KMS
-
选择下一步。
-
选择可以管理KMS密钥的IAM用户和角色。
注意
此密钥策略赋予了对该KMS密钥的 AWS 账户 完全控制权。它允许账户管理员使用IAM策略向其他委托人授予管理KMS密钥的权限。有关详细信息,请参阅原定设置密钥策略。
IAM最佳做法不鼓励使用具有长期凭证的IAM用户。只要有可能,就使用提供临时证书的IAM角色。有关详细信息,请参阅《IAM用户指南》IAM中的安全最佳实践。
-
(可选)要防止所选IAM用户和角色删除此KMS密钥,请在页面底部的密钥删除部分,清除 “允许密钥管理员删除此密钥” 复选框。
-
选择下一步。
-
选择可以在加密操作中使用密钥的IAM用户和角色。选择下一步。
-
在 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 主题
-
登录 Amazon SNS 控制台
。 -
在导航面板上,选择 Topics(主题)。
-
选择创建主题。
-
在 Create new topic (创建新主题) 页面上,对于 Name (名称),输入主题名称(例如,
MyEncryptedTopic
),然后选择 Create topic (创建主题)。 -
展开加密部分并执行以下操作:
-
选择 Enable server-side encryption (启用服务器端加密)。
-
指定客户自主管理型密钥。有关更多信息,请参阅 关键术语。
对于每种客户托管密钥类型,都会显示描述、账户和客户托管密钥ARN。
重要
如果您不是客户托管密钥的所有者,或者您使用不具有
kms:ListAliases
和kms:DescribeKey
权限的账户登录,则将无法在 Amazon SNS 控制台上查看有关客户托管密钥的信息。要求客户自主管理型密钥的拥有者授予您这些权限。有关更多信息,请参阅《AWS Key Management Service 开发者指南》中的 “AWS KMS API权限:操作和资源参考”。
-
对于客户托管密钥 MyCustomKey,请选择您之前创建的密钥,然后选择启用服务器端加密。
-
-
选择 Save changes(保存更改)。
SSE已为你的主题启用并显示MyTopic页面。
主题的加密状态、 AWS 账户、客户管理的密钥、客户管理的密钥ARN和描述显示在加密选项卡上。
您的新的加密主题将显示在主题列表中。
第 3 步:创建和订阅加密的 Amazon SQS 队列
-
登录 Amazon SQS 控制台
。 -
选择 Create New Queue(创建队列)。
-
在 Create New Queue (创建新队列) 页面上,执行以下操作:
-
输入 Queue Name (队列名称)(例如,
MyEncryptedQueue1
)。 -
选择 Standard Queue (标准队列),然后选择 Configure Queue (配置队列)。
-
选择 “使用” SSE。
-
对于 AWS KMS keyMyCustomKey,选择您之前创建的队列,然后选择创建队列。
-
-
重复该过程以创建第二个队列(例如,名为
MyEncryptedQueue2
)。您的新的加密队列将显示在队列列表中。
-
在 Amazon SQS 控制台上
MyEncryptedQueue1
,选择队列操作,MyEncryptedQueue2
然后选择队列订阅SNS主题。 -
在 “订阅主题” 对话框中,选择 “选择主题” MyEncryptedTopic,然后选择 “订阅”。
您的加密队列对加密主题的订阅将显示在 Topic Subscription Result (主题订阅结果) 对话框中。
-
选择确定。
步骤 4:向加密的主题发布消息
-
登录 Amazon SNS 控制台
。 -
在导航面板上,选择 Topics(主题)。
-
从主题列表中选择,MyEncryptedTopic然后选择发布消息。
-
在 Publish a message (发布消息) 页面上,执行以下操作:
-
(可选)在 Message details (消息详细信息) 部分中,输入 Subject (主题)(例如:
Testing message publishing
)。 -
在 Message body (消息正文) 部分中,输入消息正文(例如,
My message body is encrypted at rest.
)。 -
选择发布消息。
-
您的消息将发布到订阅的加密队列。
步骤 5:验证消息传输
-
登录 Amazon SQS 控制台
。 -
从队列列表中选择 MyEncryptedQueue1,然后选择发送和接收消息。
-
在 “在 MyEncryptedQueue1 页中发送和接收消息” 上,选择 “轮询留言”。
此时将显示您之前发送的消息。
-
选择 More Details (更多详细信息) 以查看您的消息。
-
完成后,选择 Close (关闭)。
-
对 MyEncryptedQueue2 重复该过程。