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

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

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

Amazon SNS 支持服务器端加密 (SSE),以使用 Amazon Key Management Service () 保护消息内容。Amazon KMS按照以下说明使用亚马逊 SNS 控制台或 CDK 启用 SSE。

选项 1:使用启用加密 Amazon Web Services Management Console

  1. 登录 Amazon SNS 控制台

  2. 导航到主题页面,选择您的主题,然后选择编辑

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

    • 将加密切换为启用

    • 选择Amazon 托管的 SNS 钥匙 (alias/aws/sns) 作为加密密钥。此选项默认处于选中状态。

  4. 选择 Save changes(保存更改)

注意
  • 如果 Amazon 托管式密钥 尚不存在,则会自动创建。

  • 如果您看不到密钥或权限不足,请向管理员询问kms:ListAliaseskms:DescribeKey

选项 2:使用启用加密 Amazon CDK

要使用 Amazon 托管 SNS 键入你的 CDK 应用程序,添加以下片段:

import software.amazon.awscdk.services.sns.*; import software.amazon.awscdk.services.kms.*; import software.amazon.awscdk.core.*; public class SnsEncryptionExample extends Stack { public SnsEncryptionExample(final Construct scope, final String id) { super(scope, id); // Define the managed SNS key IKey snsKey = Alias.fromAliasName(this, "helloKey", "alias/aws/sns"); // Create the SNS Topic with encryption enabled Topic.Builder.create(this, "MyEncryptedTopic") .masterKey(snsKey) .build(); } }

其他信息

  • 自定义 KMS 密钥-如果需要,您可以指定自定义密钥。在 Amazon SNS 控制台中,从列表中选择您的自定义 KMS 密钥或输入 ARN。

  • 自定义 KMS 密钥的权限-如果使用自定义 KMS 密钥,请在密钥策略中包含以下内容,以允许 Amazon SNS 加密和解密消息:

{ "Effect": "Allow", "Principal": { "Service": "sns.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" } } }

对使用者的影响

启用 SSE 不会改变订阅者使用消息的方式。 Amazon 透明地管理加密和解密。消息在静态状态下保持加密状态,并在发送给订阅者之前自动解密。为了获得最佳安全性, Amazon 建议为所有端点启用 HTTPS,以确保消息的安全传输。