

# 加密 AWS Glue 写入的数据
<a name="encryption-security-configuration"></a>

*安全配置*是 AWS Glue 可以使用的一组安全属性。您可以使用安全配置加密静态数据。以下场景显示了使用安全配置的一些方法。
+ 将安全配置附加到 AWS Glue 爬网程序以写入加密的 Amazon CloudWatch Logs。有关将安全配置附加到爬网程序的更多信息，请参阅 [步骤 3：配置安全设置](define-crawler-configure-security-settings.md)。
+ 将安全配置附加到提取、转换和加载（ETL）任务以写入加密的 Amazon Simple Storage Service（Amazon S3）目标和加密的 CloudWatch Logs。
+ 将安全配置附加到 ETL 任务以将其任务书签作为加密 Amazon S3 数据写入。
+ 将安全配置附加到开发终端节点以写入加密的 Amazon S3 目标。

**重要**  
目前，安全配置会覆盖作为 ETL 任务参数传递的任何服务器端加密（SSE-S3）设置。因此，如果安全配置和 SSE-S3 参数都与作业关联，则忽略 SSE-S3 参数。

有关安全配置的更多信息，请参阅 [在 AWS Glue 控制台上管理安全配置](console-security-configurations.md)。

**Topics**
+ [将 AWS Glue 设置为使用安全配置](#encryption-setup-Glue)
+ [为 VPC 作业和爬网程序创建到 AWS KMS 的路由](#encryption-kms-vpc-endpoint)
+ [在 AWS Glue 控制台上管理安全配置](console-security-configurations.md)

## 将 AWS Glue 设置为使用安全配置
<a name="encryption-setup-Glue"></a>

请按照以下步骤设置您的 AWS Glue 环境以使用安全配置。

1. 创建或更新您的 AWS Key Management Service（AWS KMS）密钥，向传递到 AWS Glue 爬网程序和任务的 IAM 角色授予 AWS KMS 权限以加密 CloudWatch Logs。有关更多信息，请参阅 *Amazon CloudWatch Logs 用户指南*中的[使用 AWS KMS 更改 CloudWatch Logs 中的日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。

   在下面的示例中，*"role1"*、*"role2"* 和 *"role3"* 是传递到爬网程序和任务的 IAM 角色。

   ```
   {
          "Effect": "Allow",
          "Principal": { "Service": "logs.region.amazonaws.com",
          "AWS": [
                   "role1",
                   "role2",
                   "role3"
                ] },
                       "Action": [
                              "kms:Encrypt*",
                              "kms:Decrypt*",
                              "kms:ReEncrypt*",
                              "kms:GenerateDataKey*",
                              "kms:Describe*"
                       ],
                       "Resource": "*"
   }
   ```

   如果您使用此密钥加密 CloudWatch Logs，则需要 `Service` 语句（显示为 `"Service": "logs.region.amazonaws.com"`）。

1. 确保 AWS KMS 密钥为 `ENABLED`，然后才可使用。

**注意**  
如果您使用 Iceberg 作为数据湖框架，则 Iceberg 表有自己的机制来启用服务器端加密。除了 AWS Glue 的安全配置外，您还应该启用这些配置。要在 Iceberg 表上启用服务器端加密，请查看 [Iceberg 文档](https://iceberg.apache.org/docs/latest/aws/#s3-server-side-encryption)中的指南。

## 为 VPC 作业和爬网程序创建到 AWS KMS 的路由
<a name="encryption-kms-vpc-endpoint"></a>

您可以通过 Virtual Private Cloud (VPC) 中的私有端点直接连接到 AWS KMS，而不是通过互联网连接。当您使用 VPC 端点时，您的 VPC 和 AWS KMS 之间的通信完全在 AWS 网络内进行。

您可以在 VPC 中创建 AWS KMS VPC 端点。如果没有此步骤，您的任务或爬网程序可能会失败，任务上具有 `kms timeout` 或爬网程序上具有 `internal service exception`。有关详细说明，请参阅 *AWS Key Management Service 开发人员指南*中的[通过 VPC 终端节点连接到 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html)。

当您按照以下说明操作时，在 [VPC 控制台](https://console.aws.amazon.com//vpc)上，您必须执行以下操作：
+ 选择 **Enable Private DNS name (启用私有 DNS 名称)**。
+ 选择 **Security group (安全组)**（带自引用规则），此安全组将用于访问 Java 数据库连接 (JDBC) 的任务或爬网程序。有关 AWS Glue 连接的更多信息，请参阅 [连接到数据](glue-connections.md)。

当您将安全配置添加到访问 JDBC 数据存储的爬网程序或任务时，AWS Glue 必须具有到 AWS KMS 终端节点的路由。您可以使用网络地址转换 (NAT) 网关或 AWS KMS VPC 端点提供路由。要创建 NAT 网关，请参阅 *Amazon VPC 用户指南*中的 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。