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 al usuario control de los datos escritos en los recursos internos de Google en proyectos de usuario y los datos escritos por las canalizaciones de Cloud Data Fusion, incluidos los siguientes:
- Registros y metadatos de la canalización
- Metadatos del clúster de Dataproc
- Varios receptores de datos, acciones y fuentes de Cloud Storage, BigQuery, Pub/Sub y Spanner
Recursos de Cloud Data Fusion
Para obtener una lista de los complementos de Cloud Data Fusion que admiten CMEK, consulta los complementos compatibles.
Cloud Data Fusion admite CMEK para clústeres de Dataproc. Cloud Data Fusion crea un clúster de Dataproc temporal para usarlo en la canalización y, luego, borra el clúster cuando se completa la canalización. Las CMEK protegen los metadatos del clúster escritos en lo siguiente:
- Discos persistentes (PD) adjuntos a las VM del 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 en el proyecto de Google Cloud que contiene 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 se crea la instancia. No se permite una clave de región global o multirregión a nivel de la instancia porque Cloud Data Fusion siempre se asocia con una región en particular.
Obtén 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
Reemplaza lo siguiente:
- PROJECT_ID: el proyecto del cliente que aloja la instancia de Cloud Data Fusion
- REGION: una región de Google Cloud que esté cerca de tu ubicación, por ejemplo,
us-east1
- KEY_RING_NAME: Es el nombre del llavero de claves que agrupa las claves criptográficas
- KEY_NAME: el nombre de la clave de Cloud KMS
Console
Ve a la página Administración de claves.
Junto a tu clave, haz clic en Más
.Selecciona Copiar nombre del recurso para copiar el nombre del recurso en el portapapeles.
Actualiza las cuentas de servicio de tu proyecto para usar la clave
A fin de configurar las cuentas de servicio de tu proyecto para usar tu clave, haz lo siguiente:
Obligatorio: Otorga la función Encriptador/Desencriptador de CryptoKey de Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) al agente de servicio de Cloud Data Fusion (consulta Otorga funciones a una cuenta de servicio para recursos específicos). Esta cuenta tiene el formato siguiente:service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com
Otorgar la función de Encriptador/Desencriptador de CryptoKey de Cloud KMS al agente de servicio de Cloud Data Fusion permite que Cloud Data Fusion use CMEK para encriptar cualquier dato del cliente almacenado en proyectos de usuario.
Obligatorio: Otorga la Función de encriptador/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, que de forma predeterminada recibe la función de agente de servicio de Compute Engine, tiene la siguiente forma:
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
Otorgar la función de Encriptador/Desencriptador de CryptoKey de Cloud KMS al agente de servicio de Compute Engine permite que Cloud Data Fusion use CMEK para encriptar metadatos de disco persistente (PD) escritos por el clúster de Dataproc que se ejecutan en tu canalización.
Obligatorio: Otorga la función de Encriptador/Desencriptador de CryptoKey de Cloud KMS al agente de servicio de Cloud Storage (consulta Asigna 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
Otorgar la función de encriptador/desencriptador de CryptoKey de Cloud KMS al agente de servicio de Cloud Storage permite que Cloud Data Fusion use CMEK para encriptar datos escritos en el depósito de staging del clúster de Dataproc y cualquier otro recurso de Cloud Storage que use la canalización.
Obligatorio: Otorga el rol de encriptador/desencriptador 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
Opcional: Si tu canalización usa recursos de BigQuery, otorga la función de encriptador/desencriptador 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
Opcional: Si tu canalización usa recursos de Pub/Sub, asigna la función de encriptador/desencriptador de clave criptográfica de Cloud KMS a la cuenta de servicio de Pub/Sub (consulta Usa claves de encriptación administradas por el cliente). Esta cuenta tiene el formato siguiente:
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
Opcional: Si tu canalización usa recursos de Spanner, otorga la función de encriptador/desencriptador de CryptoKey de Cloud KMS a la cuenta de 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
CMEK está disponible en todas las ediciones de Cloud Data Fusion 6.5.0 y versiones posteriores.
API de REST
Para crear una instancia con una clave de encriptación administrada por el cliente, configura 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
Reemplaza lo siguiente:
- PROJECT_ID: Es el proyecto del cliente que aloja la instancia de Cloud Data Fusion.
- REGION: una región de Google Cloud que es
cerrar
a tu ubicación, por ejemplo,
us-east1
- INSTANCE_ID: El nombre de la instancia de Cloud Data Fusion
- KEY_NAME: Es el nombre completo del recurso de la clave CMEK.
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"} }'
Console
Ve a la página de Cloud Data Fusion.
Haz clic en Instancias y, luego, en Crear una instancia.
En Opciones avanzadas, selecciona Usar una clave de encriptación administrada por el cliente (CMEK).
En el campo Selecciona una clave administrada por el cliente, selecciona el nombre del recurso de la clave.
Después de ingresar todos los detalles de la instancia, haz clic en Crear. Cuando la instancia está lista para usarse, aparece en la página Instancias.
Verifica si las CMEK están habilitadas en una instancia
Console
Visualiza los detalles de la instancia:
En Google Cloud Console, ve a la página de Cloud Data Fusion.
Haz clic en Instancias y, luego, en el nombre de la instancia para ir a la página Detalles de la instancia.
Si CMEK está habilitada, el campo Clave de encriptación se muestra como Disponible.
Si la CMEK está inhabilitada, el campo Clave de encriptación se muestra como No disponibles.
Usa CMEK con complementos compatibles
Cuando establezcas el nombre de la clave de encriptación, usa el siguiente formato:
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
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 clave |
---|---|
Receptores de Cloud Data Fusion | |
Cloud Storage | Encripta los datos escritos en cualquier bucket creado por el complemento. Si el bucket ya existe, este valor se ignora. |
Archivos múltiples de Cloud Storage | Encripta los datos escritos en cualquier bucket creado por el complemento. |
BigQuery | Encripta los datos escritos en cualquier bucket, conjunto de datos o tabla que creó el complemento. |
Tablas múltiples de BigQuery | Encripta los datos escritos en cualquier bucket, conjunto de datos o tabla que creó el complemento. |
Pub/Sub | Encripta los datos escritos en cualquier tema creado por el complemento. Si ya existe el tema, se ignora este valor. |
Spanner | Encripta los datos escritos en cualquier base de datos que creó el complemento. Si la base de datos ya existe, este valor se ignora. |
Acciones de Cloud Data Fusion | |
Cloud Storage Create Cloud Storage Copy Cloud Storage Move Cloud Storage Done File Marker |
Encripta los datos escritos en cualquier bucket creado por el complemento. Si el bucket ya existe, este valor se ignora. |
Ejecución de BigQuery | Encripta los datos escritos en el conjunto de datos o la tabla en la que crea el complemento. 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 | Encripta los datos escritos en cualquier bucket creado por el complemento. Si el bucket ya existe, este valor se ignora. |
Motor de SQL de Cloud Data Fusion | |
Motor de pushdown de BigQuery | Encripta los datos escritos en cualquier bucket, conjunto de datos o tabla que creó el complemento. |
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 metadatos del disco persistente (PD) y del bucket de staging que escribe el clúster de Dataproc que se ejecuta en tu canalización. Puedes modificarlo para usar otra clave si haces una de las siguientes acciones:
- Recomendado: Crea un perfil de procesamiento de Dataproc nuevo (solo edición empresarial).
- Edita un perfil de procesamiento de Dataproc existente (ediciones de desarrollador, básico o empresarial).
Console
Abre la instancia de Cloud Data Fusion:
En la consola de Google Cloud, ve a la página de Cloud Data Fusion.
Para abrir la instancia en Cloud Data Fusion Studio, haz clic en Instancias y, luego, en Ver instancia.
Haz clic en Administrador del sistema > Configuración.
Haz clic en el menú desplegable Perfiles de procesamiento del sistema.
Haz clic en Crear un perfil nuevo y selecciona Dataproc.
Ingresa una etiqueta de perfil, un nombre de perfil y una descripción.
De forma predeterminada, Dataproc crea buckets etapa de pruebas y temporales cada vez que Cloud Data Fusion crea un clúster efímero. Cloud Data Fusion admite pasar el bucket de preparación de Dataproc como argumento en el perfil de procesamiento. Para encriptar el bucket de etapa de pruebas, crea un bucket habilitado para CMEK y pásalo como argumento a Dataproc en el perfil de procesamiento.
De forma predeterminada, Cloud Data Fusion crea automáticamente un bucket de Cloud Storage para almacenar en etapa intermedia las dependencias que usa Dataproc. Si prefieres usar un bucket de Cloud Storage que ya existe en tu proyecto, sigue estos pasos:
En la sección Configuración general, ingresa tu depósito de Cloud Storage existente en el campo Depósito de Cloud Storage.
Agrega la clave de Cloud KMS a tu depósito de Cloud Storage.
Obtén el ID de recurso de tu clave de Cloud KMS. En la sección Configuración general, ingresa tu ID de recurso en el campo Nombre de clave de encriptación.
Haga clic en Crear.
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á.
Usa CMEK con otros recursos
La clave CMEK proporcionada se establece 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 Cloud Storage, BigQuery, Pub/Sub o receptores de Spanner.
Esta clave solo se aplica a los recursos recién creados. Si el recurso ya existe antes de la ejecución de la canalización, debes aplicar la clave CMEK de forma manual a esos recursos existentes.
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
- En la página Pipeline Studio de Cloud Data Fusion, haz clic en la flecha desplegable a la derecha del botón Ejecutar.
- En el campo Nombre, ingresa
gcp.cmek.key.name
. - En el campo Valor, ingresa el ID de recurso de tu clave.
Haz clic en Guardar.
El argumento de entorno de ejecución que estableces aquí solo se aplica a las ejecuciones de la canalización actual.
Preference
- En la IU de Cloud Data Fusion, haz clic en ADMINISTRADOR DEL SISTEMA.
- Haz clic en la pestaña Configuración.
- Haz clic en el menú desplegable Preferencias del sistema.
- Haz clic en Editar las preferencias del sistema.
- En el campo Clave, ingresa
gcp.cmek.key.name
. - En el campo Valor, ingresa el ID de recurso de tu clave.
- Haz clic en Guardar y cerrar.