

# 在 Amazon Glue 中设置加密
<a name="set-up-encryption"></a>

以下示例工作流程重点介绍在对 Amazon Glue 使用加密时要配置的选项。该示例演示如何使用特定的 Amazon Key Management Service (Amazon KMS) 密钥，但您可以根据您的特定需求选择其他设置。此工作流程只重点介绍在设置 Amazon Glue 时与加密有关的选项。

1. 如果 Amazon Glue 控制台的用户不使用允许所有 Amazon Glue API 操作（例如，`"glue:*"`）的权限策略，请确认允许以下操作：
   + `"glue:GetDataCatalogEncryptionSettings"`
   + `"glue:PutDataCatalogEncryptionSettings"`
   + `"glue:CreateSecurityConfiguration"`
   + `"glue:GetSecurityConfiguration"`
   + `"glue:GetSecurityConfigurations"`
   + `"glue:DeleteSecurityConfiguration"`

1. 访问加密目录的任何客户端，即任何控制台用户、爬网程序、任务或开发终端节点都需要以下权限：

1. 访问加密连接密码的任何用户或角色都需要以下权限。

1. 将加密数据写入 Amazon S3 的任何提取、转换和加载（ETL）任务的角色都需要以下权限。

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

****  

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

------

1. 任何写入加密 Amazon CloudWatch Logs 的 ETL 作业或爬网程序在密钥政策和 IAM policy 中都需要以下权限。

   在密钥政策（而不是在 IAM policy）中：

   ```
   {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "logs.region.amazonaws.com"
    	},
    	"Action": [
    		"kms:Encrypt*",
    		"kms:Decrypt*",
    		"kms:ReEncrypt*",
    		"kms:GenerateDataKey*",
    		"kms:Describe*"
    	],
    	"Resource": "<arn of key used for ETL/crawler cloudwatch encryption>"
    }
   ```

   有关 密钥策略的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[使用 Amazon KMS 中的密钥策略](https://docs.amazonaws.cn/kms/latest/developerguide/key-policies.html)。

   在 IAM policy 中，请附加 `logs:AssociateKmsKey` 权限：

   ```
   {
    	"Effect": "Allow",
    	"Principal": {
    		"Service": "logs.region.amazonaws.com"
    	},
    	"Action": [
    		"logs:AssociateKmsKey"
    	],
    	"Resource": "<arn of key used for ETL/crawler cloudwatch encryption>"
    }
   ```

1. 任何使用加密作业书签的 ETL 作业都需要以下权限。

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

****  

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

------

1. 在 Amazon Glue 控制台的导航窗格上选择 **Settings (设置)**。

   1. 在存储库的 **Data catalog settings (数据目录设置)** 页面上，选择 **Metadata encryption (元数据加密)**，加密您的数据目录。此选项将使用您选择的 Amazon KMS 密钥加密数据目录中的所有对象。

   1.  对于 **Amazon KMS 密钥 (Amazon KMS 密钥)**，请选择 **aws/glue**。您也可以选择您创建的 Amazon KMS 键。
**重要**  
Amazon Glue 只支持对称客户主密钥（CMK）。**Amazon KMS key (Amazon KMS 密钥)** 列表仅显示对称密钥。但是，如果选择 **Choose a Amazon KMS key ARN (选择 Amazon KMS 密钥 ARN)**，控制台允许您为任何密钥类型输入 ARN。确保仅为对称密钥输入 ARN。

   启用了加密时，正在访问数据目录的客户端必须具有 Amazon KMS 权限。

1. 在导航窗格中，选择 **Security configurations (安全配置)**。安全配置是可用于配置 Amazon Glue 过程的一组安全属性。然后选择 **Add security configuration (添加安全配置)**。在配置中，选择以下任何选项：

   1. 选择 **S3 加密**。对于 **Encryption mode (加密模式)**，选择 **SSE-KMS**。对于 **Amazon KMS key (Amazon KMS 密钥)**，选择 **aws/s3**（确保用户有权限使用此密钥）。这支持任务写入 Amazon S3 的数据可以使用 Amazon 托管的 Amazon Glue Amazon KMS 密钥。

   1. 选择 **CloudWatch 日志加密**，然后选择 CMK。（确保用户有权使用此密钥）。有关更多信息，请参阅《Amazon Key Management Service 用户指南》**中的[使用 Amazon KMS 加密 CloudWatch Logs 中的日志数据](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。
**重要**  
Amazon Glue 只支持对称客户主密钥（CMK）。**Amazon KMS key (Amazon KMS 密钥)** 列表仅显示对称密钥。但是，如果选择 **Choose a Amazon KMS key ARN (选择 Amazon KMS 密钥 ARN)**，控制台允许您为任何密钥类型输入 ARN。确保仅为对称密钥输入 ARN。

   1. 选择**高级属性**，然后选择**任务书签加密**。对于 **Amazon KMS key (Amazon KMS 密钥)**，选择 **aws/glue**（确保用户有权限使用此密钥）。这样，就可以使用 Amazon Glue Amazon KMS 密钥对写入 Amazon S3 的任务书签进行加密。

1. 在导航窗格中，选择 ** Connections (站点到站点 VPN 连接)**。

   1. 选择 **Add connection (添加连接)** 以创建到作为 ETL 作业目标的 Java 数据库连接 (JDBC) 数据存储的连接。

   1. 要强制使用安全套接字层 (SSL) 加密，请选择 **Require SSL connection (需要 SSL 连接)**，并测试您的连接。

1. 在导航窗格中，选择**作业**。

   1. 选择 **Add job (添加作业)** 以创建转换数据的作业。

   1. 在作业定义中，选择您创建的安全配置。

1. 在 Amazon Glue 控制台中，按需运行作业。验证任务写入的任何 Amazon S3 数据、任务写入的 CloudWatch Logs 以及任务书签都已全部加密。