Criptografia de disco com KMS CMK - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criptografia de disco com KMS CMK

O EMR Serverless criptografa todos os discos conectados aos trabalhadores por padrão usando chaves de criptografia de propriedade do serviço. Opcionalmente, você pode optar por criptografar esses discos usando suas próprias chaves gerenciadas pelo AWS KMS cliente (). CMKs Isso fornece mais controle sobre suas chaves de criptografia, incluindo a capacidade de estabelecer e manter políticas de chaves e auditar o uso de chaves.

Você pode configurar a criptografia de disco ao criar um aplicativo ou ao enviar trabalhos individuais. Quando ativadas no nível do aplicativo, todas as tarefas desse aplicativo herdam as configurações de criptografia. Você também pode substituir o padrão do aplicativo especificando uma configuração de criptografia de disco ao enviar um trabalho.

nota

A criptografia de disco do EMR Serverless suporta somente chaves KMS simétricas. As chaves do KMS assimétricas não são aceitas. Você deve usar uma chave KMS de criptografia simétrica que foi criada em. AWS KMS Para obter mais informações sobre AWS KMS, consulte O que é AWS KMS?

Usando o contexto de criptografia

Opcionalmente, o EMR Serverless usa contexto de criptografia para fornecer dados autenticados adicionais para operações de criptografia. O contexto de criptografia é um conjunto de pares de valores-chave que podem conter dados autenticados adicionais não secretos. O contexto de criptografia é vinculado criptograficamente aos dados criptografados, portanto, o mesmo contexto de criptografia é necessário para descriptografar os dados.

No EMR Serverless, você pode especificar o contexto de criptografia personalizado ao configurar a criptografia de disco. Esse contexto de criptografia é incluído nos AWS CloudTrail registros para ajudar você a identificar e entender suas operações do KMS.

nota

Não armazene informações confidenciais no contexto de criptografia, pois elas aparecem em texto simples nos AWS CloudTrail registros.

Configurando a criptografia de disco com chaves gerenciadas pelo cliente

CreateApplication

Para criptografar discos com sua própria chave KMS, inclua o diskEncryptionConfiguration parâmetro ao criar um aplicativo EMR Serverless.

aws emr-serverless create-application \ --type TYPE \ --name APPLICATION_ID \ --release-label RELEASE_LABEL \ --region AWS_REGION \ --disk-encryption-configuration '{ "encryptionKeyArn": "key-arn", "encryptionContext": { "key": "value" } }'

UpdateApplication

Para atualizar o contexto de criptografia and/or ARN da chave KMS, especifique diskEncryptionConfiguration o parâmetro com os novos valores ao atualizar um aplicativo.

aws emr-serverless update-application \ --name APPLICATION_ID \ --region AWS_REGION \ --disk-encryption-configuration '{ "encryptionKeyArn": "key-arn", "encryptionContext": { "key": "value" } }'
nota

Para cancelar a configuração da criptografia de disco em um aplicativo, passe um vazio diskEncryptionConfiguration durante a atualização do aplicativo.

StartJobRun

Para criptografar discos com sua própria chave KMS, use a diskEncryptionConfiguration configuração ao enviar uma execução de trabalho.

--configuration-overrides '{ "diskEncryptionConfiguration": { "encryptionKeyArn": "key-arn", "encryptionContext": { "key": "value" } } }'

Endpoints públicos do Livy

Para criptografar discos com sua própria chave KMS ao criar sessões do Spark por meio de endpoints públicos do Livy, especifique a configuração de criptografia no objeto da sessão. conf

data = { "kind": "pyspark", "heartbeatTimeoutInSecond": 60, "conf": { "emr-serverless.session.executionRoleArn": "role_arn", "spark.emr-serverless.disk.encryptionKeyArn": "key-arn", "spark.emr-serverless.disk.encryptionContext": "key1:value1,key2:value2" # Optional } } # Send request to create a session with the Livy API endpoint request = AWSRequest(method='POST', url=endpoint + "/sessions", data=json.dumps(data), headers=headers)

Permissões necessárias para criptografia de disco

Permissões de chave de criptografia para EMR Serverless

Ao criptografar discos com sua própria chave de criptografia, você deve configurar as seguintes permissões de chave KMS para o principal: emr-serverless.amazonaws.com

  • kms:GenerateDataKey: Para gerar chaves de dados para criptografar volumes de disco

  • kms:Decrypt: Para descriptografar chaves de dados ao acessar o conteúdo do disco criptografado

{ "Effect": "Allow", "Principal":{ "Service": "emr-serverless.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:emr-serverless:region:aws-account-id:/applications/application-id" }, "StringEquals": { "kms:EncryptionContext:applicationId": "application-id", "aws:SourceAccount": "aws-account-id" } } }

Como uma prática recomendada de segurança, adicione uma chave de condição aws:SourceArn à política de chave do KMS. A chave de condição global do IAM aws:SourceArn ajuda a garantir que o EMR Sem Servidor use a chave do KMS somente para o ARN da aplicação. Além disso, incluir a chave de aws:SourceAccount condição fornece outra camada de segurança ao restringir o uso da sua chave KMS às solicitações originadas do ID da AWS conta especificado na condição.

O perfil de runtime do trabalho deve ter as seguintes permissões na política do IAM:

{ "Sid": "Enable GDK and Decrypt", "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" } }

Permissões obrigatórias do usuário

O usuário que envia o trabalho deve ter permissões para usar a chave. Você pode especificar as permissões na política de chave do KMS ou na política do IAM para o usuário, grupo ou perfil. Se o usuário que envia o trabalho não tiver as permissões da chave do KMS, o EMR Sem Servidor rejeitará o envio da execução do trabalho.

Exemplo de política de chaves

A política de chaves a seguir fornece as permissões parakms:DescribeKey, kms:GenerateDataKey ekms:Decrypt:

  • kms:DescribeKey: para verificar se a chave KMS gerenciada pelo cliente está ativada e é SIMÉTRICA antes de usá-la.

{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal":{ "AWS": "arn:aws:iam::111122223333:user/user-name" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Enable GDK and Decrypt", "Effect": "Allow", "Principal":{ "AWS": "arn:aws:iam::111122223333:user/user-name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "emr-serverless.region.amazonaws.com", "kms:EncryptionContext:key": "value" } } }

Como uma prática recomendada de segurança, adicione uma chave de condição kms:viaService à política de chave do KMS. Isso limita o uso da chave KMS para solicitações de validação apenas do emr-serverless.

Exemplo de política do IAM

A política do IAM a seguir fornece as permissões para kms:DescribeKey kms:GenerateDataKey kms:Decrypt e.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "key-arn" } }

Monitorando o uso da chave

Você pode monitorar o uso de suas chaves gerenciadas pelo cliente no EMR Serverless por meio de. AWS CloudTrail AWS CloudTrail captura todas as chamadas de API para AWS KMS como eventos, incluindo chamadas do console do EMR Serverless, da API do EMR Serverless, da CLI ou do SDK. AWS AWS

As informações capturadas incluem o contexto de criptografia que você especificou, o que pode ajudá-lo a identificar e auditar os recursos específicos do EMR Serverless que usaram sua chave KMS. Por exemplo, você pode ver eventos semelhantes aos seguintes em AWS CloudTrail. Para obter mais informações sobre o uso AWS CloudTrail, consulte o Guia AWS CloudTrail do usuário.

GenerateDataKey

Exemplo de evento para GenerateDataKey operações quando o EMR Serverless está criando volumes de disco criptografados

{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "principalId": "user", "invokedBy": "AWS Internal" }, "eventTime": "2025-07-28T21:43:51Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "ipAddress", "userAgent": "userAgent", "requestParameters": { "encryptionContext": { "applicationId": "test" }, "keyId": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample", "keySpec": "AES_256" }, "responseElements": null, "additionalEventData": { "keyMaterialId": "145c963debe558dfb01848d2a4539da940f3478852f86cfe2f52d5df796a5a02" }, "requestID": "cc9d1c5e-97c4-4a4f-ae7a-e576sample", "eventID": "0b0fef09-f28d-4da8-a5a1-17b74sample", "readOnly": true, "resources": [ { "accountId": "account", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "accountId", "eventCategory": "Management" }

Decrypt

Exemplo de evento para operações de descriptografia quando o EMR Serverless está acessando dados criptografados.

{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "principalId": "user", "invokedBy": "AWS Internal" }, "eventTime": "2025-07-28T21:43:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "ipAddress", "userAgent": "userAgent", "requestParameters": { "encryptionContext": { "applicationId": "test" }, "keyId": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample", "keySpec": "AES_256" }, "responseElements": null, "additionalEventData": { "keyMaterialId": "145c963debe558dfb01848d2a4539da940f3478852f86cfe2f52d5df796a5a02" }, "requestID": "cc9d1c5e-97c4-4a4f-ae7a-e576sample", "eventID": "0b0fef09-f28d-4da8-a5a1-17b74sample", "readOnly": true, "resources": [ { "accountId": "account", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:region:accountId:key/ffffffff-fffff-aaaaa-eeee-sample" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "accountId", "eventCategory": "Management" }

Saiba mais

Os recursos a seguir fornecem mais informações sobre a criptografia de dados em repouso.