Claves de encriptación administradas por el cliente (CMEK)

Cuando utilizas Dataproc, los datos del trabajo y del clúster se almacenan en discos persistentes (PD) asociados a las VM de Compute Engine en tu clúster y en un bucket de etapa de pruebas de Cloud Storage. Estos datos en PD y en el bucket se encriptan con una clave de encriptación de datos (DEK) generada por Google y una clave de encriptación de claves (KEK). La función de CMEK te permite crear, usar, y revocar las claves de encriptación de claves (KEK). Google aún controla la clave de encriptación de datos (DEK). Para obtener más información sobre las claves de encriptación de datos de Google, consulta Encriptación en reposo.

Usa CMEK

Puedes usar CMEK para encriptar datos en los PD asociados con las VM en tu clúster de Dataproc o los metadatos del clúster y el resultado del trabajo escrito en el bucket de staging de Dataproc. Sigue los pasos 1 y 2, luego sigue los pasos 3, 4 o 5, a continuación, para usar CMEK con los PD del clúster, el bucket de Cloud Storage o ambos, respectivamente.

  1. Crea una clave con Cloud Key Management Service (Cloud KMS). Copia el nombre del recurso, que puedes usar en los pasos siguientes. El nombre del recurso se construye de la siguiente manera:
    projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    
  2. A fin de habilitar las cuentas de servicio de Compute Engine y Cloud Storage para que usen tu clave, sigue estos pasos:

    1. Sigue el elemento n.o 5 de Compute Engine→Protege los recursos con las claves de Cloud KMS→Antes de comenzar para asignar la función CryptoKey Encrypter/Decrypter de Cloud KMS al agente de servicio de Compute Engine.
    2. Asigna la función CryptoKey Encrypter/Decrypter de Cloud KMS al agente de servicio de Cloud Storage.
  3. Puedes usar la CLI de Google Cloud o la API de Dataproc para configurar la clave que creaste en el Paso 1 en los PD asociados con las VM en el clúster de Dataproc.

    Comando de gcloud

    Transfiere el ID del recurso de Cloud KMS que obtuviste en el Paso 1 a la marca --gce-pd-kms-key cuando crees el clúster con el comando gcloud dataproc clusters create.

    Ejemplo:

    gcloud dataproc clusters create my-cluster-name \
        --region=region \
        --gce-pd-kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \
        other args ...
    

    Puedes verificar la configuración de la clave desde la herramienta de línea de comandos de gcloud.

    gcloud dataproc clusters describe cluster-name \
        --region=region
    
    ...
    configBucket: dataproc- ...
    encryptionConfig:
    gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
    ...
    

    API de REST

    Usa ClusterConfig.EncryptionConfig.gcePdKmsKeyName como parte de una solicitud cluster.create.

    Para verificar la configuración de la clave, emite una solicitud clusters.get. El archivo JSON que se muestra contiene listas de gcePdKmsKeyName:

    ...
    {
    "projectId": "project-id",
    "clusterName": "cluster-name",
    "config": {
       "encryptionConfig": {
      "gcePdKmsKeyName": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name"
    }
    },
    

  4. Para usar CMEK en el bucket de Cloud Storage que usa Dataproc a fin de leer y escribir datos de trabajos y de clústeres, crea un bucket con CMEK. Nota: Usa la clave que creaste en el Paso 1 cuando agregues la clave en el bucket . Luego, pasa el nombre del bucket al comando gcloud dataproc clusters create cuando crees el clúster.

    Ejemplo:

    gcloud dataproc clusters create my-cluster \
        --region=region \
        --bucket=name-of-CMEK-bucket \
        other args ...
    

    También puedes pasar un bucket habilitado por CMEK al comando gcloud dataproc jobs submit si tu trabajo toma argumentos de bucket s (consulta los argumentos ...cmek-bucket... de bucket en el siguiente ejemplo de envío de trabajos de PySpark).

    Ejemplo:
    gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \
        --region=region \
        --cluster=cluster-name \
        -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
    

  5. Para usar CMEK en los PD de tu clúster y el bucket de Cloud Storage que utiliza Dataproc, pasa las marcas --gce-pd-kms-key y --bucket al comando gcloud dataproc clusters create como se explicó en los Pasos 3 y 4. Puedes crear y usar una clave diferente para los datos de PD y los datos de depósitos.

Cloud External Key Manager

Cloud External Key Manager (EKM) te permite proteger los datos de Dataproc con claves administradas por un socio de administración de claves externo compatible. Los pasos que sigues para usar EKM en Dataproc son los mismos que usas a fin de configurar claves de CMEK, con la siguiente diferencia: tu clave apunta a un URI para la clave administrada de forma externa (consulta Descripción general de Cloud EKM).

Errores de Cloud EKM

Cuando usas Cloud EKM, un intento de crear un clúster puede fallar debido a errores asociados con entradas, Cloud EKM, el sistema de administración de claves externas, o comunicaciones entre EKM y el sistema externo. Si usas la API de REST o Google Cloud Console, los errores se registran en Logging. Puedes examinar los errores del clúster con errores desde la pestaña “Ver registros”.