Usa la CMEK con Google Cloud Serverless for Apache Spark

De forma predeterminada, Google Cloud Serverless para Apache Spark encripta el contenido del cliente 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 for 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 la CMEK y 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.

  1. Crea una clave con 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 de Compute Engine, Dataproc y Cloud Storage Service Agent para que usen tu clave:

    1. Consulta Protege recursos con claves de Cloud KMS > Roles obligatorios para asignar el rol 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 consola de Google Cloud , 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 la función:

       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 de tu proyecto Google Cloud que ejecuta Cloud KMS. Este proyecto también puede ser el que ejecuta los recursos de Dataproc.

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

    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á asociado 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ías una carga de trabajo por lotes, sucede 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 creas una sesión interactiva o una plantilla de sesión, haz lo siguiente:

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