Cifrado de disco con KMS CMK - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cifrado de disco con KMS CMK

EMR Serverless cifra todos los discos conectados a los trabajadores de forma predeterminada mediante claves de cifrado propiedad del servicio. Si lo desea, puede optar por cifrar estos discos con sus propias AWS KMS claves administradas por el cliente (). CMKs Esto le proporciona un mayor control sobre sus claves de cifrado, incluida la posibilidad de establecer y mantener políticas de claves y auditar el uso de las claves.

Puede configurar el cifrado del disco al crear una solicitud o al enviar trabajos individuales. Cuando se habilita en el nivel de la aplicación, todos los trabajos de esa aplicación heredan la configuración de cifrado. También puede anular la configuración predeterminada de la aplicación especificando una configuración de cifrado de disco al enviar un trabajo.

nota

El cifrado de disco EMR Serverless solo admite claves KMS simétricas. No se admiten claves de KMS asimétricas. Debe usar una clave KMS de cifrado simétrico que se creó en. AWS KMS Para obtener más información AWS KMS, consulte ¿Qué es? AWS KMS

Uso del contexto de cifrado

Opcionalmente, EMR Serverless utiliza el contexto de cifrado para proporcionar datos autenticados adicionales para las operaciones de cifrado. El contexto de cifrado es un conjunto de pares clave-valor que pueden contener datos autenticados adicionales no secretos. El contexto de cifrado está vinculado criptográficamente a los datos cifrados, por lo que se requiere el mismo contexto de cifrado para descifrar los datos.

En EMR Serverless, puede especificar el contexto de cifrado personalizado al configurar el cifrado de disco. Este contexto de cifrado se incluye en AWS CloudTrail los registros para ayudarle a identificar y comprender sus operaciones de KMS.

nota

No almacene información confidencial en un contexto de cifrado, ya que aparece en texto plano en AWS CloudTrail los registros.

Configuración del cifrado de disco con claves administradas por el cliente

CreateApplication

Para cifrar los discos con su propia clave KMS, incluya el diskEncryptionConfiguration parámetro al crear una aplicación 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 actualizar el contexto de and/or cifrado ARN de la clave KMS, especifique el diskEncryptionConfiguration parámetro con los nuevos valores al actualizar una aplicación.

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

Para anular el cifrado de disco configurado en una aplicación, pase una aplicación vacía diskEncryptionConfiguration durante la actualización.

StartJobRun

Para cifrar los discos con su propia clave KMS, utilice la diskEncryptionConfiguration configuración cuando envíe una ejecución de trabajo.

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

Puntos finales de Public Livy

Para cifrar los discos con tu propia clave KMS al crear sesiones de Spark a través de puntos finales públicos de Livy, especifica la configuración de cifrado en el objeto de la sesión. 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)

Permisos necesarios para el cifrado del disco

Permisos de clave de cifrado para EMR Serverless

Al cifrar los discos con su propia clave de cifrado, debe configurar los siguientes permisos de clave KMS para el principal: emr-serverless.amazonaws.com

  • kms:GenerateDataKey: Para generar claves de datos para cifrar volúmenes de disco

  • kms:Decrypt: Para descifrar las claves de datos al acceder al contenido del disco cifrado

{ "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 práctica recomendada de seguridad, le sugerimos que agregue una clave de condición aws:SourceArn a la política de claves de KMS. La clave de condición global de IAM aws:SourceArn ayuda a garantizar que EMR sin servidor utilice la clave de KMS solo para un ARN de aplicación. Además, la inclusión de la clave de aws:SourceAccount condición proporciona otro nivel de seguridad al restringir el uso de la clave KMS a las solicitudes que se originen en el identificador de AWS cuenta especificado en la condición.

El rol de tiempo de ejecución del trabajo debe tener los siguientes permisos en su política de IAM:

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

Permisos de usuario necesarios

El usuario que envía el trabajo debe tener permisos para usar la clave. Puede especificar los permisos en la política de claves de KMS o en la política de IAM para el usuario, el grupo o el rol. Si el usuario que envía el trabajo carece de los permisos clave de KMS, EMR sin servidor rechaza el envío de la ejecución del trabajo.

Política de claves de ejemplo

La siguiente política clave proporciona los permisos para kms:DescribeKey kms:GenerateDataKey ykms:Decrypt:

  • kms:DescribeKey: Para comprobar que la clave de KMS gestionada por el cliente está habilitada y es SIMÉTRICA antes de utilizarla.

{ "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 práctica recomendada de seguridad, le sugerimos que agregue una clave de condición kms:viaService a la política de claves de KMS. Limita el uso de la clave KMS a las solicitudes de validación solo desde emr-serverless.

Política de IAM de ejemplo

La siguiente política de IAM proporciona los permisos para, y. kms:DescribeKey kms:GenerateDataKey kms:Decrypt

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

Supervisión del uso de claves

Puede monitorear el uso de las claves administradas por el cliente en EMR Serverless mediante. AWS CloudTrail AWS CloudTrail captura todas las llamadas a la API AWS KMS como eventos, incluidas las llamadas desde la consola EMR Serverless, la API EMR Serverless, la CLI o el SDK. AWS AWS

La información capturada incluye el contexto de cifrado que especificó, que puede ayudarle a identificar y auditar los recursos EMR Serverless específicos que utilizaron su clave KMS. Por ejemplo, es posible que vea eventos similares a los siguientes en. AWS CloudTrail Para obtener más información sobre su uso AWS CloudTrail, consulte la Guía AWS CloudTrail del usuario.

GenerateDataKey

Ejemplo de evento para GenerateDataKey operaciones cuando EMR Serverless crea volúmenes de disco cifrados

{ "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

Ejemplo de evento para operaciones de descifrado cuando EMR Serverless accede a datos cifrados.

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

Más información

Los siguientes recursos proporcionan más información sobre cifrado de datos en reposo.