

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 AWS Glue 中的加密
<a name="set-up-encryption"></a>

以下範例任務流程重點說明，您在 AWS Glue 中使用加密時應設定的選項。此範例示範使用 specific AWS Key Management Service (AWS KMS) 金鑰，但您可以根據您的特定需求選擇其他設定。此任務流程僅重點說明與設定 AWS Glue​ 時的加密相關的選項。

1. 如果 AWS Glue 主控台的使用者未使用允許所有 AWS 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 政策中具有以下許可。

   在金鑰政策 (而非 IAM 政策) 中：

   ```
   {
    	"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>"
    }
   ```

   如需金鑰政策的相關詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[在 AWS KMS中使用金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

   在 IAM 政策中連接 `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. 在 AWS Glue 主控台上的導覽窗格中，選擇 **Settings (設定)**。

   1. 在 **Data catalog settings (資料目錄設定)** 頁面上，選取 **Metadata encryption (中繼資料加密)**。此選項會使用您選擇的 AWS KMS 金鑰來加密 Data Catalog 中的所有物件。

   1.  如為 **AWS KMS 金鑰**，選擇 **aws/glue**。您也可以選擇您建立的 AWS KMS 金鑰。
**重要**  
AWS Glue 僅支援對稱客戶主金鑰 (CMK)。**AWS KMS key (KMS 金鑰)** 清單僅會顯示對稱金鑰。不過，如果您選取**選擇 AWS KMS 金鑰 ARN**，主控台可讓您輸入任何金鑰類型的 ARN。請確定您僅輸入對稱金鑰的 ARN。

   啟用加密時，存取資料目錄的用戶端必須具有 AWS KMS ​ 許可。

1. 在導覽窗格中，選擇 **Security configurations (安全組態)**。安全組態是一組安全屬性，可用來設定 AWS Glue 程序。然後選擇 **Add security configuration (新增安全組態)**。在組態中，選擇以下任一個選項：

   1. 選取 **S3 encryption (S3 加密)**。針對 **Encryption mode (加密模式)** 選擇 **SSE-KMS**。針對 **AWS KMS key (金鑰)**，選擇 **aws/s3** (確認使用者具有使用此金鑰的許可)。這可讓任務寫入 Amazon S3 的資料使用 受管 AWS AWS Glue AWS KMS 金鑰。

   1. 選取 **CloudWatch logs encryption (CloudWatch Logs 加密)**，然後選擇某個 CMK。(請確認使用者具有使用此金鑰的許可)。如需詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[使用 AWS KMS在 CloudWatch Logs 中加密日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。
**重要**  
AWS Glue 僅支援對稱客戶主金鑰 (CMK)。**AWS KMS key (KMS 金鑰)** 清單僅會顯示對稱金鑰。不過，如果您選取**選擇 AWS KMS 金鑰 ARN**，主控台可讓您輸入任何金鑰類型的 ARN。請確定您僅輸入對稱金鑰的 ARN。

   1. 選擇 **Advanced properties (進階屬性)**，並選取 **Job bookmark encryption (任務書籤加密)**。針對 **AWS KMS key (金鑰)**，選擇 **aws/glue** (確認使用者具有使用此金鑰的許可)。這可使用 AWS Glue AWS KMS 金鑰加密寫入 Amazon S3 的任務書籤。

1. 在導覽窗格中，選擇 **Connections** (連線)。

   1. 選擇 **Add connection (新增連線)** 建立與 Java Database Connectivity (JDBC) 資料存放區的連線，這是您 ETL 任務的目標。

   1. 若要強制使用 Secure Sockets Layer (SSL) 加密，請選取 **Require SSL connection (需要 SSL 連接)** 並測試連線。

1. 在導覽窗格中，選擇 **Jobs (任務)**。

   1. 選擇 **Add job (新增任務)** 建立轉換資料的任務。

   1. 在任務定義中，選擇您建立的安全組態。

1. 在 AWS Glue 主控台上，隨需執行您的任務。確認任務寫入的任何 Amazon S3 資料、任務寫入的 CloudWatch Logs 以及任務書籤都已全部加密。