

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

# 了解 Amazon SNS 数据保护策略
<a name="sns-message-data-protection-policies"></a>

**重要**  
Amazon SNS 消息数据保护不再适用于新客户。有关替代方案的更多信息和指导，请参阅 [Amazon SNS 消息数据保护可用性变更](https://docs.amazonaws.cn/sns/latest/dg/sns-message-data-protection-availability-change.html)。

## 什么是数据保护策略？
<a name="what-are-data-protection-policies"></a>

Amazon SNS 使用**数据保护策略**选择要扫描的敏感数据，以及为了保护这些数据不被 Amazon SNS 主题交换而要采取的操作。要选择感兴趣的敏感数据，您可以使用[数据标识符](sns-message-data-protection-managed-data-identifiers.md)。Amazon SNS 消息数据保护功能随后使用机器学习和模式匹配来检测敏感数据。要对找到的数据标识符采取操作，您可以定义**审计**、**去身份识别**或**拒绝**操作。利用这些操作，您可以记录已找到（或未找到）的敏感数据，遮蔽或者去除敏感数据，或者拒绝消息传送。

![Amazon SNS 利用数据保护策略来管理和保护不同地区的敏感数据。 Amazon Web Services 服务它显示了入站和出站消息的工作流程，详细说明了如何监控数据以及如何根据诸如审计、去标识化或拒绝数据传输之类的策略设置采取措施，以保护个人身份信息（PII）和受保护健康信息（PHI）等信息。](http://docs.amazonaws.cn/sns/latest/dg/images/message-data-protection-policies-overview.png)


## 数据保护策略采用什么结构？
<a name="overview-of-data-protection-policies"></a>

如下图所示，数据保护策略文档包含以下元素：
+ 文档顶部的可选策略范围信息
+ 一个或多个单独语句

每个语句都包含有关单个权限的信息。

![Amazon SNS 中数据保护策略的结构，说明该策略是如何由各种元素组成的，例如策略名称、描述、版本以及根据数据方向、标识符和相关主体指定审计、去标识化或拒绝等操作的多个语句。](http://docs.amazonaws.cn/sns/latest/dg/images/payload-policy-process.png)


每个 Amazon SNS 主题只能定义一个数据保护策略。数据保护策略可以有一个或多个拒绝或去身份识别语句，但只能有一个审计语句。

### 数据保护策略的 JSON 属性
<a name="data-protection-policy-json-properties"></a>

数据保护策略需要以下基本策略信息用于识别：
+ **Name**（名称）– 策略名称。
+ **描述**（可选）：策略描述。
+ **Version**（版本）– 策略语言版本。当前版本为 2021-06-01。
+ **Statement**（语句）– 指定数据保护策略操作的语句列表。

```
{
  "Name": "basicPII-protection",
  "Description": "Protect basic types of sensitive data",
  "Version": "2021-06-01",
  "Statement": [
        ...
  ]
}
```

### 策略语句的 JSON 属性
<a name="policy-statement-json-properties"></a>

策略语句设置数据保护操作的检测上下文。
+ **Sid**（可选）– 语句标识符。
+ **DataDirection**— 与 Amazon SNS 主题相关的入库（用于发布 API 请求）或出库（用于通知传送）。
+ **DataIdentifier**— Amazon SNS 主题应扫描的敏感数据。例如，姓名、地址或电话号码。
+ **主体** – 发布到该主题的 IAM 主体或订阅该主题的 IAM 主体。
+ **Operation**（操作）– Amazon SNS 主题在找到敏感数据后执行的后续操作，可以为 **Audit**（审计）、**De-identiyf**（去身份识别）（即遮蔽或去除）或者 **Deny**（拒绝）（即阻止）。

```
{
    "Sid": "basicPII-inbound-protection",
    "DataDirection": "Inbound",
    "Principal": ["*"],
    "DataIdentifier": [
        "arn:aws:dataprotection::aws:data-identifier/Name",
        "arn:aws:dataprotection::aws:data-identifier/PhoneNumber-US"
    ],
    "Operation": {
        ...
    }
}
```

### 策略语句操作的 JSON 属性
<a name="statement-operation-json-properties"></a>

策略语句设置以下数据保护操作之一。
+ [**Audit**](sns-message-data-protection-operations.md#statement-operation-json-properties-audit)（审计）– 发布指标并发现结果日志，而不中断消息发布或传输。
+ [**De-identify**](sns-message-data-protection-operations.md#statement-operation-json-properties-deidentify)（去身份识别）– 遮蔽或去除敏感数据而不中断消息发布。
+ [**Deny**](sns-message-data-protection-operations.md#statement-operation-json-properties-deny)（拒绝）– 阻止 Amazon SNS 发布请求或者使消息传输失败。

## 如何确定我的数据保护策略的 IAM 主体？
<a name="data-protection-policy-iam-principal-determined"></a>

消息数据保护功能使用两个与 Amazon SNS 交互的 IAM 主体。

1. **Publish API Principal**（发布 API 主体）（入站）– 调用 Amazon SNS `Publish` API 的经过身份验证的 IAM 主体。

1. **Subscription Principal**（订阅主体）（出站）– 在订阅创建期间调用 `Subscribe` API 的经过身份验证的 IAM 主体。

`SubscriptionPrincipal` 是正式发布的 Amazon SNS 订阅属性，可以从 `GetSubscriptionAttributes` API 检索。

```
{
  "Attributes": {
    "SubscriptionPrincipal": "arn:aws:iam::123456789012:user/NoNameAccess",
    "Owner": "123412341234",
    "RawMessageDelivery": "true",
    "TopicArn": "arn:aws:sns:us-east-1:123412341234:PII-data-topic",
    "Endpoint": "arn:aws:sqs:us-east-1:123456789012:NoNameAccess",
    "Protocol": "sqs",
    "PendingConfirmation": "false",
    "ConfirmationWasAuthenticated": "true",
    "SubscriptionArn": "arn:aws:sns:us-east-1:123412341234:PII-data-topic:5d8634ef-67ef-49eb-a824-4042b28d6f55"
  }
}
```