

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
<a name="disk-encryption-cmk"></a>

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 claves administradas por el AWS KMS cliente (CMK). Esto le brinda más control sobre sus claves de cifrado, incluida la capacidad de establecer y mantener políticas de claves y auditar el uso de las claves.

Puede configurar el cifrado del disco al crear una aplicación 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 discos sin servidor EMR 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 al respecto AWS KMS, consulte [ ¿Qué es? AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)

## Uso del contexto de cifrado
<a name="disk-encryption-context"></a>

De manera opcional, EMR Serverless usa 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 del disco. Este contexto de cifrado se incluye en AWS CloudTrail los registros para ayudarlo a identificar y comprender sus operaciones de KMS.

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

## Configuración del cifrado de discos con claves administradas por el cliente
<a name="disk-encryption-configure"></a>

### CreateApplication
<a name="disk-encryption-create-app"></a>

Para cifrar discos con su propia clave de KMS, incluya el `diskEncryptionConfiguration` parámetro al crear una aplicación EMR sin servidor.

```
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
<a name="disk-encryption-update-app"></a>

Para actualizar el contexto de and/or cifrado ARN de la clave de 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 desactivar el cifrado de disco configurado en una aplicación, coloque una casilla vacía `diskEncryptionConfiguration` durante la actualización de la aplicación.

### StartJobRun
<a name="disk-encryption-start-job"></a>

Para cifrar discos con tu propia clave de KMS, usa la `diskEncryptionConfiguration` configuración cuando ejecutes una tarea.

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

### Puntos finales de Public Livy
<a name="disk-encryption-livy"></a>

Para cifrar discos con tu propia clave de KMS al crear sesiones de Spark a través de terminales 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 de discos
<a name="disk-encryption-permissions"></a>

### Permisos de clave de cifrado para EMR Serverless
<a name="disk-encryption-key-permissions"></a>

Al cifrar discos con su propia clave de cifrado, debe configurar los siguientes permisos de clave de 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 cifrado del disco

```
{
    "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, incluir la clave de `aws:SourceAccount` condición proporciona otro nivel de seguridad al restringir el uso de la clave de KMS a las solicitudes que se originan en el ID 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:

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

### Permisos de usuario necesarios
<a name="disk-encryption-user-permissions"></a>

El usuario que envíe 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
<a name="disk-encryption-example-key-policy"></a>

La siguiente política de claves proporciona los permisos para `kms:DescribeKey` `kms:GenerateDataKey` y`kms:Decrypt`:
+ `kms:DescribeKey`: Para verificar que la clave de KMS administrada por el cliente esté habilitada y sea simétrica antes de usarla.

```
{
    "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 de KMS a las solicitudes de validación realizadas únicamente por emr-serverless.

#### Política de IAM de ejemplo
<a name="disk-encryption-example-iam-policy"></a>

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": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
    }
}
```

## Supervisión del uso de las claves
<a name="disk-encryption-monitoring"></a>

Puede supervisar el uso de las claves administradas por sus clientes en EMR Serverless a través de. 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 sin servidor, la CLI o el SDK de EMR. AWS AWS 

La información capturada incluye el contexto de cifrado que especificó, que puede ayudarlo a identificar y auditar los recursos específicos de EMR Serverless que usaron su clave de KMS. Por ejemplo, es posible que vea eventos similares a los siguientes en. AWS CloudTrail Para obtener más información sobre el uso AWS CloudTrail, consulte la Guía [AWS CloudTrail del usuario](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

### GenerateDataKey
<a name="disk-encryption-monitoring-gdk"></a>

Ejemplo de evento para GenerateDataKey operaciones en las que 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
<a name="disk-encryption-monitoring-decrypt"></a>

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
<a name="disk-encryption-learn-more"></a>

Los siguientes recursos proporcionan más información sobre cifrado de datos en reposo.
+ Para obtener más información sobre los conceptos AWS KMS básicos, consulte la [AWS KMS Guía para desarrolladores. ](https://docs.aws.amazon.com/kms/latest/developerguide/)
+ Para obtener más información sobre las prácticas recomendadas de seguridad AWS KMS, consulte la Guía para [AWS KMS desarrolladores](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html).