使用订阅的加密 Amazon SQS 队列为 Amazon SNS 主题启用服务器端加密 (SSE)
您可以为主题启用服务器端加密 (SSE) 以保护其数据。要允许 Amazon SNS 将消息发送到加密 Amazon SQS 队列,与 Amazon SQS 队列关联的客户主密钥 (CMK) 必须具有一个策略语句,该语句向 Amazon SNS 服务委托人授予对 Amazon KMS API 操作 GenerateDataKey
和 Decrypt
的访问权限。由于 Amazon 托管 CMK 不支持策略修改,因此,您必须使用自定义 CMK。有关使用 SSE 的更多信息,请参阅静态加密。
本页显示如何为 Amazon SNS 主题启用 SSE,加密的 Amazon SQS 队列已使用 Amazon Web Services Management Console 订阅该主题。
步骤 1:创建自定义 CMK
-
通过至少具有
AWSKeyManagementServicePowerUser
策略的用户登录 Amazon KMS 控制台。 -
选择 Create a key (创建密钥)。
-
在 Add alias and description (添加别名和描述) 页面上,输入密钥的 Alias (别名)(例如,
MyCustomCMK
),然后选择 Next (下一步)。 -
在 Add tags (添加标签) 页面上,选择 Next (下一步)。
-
在 Define key administrative permissions(定义密钥管理权限)页面上的 Key administrators(密钥管理员)部分中,选择一个 IAM 角色或 IAM 用户,然后选择 Next(下一步)。
-
在 Define key usage permissions(定义密钥使用权限)页面上的 This account(此账户)部分中,选择一个 IAM 角色或 IAM 用户,然后选择 Next(下一步)。
-
在 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": "*" }
您的新的自定义 CMK 将显示在密钥列表中。
步骤 2:要创建加密 Amazon SNS 主题
-
登录 Amazon SNS 控制台
。 -
在导航面板上,选择 Topics(主题)。
-
选择 Create topic(创建主题)。
-
在 Create new topic (创建新主题) 页面上,对于 Name (名称),输入主题名称(例如,
MyEncryptedTopic
),然后选择 Create topic (创建主题)。 -
展开加密部分并执行以下操作:
-
选择 Enable server-side encryption (启用服务器端加密)。
-
指定客户主密钥 (CMK)。有关更多信息,请参阅关键术语。
对于每个 CMK 类型,都会显示 Description (描述)、Account (账户) 和 CMK ARN。
重要
如果您不是 CMK 的拥有者,或者您登录的账户没有
kms:ListAliases
和kms:DescribeKey
权限,则无法在 Amazon SNS 控制台上查看有关 CMK 的信息。要求 CMK 拥有者授予您这些权限。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon KMS API 权限:操作和资源参考。
-
对于 客户主密钥 (CMK),选择您之前创建的 MyCustomCMK,然后选择 Enable server-side encryption(启用服务器端加密)。
-
-
选择 Save changes(保存更改)。
这将为主题启用 SSE,并显示我的主题页面。
主题的加密状态、Amazon 账户、客户主密钥 (CMK)、CMK ARN 和描述将显示在 Encryption(加密)选项卡上。
您的新的加密主题将显示在主题列表中。
步骤 3:创建并订阅加密 Amazon SQS 队列
-
登录 Amazon SQS 控制台
。 -
选择 Create New Queue(创建队列)。
-
在 Create New Queue (创建新队列) 页面上,执行以下操作:
-
输入 Queue Name (队列名称)(例如,
MyEncryptedQueue1
)。 -
选择 Standard Queue (标准队列),然后选择 Configure Queue (配置队列)。
-
选择 Use SSE (使用 SSE)。
-
对于 Amazon KMS客户主密钥 (CMK),选择您之前创建的 MyCustomCMK,然后选择 Create Queue(创建队列)。
-
-
重复该过程以创建第二个队列(例如,名为
MyEncryptedQueue2
)。您的新的加密队列将显示在队列列表中。
-
在 Amazon SQS 控制台上,选择
MyEncryptedQueue1
和MyEncryptedQueue2
,然后选择 Queue Actions(队列操作)、Subscribe Queues to SNS Topic(订阅队列至 SNS 主题)。 -
在 Subscribe to a Topic (订阅主题) 对话框中,对于 Choose a Topic (选择主题),选择 MyEncryptedTopic,然后选择 Subscribe (订阅)。
您的加密队列对加密主题的订阅将显示在 Topic Subscription Result (主题订阅结果) 对话框中。
-
选择 OK(确定)。
步骤 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,然后选择 Send and receive messages(发送和接收消息)。
-
在 Send and receive messages in MyEncryptedQueue1(在 MyEncryptedQueue1 中发送和接收消息)页面上,选择 Poll for messages(轮询消息)。
此时将显示您之前发送的消息。
-
选择 More Details (更多详细信息) 以查看您的消息。
-
完成后,选择 Close (关闭)。
-
对 MyEncryptedQueue2 重复此过程。