为 Amazon SNS 主题启用服务器端加密 (SSE) - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为 Amazon SNS 主题启用服务器端加密 (SSE)

借助服务器端加密(SSE),您可以采用加密主题的方式存储敏感数据。SSE 使用 Amazon Key Management Service(Amazon KMS)中托管的密钥保护 Amazon SNS 主题中消息的内容。有关 Amazon SNS 的服务器端加密的更多信息,请参阅静态加密。有关创建 Amazon KMS 密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥

重要

针对启用了 SSE 的主题的所有请求都必须使用 HTTPS 和签名版本 4

使用 Amazon Web Services Management Console为 Amazon SNS 主题启用服务器端加密(SSE)

  1. 登录 Amazon SNS 控制台

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

  3. 主题页面上,选择一个主题,然后选择操作编辑

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

    1. 选择 Enable encryption (启用加密)

    2. 指定 Amazon KMS 密钥。有关更多信息,请参阅关键术语

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

      重要

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

      要求 KMS 的拥有者授予您这些权限。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon KMS API 权限:操作和资源参考

      • 原定设置情况下,选择 Amazon SNS 的 Amazon 托管式 KMS(原定设置)alias/aws/sns

        注意

        记住以下内容:

        • 第一次使用 Amazon Web Services Management Console为主题指定适用于 Amazon SNS 的 Amazon 托管式 KMS 时,Amazon KMS 会创建适用于 Amazon SNS 的 Amazon 托管式 KMS。

        • 或者,您第一次对启用了 SSE 的主题使用 Publish 操作时,Amazon KMS 会创建适用于 Amazon SNS 的 Amazon 托管式 KMS。

      • 要从您的 Amazon 账户中使用自定义 KMS,请选择 KMS 密钥字段,然后从列表中选择自定义 KMS。

        注意

        有关创建自定义 KMS 的说明,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥

      • 要从您的 Amazon 账户或另一个 Amazon 账户中使用自定义 KMS ARN,请将其输入到 KMS 密钥字段中。

  5. 选择 Save changes(保存更改)。

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

    主题的加密状态、Amazon 账户客户主密钥 (CMK)CMK ARN描述将显示在 Encryption(加密)选项卡上。

使用服务器端加密设置 Amazon SNS 主题

创建 KMS 密钥时,请使用以下 KMS 密钥策略:

{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type/customer-resource-id" }, "StringEquals": { "kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:your_region:customer-account-id:your_sns_topic_name" } } }