Usar claves de encriptado gestionadas por el cliente (CMEK)

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

De forma predeterminada, Cloud Data Fusion cifra el contenido de los clientes en reposo. Cloud Data Fusion se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.

Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Cloud Data Fusion. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Cloud KMS también te permite monitorizar el uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y el gestor de las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.

Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceder a tus recursos de Cloud Data Fusion será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).

Cloud Data Fusion admite el seguimiento del uso de claves de Cloud KMS para el recurso Instance.

Las CMEK te permiten controlar los datos que se escriben en los recursos internos de Google en proyectos de inquilino y los datos que escriben los flujos de procesamiento de Cloud Data Fusion, incluidos los siguientes:

  • Registros y metadatos de la canalización
  • Metadatos de clústeres de Dataproc
  • Varios sumideros, acciones y fuentes de datos de Cloud Storage, BigQuery, Pub/Sub y Spanner

Recursos de Cloud Data Fusion

Para ver una lista de los complementos de Cloud Data Fusion que admiten la CMEK, consulta los complementos compatibles.

Cloud Data Fusion admite la función de claves de cifrado gestionadas por el cliente (CMEK) en clústeres de Dataproc. Cloud Data Fusion crea un clúster de Dataproc temporal para usarlo en el flujo de procesamiento y, a continuación, elimina el clúster cuando se completa el flujo de procesamiento. La CMEK protege los metadatos del clúster escritos en lo siguiente:

  • Discos persistentes (PD) conectados a máquinas virtuales de clúster
  • Salida del controlador de trabajos y otros metadatos escritos en el contenedor de almacenamiento provisional de Dataproc creado automáticamente o por el usuario

Configurar CMEK

Crear una clave de Cloud KMS

Crea una clave de Cloud KMS en el Google Cloud proyecto que contiene la instancia de Cloud Data Fusion o en un proyecto de usuario independiente. La ubicación del conjunto de claves de Cloud KMS debe coincidir con la región en la que crees la instancia. No se permite una clave de región multirregional o global a nivel de instancia porque Cloud Data Fusion siempre está asociado a una región concreta.

Obtener el nombre de recurso de la clave

API REST

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

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Haz los cambios siguientes:

  • PROJECT_ID: el proyecto del cliente que aloja la instancia de Cloud Data Fusion
  • REGION: una región de Google Cloud cercana a tu ubicación. Por ejemplo, us-east1
  • KEY_RING_NAME: el nombre del conjunto de claves que agrupa las claves criptográficas
  • KEY_NAME: el nombre de la clave de Cloud KMS

Consola

  1. Ve a la página Gestión de claves.

    Ir a Gestión de claves

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

  3. Selecciona Copiar nombre de recurso para copiar el nombre 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 de forma que usen tu clave, sigue estos pasos:

  1. Obligatorio: asigna el rol Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) al agente de servicio de Cloud Data Fusion (consulta Asignar roles 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 asignas el rol Encargado de cifrar o descifrar CryptoKey de Cloud KMS al agente de servicio de Cloud Data Fusion, este podrá usar las CMEK para cifrar los datos de los clientes almacenados en proyectos de inquilinos.

  2. Obligatorio: asigna el rol Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS al agente de servicio de Compute Engine (consulta el artículo sobre cómo asignar una clave de Cloud KMS a una cuenta de servicio de Cloud Storage). Esta cuenta, a la que se le asigna de forma predeterminada el rol Agente de servicio de Compute Engine, tiene el siguiente formato:

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

    Si asignas el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS al agente de servicio de Compute Engine, Cloud Data Fusion podrá usar CMEK para encriptar los metadatos de los discos persistentes escritos por el clúster de Dataproc que se ejecuta en tu canalización.

  3. Obligatorio: asigna el rol Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS al agente de servicio de Cloud Storage (consulta Asignar una clave de Cloud KMS a un agente de servicio de Cloud Storage). Este agente de servicio tiene el siguiente formato:

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

    Si asignas este rol al agente de servicio de Cloud Storage, Cloud Data Fusion podrá usar CMEK para cifrar el segmento de Cloud Storage que almacena y guarda en caché la información y los datos del flujo de procesamiento escritos en el segmento de almacenamiento temporal del clúster de Dataproc y en cualquier otro segmento de Cloud Storage de tu proyecto que use tu flujo de procesamiento.

  4. Obligatorio: Asigna el rol Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS al agente de servicio de Google Cloud Dataproc. Este agente de servicio tiene el siguiente formato:

    service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com

  5. Opcional: Si tu canalización usa recursos de BigQuery, otorga el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS a la cuenta de servicio de BigQuery (consulta Conceder permiso de encriptado y desencriptado). Esta cuenta tiene el siguiente formato:

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

  6. Opcional: Si tu canalización usa recursos de Pub/Sub, concede el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS a la cuenta de servicio de Pub/Sub (consulta Usar claves de cifrado gestionadas por el cliente). Esta cuenta tiene el siguiente formato:

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

  7. Opcional: Si tu canalización usa recursos de Spanner, otorga el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS a la cuenta de servicio de Spanner. Esta cuenta tiene el siguiente formato:

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

Crear una instancia de Cloud Data Fusion con CMEK

Las CMEK están disponibles en todas las ediciones de Cloud Data Fusion 6.5.0 y versiones posteriores.

API REST

  1. Para crear una instancia con una clave de cifrado gestionada por el cliente, define las siguientes variables de entorno:

    export PROJECT=PROJECT_ID
    export LOCATION=REGION
    export INSTANCE=INSTANCE_ID
    export DATA_FUSION_API_NAME=datafusion.googleapis.com
    export KEY=KEY_NAME
    

    Haz los cambios siguientes:

    • PROJECT_ID: el proyecto del cliente que aloja la instancia de Cloud Data Fusion
    • REGION: una región Google Cloud cercana a tu ubicación, como us-east1
    • INSTANCE_ID: el nombre de la instancia de Cloud Data Fusion
    • KEY_NAME: el nombre completo del recurso de la clave CMEK
  2. Ejecuta 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"} }'
    

Consola

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

  2. Haz clic en Instancias y, a continuación, en Crear una instancia.

    Ir a Instancias

  3. En Opciones avanzadas, selecciona Usar una clave de cifrado gestionada por el cliente (CMEK).

  4. En el campo Seleccionar una clave gestionada por el cliente, selecciona el nombre del recurso de la clave.

    Selecciona el nombre de la clave de cifrado

  5. Una vez que hayas introducido todos los detalles de la instancia, haz clic en Crear. Cuando la instancia esté lista para usarse, aparecerá en la página Instancias.

Comprobar si CMEK está habilitado en una instancia

Consola

Consulta los detalles de la instancia:

  1. En la Google Cloud consola, ve a la página de Cloud Data Fusion.

  2. Haz clic en Instancias y, a continuación, en el nombre de la instancia para ir a la página Detalles de la instancia.

    Ir a Instancias

Si CMEK está habilitada, el campo Clave de cifrado se muestra como Disponible.

Si las claves de cifrado gestionadas por el cliente están inhabilitadas, el campo Clave de cifrado se muestra como No disponible.

Usar CMEK con complementos compatibles

Cuando definas el nombre de la clave de cifrado, utiliza el siguiente formato:

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Nombres de claves de cifrado

En la siguiente tabla se describe el comportamiento de la clave en los complementos de Cloud Data Fusion que admiten CMEK.

Complementos compatibles Comportamiento de la tecla
Receptores de Cloud Data Fusion
Cloud Storage Cifra los datos escritos en cualquier segmento creado por el complemento. Si el segmento ya existe, este valor se ignora.
Multiarchivo de Cloud Storage Cifra los datos escritos en cualquier segmento creado por el complemento.
BigQuery Cifra los datos escritos en cualquier contenedor, conjunto de datos o tabla creados por el complemento.
Multitabla de BigQuery Cifra los datos escritos en cualquier contenedor, conjunto de datos o tabla creados por el complemento.
Pub/Sub Encripta los datos escritos en cualquier tema creado por el complemento. Si el tema ya existe, se ignora este valor.
Spanner Encripta los datos escritos en cualquier base de datos creada por el complemento. Si la base de datos ya existe, este valor se ignora.
Acciones de Cloud Data Fusion
Creación en Cloud Storage
Copia en Cloud Storage
Movimiento en Cloud Storage
Marcador de archivo listo en Cloud Storage
Cifra los datos escritos en cualquier segmento creado por el complemento. Si el segmento ya existe, este valor se ignora.
Ejecución de BigQuery Cifra los datos escritos en el conjunto de datos o en la tabla que crea el complemento para almacenar los resultados de la consulta. Solo se aplica si almacenas los resultados de la consulta en una tabla de BigQuery.
Fuentes de Cloud Data Fusion
Fuente de BigQuery Cifra los datos escritos en cualquier segmento creado por el complemento. Si el segmento ya existe, este valor se ignora.
Motor SQL de Cloud Data Fusion
Motor de pushdown de BigQuery Cifra los datos escritos en cualquier contenedor, conjunto de datos o tabla creados por el complemento.

Usar CMEK con metadatos de clústeres de Dataproc

Los perfiles de computación creados previamente usan la clave CMEK proporcionada durante la creación de la instancia para cifrar el disco persistente y los metadatos del segmento de almacenamiento provisional que escribe el clúster de Dataproc que se ejecuta en tu canalización. Para usar otra tecla, puedes hacer lo siguiente:

  • Recomendación: Crea un perfil de computación de Dataproc (solo en la edición Enterprise).
  • Edita un perfil de cálculo de Dataproc (ediciones Developer, Basic o Enterprise).

Consola

  1. Abre la instancia de Cloud Data Fusion:

    1. En la Google Cloud consola, ve a la página de Cloud Data Fusion.

    2. Para abrir la instancia en Cloud Data Fusion Studio, haga clic en Instancias y, a continuación, en Ver instancia.

      Ir a Instancias

  2. Haz clic en Administración del sistema > Configuración.

  3. Haz clic en el desplegable Perfiles de cálculo del sistema.

  4. Haz clic en Crear perfil y selecciona Dataproc.

  5. Escribe una etiqueta de perfil, un nombre de perfil y una descripción.

  6. De forma predeterminada, Dataproc crea segmentos de almacenamiento provisional y temporales cada vez que Cloud Data Fusion crea un clúster efímero. Cloud Data Fusion permite transferir el segmento de almacenamiento provisional de Dataproc como argumento en el perfil de computación. Para cifrar el segmento de almacenamiento provisional, crea un segmento con CMEK habilitado y pásalo como argumento a Dataproc en el perfil de cálculo.

  7. De forma predeterminada, Cloud Data Fusion crea automáticamente un segmento de Cloud Storage para organizar las dependencias que usa Dataproc. Si prefieres usar un segmento de Cloud Storage que ya exista en tu proyecto, sigue estos pasos:

    1. En la sección General Settings (Configuración general), introduce tu segmento de Cloud Storage en el campo Cloud Storage Bucket (Segmento de Cloud Storage).

    2. Añade tu clave de Cloud KMS a tu segmento de Cloud Storage.

  8. Obtén el ID de recurso de tu clave de Cloud KMS. En la sección Configuración general, introduce el ID de recurso en el campo Nombre de la clave de cifrado.

  9. Haz clic en Crear.

  10. Si hay más de un perfil en la sección Perfiles de computación del sistema de la pestaña Configuración, haz que el nuevo perfil de Dataproc sea el predeterminado. Para ello, coloca el puntero sobre el campo del nombre del perfil y haz clic en la estrella que aparece.

    Selecciona el perfil predeterminado.

Usar CMEK con otros recursos

La clave CMEK proporcionada se define como preferencia del sistema durante la creación de la instancia de Cloud Data Fusion. Se usa para cifrar los datos escritos en recursos recién creados por sumideros de flujos de procesamiento, como los sumideros de Cloud Storage, BigQuery, Pub/Sub o Spanner.

Esta clave solo se aplica a los recursos recién creados. Si el recurso ya existe antes de ejecutar el flujo de procesamiento, debes aplicar manualmente la clave CMEK a esos recursos.

Para cambiar la clave de CMEK, puede hacer lo siguiente:

  • Usar un argumento de tiempo de ejecución.
  • Definir una preferencia del sistema de Cloud Data Fusion.

Argumento de tiempo de ejecución

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

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

Preferencia

  1. En la interfaz de usuario de Cloud Data Fusion, haga clic en ADMINISTRADOR DEL SISTEMA.
  2. Haz clic en la pestaña Configuration (Configuración).
  3. Haz clic en el desplegable Preferencias del Sistema.
  4. Haz clic en Editar Preferencias del Sistema.
  5. En el campo Key (Clave), introduce gcp.cmek.key.name.
  6. En el campo Valor, introduce el ID de recurso de tu clave.
    Selecciona la edición de Data Fusion.
  7. Haz clic en Save & Close (Guardar y cerrar).