

# AWS Glue 数据质量自动监测功能中的静态数据加密
<a name="data-quality-encryption"></a>

 AWS Glue Data Quality 默认提供加密，以使用 AWS 拥有的加密密钥保护客户的敏感静态数据。

## AWS 自有密钥
<a name="w2aac49c74b9"></a>

 AWS Glue 数据质量自动监测功能使用这些密钥，来自动加密客户的数据质量资产。您无法查看、管理或使用 AWS 拥有的密钥，或者审计其使用情况。但是，无需执行任何操作或更改任何计划即可保护用于加密数据的密钥。有关更多信息，请参阅《AWS KMS Developer Guide》中的 [AWS owned keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

 默认情况下，静态数据加密有助于减少保护敏感数据时涉及的操作开销和复杂性。同时，它还支持构建符合严格加密合规性和监管要求的安全应用程序。

 虽然您无法禁用此加密层，也不能选择其他加密类型，但您可以在创建数据质量资源时选择客户管理的密钥，从而在现有 AWS 拥有的加密密钥上添加第二层加密。

## 客户管理密钥
<a name="data-quality-encryption-customer-managed-keys"></a>

 **客户自主管理型密钥**：AWS Glue 数据质量自动监测功能支持使用由您自己创建、拥有和管理的对称客户自主管理型密钥。这会在现有 AWS 拥有的加密基础上添加第二层加密。您可以完全控制这层加密，所以可以执行以下任务：
+  制定和维护关键策略 
+  建立和维护 IAM 策略 
+  启用和禁用密钥政策 
+  轮换加密材料 
+  添加标签 
+  创建密钥别名 
+  安排密钥删除 

 有关更多信息，请参阅 AWS KMS 开发人员指南中的[ 客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

 下表总结了 AWS Glue 数据质量自动监测功能如何对不同的数据质量资产进行加密。


| 数据类型 | AWS 拥有的密钥加密 | 客户托管密钥加密 | 
| --- | --- | --- | 
|  **数据质量规则集** <br /> DQDL 规则集字符串，由持久化 DQ 规则集引用。目前，这些持久化规则集仅在 AWS Glue Data Catalog 体验中使用。 | 已启用 | 已启用 | 
|  **数据质量规则/分析器结果** <br /> 结果构件，包含了规则集中每个规则的通过/失败状态，还包含了规则和分析器同时收集的指标。 | 已启用 | 已启用 | 
|  **观测值** <br /> 在数据中检测到异常时，就会生成观测值。该值包含了有关预期上限和下限的信息，还包含了基于这些界限的建议规则。如果生成观测值，则会与数据质量结果一起显示。 | 已启用 | 已启用 | 
|  **统计信息** <br /> 统计信息包含了评估给定规则集的数据后收集的指标信息，例如指标的值（如 RowCount、Completity）、列名以及其他元数据。 | 已启用 | 已启用 | 
|  **异常检测统计模型** <br /> 统计模型包含了给定指标上限和下限的时间序列，这一指标是根据先前对客户数据的评估而生成的。 | 已启用 | 已启用 | 

**注意**  
 AWS 数据质量自动监测功能使用 AWS 拥有的密钥自动启用静态加密，从而免费保护个人身份数据。不过，使用客户管理型密钥时，会收取 AWS KMS 费用。有关定价的更多信息，请参阅 [AWS KMS 定价](https://aws.amazon.com/kms/pricing/)。  
 有关 AWS KMS 的更多信息，请参阅 [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

## 创建客户自主管理型密钥
<a name="data-quality-encryption-customer-managed-key"></a>

 您可以使用 AWS 管理控制台 或 AWS KMS API 创建对称的客户管理型密钥。

**创建对称的客户托管式密钥：**
+  请按照《AWS Key Management Service Developer Guide》中 [Creating symmetric encryption AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) 的步骤操作。

### 密钥策略
<a name="data-quality-encryption-customer-managed-key-policy"></a>

 密钥策略控制对客户托管密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。有关更多信息，请参阅《AWS Key Management Service Developer Guide》中的 [Key policies in AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

 要将客户自主管理型密钥与数据质量资源一起使用，密钥政策中必须允许以下 API 操作：
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) – 使用 `GenerateDataKeyWithoutPlaintext` 来解密由 AWS KMS 密钥加密的加密文字 
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) – 提供客户托管式密钥详细信息以允许 Amazon Location 验证密钥。
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) – 返回唯一的对称数据密钥，以供在 AWS KMS 外部使用。此操作将返回在您指定的对称加密 KMS 密钥下加密的数据密钥。密钥中的字节是随机的，与调用方或 KMS 密钥均无关。此操作可用于减少客户必须执行的 KMS 调用。
+  [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) – 解密加密文字，然后在 AWS KMS 中将其完全重新加密。您可以使用此操作来更改加密数据的 KMS 密钥，例如，[手动轮换](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-manually) KMS 密钥或更改保护加密文字的 KMS 密钥时。您还可以使用此操作来重新加密同一 KMS 密钥下的加密文字，例如更改加密文字的[加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。

 以下是您可以为 Amazon Location 添加的政策声明示例：

```
"Statement" : [ 
    {
        "Sid" : "Allow access to principals authorized to use AWS Glue Data Quality",
        "Effect" : "Allow",
        "Principal" : {
            "AWS": "arn:aws:iam::<account_id>:role/ExampleRole"
        },
        "Action" : [ 
            "kms:Decrypt", 
            "kms:DescribeKey",
            "kms:GenerateDataKeyWithoutPlaintext",
            "kms:ReEncrypt*"
        ],
        "Resource" : "*",
        "Condition" : {
            "StringEquals" : {
                "kms:ViaService" : "glue.amazonaws.com",
                "kms:CallerAccount" : "111122223333"
            }
        },
    {
        "Sid": "Allow access for key administrators",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
          },
        "Action" : [ 
            "kms:*"
         ],
        "Resource": "arn:aws:kms:region:111122223333:key/key_ID"
    },
    {
        "Sid" : "Allow read-only access to key metadata to the account",
        "Effect" : "Allow",
        "Principal" : {
            "AWS" : "arn:aws:iam::111122223333:root"
        },
        "Action" : [ 
            "kms:Describe*",
            "kms:Get*",
            "kms:List*",
        ],
        "Resource" : "*"
    }
]
```

### 有关在 AWS Glue 数据质量自动监测功能中使用 KMS 密钥的说明
<a name="data-quality-encryption-kms-keys-notes"></a>

 AWS Glue 数据质量自动监测功能不支持密钥转换。这意味着，如果您使用密钥 A 加密数据质量资产，然后决定切换到密钥 B，此时我们将不会重新加密原本使用密钥 A 加密的数据，以便使用密钥 B。您仍然可以切换到密钥 B，但需要保持对密钥 A 的访问权限，这样才能访问之前使用密钥 A 加密的数据。

 有关在策略中指定权限的更多信息，请参阅《AWS Key Management Service Developer Guide》中的 [Permissions for AWS services in key policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-services.html)。

 有关密钥访问故障排除的信息，请参阅《AWS Key Management Service Developer Guide》中的 [Troubleshooting key access](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html)。

## 创建安全配置
<a name="data-quality-encryption-create-security-configuration"></a>

 AWS Glue 中的[安全配置资源](encryption-security-configuration.md)包含当您写入加密数据时所需的属性。

**要加密数据质量资产，请执行以下操作：**

1.  在**加密设置**中的**高级设置**下，选择**启用数据质量加密** 

1.  选择您的 KMS 密钥或选择**创建 AWS KMS 密钥** 

![屏幕截图显示添加安全配置页面。已选择“启用数据质量加密”选项。](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-quality-add-security-configuration.png)


## AWS Glue 数据质量自动监测功能加密上下文
<a name="data-quality-encryption-context"></a>

 [加密上下文](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)是一组可选的键值对，包含有关数据的其他上下文信息。

 AWS KMS 将加密上下文用作[其他经过身份验证的数据](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)，来支持[经过身份验证的加密](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)。在请求中包含加密上下文以加密数据时，AWS KMS 将加密上下文绑定到加密的数据。要解密数据，您必须在请求中包含相同的加密上下文。

### AWS Glue 数据质量自动监测功能加密上下文示例
<a name="data-quality-encryption-context-example"></a>

```
"encryptionContext": {
    "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
    "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
    "hierarchy-version": "1",
    "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
    "create-time": "2024-06-07T13:47:23:000861Z",
    "tablename": "AwsGlueMlEncryptionKeyStore",
    "type": "beacon:ACTIVE"
}
```

### 使用加密上下文进行监控
<a name="data-quality-encryption-context-monitoring"></a>

 当您使用对称的客户托管密钥来加密您的跟踪器或地理围栏集合时，您还可以使用审计记录和日志中的加密上下文来识别客户托管密钥的使用情况。加密上下文还会显示在 AWS CloudTrail 或 Amazon CloudWatch Logs 生成的日志中。

## 监控 AWS Glue 数据质量自动监测功能的加密密钥
<a name="data-quality-monitoring-encryption-keys"></a>

 当您将 AWS KMS 客户自主管理型密钥与 AWS Glue 数据质量资源一起使用时，可以使用 AWS CloudTrail 或 Amazon CloudWatch Logs 来跟踪 AWS Glue 数据质量自动监测功能向 AWS KMS 发送的请求。

 以下示例是 `GenerateDataKeyWithoutPlainText` 和 `Decrypt` 的 AWS CloudTrail 事件，用于监控 AWS Glue 数据质量自动监测功能调用的 KMS 操作，以访问由客户自主管理型密钥加密的数据。

 **Decrypt** 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "arn": "arn:aws:sts::111122223333:role/CustomerRole",
        "accountId": "111122223333",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-07-02T20:03:10Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:ACTIVE",
            "version": "branch:version:ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE"
        }
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

 **GenerateDataKeyWithoutPlaintext** 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "arn": "arn:aws:sts::111122223333:role/CustomerRole",
        "accountId": "111122223333",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-07-02T20:03:10Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKeyWithoutPlaintext",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:version:ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE"
        }
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

 **重新加密** 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "arn": "arn:aws:sts::111122223333:role/CustomerRole",
        "accountId": "111122223333",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-07-17T21:34:41Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "ReEncrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "destinationEncryptionContext": {
             "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:ACTIVE"
            "version": "branch:version:12345678-SAMPLE"
        },
        "destinationKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
        "sourceAAD": "1234567890-SAMPLE+Z+lqoYOHj7VtWxJLrvh+biUFbliYDAQkobM=",
        "sourceKeyId": "arn:aws:kms:ap-southeast-2:585824196334:key/17ca05ca-a8c1-40d7-b7fd-30abb569a53a",
        "destinationEncryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "sourceEncryptionContext": {
            "kms-arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "branch-key-id": "111122223333+arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "hierarchy-version": "1",
            "aws-crypto-ec:aws:glue:securityConfiguration": "111122223333:customer-security-configuration-name",
            "create-time": "2024-06-07T13:47:23:000861Z",
            "tablename": "AwsGlueMlEncryptionKeyStore",
            "type": "branch:version:ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE"
        },
        "destinationAAD": "1234567890-SAMPLE",
        "sourceEncryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        },
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

## 了解更多
<a name="data-quality-encryption-learn-more"></a>

 以下资源提供有关静态数据加密的更多信息。
+  有关 [AWS Key Management Service 基本概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)的更多信息，请参阅《AWS Key Management Service Developer Guide》。
+  有关 [AWS Key Management Service 的安全最佳实践](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html)的更多信息，请参阅《AWS Key Management Service Developer Guide》。