Criptografar logs do Amazon EMR no EKS com armazenamento gerenciado - Amazon EMR

Criptografar logs do Amazon EMR no EKS com armazenamento gerenciado

As seções a seguir mostram como configurar a criptografia para logs.

Enable encryption (Habilitar criptografia)

Para criptografar logs no armazenamento gerenciado com sua própria chave do KMS, use a configuração a seguir ao enviar uma execução de trabalho.

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

A configuração allowAWSToRetainLogs permite que a AWS retenha os logs do namespace do sistema ao executar um trabalho usando o FGAC nativo. A configuração persistentAppUI permite que a AWS salve logs de eventos que são usados para gerar a IU do Spark. encryptionKeyArn é usado para especificar o ARN da chave do KMS que você deseja usar para criptografar os log armazenados pela AWS.

Permissões necessárias para criptografia de logs

O usuário que envia o trabalho ou visualiza a IU do Spark deve ter permissão para as ações kms:DescribeKey, kms:GenerateDataKey e kms:Decrypt para a chave de criptografia. Essas permissões são usadas para verificar a validade da chave e confirmar que o usuário possui as permissões necessárias para ler e gravar logs criptografados com a chave do KMS. Se o usuário que envia o trabalho não tiver as permissões necessárias, o Amazon EMR no EKS rejeitará o envio da execução do trabalho.

Exemplo de política do IAM para perfil usado para chamar StartJobRun

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" } ] }

Você também deve configurar a chave do KMS para permitir as entidades principais persistentappui.elasticmapreduce.amazonaws.com e elasticmapreduce.amazonaws.com para kms:GenerateDataKey e kms:Decrypt. Isso permite que o EMR leia e grave logs criptografados com a chave do KMS no armazenamento gerenciado.

Exemplo de política de chave do 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" } ] }

Como práticas recomendadas de segurança, recomendamos que você adicione as condições kms:EncryptionContext, kms:viaService e aws:SourceArn. Essas condições ajudam a garantir que a chave seja usada somente pelo Amazon EMR no EKS e usada exclusivamente para logs gerados a partir de trabalhos executados em um cluster virtual específico.