Amazon Simple Notification Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:使用订阅的加密 Amazon SQS 队列为 Amazon SNS 主题启用服务器端加密 (SSE)

您可以为主题启用服务器端加密 (SSE) 以保护其数据。要允许 Amazon SNS 将消息发送到加密 Amazon SQS 队列,与 Amazon SQS 队列关联的客户主密钥 (CMK) 必须具有一个策略语句,该语句向 Amazon SNS 服务委托人授予对 AWS KMS API 操作 GenerateDataKeyDecrypt 的访问权限。由于 AWS 托管 CMK 不支持策略修改,因此,您必须使用自定义 CMK。有关使用 SSE 的更多信息,请参阅使用服务器端加密 (SSE) 和 AWS KMS 保护 Amazon SNS 数据

以下教程说明如何为 Amazon SNS 主题启用 SSE(将使用 AWS 管理控制台为加密 Amazon SQS 队列订阅该主题)。

步骤 1:创建自定义 CMK

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

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

  3. Add alias and description (添加别名和描述) 页面上,输入密钥的 Alias (别名)(例如,MyCustomCMK),然后选择 Next (下一步)

  4. Add tags (添加标签) 页面上,选择 Next (下一步)

  5. Define key administrative permissions (定义密钥管理权限) 页面上的 Key administrators (密钥管理员) 部分中,选择一个 IAM 角色或 IAM 用户,然后选择下一步

  6. Define key usage permissions (定义密钥使用权限) 页面上的 This account (此账户) 部分中,选择一个 IAM 角色或 IAM 用户,然后选择下一步

  7. 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 主题

  1. 登录 Amazon SNS 控制台

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

  3. 选择 Create topic (创建主题)

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

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

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

    2. 指定客户主密钥 (CMK)。有关更多信息,请参阅 关键术语

      对于每个 CMK 类型,都会显示 Description (描述)Account (账户)CMK ARN

      重要

      如果您不是 CMK 的拥有者,或者您没有使用拥有 kms:ListAliaseskms:DescribeKey 权限的账户登录,则无法查看有关 Amazon SNS 控制台上的 CMK 的信息。

      要求 CMK 拥有者授予您这些权限。有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的 AWS KMS API 权限:操作和资源参考

    3. 对于 Customer master key (CMK) (客户主密钥(CMK)),选择您之前创建的 MyCustomCMK,然后选择 Enable server-side encryption (启用服务器端加密)

  6. 选择保存更改

    这将为主题启用 SSE,并显示我的主题页面。

    主题的加密状态、AWS 账户客户主密钥(CMK)CMK 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 AWS KMS Customer Master Key (CMK) (AWS KMS 客户主密钥(CMK)),选择您之前创建的 MyCustomCMK,然后选择 Create Queue (创建队列)

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

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

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

  6. Subscribe to a Topic (订阅主题) 对话框中,对于 Choose a Topic (选择主题),选择 MyEncryptedTopic,然后选择 Subscribe (订阅)

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

  7. 选择 OK (确定)

步骤 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,然后选择 Queue Actions (队列操作)View/Delete Messages (查看/删除消息)

  3. View/Delete Messages in MyEncryptedQueue1 (在 MyEncryptedQueue1 中查看/删除消息) 页面上,选择 Start polling for messages (开始轮询消息)

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

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

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

  6. MyEncryptedQueue2 重复此过程。