本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用受管儲存體加密 Amazon EMR on EKS 日誌
以下各節說明如何設定日誌的加密。
啟用加密
若要使用您自己的 KMS 金鑰加密受管儲存中的日誌,請在提交任務執行時使用下列組態。
"monitoringConfiguration": {
"managedLogs": {
"allowAWSToRetainLogs":"ENABLED",
"encryptionKeyArn":"KMS key arn"
},
"persistentAppUI": "ENABLED"
}
allowAWSToRetainLogs 組態允許 AWS 在使用原生 FGAC 執行任務時保留系統命名空間日誌。persistentAppUI 組態允許 AWS 儲存用於產生 Spark UI 的事件日誌。encryptionKeyArn 用於指定您要用來加密所存放日誌的 KMS 金鑰 ARN AWS。
日誌加密的必要許可
提交任務或檢視 Spark UI 的使用者必須允許kms:Decrypt加密金鑰的動作 kms:DescribeKey、 kms:GenerateDataKey和 。這些許可用於驗證金鑰的有效性,並檢查使用者是否具有讀取和寫入使用 KMS 金鑰加密之日誌的必要許可。如果提交任務的使用者缺少必要的金鑰許可,Amazon EMR on EKS 會拒絕任務執行提交。
用於呼叫 StartJobRun 的角色的 IAM 政策範例
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Action": [
"emr-containers:StartJobRun"
],
"Resource": [
"*"
],
"Effect": "Allow",
"Sid": "AllowEMRCONTAINERSStartjobrun"
},
{
"Action": [
"kms:DescribeKey",
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"arn:aws:kms:*:*:key/key-id"
],
"Effect": "Allow",
"Sid": "AllowKMSDescribekey"
}
]
}
您也必須設定 KMS 金鑰,以允許 persistentappui.elasticmapreduce.amazonaws.com和 elasticmapreduce.amazonaws.com 服務主體使用 kms:GenerateDataKey和 kms:Decrypt。這可讓 EMR 將 KMS 金鑰加密的日誌讀取和寫入受管儲存。
範例 KMS 金鑰政策
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:DescribeKey"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"kms:viaService": "emr-containers.*.amazonaws.com"
}
},
"Sid": "AllowKMSDescribekey"
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"kms:viaService": "emr-containers.*.amazonaws.com",
"kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id"
}
},
"Sid": "AllowKMSDecryptGenerate"
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:emr-containers:*:*:/virtualclusters/virtual_cluster_id"
}
},
"Sid": "AllowKMSDecryptService"
}
]
}
作為安全最佳實務,我們建議您新增 kms:viaService、 kms:EncryptionContext和 aws:SourceArn條件。這些條件有助於確保金鑰僅供 Amazon EMR on EKS 使用,並僅用於從特定虛擬叢集中執行的任務產生的日誌。