マネージドストレージを使用した Amazon EMR on EKS ログの暗号化 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マネージドストレージを使用した Amazon EMR on EKS ログの暗号化

以下のセクションでは、ログの暗号化を設定する方法を示します。

Enable encryption

マネージドストレージのログを独自の 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:DescribeKeykms: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" } ] }

また、 persistentappui.elasticmapreduce.amazonaws.comおよび elasticmapreduce.amazonaws.comサービスプリンシパルに kms:GenerateDataKeyおよび を許可するように KMS キーを設定する必要があります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 でのみ使用され、特定の仮想クラスターで実行されているジョブから生成されたログにのみ使用されるようにするのに役立ちます。