加密您的資料目錄
AWS Glue Data Catalog 加密為您的敏感資料提供增強的安全性。AWS Glue 與 AWS Key Management Service(AWS KMS) 整合,以加密儲存在 Data Catalog 中的中繼資料。您可以使用 AWS Glue 主控台或 AWS CLI,對 Data Catalog 中的資源啟用或停用加密設定。
在您為 Data Catalog 啟用加密時,您建立的所有新物件都會加密。在您停用加密時,您建立的新物件不會加密,但現有的加密物件將保持加密狀態。
您可以使用 AWS 受管加密金鑰或客戶受管加密金鑰來加密整個 Data Catalog。如需金鑰類型和狀態的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的 AWS Key Management Service 概念。
在將加密的 Data Catalog 與編目程式搭配使用時,您必須維護加密設定。如果在編目程式處理加密的型錄後移除加密設定,會導致錯誤。如果您需要移除加密設定,請建立新的編目程式,而不是修改現有的編目程式。
AWS 受管金鑰
AWS 受管金鑰是您帳戶中的 KMS 金鑰,由已與 AWS KMS 整合的 AWS 服務代表您建立、管理和使用。您可以檢視您的帳戶中的 AWS 受管金鑰,檢視其金鑰政策,以及在 AWS CloudTrail 日誌中稽核其使用方式。不過,您無法管理這些金鑰或變更其許可。
靜態加密會自動與 AWS KMS 整合,以管理用來加密中繼資料的適用 AWS Glue 的 AWS 受管金鑰。如果啟用中繼資料加密時不存在 AWS 受管金鑰,AWS KMS 會自動為您建立新金鑰。
如需詳細資訊,請參閱 AWS 受管金鑰。
客戶受管金鑰
客戶自管金鑰是您建立、擁有和管理的 AWS 帳戶 中的 KMS 金鑰。您擁有這些 KMS 金鑰的完整控制權。您可以:
-
建立和維護其金鑰政策、IAM 政策和授權
-
啟用和停用
-
輪換其密碼編譯資料
-
新增標籤
-
建立參考其別名
-
排定將其刪除
如需有關管理客戶受管金鑰的許可的詳細資訊,請參閱客戶受管金鑰。
AWS Glue 僅支援對稱客戶受管金鑰。KMS 金鑰清單僅會顯示對稱金鑰。不過,如果您選取選擇 KMS 金鑰 ARN,主控台可讓您輸入任何金鑰類型的 ARN。請確定您僅輸入對稱金鑰的 ARN。
若要建立對稱客戶受管金鑰,請依照《AWS Key Management Service 開發人員指南》中建立對稱客戶受管金鑰的步驟進行。
在您啟用靜態 Data Catalog 加密時,會使用 KMS 金鑰加密下列資源類型:
資料庫
資料表
資料分割
檔案版本
資料欄統計資料
使用者定義的函數
Data Catalog 檢視
AWS Glue 加密內容
加密內容是選用的一組鍵值對,可包含資料的其他內容資訊。AWS KMS 使用加密內容作為其他身分驗證資料,以支援身分驗證加密。在加密資料的請求中包含加密內容時,AWS KMS 會將加密內容繫結至加密的資料。若要解密資料,請在請求中包含相同的加密內容。AWS Glue 會在所有 AWS KMS 密碼編譯操作中使用相同的加密內容,其中金鑰為 glue_catalog_id,值為 catalogId。
"encryptionContext": {
"glue_catalog_id": "111122223333"
}
在您使用 AWS 受管金鑰或對稱的客戶受管金鑰加密 Data Catalog 時,您也可以在稽核記錄和日誌中使用加密內容,以指出金鑰的使用方式。加密內容也會出現在 AWS CloudTrail 或 Amazon CloudWatch 日誌所產生的日誌中。
啟用加密
您可以在 AWS Glue 主控台的 Data Catalog 設定中,或使用 AWS CLI 來啟用 AWS Glue Data Catalog 物件的加密。
- Console
-
使用主控台啟用加密
登入 AWS Management Console,並前往 https://console.aws.amazon.com/glue/ 開啟 AWS Glue 主控台。
-
在導覽窗格中,選擇 Data Catalog。
-
在 Data Catalog 設定頁面上,選取中繼資料加密核取方塊,然後選擇 AWS KMS 金鑰。
在啟用加密時,如果您未指定客戶受管金鑰,加密設定會使用 AWS 受管 KMS 金鑰。
-
(選用) 在您使用客戶受管金鑰來加密 Data Catalog 時,Data Catalog 會提供註冊 IAM 角色來加密和解密資源的選項。您需要授予您的 IAM 角色許可,以便 AWS Glue 可以代表您擔任。其中包括加密和解密資料的 AWS KMS 許可。
在 Data Catalog 中建立新的資源時,AWS Glue 會擔任提供用來加密資料的 IAM 角色。同樣,在取用者存取資源時,AWS Glue 會擔任 IAM 角色來解密資料。如果您使用所需的許可註冊 IAM 角色,呼叫主體不再需要存取金鑰和解密資料的許可。
只有在您使用客戶受管金鑰來加密 Data Catalog 資源時,才能將 KMS 操作委派給 IAM 角色。KMS 角色委派功能目前不支援使用 AWS 受管金鑰來加密 Data Catalog 資源。
在啟用 IAM 角色來委派 KMS 操作時,您無法再存取先前使用 AWS 受管金鑰加密的 Data Catalog 資源。
-
若要啟用 AWS Glue 可擔任的 IAM 角色來代表您加密和解密資料,請選取將 KMS 操作委派給 IAM 角色選項。
-
接下來,選擇 IAM 角色。
若要建立 IAM 角色,請參閱建立 AWS Glue IAM 角色。
AWS Glue 擔任存取 Data Catalog 的 IAM 角色必須具有在 Data Catalog 中加密和解密中繼資料的許可。您可以建立 IAM 角色,並連接下列內嵌政策:
-
新增下列政策,以包含加密和解密 Data Catalog 的 AWS KMS 許可。
JSON
- 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>"
}
]
}
-
接下來,將下列信任政策新增至 AWS Glue 服務的角色,以擔任 IAM 角色。
JSON
- JSON
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
接著,將 iam:PassRole 許可新增至 IAM 角色。
JSON
- JSON
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::111122223333:role/<encryption-role-name>"
]
}
]
}
啟用加密時,如果您尚未指定 AWS Glue 要擔任的 IAM 角色,則存取 Data Catalog 的主體必須具有執行下列 API 操作的許可:
-
kms:Decrypt
-
kms:Encrypt
-
kms:GenerateDataKey
- AWS CLI
-
使用軟體開發套件或 AWS CLI 啟用加密
-
使用 PutDataCatalogEncryptionSettings API 操作。如果未指定金鑰,AWS Glue 將使用客戶帳戶的 AWS 受管加密金鑰來加密 Data Catalog。
aws glue put-data-catalog-encryption-settings \
--data-catalog-encryption-settings '{
"EncryptionAtRest": {
"CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE",
"SseAwsKmsKeyId": "arn:aws:kms:<region>:<account-id>:key/<key-id>",
"CatalogEncryptionServiceRole":"arn:aws:iam::<account-id>:role/<encryption-role-name>"
}
}'
啟用加密時,您在 Data Catalog 物件中建立的所有物件都會加密。如果清除此設定,您在 Data Catalog 中建立的物件不再加密。您可以使用所需的 KMS 許可,繼續存取 Data Catalog 中現有的加密物件。
AWS KMS 金鑰必須在 AWS KMS 金鑰存放區保持可供任何物件使用的狀態,這些物件是在 Data Catalog 中使用該金鑰而加密的。如果您移除金鑰,就無法再解密該物件。在某些情況下,您可能要防止使用者存取 Data Catalog 中繼資料。
|
監控 AWS Glue 的 KMS 金鑰
將 KMS 金鑰與 Data Catalog 資源搭配使用時,您可以使用 AWS CloudTrail 或 Amazon CloudWatch Logs 來追蹤 AWS Glue 傳送至 AWS KMS 的請求。AWS CloudTrail 會監控並記錄 AWS Glue 呼叫的 KMS 操作,這些操作用於存取由 KMS 金鑰加密的資料。
下列範例是 Decrypt 和 GenerateDataKey 操作的 AWS CloudTrail 事件。
- Decrypt
-
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXPHTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2024-01-10T14:33:56Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "glue.amazonaws.com"
},
"eventTime": "2024-01-10T15:18:11Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "eu-west-2",
"sourceIPAddress": "glue.amazonaws.com",
"userAgent": "glue.amazonaws.com",
"requestParameters": {
"encryptionContext": {
"glue_catalog_id": "111122223333"
},
"encryptionAlgorithm": "SYMMETRIC_DEFAULT"
},
"responseElements": null,
"requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df",
"eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:<region>:111122223333:key/<key-id>"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management",
"sessionCredentialFromConsole": "true"
}
- GenerateDataKey
-
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXPHTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2024-01-05T21:15:47Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "glue.amazonaws.com"
},
"eventTime": "2024-01-05T21:15:47Z",
"eventSource": "kms.amazonaws.com",
"eventName": "GenerateDataKey",
"awsRegion": "eu-west-2",
"sourceIPAddress": "glue.amazonaws.com",
"userAgent": "glue.amazonaws.com",
"requestParameters": {
"keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE",
"encryptionContext": {
"glue_catalog_id": "111122223333"
},
"keySpec": "AES_256"
},
"responseElements": null,
"requestID": "64d1783a-4b62-44ba-b0ab-388b50188070",
"eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}