使用受管儲存體加密 Amazon EMR on EKS 日誌 - Amazon EMR

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

使用受管儲存體加密 Amazon EMR on EKS 日誌

以下各節說明如何設定日誌的加密。

Enable encryption (啟用加密)

若要使用您自己的 KMS 金鑰加密受管儲存體中的日誌,請在提交任務執行時使用下列組態。

"monitoringConfiguration": { "managedLogs": { "allowAWSToRetainLogs":"ENABLED", "encryptionKeyArn":"KMS key arn" }, "persistentAppUI": "ENABLED" }

allowAWSToRetainLogs 組態允許 在使用原生 FGAC 執行任務時 AWS 保留系統命名空間日誌。persistentAppUI 組態允許 AWS 儲存用於產生 Spark UI 的事件日誌。encryptionKeyArn 用於指定您要用來加密所存放日誌的 KMS 金鑰 ARN AWS。

日誌加密的必要許可

提交任務或檢視 Spark UI 的使用者必須允許kms:Decrypt加密金鑰的動作 kms:DescribeKeykms:GenerateDataKey和 。這些許可用於驗證金鑰的有效性,並檢查使用者是否具有使用 KMS 金鑰加密的讀取和寫入日誌的必要許可。如果提交任務的使用者缺少必要的金鑰許可,Amazon EMR on EKS 會拒絕任務執行提交。

用於呼叫 StartJobRun 的角色的 IAM 政策範例

{ "Version": "2012-10-17", "Statement": [ { "Action": "emr-containers:StartJobRun", "Resource": "*", "Effect": "Allow" }, { "Action": [ "kms:DescribeKey", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "KMS key ARN", "Effect": "Allow" } ] }

您也必須設定 KMS 金鑰,以允許 persistentappui.elasticmapreduce.amazonaws.com.rproxy.govskope.caelasticmapreduce.amazonaws.com 服務主體存取 kms:GenerateDataKeykms:Decrypt。這可讓 EMR 讀取和寫入使用 KMS 金鑰加密的日誌至受管儲存。

KMS 金鑰政策範例

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "IAM role ARN used to call StartJobRun" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringLike": { "kms:viaService": "emr-containers.region.amazonaws.com" } } }, { "Effect": "Allow", "Principal": { "AWS": "IAM role ARN used to call StartJobRun" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:viaService": "emr-containers.region.amazonaws.com", "kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id" } } }, { "Effect": "Allow", "Principal": { "Service": [ "persistentappui.elasticmapreduce.amazonaws.com", "elasticmapreduce.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:emr-containers:virtualClusterId": "virtual cluster id", "aws:SourceArn": "virtual cluster ARN" } } } ] }

作為安全最佳實務,我們建議您新增 kms:viaServicekms:EncryptionContextaws:SourceArn條件。這些條件有助於確保金鑰僅供 Amazon EMR on EKS 使用,且僅用於從特定虛擬叢集中執行的任務所產生的日誌。