

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

# 个人身份信息（PII）配方步骤
<a name="recipe-actions.pii"></a>

使用这些配方步骤对数据集中的个人身份信息（PII）执行转换。

**注意**  
除了本节中的配方步骤外，还有一些不是专为 PII 设计的 DataBrew 配方步骤可用于处理 PII。例如 [DELETE](recipe-actions.DELETE.md)，这是一个用于删除列的基本列配方步骤。

**Topics**
+ [CRYPTOGRAPHIC\$1HASH](recipe-actions.CRYPTOGRAPHIC_HASH.md)
+ [DECRYPT](recipe-actions.DECRYPT.md)
+ [DETERMINISTIC\$1DECRYPT](recipe-actions.DETERMINISTIC_DECRYPT.md)
+ [DETERMINISTIC\$1ENCRYPT](recipe-actions.DETERMINISTIC_ENCRYPT.md)
+ [ENCRYPT](recipe-actions.ENCRYPT.md)
+ [MASK\$1CUSTOM](recipe-actions.MASK_CUSTOM.md)
+ [MASK\$1DATE](recipe-actions.MASK_DATE.md)
+ [MASK\$1DELIMITER](recipe-actions.MASK_DELIMITER.md)
+ [MASK\$1RANGE](recipe-actions.MASK_RANGE.md)
+ [REPLACE\$1WITH\$1RANDOM\$1BETWEEN](recipe-actions.REPLACE_WITH_RANDOM_BETWEEN.md)
+ [REPLACE\$1WITH\$1RANDOM\$1DATE\$1BETWEEN](recipe-actions.REPLACE_WITH_RANDOM_DATE_BETWEEN.md)
+ [SHUFFLE\$1ROWS](recipe-actions.SHUFFLE_ROWS.md)

# CRYPTOGRAPHIC\$1HASH
<a name="recipe-actions.CRYPTOGRAPHIC_HASH"></a>

将算法应用于列中的哈希值。

**参数**
+ `sourceColumns`：现有列的数组。
+ `secretId`：Secrets Manager 密钥的 ARN。在散列消息认证码（HMAC）前缀算法中用于对源列进行哈希处理的密钥，或者 `databrew!default` 是 Secrets Manager 密钥的值的 base64 解码输出。
+ `secretVersion`：可选。默认为最新的密钥版本。
+ `entityTypeFilter`：可选的[实体类型](https://docs.aws.amazon.com/databrew/latest/dg/API_EntityDetectorConfiguration.html#databrew-Type-EntityDetectorConfiguration-EntityTypes)数组。可仅用于加密自由文本列中检测到的 PII。
+ `createSecretIfMissing` – 可选布尔值。如果为 true，将尝试代表调用者创建密钥。
+ `algorithm`：用于对数据进行哈希处理的算法。有效的枚举值： MD5、、、、HMAC\$1 SHA1、HMAC\$1 SHA256 SHA512、HMAC\$1、HMAC\$1 MD5、HMAC SHA1 \$1 SHA256 SHA512

  每个选项指的都是不同的哈希算法。那些带“HMAC”前缀的选项指的是密钥哈希算法，需要使用 `secretId` 参数。对于没有“HMAC”前缀的选项，不需要使用 `secretId` 参数。

  如果您不提供哈希算法，则该服务默认为 “HMAC\$1SHA256”。

```
{
   "sourceColumns": ["phonenumber"],   
   "secretId": "arn:aws:secretsmanager:us-east-1:012345678901:secret:mysecret",
   "entityTypeFilter": ["USA_ALL"]
}
```

在交互式体验中工作时，除了项目的角色外，控制台用户还必须对提供的 Secrets Manager 密钥拥有 `secretsmanager:GetSecretValue` 权限。

**政策示例：**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:012345678901:secret:mysecret"
            ]
        }
    ]
}
```

------

您也可以选择使用 DataBrew创建的默认密钥，方法是将参数作为 secretID 传递，将参数传递`databrew!default`为 true。`createSecretIfMissing`我们不建议将此方法用于生产。拥有该**AwsGlueDataBrewFullAccessPolicy**角色的任何人都可以使用默认密钥。

# DECRYPT
<a name="recipe-actions.DECRYPT"></a>

你可以使用 DECRYPT 转换来解密其中的内容。 DataBrew您的数据也可以在外部使用加密 SDK DataBrew 进行解 AWS 密。如果提供的 KMS 密钥 ARN 与用于加密列的密钥不匹配，则解密操作将失败。有关 AWS 加密 SDK 的更多信息，请参阅[《*AWS Encryption SDK 开发人员指南》*中的 AWS 加密 SDK 是什么](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html)。

**参数**
+ `sourceColumns`：现有列的数组。
+ `kmsKeyArn`— 用于解密源列的 AWS 密钥管理服务密钥的密钥 ARN。有关密钥 ARN 的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[密钥 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN)。

```
{
   "sourceColumns": ["phonenumber"],
   "kmsKeyArn": "arn:aws:kms:us-east-1:012345678901:key/<kms-key-id>"
}
```

在交互式体验中工作时，除了项目的角色外，控制台用户还必须对提供的 KMS 密钥拥有 `kms:GenerateDataKey` 和 `kms:Decrypt` 权限。

**政策示例：**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:GenerateDataKey",
            "kms:Decrypt"
        ],
        "Resource": [
            "arn:aws:kms:us-east-1:012345678901:key/kms-key-id"
        ]
    }
  ]
}
```

------

# DETERMINISTIC\$1DECRYPT
<a name="recipe-actions.DETERMINISTIC_DECRYPT"></a>

解密使用 DETERMINISTIC\$1ENCRYPT 加密的数据。

如果提供的密钥 ID 和版本与用于加密列的不匹配，则此转换不会产生任何效果。

**参数**
+ `sourceColumns`：现有列的数组。
+ `secretId`：用于解密源列的 Secrets Manager 密钥的 ARN。
+ `secretVersion`：可选。默认为最新的密钥版本。

**示例**

```
{
   "sourceColumns": ["phonenumber"],   
   "secretId": "arn:aws:secretsmanager:us-east-1:012345678901:secret:mysecret",
   "secretVersion": "adfe-1232-7563-3123"
}
```

在交互式体验中工作时，除了项目的角色外，控制台用户还必须对提供的 SecretsManager 密钥拥有访问 secretsmanager: GetSecretValue 的权限。

**政策示例：**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:012345678901:secret:mysecret"
            ]
        }
    ]
}
```

------

# DETERMINISTIC\$1ENCRYPT
<a name="recipe-actions.DETERMINISTIC_ENCRYPT"></a>

使用 256 位密钥对列 AES-GCM-SIV进行加密。使用 DETERMINISTIC\$1ENCRYPT 加密的数据只能在内部使用 DETEMINISTIC\$1DECRYPT 转换进行解密。 DataBrew 此转换 AWS KMS 不使用 AWS 加密 SDK，而是使用 [AWS LC github 库](https://github.com/awslabs/aws-lc)。

每个单元格最多可以加密 400KB。解密时不保留数据类型。

**注意**  
注意：不鼓励使用一个密钥超过一年。

**参数**
+ `sourceColumns`：现有列的数组。
+ `secretId`：用于加密源列的 Secrets Manager 密钥的 ARN，或者 databrew\$1default。
+ `secretVersion`：可选。默认为最新的密钥版本。
+ `entityTypeFilter`：可选的[实体类型](https://docs.aws.amazon.com/databrew/latest/dg/API_EntityDetectorConfiguration.html#databrew-Type-EntityDetectorConfiguration-EntityTypes)数组。可仅用于加密自由文本列中检测到的 PII。
+ `createSecretIfMissing` – 可选布尔值。如果为 true，将尝试代表调用者创建密钥。

**示例**

```
{
   "sourceColumns": ["phonenumber"],   
   "secretId": "arn:aws:secretsmanager:us-east-1:012345678901:secret:mysecret",
   "secretVersion": "adfe-1232-7563-3123",
   "entityTypeFilter": ["USA_ALL"]
}
```

在交互式体验中工作时，除了项目的角色外，控制台用户还必须对提供的 Secrets Manager 密钥拥有 `secretsmanager:GetSecretValue` 权限。

**政策示例**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:012345678901:secret:mysecret"
            ]
        }
    ]
}
```

------

# ENCRYPT
<a name="recipe-actions.ENCRYPT"></a>

使用 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) 对源列中的值进行加密。DECRYPT 转换可用于在内部进行解密。 DataBrew您也可以 DataBrew 使用 AWS 加密 SDK 在外部解密数据。

ENCRYPT 转换每个单元格最多可以加密 128 MiB。它将在解密时尝试保留格式。要保留数据类型，数据类型元数据必须序列化为小于 1 KB。否则，您必须将 `preserveDataType` 参数设置为 false。数据类型元数据将以纯文本形式存储在加密环境中。有关加密上下文的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。

**参数**
+ `sourceColumns`：现有列的数组。
+ `kmsKeyArn`— 用于加密源列的 AWS 密钥管理服务密钥的密钥 ARN。有关密钥 ARN 的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[密钥 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN)。
+ `entityTypeFilter`：可选的[实体类型](https://docs.aws.amazon.com/databrew/latest/dg/API_EntityDetectorConfiguration.html#databrew-Type-EntityDetectorConfiguration-EntityTypes)数组。可仅用于加密自由文本列中检测到的 PII。
+ `preserveDataType` – 可选布尔值。默认值为 true。如果为 false，则不会存储数据类型。

在以下示例中，`entityTypeFilter` 和 `preserveDataType` 是可选的。

**示例**

```
{
    "sourceColumns": ["phonenumber"],
    "kmsKeyArn": "arn:aws:kms:us-east-1:012345678901:key/kms-key-id",
    "entityTypeFilter": ["USA_ALL"],
    "preserveDataType": "true"
}
```

在交互式体验中工作时，除了项目的角色外，控制台用户还必须对提供的 AWS KMS 密钥拥有 `kms:GenerateDataKey` 权限。

**政策示例：**

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": [
            "arn:aws:kms:us-east-1:012345678901:key/kms-key-id"
        ]
    }
  ]
}
```

------

# MASK\$1CUSTOM
<a name="recipe-actions.MASK_CUSTOM"></a>

掩蔽与提供的自定义值相匹配的字符。

**参数**
+ `sourceColumns`：现有列名称列表。
+ `maskSymbol`：将用于替换指定字符的符号。
+ `regex`：如果为 true，则将 `customValue` 视为要匹配的正则表达式模式。
+ `customValue`：出现的所有 `customValue`（或正则表达式匹配项）都将在字符串中掩蔽。
+ `entityTypeFilter`：可选的[实体类型](https://docs.aws.amazon.com/databrew/latest/dg/API_EntityDetectorConfiguration.html#databrew-Type-EntityDetectorConfiguration-EntityTypes)数组。可仅用于加密自由文本列中检测到的 PII。

**Example 示例**  
  

```
// Mask all occurrences of 'amazon' in the column
{ 
    "RecipeAction": {
        "Operation": "MASK_CUSTOM",
        "Parameters": {
            "sourceColumns": ["company"],
            "maskSymbol": "#",
            "customValue": "amazon"
        }
    }
}
```

# MASK\$1DATE
<a name="recipe-actions.MASK_DATE"></a>

使用用户指定的掩蔽符号掩蔽日期的组成部分。

**参数**
+ `sourceColumns`：现有列名称列表。
+ `maskSymbol`：将用于替换指定字符的符号。
+ `redact`：要掩蔽的日期组成部分枚举数组。有效枚举值：YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、MILLISECOND。
+ `locale`：可选的 IETF BCP 47 语言标签。默认值为 `en`。要用于日期格式化的区域设置。

**Example 示例**  
  

```
// Mask year
{ 
    "RecipeAction": {
        "Operation": "MASK_DATE",
        "Parameters": {
            "sourceColumns": ["birthday"],
            "maskSymbol": "#",
            "redact": ["YEAR"]
        }
    }
}
```

# MASK\$1DELIMITER
<a name="recipe-actions.MASK_DELIMITER"></a>

使用用户指定的掩蔽符号掩蔽两个分隔符之间的字符。

**参数**
+ `sourceColumns`：现有列名称列表。
+ `maskSymbol`：将用于替换指定字符的符号。
+ `startDelimiter`：一个指示从何处开始掩蔽的字符。忽略此参数将从字符串的开头开始应用掩蔽。
+ `endDelimiter`：一个指示从何处结束掩蔽的字符。忽略此参数将从 startDelimiter 到字符串结尾应用掩蔽。
+ `preserveDelimiters`：如果为 true，则对分隔符应用掩蔽。
+ `alphabet`：要在掩蔽期间保留的字符集数组。有效枚举值：SYMBOLS、WHITESPACE。
+ `entityTypeFilter`：可选的[实体类型](https://docs.aws.amazon.com/databrew/latest/dg/API_EntityDetectorConfiguration.html#databrew-Type-EntityDetectorConfiguration-EntityTypes)数组。可仅用于加密自由文本列中检测到的 PII。

**Example 示例**  
  

```
// Mask string between '<' and '>', ignoring white spaces, symbols, and lowercase letters
{ 
    "RecipeAction": {
        "Operation": "MASK_DELIMITER",
        "Parameters": {
            "sourceColumns": ["name"],
            "maskSymbol": "#",
            "startDelimiter": "<",
            "endDelimiter": ">",
            "preserveDelimiters": false,
            "alphabet": ["WHITESPACE", "SYMBOLS"]
        }
    }
}
```

# MASK\$1RANGE
<a name="recipe-actions.MASK_RANGE"></a>

使用用户指定的掩蔽符号掩蔽两个位置之间的字符。

**参数**
+ `sourceColumns`：现有列名称列表。
+ `maskSymbol`：将用于替换指定字符的符号。
+ `start`：一个指示从哪个字符位置开始掩蔽的数字（从 0 开始建立索引，含 0）。允许使用负索引。忽略此参数将从字符串的开头开始应用掩蔽，直到“停止”。
+ `stop`：一个指示从哪个字符位置结束掩蔽的数字（从 0 开始建立索引，不含 0）。允许使用负索引。忽略此参数将从字符串的“开头”到结尾应用掩蔽。
+ `alphabet`：要在掩蔽期间保留的字符集枚举数组。有效枚举值：SYMBOLS、WHITESPACE。
+ `entityTypeFilter`：可选的[实体类型](https://docs.aws.amazon.com/databrew/latest/dg/API_EntityDetectorConfiguration.html#databrew-Type-EntityDetectorConfiguration-EntityTypes)数组。可仅用于加密自由文本列中检测到的 PII。

**Example 示例**  
  

```
// Mask entire string
{ 
    "RecipeAction": {
        "Operation": "MASK_RANGE",
        "Parameters": {
            "sourceColumns": ["firstName", "lastName"],
            "maskSymbol": "#"
        }
    }
}
```

# REPLACE\$1WITH\$1RANDOM\$1BETWEEN
<a name="recipe-actions.REPLACE_WITH_RANDOM_BETWEEN"></a>

将值替换为随机数。

**参数**
+ `lowerBound`：随机数范围的下限。
+ `sourceColumns`：现有列名称列表。
+ `upperBound`：随机数范围的上限。

**Example 示例**  
  

```
{
    "RecipeAction": {
        "Operation": "REPLACE_WITH_RANDOM_BETWEEN",
        "Parameters": {
            "lowerBound": "1",
            "sourceColumns": ["column1", "column2"],
            "upperBound": "100"
        }
    }
}
```

# REPLACE\$1WITH\$1RANDOM\$1DATE\$1BETWEEN
<a name="recipe-actions.REPLACE_WITH_RANDOM_DATE_BETWEEN"></a>

将值替换为随机日期。

**参数**
+ `startDate`：将采取随机日期的日期范围的开头。
+ `sourceColumns`：现有列名称列表。
+ `endDate`：将采取随机日期的日期范围的结尾。

**Example 示例**  
  

```
{
    "RecipeAction": {
        "Operation": "REPLACE_WITH_RANDOM_DATE_BETWEEN",
        "Parameters": {
            "startDate": "2020-12-12 12:12:12",
            "sourceColumns": ["column1", "column2"],
            "endDate": "2021-12-12 12:12:12"
        }
    }
}
```

# SHUFFLE\$1ROWS
<a name="recipe-actions.SHUFFLE_ROWS"></a>

对给定列中的值进行随机排序。按辅助列分组的值可能会出现随机排序。

**参数**
+ `sourceColumns`：现有列的数组。
+ `groupByColumns`：在随机排序时据以对源列进行分组的列数组。

**Example 示例**  
  

```
{
   "sourceColumns": ["age"],
   "*groupByColumns*": ["country"]
}
```