本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用加密的 Amazon SQS 队列订阅设置 Amazon SNS 主题加密
您可以为主题启用服务器端加密 (SSE) 以保护其数据。要允许 Amazon SNS 将消息发送到加密的 Amazon SQS 队列,与 Amazon SQS 队列关联的客户自主管理型密钥必须具有一个策略语句,该语句向 Amazon SNS 服务主体授予对 AWS KMS
API 操作 GenerateDataKey
和 Decrypt
的访问权限。有关使用 SSE 的更多信息,请参阅使用服务器端加密保护 Amazon SNS 数据安全。
本主题介绍如何使用加密的 Amazon SQS 队列订阅为亚马逊 SNS 主题启用 SSE。 AWS Management Console
步骤 1:创建自定义 KMS 密钥
-
通过至少具有
AWSKeyManagementServicePowerUser
策略的用户登录 AWS KMS 控制台。 -
选择 Create a key (创建密钥)。
-
要创建对称加密 KMS 密钥,请为 Key type(密钥类型)选择 Symmetric(对称)。
有关如何在 AWS KMS 控制台中创建非对称 KMS 密钥的信息,请参阅创建非对称 KMS 密钥(控制台)。
-
在 Key usage(密钥用法)中,已为您选择了 Encrypt and decrypt(加密和解密)选项。
有关如何创建用于生成和验证 MAC 代码的 KMS 密钥的信息,请参阅创建 HMAC KMS 密钥。
有关高级选项的更多信息,请参阅专用密钥。
-
选择下一步。
-
键入 KMS 密钥的别名。别名名称不能以
aws/
开头。该aws/
前缀由 Amazon Web Services 保留,用于 AWS 托管式密钥 在您的账户中表示。注意
添加、删除或更新别名可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅适用于 AWS KMS的 ABAC 和使用别名控制 KMS 密钥的访问权限。
别名是一个显示名称,您可以使用它来标识 KMS 密钥。我们建议您选择一个别名,用来指示您计划保护的数据类型或计划与 KMS 密钥搭配使用的应用程序。
在 AWS Management Console中创建 KMS 密钥时需要别名。当您使用CreateKey操作时,它们是可选的。
-
(可选)为 KMS 密钥键入描述。
现在,除非密钥状态为
Pending Deletion
或Pending Replica Deletion
,否则您可以随时添加描述或更新描述。要添加、更改或删除现有客户托管密钥的描述,请在中编辑描述 AWS Management Console 或使用UpdateKeyDescription操作。 -
(可选) 键入标签键和一个可选标签值。要向 KMS 密钥添加多个标签,请选择 Add tag(添加标签)。
注意
标记或取消标记 KMS 密钥可以允许或拒绝对 KMS 密钥的权限。有关详细信息,请参阅适用于 AWS KMS的 ABAC 和使用标签控制 KMS 密钥的访问权限。
向 AWS 资源添加标签时, AWS 会生成一份成本分配报告,其中包含按标签汇总的使用量和成本。标签还可以用来控制对 KMS 密钥的访问。有关标记 KMS 密钥的信息,请参阅标记密钥和适用于 AWS KMS的 ABAC。
-
选择下一步。
-
选择可管理 KMS 密钥的 IAM 用户和角色。
注意
此密钥策略赋予了对此 KMS 密钥的 AWS 账户 完全控制权。此控制权允许账户管理员使用 IAM policy 授予其他主体管理 KMS 密钥的权限。有关详细信息,请参阅原定设置密钥策略。
IAM 最佳实践不鼓励使用具有长期凭证的 IAM 用户。而应尽可能使用提供临时凭证的 IAM 角色。有关更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践。
-
(可选)要阻止选定 IAM 用户和角色删除此 KMS 密钥,请在页面底部的 Key deletion(密钥删除)部分中,清除 Allow key administrators to delete this key(允许密钥管理员删除此密钥)复选框。
-
选择下一步。
-
选择可在加密操作中使用密钥的 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 控制台
。 -
在导航面板上,选择主题。
-
选择创建主题。
-
在 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 (配置队列)。
-
选择 Use SSE (使用 SSE)。
-
对于 AWS KMS keyMyCustomKey,选择您之前创建的队列,然后选择创建队列。
-
-
重复该过程以创建第二个队列(例如,名为
MyEncryptedQueue2
)。您的新的加密队列将显示在队列列表中。
-
在 Amazon SQS 控制台上,选择
MyEncryptedQueue1
和MyEncryptedQueue2
,然后选择 Queue Actions(队列操作)、Subscribe Queues to SNS Topic(订阅队列至 SNS 主题)。 -
在 “订阅主题” 对话框中,选择 “选择主题” MyEncryptedTopic,然后选择 “订阅”。
您的加密队列对加密主题的订阅将显示在 Topic Subscription Result (主题订阅结果) 对话框中。
-
选择确定。
步骤 4:向加密的主题发布消息
-
登录 Amazon SNS 控制台
。 -
在导航面板上,选择主题。
-
从主题列表中选择,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 重复该过程。