Usa la CMEK con Google Cloud Serverless for Apache Spark

De forma predeterminada, Google Cloud Serverless para Apache Spark encripta el contenido del cliente almacenado en reposo. Serverless para Apache Spark controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Serverless para Apache Spark. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite hacer un seguimiento del uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Serverless para Apache Spark es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

Usa CMEK

Sigue los pasos de esta sección para usar CMEK para encriptar los datos que Google Cloud Serverless para Apache Spark escribe en el disco persistente y en el bucket de etapa de pruebas de Dataproc.

Puedes usar Cloud Key Management Service para crear y administrar llaveros de claves y claves, o usar Cloud KMS Autokey para la creación automática simplificada de llaveros de claves y claves.

Usa Cloud KMS Autokey

  1. Habilita Autokey en la carpeta que contiene tu proyecto.
  2. Crea un identificador de clave. Cuando crees el identificador de clave, especifica dataproc.googleapis.com/Batch o dataproc.googleapis.com/Session como el --resource-type. Autokey genera una clave y la asigna al identificador de clave.
  3. Otorga permisos a las cuentas de servicio y configura tu carga de trabajo por lotes o de sesión siguiendo los pasos 4 y 5 de la sección Crea y usa claves de forma manual que se muestra a continuación. Cuando envíes tu carga de trabajo, especifica el nombre del recurso del identificador de clave en lugar del nombre del recurso de la clave en el campo kmsKey.

Crea y usa claves de forma manual

Sigue estos pasos para crear claves de Cloud KMS de forma manual y usarlas con Serverless para Apache Spark.

  1. Crea una clave con el Cloud Key Management Service (Cloud KMS).

  2. Copia el nombre del recurso.

    Copia el nombre del recurso.
    El nombre del recurso se construye de la siguiente manera:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

  3. Habilita las cuentas de servicio del agente de servicio de Compute Engine, Dataproc y Cloud Storage para que usen tu clave:

    1. Consulta Protege los recursos con claves de Cloud KMS > Roles obligatorios para asignar el rol de Encriptador/Desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio del agente de servicio de Compute Engine. Si esta cuenta de servicio no aparece en la página de IAM en la Google Cloud consola, haz clic en Incluir asignaciones de roles proporcionadas por Google para que aparezca.
    2. Asigna el rol de Encriptador/Desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio del agente de servicio de Dataproc. Puedes usar Google Cloud CLI para asignar el rol:

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Reemplaza lo siguiente:

      KMS_PROJECT_ID: Es el ID del proyecto que Google Cloud ejecuta Cloud KMS. Este proyecto también puede ser el que ejecuta recursos de Dataproc.

      PROJECT_NUMBER: Es el número del proyecto (no el ID del proyecto) que ejecuta recursos de Dataproc. Google Cloud

    3. Habilita la API de Cloud KMS en el proyecto que ejecuta recursos de Serverless para Apache Spark.

    4. Si el rol de agente de servicio de Dataproc no está adjunto a la cuenta de servicio del agente de servicio de Dataproc, agrega el permiso serviceusage.services.use al rol personalizado adjunto a la cuenta de servicio del agente de servicio de Dataproc. Si el rol de agente de servicio de Dataproc está adjunto a la cuenta de servicio del agente de servicio de Dataproc, puedes omitir este paso.

    5. Sigue los pasos para agregar tu clave en el bucket.

  4. Cuando envíes una carga de trabajo por lotes, haz lo siguiente:

    1. Especifica tu clave en el parámetro kmsKey del lote.
    2. Especifica el nombre de tu bucket de Cloud Storage en el parámetro stagingBucket del lote.
  5. Cuando crees una sesión interactiva o una plantilla de sesión, haz lo siguiente:

    1. Especifica tu clave en el parámetro kmsKey de la sesión.
    2. Especifica el nombre de tu bucket de Cloud Storage en el parámetro de la sesión stagingBucket.