View a markdown version of this page

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 ativado no nível do aplicativo, todos os trabalhos nesse 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 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 o 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 está incluído nos AWS CloudTrail registros para ajudar você a identificar e entender suas operações de KMS.

nota

Não armazene informações confidenciais no contexto de criptografia, pois elas aparecem em texto sem formatação 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 and/or criptografia do ARN da chave KMS, especifique o diskEncryptionConfiguration 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 remover a criptografia de disco configurada em um aplicativo, passe um aplicativo vazio diskEncryptionConfiguration durante a atualização.

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 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:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }

Permissões obrigatórias do usuário

O usuário que envia o trabalho precisa 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 para kms:DescribeKey kms:GenerateDataKey ekms:Decrypt:

  • kms:DescribeKey: para verificar se a chave KMS gerenciada pelo cliente está habilitada 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 às 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 parakms:DescribeKey, kms:GenerateDataKey kms:Decrypt e.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }

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 AWS KMS como eventos, incluindo chamadas do console EMR Serverless, API EMR Serverless, CLI ou 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.

  • Para obter mais informações sobre conceitos AWS KMS básicos, consulte o Guia do AWS KMS desenvolvedor.

  • Para obter mais informações sobre as melhores práticas de segurança para AWS KMS, consulte o Guia do AWS KMS desenvolvedor.