Usa claves de encriptación administradas por el cliente (CMEK)

En esta página, se describe cómo usar una clave de encriptación de Cloud Key Management Service (Cloud KMS) con Cloud Data Fusion.

Una clave de encriptación administrada por el cliente (CMEK) habilita la encriptación de datos en reposo con una clave que puedes controlar a través de Cloud KMS. Las CMEK proporcionan control del usuario sobre los datos escritos en los recursos internos de Google en proyectos de usuario y los datos escritos por las canalizaciones de Cloud Data Fusion, lo que incluye lo siguiente:

  • Registros y metadatos de la canalización
  • Metadatos del clúster de Dataproc
  • Receptores de datos de Cloud Storage, BigQuery, Pub/Sub y Cloud Spanner

Recursos de Cloud Data Fusion

Cloud Data Fusion admite CMEK para los siguientes complementos de Cloud Data Fusion:

  • Receptores de Cloud Data Fusion:

    • Cloud Storage
    • Archivos múltiples de Cloud Storage
    • BigQuery
    • Tablas múltiples de BigQuery
    • Pub/Sub
    • Spanner
  • Acciones de Cloud Data Fusion:

    • Creación de Cloud Storage
    • Ejecución de BigQuery

Cloud Data Fusion es compatible con CMEK en clústeres de Dataproc. Cloud Data Fusion crea un clúster temporal de Dataproc para usarlo en la canalización y, luego, lo borra cuando se completa la canalización. Las CMEK protegen los metadatos de los clústeres escritos en lo siguiente:

  • Discos persistentes (PD) conectados a VM de clúster
  • Resultado del controlador del trabajo y otros metadatos escritos en el depósito de staging de Dataproc creado automáticamente o creado por el usuario.

Configura CMEK

Crea una clave de Cloud KMS

Crea una clave de Cloud KMS

Puedes crear la clave en el mismo proyecto de Google Cloud en el que está la instancia de Cloud Data Fusion o en otro proyecto de usuario. La ubicación del llavero de claves de Cloud KMS debe coincidir con la región en la que deseas crear la instancia. No se permite una clave multirregional o de región global.

Obtener el nombre del recurso de la clave

API de REST

Obtén el nombre del recurso de la clave que creaste con el siguiente comando:

projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name

Console

  1. Ve a la página Claves criptográficas.

    Ir a Claves criptográficas

  2. Junto a tu clave, haz clic en Más .

  3. Selecciona Copiar nombre del recurso para copiar el nombre completo del recurso en el portapapeles.

Actualiza las cuentas de servicio de tu proyecto para usar la clave

Para configurar las cuentas de servicio de tu proyecto a fin de usar tu clave, sigue estos pasos:

  1. Obligatorio: Otorga la función de encriptador o desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) al servicio Cloud Data Fusion. agente (consulta Otorga funciones a una cuenta de servicio para recursos específicos). Esta cuenta tiene el siguiente formato:

    service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

    Si se otorga la función de encriptador o desencriptador de CryptoKey de Cloud KMS al agente de servicio de Cloud Data Fusion, se permite que Cloud Data Fusion use CMEK para encriptar los datos del cliente almacenados en proyectos de usuario.

  2. Obligatorio: Otorga la función de encriptador o desencriptador de CryptoKey de Cloud KMS al agente de servicio de Compute Engine (consulta Asigna una clave de Cloud KMS a una cuenta de servicio de Cloud Storage. Esta cuenta, a la que se le otorga la función de agente de servicios de Compute Engine de forma predeterminada, tiene el siguiente formato:

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

    Si se otorga la función de encriptador o desencriptador de CryptoKey de Cloud KMS al agente de servicio de Compute Engine, se permite que Cloud Data Fusion use CMEK para encriptar los metadatos del disco persistente (PD) que escribió Dataproc. clúster que se ejecuta en tu canalización.

  3. Obligatorio: Otorga la función de encriptador o desencriptador de CryptoKey de Cloud KMS al agente de servicio de Cloud Storage (consulta Asigna una clave de Cloud KMS a una nube). agente de servicio de Storage). Este agente de servicio tiene el siguiente formato:

    service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

    Otorgar la función de encriptador o desencriptador de CryptoKey de Cloud KMS al agente de servicio de Cloud Storage permite que Cloud Data Fusion use CMEK para encriptar los datos escritos en el bucket de staging del clúster de Dataproc y en cualquier otro recurso de Cloud Storage que use tu canalización.

  4. Opcional: Si tu canalización usa recursos de BigQuery, otorga la función de encriptador/desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio de BigQuery. (consulta Otorga permiso de encriptación y desencriptación). Esta cuenta tiene el formato siguiente:

    bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com

  5. Opcional: Si tu canalización usa recursos de Pub/Sub, otorga la función de encriptador/desencriptador de CryptoKey de Cloud KMS a Pub. Cuenta de servicio de/Sub (consulta la página sobre cómo usar claves de encriptación administradas por el cliente). Esta cuenta tiene el formato siguiente:

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

  6. Opcional: Si tu canalización usa recursos de Spanner, otorga la {función de encriptador/desencriptador de CryptoKey de Cloud KMS al servicio de Spanner. . Esta cuenta tiene el formato siguiente:

    service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com

Crea una instancia de Cloud Data Fusion con CMEK

Para crear una instancia con una clave de encriptación administrada por el cliente, exporta las siguientes variables o sustituye estos valores directamente en los siguientes comandos.

export PROJECT=PROJECT_ID // the user project that will host the Data Fusion instance
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
export KEY=CMEK_KEY // the full resource name of the CMEK key, which is of the form projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name

Ejecute el siguiente comando para crear una instancia de Cloud Data Fusion:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1/projects/$PROJECT/locations/$LOCATION/instances?instance_id=INSTANCE -X POST -d '{"description": "CMEK-enabled CDF instance created through REST.", "type": "BASIC", "cryptoKeyConfig": {"key_reference": "$KEY"} }'

Usa CMEK con metadatos de clúster de Dataproc

Los perfiles de procesamiento creados con anterioridad usan la clave CMEK proporcionada durante la creación de la instancia para encriptar los discos persistentes (PD) y los metadatos del bucket de etapa de pruebas que escribe el clúster de Dataproc que se ejecuta en tu canalización. Puedes modificar para usar otra clave mediante una de las siguientes opciones:

  • Recomendación: Crea un perfil de procesamiento de Dataproc nuevo (solo en la edición Enterprise).
  • Editar un perfil de procesamiento de Dataproc existente (ediciones Developer, Basic o Enterprise).

Console

  1. Ve a la página Instancias de Cloud Data Fusion.

    Ir a Instancias

  2. En la columna Acciones de la instancia, haz clic en Ver instancia.

  3. En la IU web de Cloud Data Fusion, haz clic en ADMINISTRADOR DEL SISTEMA.

  4. Haz clic en la pestaña Configuración.

  5. Haz clic en el menú desplegable Perfiles de procesamiento del sistema.

  6. Haga clic en Crear un perfil nuevo.

  7. Selecciona Cloud Dataproc.

  8. Ingresa una etiqueta de perfil, un nombre de perfil y una descripción.

  9. De forma predeterminada, Cloud Data Fusion crea automáticamente un depósito de Cloud Storage para usarlo como depósito de staging de Dataproc. Si prefieres usar un bucket de Cloud Storage que ya existe en tu proyecto, sigue estos pasos:

    1. En la sección Configuración general, ingresa tu depósito de Cloud Storage existente en el campo Depósito de Cloud Storage.

    2. Agrega la clave de Cloud KMS a tu depósito de Cloud Storage.

  10. Obtén el ID de recurso de tu clave de Cloud KMS. En la sección Configuración general, ingresa el ID de tu recurso en el campo Nombre de la clave de encriptación.

  11. Haga clic en Crear.

  12. Si aparece más de un perfil en la sección System Compute Profiles de la pestaña Configuración, establece el nuevo perfil de Dataproc como el perfil predeterminado, mantén el cursor sobre el campo nombre del perfil y haz clic en la estrella que aparecerá.

    Selecciona el perfil predeterminado.

Usa CMEK con otros recursos

La clave CMEK proporcionada se configura en la preferencia del sistema durante la creación de la instancia de Cloud Data Fusion. Se usa para encriptar datos escritos en recursos recién creados por receptores de canalización como receptores de Cloud Storage, BigQuery, Pub/Sub o Spanner.

Esta clave solo se aplica a los recursos creados recientemente. Si el recurso ya existe antes de la ejecución de la canalización, debes aplicar de forma manual la clave CMEK a esos recursos existentes.

La ubicación del recurso debe ser la misma que la región en la que reside la clave CMEK. No se permite un recurso de región múltiple o global con CMEK. Puedes cambiar la clave CMEK si realizas una de las siguientes acciones:

  • Usa un argumento de entorno de ejecución.
  • Establece una preferencia del sistema de Cloud Data Fusion.

Argumento de entorno de ejecución

  1. En la página Pipeline Studio de Cloud Data Fusion, haz clic en la flecha desplegable a la derecha del botón Ejecutar.
  2. En el campo Nombre, ingresa gcp.cmek.key.name.
  3. En el campo Valor, ingresa el ID de recurso de tu clave.
    Selecciona la edición de Data Fusion.
  4. Haz clic en Guardar.

    El argumento del entorno de ejecución que establezcas aquí solo se aplicará a las ejecuciones de la canalización actual.

Preference

  1. En la IU de Cloud Data Fusion, haz clic en ADMINISTRADOR DEL SISTEMA.
  2. Haz clic en la pestaña Configuración.
  3. Haz clic en el menú desplegable Preferencias del sistema.
  4. Haz clic en Editar las preferencias del sistema.
  5. En el campo Clave, ingresa gcp.cmek.key.name.
  6. En el campo Valor, ingresa el ID de recurso de tu clave.
    Selecciona la edición de Data Fusion.
  7. Haz clic en Guardar y cerrar.