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

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

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

您可以为主题启用服务器端加密 (SSE) 以保护其数据。有关使用 SSE 的更多信息,请参阅静态加密

重要

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

此页面演示如何使用为现有 Amazon SNS 主题启用、禁用和配置 SSE。Amazon Web Services Management Console和Amazon SDK for Java(通过设置KmsMasterKeyId属性使用CreateTopicSetTopicAttributesAPI 操作)。

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

  1. 登录到Amazon SNS 控制台

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

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

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

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

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

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

      重要

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

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

      • 这些区域有:Amazon用于 Amazon SNS 的托管 CMK(默认)别名/aws/sns默认处于选中状态。

        注意

        记住以下内容:

        • 第一次使用Amazon Web Services Management Console指定Amazon为 Amazon SNS 管理 CMK 的主题,Amazon KMS创建AmazonAmazon SNS 托管 CMK。

        • 或者,您第一次使用Publish对启用 SSE 的主题进行操作,Amazon KMS创建AmazonAmazon SNS 托管 CMK。

      • 将自定义 CMK 从Amazon帐户中,选择客户主密钥 (CMK)字段,然后从列表中选择自定义 CMK。

        注意

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

      • 要使用自定义 CMK ARN,请从Amazon帐户或其他Amazon帐户,请将其输入到客户主密钥 (CMK)字段中返回的子位置类型。

  5. 选择保存更改

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

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

要使用为 Amazon SNS 主题启用服务器端加密 (SSE)Amazon SDK for Java

  1. 将 Amazon KMS 密钥策略配置为允许对主题进行加密以及对消息进行加密和解密。有关更多信息,请参阅 。配置 Amazon KMS 权限

  2. 指定您的Amazon凭证。有关更多信息,请参阅 。设置Amazon发展的凭证和区域中的Amazon SDK for Java 2.x开发人员指南

  3. 获取客户主密钥 (CMK) ID。有关更多信息,请参阅 关键术语

    注意

    记住以下内容:

    • 第一次使用Amazon Web Services Management Console指定Amazon为 Amazon SNS 管理 CMK 的主题,Amazon KMS创建AmazonAmazon SNS 托管 CMK。

    • 或者,您第一次使用Publish对启用 SSE 的主题进行操作,Amazon KMS创建AmazonAmazon SNS 托管 CMK。

  4. 编写你的代码。有关更多信息,请参阅 。使用适用于 Java 2.x 的开发工具包

    要启用服务器端加密,请通过使用 CreateTopicSetTopicAttributes 操作设置 KmsMasterKeyId 属性来指定 CMK ID。

    以下代码摘录使用为现有主题启用 SSEAmazon用于 Amazon SNS 的托管 CMK:

    // Enable server-side encryption by specifying the alias ARN of the Amazon managed CMK for Amazon SNS. final String kmsMasterKeyAlias = "arn:aws:kms:us-east-2:123456789012:alias/aws/sns"; final SetTopicAttributesRequest setAttributesRequest = new SetTopicAttributesRequest() .withTopicArn(topicArn) .withAttributeName("KmsMasterKeyId") .withAttributeValue(kmsMasterKeyAlias); final SetTopicAttributesResponse setAttributesResponse = snsClient.setTopicAttributes(setAttributesRequest)

    要为现有主题禁用服务器端加密,请使用 SetTopicAttributes 操作将 KmsMasterKeyId 属性设置为空字符串。

    重要

    null 对于 KmsMasterKeyId 是无效值。

    以下代码摘录使用自定义 CMK 创建具有 SSE 的新主题:

    final Map<String, String> attributes = new HashMap<String, String>(); // Enable server-side encryption by specifying the alias ARN of the custom CMK. final String kmsMasterKeyAlias = "arn:aws:kms:us-east-2:123456789012:alias/MyAlias"; attributes.put("KmsMasterKeyId", kmsMasterKeyAlias); final CreateTopicRequest createRequest = new CreateTopicRequest("MyTopic") .withAttributes(attributes); final CreateTopicRespone createResponse = snsClient.createTopic(createRequest);