

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

# 允许列表的配置选项和要求
<a name="allow-lists-options"></a>

在 Amazon Macie 中，您可通过允许列表，指定想要 Macie 在检查 Amazon Simple Storage Service (Amazon S3) 对象敏感数据时会忽略的文本或文本模式。Macie 提供两类允许列表选项，即预定义文本和正则表达式。

如果您想让 Macie 忽略您认为不敏感的特定单词、短语和其他类型字符序列，则预定义文本列表非常有用。例如，您的组织公共代表的姓名、具体的电话号码或您的组织用于测试的具体样本数据。如果 Macie 发现符合托管或自定义数据标识符的文本，并且该文本也与允许列表中的条目匹配，则 Macie 不会报告敏感数据调查发现、统计数据和其他类型的结果中出现的文本。

如果您希望 Macie 在遵循通用模式的情况下忽略已有变化或可能发生变化的文本，则适用正则表达式 (*regex*)。正则表达式指定要忽略的文本模式。示例包括贵组织的公共电话号码、组织域的电子邮件地址，或组织用于测试的模式化示例数据。如果 Macie 发现匹配托管或自定义数据标识符的文本，并且该文本也与允许列表中的正则表达式模式匹配，则 Macie 不会报告敏感数据调查发现、统计数据和其他类型的结果中出现的文本。

除了亚太地区（大阪）区域，你可以在目前可用 Macie 的所有地区创建和使用这两种类型的允许列表。 AWS 区域 创建和管理允许列表时，切记以下选项和要求。另请注意，不支持邮件地址的列表条目及正则表达式模式。

**Contents**
+ [预定义文本列表的选项与要求](#allow-lists-options-s3list)
  + [语法要求](#allow-lists-options-s3list-syntax)
  + [存储需求](#allow-lists-options-s3list-storage)
  + [加密/解密要求](#allow-lists-options-s3list-encryption)
  + [设计注意事项和建议](#allow-lists-options-s3list-notes)
+ [正则表达式的选项和要求](#allow-lists-options-regex)
  + [语法支持和建议](#allow-lists-options-regex-syntax)
  + [示例](#allow-lists-options-regex-examples)

## 预定义文本列表的选项与要求
<a name="allow-lists-options-s3list"></a>

对于这种类型的允许列表，您可以提供以行分隔的纯文本文件，其中列出了要忽略的特定字符序列。列表条目通常包含特定的单词、短语和其他类型的字符序列，这些字符序列不敏感，不太可能改变，也不一定遵循特定模式。如果您使用这种类型的列表，Amazon Macie 不会报告出现与列表中的条目完全匹配的文本。Macie 将列表中的每个条目都视为字符串文本值。

若要使用这种类型的允许列表，首先要在文本编辑器中创建列表，并将其另存为纯文本文件。然后将列表上传到 S3 通用存储桶。另外，确保存储桶和对象的存储和加密设置允许 Macie 检索和解密该列表。然后在 Macie 中[为列表创建和配置设置](allow-lists-create.md)。

在 Macie 中配置设置后，我们建议您使用一组适用于您的账户或组织的、少量具有代表性的数据测试允许列表。要测试列表，您可以[创建一次性作业](discovery-jobs-create.md)。除了通常用于数据分析的托管和自定义数据标识符之外，将该作业配置为使用该列表。然后您可查看作业结果，包括敏感数据调查发现、敏感数据发现结果或两者兼而有之。如果作业的结果与您的预期不同，则可更改和测试列表，直至结果达到预期。

配置和测试完允许列表后，您可以创建和配置其他作业来使用该列表，或将列表添加至自动敏感数据发现的设置中。当每项作业开始运行或下一个自动发现分析周期开始时，Macie 会从 Amazon S3 中检索最新版本列表，并将其存储至临时内存。然后，Macie 在检查 S3 对象中是否有敏感数据时，使用此临时列表副本。当作业完成运行或分析周期完成后，Macie 会从内存中永久删除其列表副本。Macie 中的列表不存在。Macie 中仅保留列表设置。

**重要**  
由于 Macie 中不保留预定义文本列表，因此务必定期[检查允许列表状态](allow-lists-status-check.md)。如果 Macie 无法检索或解析您所配置的作业或使用的自动发现列表，Macie 不使用列表。这可能会导致异常结果，例如您在列表中指定的文本敏感数据调查发现。

**Topics**
+ [语法要求](#allow-lists-options-s3list-syntax)
+ [存储需求](#allow-lists-options-s3list-storage)
+ [加密/解密要求](#allow-lists-options-s3list-encryption)
+ [设计注意事项和建议](#allow-lists-options-s3list-notes)

### 语法要求
<a name="allow-lists-options-s3list-syntax"></a>

创建此类允许列表时，请注意以下列表文件要求：
+ 该列表必须存储为纯文本 (`text/plain`) 文件，例如.txt、.text 或 .plain 文件。
+ 列表必须使用换行符分隔各个条目。例如：

  ```
  Akua Mansa
  John Doe
  Martha Rivera
  425-555-0100
  425-555-0101
  425-555-0102
  ```

  Macie 将每行视为列表中的单独条目。该文件还可以包含空行，以提高可读性。Macie 在解析文件时会跳过空行。
+ 每个关键字可以包含 1 到 90 个 UTF–8 字符。
+ 每个条目必须完整、完全匹配，才能忽略文本。Macie 不支持在条目中使用通配符或者部分值。Macie 将每个条目都视为字符串文本值。匹配项不区分大小写。
+ 该文件可以包含 1–100000 个条目。
+ 附加文件的存储总大小不能超过35 MB。

### 存储需求
<a name="allow-lists-options-s3list-storage"></a>

在 Amazon S3 中添加和管理允许列表时，请注意以下存储要求与建议：
+ **区域支持**-允许列表必须存储在与您的 Macie 账户 AWS 区域 相同的存储桶中。如果运行列表存储在其他区域，Macie 将无法访问该列表。
+ **存储桶所有权**-允许列表必须存储在您拥有的存储桶中 AWS 账户。如果您希望其他账户使用同样的允许列表，可以考虑创建 Amazon S3 复制规则，将该列表复制到这些账户拥有的存储桶。有关复制 S3 对象的信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[复制对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)。

  此外，您的 AWS Identity and Access Management (IAM) 身份必须对存储列表的存储桶和对象具有读取权限。否则，您将无法使用 Macie 创建或更新列表的设置或者检查列表状态。
+ **存储类型和类别**：允许列表必须存储在通用存储桶中，而不是目录存储桶中。此外，必须使用以下存储类型之一进行存储：Reduced Redundancy (RRS)、S3 Glacier Instant Retrieval、S3 One Zone-IA、S3 Standard 或 S3 Standard-IA。
+ **存储桶策略**‬：如果您将允许列表存储在具有限制性存储桶策略的存储桶内，请确保该策略允许 Macie 检索该列表。为此，您可以将 Macie 服务关联角色条件添加至存储桶策略。有关更多信息，请参阅 [允许 Macie 访问 S3 存储桶和对象](monitoring-restrictive-s3-buckets.md)。

  此外，请确保该策略允许您的 IAM 身份可读取存储桶。否则，您将无法使用 Macie 创建或更新列表的设置或者检查列表状态。
+ **对象路径**‬：如果您在 Amazon S3 中存储了多个允许列表，则每个列表的对象路径必须是唯一的。换句话说，每个允许列表都必须单独存储在自己的 S3 对象中。
+ **版本控制**‬：向存储桶添加允许列表时，我们建议您同时为此存储桶启用版本控制。然后，您可以使用日期和时间值，将列表的版本与使用该列表的敏感数据发现任务和自动敏感数据发现周期结果相关联。这可以帮助您保护数据隐私、审计或调查行为。
+ **对象锁定**‬：为了防止允许列表在一定时间内或无限期地被删除或覆盖，您可以为存储该列表的存储桶启用对象锁定。启用此设置并不会阻止 Macie 访问此列表。有关此设置的信息，请参阅《*Amazon 简单存储服务用户指南》*中的 “使用[对象锁定锁定对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)”。

### 加密/解密要求
<a name="allow-lists-options-s3list-encryption"></a>

如果您在 Amazon S3 中加密允许列表，则 [Macie 服务相关角色](service-linked-roles.md) 的权限策略通常会授予 Macie 解密该列表所需的权限。但是，这取决于所用的加密类型：
+ 如果使用具有 Amazon S3 托管式密钥（SSE-S3）的服务器端加密方式进行加密，则 Macie 可解密列表。您的 Macie 账户的服务关联角色会向 Macie 授予其所需权限。
+ 如果使用服务器端加密和 AWS 托管 AWS KMS key （DSSE-KMS 或 SSE-KMS）对列表进行加密，Macie 可以解密该列表。您的 Macie 账户的服务关联角色会向 Macie 授予其所需权限。
+ 如果列表使用服务器端加密方法，通过客户托管 AWS KMS key （DSSE-KMS 或 SSE-KMS）进行加密，则仅当您允许 Macie 使用此密钥时，Macie 才能解密列表。若要了解如何执行此操作，请参阅[允许 Macie 使用客户管理的服务器 AWS KMS key](discovery-supported-encryption-types.md#discovery-supported-encryption-cmk-configuration)。
**注意**  
您可以使用外部密钥存储库 AWS KMS key 中管理的客户对列表进行加密。但是，与完全在 AWS KMS中管理的密钥相比，密钥可能更慢且更不可靠。如果延迟或可用性问题使 Macie 无法解密列表，则 Macie 在分析 S3 对象时无法使用该列表。这可能会导致异常结果，例如您在列表中指定的文本敏感数据调查发现。为了降低这种风险，可以考虑将列表存储在“将密钥用作 S3 存储桶密钥”的 S3 存储桶内。  
有关在外部密钥存储中使用 KMS 密钥的信息，请参阅 *AWS Key Management Service 开发者指南*中的[外部密钥存储](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)。有关使用 S3 存储桶密钥的信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[通过 Amazon S3 存储桶密钥降低 SSE-KMS 成本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)。
+ 如果列表采用服务器端加密方法、通过客户提供的密钥 (SSE-C) 或客户端加密，则 Macie 无法解密此列表。考虑改用 SSE-S3、DSSE-KMS 或 SSE-KMS 加密。

如果列表使用 AWS 托管 KMS 密钥或客户托管 KMS 密钥加密，则还必须允许您的 AWS Identity and Access Management (IAM) 身份使用该密钥。否则，您将无法使用 Macie 创建或更新列表的设置或者检查列表状态。若要了解如何检查或更改 KMS 密钥的权限，请参阅*AWS Key Management Service 开发人员指南*中的[AWS KMS中的密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

有关 Amazon S3 数据加密选项的详细信息，请参阅* Amazon Simple Storage Service 用户指南*中的[使用加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)。

### 设计注意事项和建议
<a name="allow-lists-options-s3list-notes"></a>

Macie 通常将允许列表中的每个条目都视为字符串文本值。也就是说，Macie 会忽略每次出现的、与允许列表中完整条目完全匹配的文本。匹配项不区分大小写。

但是，Macie 将这些条目用于更大的数据提取与分析框架。该框架包括机器学习和模式匹配函数，这些函数可以考虑语法和句法变体等维度，在多种情况下还包括关键字接近度。该框架还考虑了 S3 对象文件类型或存储格式。因此，在添加和管理允许列表中的条目时，切记以下注意事项和建议。

**为不同的文件类型与存储格式做好准备**  
对于非结构化数据，例如 Adobe 便携式文档文件 (.pdf) 格式文本，Macie 会忽略与允许列表中完整条目完全匹配的文本，包括跨多行或多页的文本。  
对于结构化数据（如 CSV 文件中的列式数据或 JSON 文件中基于记录的数据），如果所有文本都存储在单个字段、单元格或数组中，则 Macie 会忽略与允许列表中完整条目完全匹配的文本。此要求不适用于存储在其他非结构化文件 (例如 .pdf 文件中的表) 中的结构化数据。  
例如，考虑 CSV 文件内的以下内容：  

```
Name,Account ID
Akua Mansa,111111111111
John Doe,222222222222
```
如果 `Akua Mansa` 和 `John Doe` 是允许列表中的条目，则 Macie 会忽略 CSV 文件中的这些名称。每个列表条目的完整文本存储至单个 `Name` 字段。  
相反，请考虑包含以下列和字段的 CSV 文件：  

```
First Name,Last Name,Account ID
Akua,Mansa,111111111111
John,Doe,222222222222
```
如果 `Akua Mansa` 和 `John Doe` 是允许列表中的条目，则 Macie 不会忽略 CSV 文件中的这些名称。CSV 文件中的所有字段均不包含允许列表内条目的完整文本。

**包含常见变体**  
为数字数据、专有名词、术语和字母数字字符序列等常见变体添加条目。例如，如果您要添加的名称或短语在单词之间仅包含一个空格，则还要添加单词之间含两个空格的变体。同样，添加包含/不包含特殊字符的单词和短语，并考虑纳入常见的句法和语义变体。  
例如，对于美国电话号码*425-555-0100*，您可以将以下条目添加至允许列表中：  

```
425-555-0100
425.555.0100
(425) 555-0100
+1-425-555-0100
```
在跨国背景下，对于 *2022 年 2 月 1 日* 的日期，您可以添加包含英语和法语常见句法变体的条目，包括包含特殊字符/不包含特殊字符的变体：  

```
February 1, 2022
1 février 2022
1 fevrier 2022
Feb 01, 2022
1 fév 2022
1 fev 2022
02/01/2022
01/02/2022
```
对于人物姓名，请纳入您认为不敏感的、不同形式的名字条目。例如，包括：名字后跟姓氏；姓氏后跟名字，名字和姓氏由一个空格分隔；名字和姓氏由两个空格分隔；以及昵称。  
例如，对于*Martha Rivera*这个姓名，您可以添加：  

```
Martha Rivera
Martha  Rivera
Rivera, Martha
Rivera,  Martha
Rivera Martha
Rivera  Martha
```
如果要忽略包含许多分段的特定名称变体，请创建一个使用正则表达式的允许列表。例如，对于名字 *Dr. Martha Lyda Rivera, PhD*，您可以使用以下正则表达式：`^(Dr. )?Martha\s(Lyda|L\.)?\s?Rivera,?( PhD)?$`。

## 正则表达式的选项和要求
<a name="allow-lists-options-regex"></a>

对于这种类型的允许列表，您可以指定一个正则表达式（*regex*），定义要忽略的文本模式。例如，您可以为您的组织的公共电话号码、您的组织域的电子邮件地址或您的组织用于测试的模式化样本数据指定模式。正则表达式为您视为非敏感的指定种类数据定义了通用模式。如果您使用这种类型的允许列表，Amazon Macie 不会报告出现与特定模式完全匹配的文本。与要忽略的指定预定义文本的允许列表不同，您可以创建正则表达式和所有其他列表设置并将其存储在 Macie 中。

创建或更新此类允许列表时，可以在保存列表之前通过示例数据测试列表的正则表达式。建议您使用多组样本数据执行此操作。如果您创建的正则表达式过于笼统，Macie 可能会忽略您视为敏感的文本。如果正则表达式过于具体，Macie 可能会忽略您未视为敏感的文本。为了防范格式不正确或长时间运行表达式，Macie 还会根据一组示例文本自动编译和测试正则表达式，并通知您需要解决的问题。

为进行其他测试，我们建议您使用账户或组织的一小部分具有代表性的数据测试列表的正则表达式。为此，您可以[创建一次性作业](discovery-jobs-create.md)。除了通常用于数据分析的托管和自定义数据标识符之外，将该作业配置为使用该列表。然后您可查看作业结果，包括敏感数据调查发现、敏感数据发现结果或两者兼而有之。如果作业的结果与预期不同，则可以更改和测试正则表达式，直到结果达到预期为止。

配置和测试允许列表后，您可以创建和配置其他作业以使用该列表，或将列表添加至自动敏感数据发现的设置中。当运行此作业或 Macie 执行自动发现时，Macie 会使用最新版本的列表正则表达式分析数据。

**Topics**
+ [语法支持和建议](#allow-lists-options-regex-syntax)
+ [示例](#allow-lists-options-regex-examples)

### 语法支持和建议
<a name="allow-lists-options-regex-syntax"></a>

允许列表可以指定包含最多 512 个字符的正则表达式 (*regex*)。Macie 支持 [Perl 兼容正则表达式 (PCRE)](https://www.pcre.org/) 库提供的正则表达式模式语法子集。在 PCRE 库提供的构造中，Macie 不支持以下模式元素：
+ 反向引用
+ 捕获组
+ 条件模式
+ 嵌入式代码
+ 全局模式标志，如`/i`、`/m`和 `/x`
+ 递归模式
+ 正向和负向后视和前视零宽度断言，如`?=`、`?!`、`?<=`和 `?<!`

要为允许列表创建有效的正则表达式模式，需要注意以下提示和建议：
+ **锚点**：仅当您希望模式出现在文件的开头或结尾而不是行的开头或结尾时，才使用锚点（`^`或`$`）。
+ **有界重复**：出于性能考虑，Macie 限制了有界重复组的大小。例如，`\d{100,1000}` 无法在 Macie 中进行编译。为了近似于此功能，您可以使用开放式重复，如 `\d{100,}`。
+ **不区分大小写**：要使模式的某些部分不区分大小写，可以使用 `(?i)` 构造代替 `/i` 标志。
+ **性能**：无需手动优化前缀或者替代项。例如，将 `/hello|hi|hey/` 更改为 `/h(?:ello|i|ey)/` 不会提高性能。
+ **通配符**：出于性能考虑，Macie 限制了重复通配符的数量。例如，`a*b*a*` 无法在 Macie 中进行编译。
+ **交替**：要在单个允许列表中指定多个模式，可以使用交替运算符 (`|`) 连接这些模式。如果您这样操作，Macie 会使用 OR 逻辑组合模式并形成新模式。例如，如果您指定 `(apple|orange)`，Macie 会将*苹果*和*橙色*都识别为匹配项，并忽略两个单词的出现次数。如果要串联模式，请务必将串联表达式的总长度限制为 512 个或更少字符。

最后，在开发正则表达式时，请对其进行设计，以适应不同的文件类型和存储格式。在更大的数据提取和分析框架中，Macie 使用正则表达式。该框架考虑了 S3 对象的文件类型或者存储格式。对于结构化数据（例如 CSV 文件中的列式数据或 JSON 文件中基于记录的数据），只有当所有文本都存储在单个字段、单元格或数组中时，Macie 才会忽略与模式完全匹配的文本。此要求不适用于存储在其他非结构化文件（例如 Adobe 便携式文档文件 (.pdf) 中的表格）中的结构化数据。对于非结构化数据（例如 .pdf 文件中的文本），Macie 会忽略与模式完全匹配的文本，包括跨多行或多页的文本。

### 示例
<a name="allow-lists-options-regex-examples"></a>

以下示例演示了部分常见场景的有效正则表达式模式。

**电子邮件地址**  
如果您使用自定义数据标识符检测电子邮件地址，则可以忽略您视为不敏感的电子邮件地址，例如您组织的电子邮件地址。  
要忽略特定的二级和顶级域名电子邮件地址，可以使用以下模式：  
`[a-zA-Z0-9_.+\\-]+@example\.com`  
其中*example*是二级域名的名称，*com*也是顶级域名。在这种情况下，Macie 会匹配和忽略*johndoe@example.com* 和 *john.doe@example.com*等地址。  
要忽略任何通用顶级域名 (gTLD) (例如 *.com* 或 *.gov*) 中特定域名的电子邮件地址，可以使用以下模式：  
`[a-zA-Z0-9_.+\\-]+@example\.[a-zA-Z]{2,}`  
域名在*example*哪里。*在这种情况下，Macie 会匹配和忽略*johndoe@example.com*、*john.doe@example.gov*和 johndoe@example.edu*等地址。  
要忽略任何一个国家/地区代码顶级域名 (ccTLD) 中特定域名的电子邮件地址，例如加拿大的 *.ca*或澳大利亚的*.au*，您可使用此模式：  
`[a-zA-Z0-9_.+\\-]+@example\.(ca|au)`  
哪里*example*是域名，*ca*和*au*是TLDs 要忽略的特定的 cc。在这种情况下，Macie 会匹配和忽略*johndoe@example.ca* 个 *john.doe@example.au* 等地址。  
若要忽略用于特定域和 gTLD、且纳入第三级和第四级域的电子邮件地址，您可使用此模式：  
`[a-zA-Z0-9_.+\\-]+@([a-zA-Z0-9-]+\.)?[a-zA-Z0-9-]+\.example\.com`  
哪里*example*是域名的名字，哪里*com*是 gTLD。在这种情况下，Macie 会匹配和忽略*johndoe@www.example.com* 和 *john.doe@www.team.example.com*等地址。

**电话号码**  
Macie 提供托管数据标识符，可检测多个国家和地区的电话号码。要忽略某些电话号码（例如贵组织的免费电话号码或公用电话号码），您可以使用以下模式。  
要忽略使用 *800*区号、且格式为*(800) \$1\$1\$1-\$1\$1\$1\$1*的免费电话号码：  
`^\(?800\)?[ -]?\d{3}[ -]?\d{4}$`  
要忽略使用 *888*区号、且格式为*(888) \$1\$1\$1-\$1\$1\$1\$1*的免费电话号码：  
`^\(?888\)?[ -]?\d{3}[ -]?\d{4}$`  
要忽略包含*33*个国家/地区代码、且格式为 *\$133 \$1\$1 \$1\$1 \$1\$1 \$1\$1 \$1\$1* 的 10 位数法语电话号码：  
`^\+33 \d( \d\d){4}$`  
要忽略使用特定区号和交换码的美国和加拿大电话号码，请不要包含国家/地区代码，且格式为 *(\$1\$1\$1) \$1\$1\$1-\$1\$1\$1\$1*：  
`^\(?123\)?[ -]?555[ -]?\d{4}$`  
区号在*123*哪里，交换代码在*555*哪里。  
要忽略使用特定地区和交换代码的美国和加拿大电话号码，请包含国家/地区代码，且格式为*\$11 (\$1\$1\$1) \$1\$1\$1-\$1\$1\$1\$1*：  
`^\+1\(?123\)?[ -]?555[ -]?\d{4}$`  
区号在*123*哪里，交换代码在*555*哪里。