

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

# 使用服务器端加密保护 Amazon SNS 数据安全
使用服务器端加密保护数据安全

服务器端加密 (SSE) 允许您使用在 () 中管理的密钥保护 Amazon SNS 主题中的消息内容，从而将敏感数据存储在加密主题 AWS Key Management Service 中AWS KMS。

一旦 Amazon SNS 收到消息，SSE 就会对消息进行加密。这些消息以加密形式存储，并且仅当消息发送时，才会对消息进行解密。
+ 有关使用 AWS 管理控制台 或 适用于 Java 的 AWS SDK （通过使用`[CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)`和 `[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)` API 操作设置`KmsMasterKeyId`属性）管理 SSE 的信息，请参阅[使用服务器端加密设置 Amazon SNS 主题加密](sns-enable-encryption-for-topic.md)。
+ 有关使用 CloudFormation （通过使用`[AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)`资源设置`KmsMasterKeyId`属性）创建加密主题的信息，请参阅《*AWS CloudFormation 用户指南》*。

**重要**  
针对启用了 SSE 的主题的所有请求都必须使用 HTTPS 和[签名版本 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。  
有关其他服务与加密主题的兼容性的信息，请参阅服务文档。  
Amazon SNS 仅支持对称加密 KMS 密钥。您不能使用任何其他类型的 KMS 密钥来加密您的服务资源。有关确定 KMS 密钥是否为对称加密密钥的帮助，请参阅[识别非对称 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html)。

AWS KMS 将安全、高度可用的硬件和软件相结合，提供可扩展到云端的密钥管理系统。当您将 Amazon SNS 与一起使用时 AWS KMS，加密您的消息数据的数据[密钥](#sse-key-terms)也会被加密并与它们保护的数据一起存储。

使用 AWS KMS具有以下好处：
+ 您可以自行创建和管理 [AWS KMS key](#sse-key-terms)。
+ 您也可以将 AWS托管的 KMS 密钥用于 Amazon SNS，这些密钥对于每个账户和地区都是唯一的。
+  AWS KMS 安全标准可以帮助您满足与加密相关的合规性要求。

有关更多信息，请参阅[什么是 AWS Key Management Service？](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 在《*AWS Key Management Service 开发人员指南》*中。

## 加密范围


SSE 将对 Amazon SNS 主题中的消息正文进行加密。

SSE 不对以下各项进行加密：
+ 主题元数据（主题名称和属性）
+ 消息元数据（主题、消息 ID、时间戳和属性）
+ 数据保护策略 
+ 每个主题的指标数

**注意**  
仅在启用主题加密后发送消息时对其进行加密。Amazon SNS 不会加密积压的消息。
任何加密的消息将保持加密状态，即使已禁用其主题的加密。

## 关键术语


以下关键术语有助于您更好地了解 SSE 的功能。有关详细说明，请参阅 *[Amazon Simple Notification Service API 参考](https://docs.aws.amazon.com/sns/latest/api/)*。

**数据密钥**  
数据加密密钥 (DEK) 负责加密 Amazon SNS 消息的内容。  
有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[数据密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)和 *AWS Encryption SDK 开发人员指南*中的[信封加密](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption)。

**AWS KMS key ID**  
您的账户或其他账户中的别名、别名 ARN、密钥 ID 或密钥 ARN AWS KMS key，或者自定义 AWS KMS的 ARN。虽然 AWS KMS 适用于 Amazon SNS 的 AWS 托管别名始终是`alias/aws/sns`，但自定义的别名 AWS KMS 可以是。`alias/MyAlias`您可以利用这些 AWS KMS 密钥保护 Amazon SNS 主题中的消息。  
记住以下内容：  
+ 首次使用为主题指定适用于 Amazon SNS 的 AWS 托管 KMS 时， AWS KMS 会为亚马逊 SNS 创建 AWS 托管 KMS。 AWS 管理控制台 
+ 或者，在启用 SSE 的情况下首次对主题使用`Publish`操作时， AWS KMS 会为 Amazon SNS 创建 AWS 托管 KMS。
您可以创建 AWS KMS 密钥，定义控制 AWS KMS 密钥使用方式的策略，并 AWS KMS 使用 AWS KMS 控制台的**AWS KMS keys**部分或`[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)` AWS KMS 操作来审计使用情况。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)和[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。有关 AWS KMS 标识符的更多示例，请参阅 *AWS Key Management Service API 参考[KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters)*中的。有关查找 AWS KMS 标识符的信息，请参阅[《*AWS Key Management Service 开发者*指南》中的 “查找密钥 ID 和 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn)”。  
使用需要支付额外费用 AWS KMS。有关更多信息，请参阅 [估算成本 AWS KMS](sns-key-management.md#sse-estimate-kms-usage-costs) 和 [AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing)。