De forma predeterminada, Google Cloud encripta los datos cuando están en reposo de forma automática mediante claves de encriptación administradas por Google. Si tienes requisitos regulatorios o de cumplimiento específicos relacionados con las claves que protegen tus datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para repositorios de Dataform.
En esta guía, se describe el uso de CMEK para Dataform y se explica cómo habilitar la encriptación de CMEK de los repositorios de Dataform.
Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de CMEK.
Encriptación con CMEK de los datos del repositorio
Cuando aplicas la encriptación de CMEK a un repositorio de Dataform, todos los datos de clientes administrados por Dataform en ese repositorio se encriptan en reposo con la clave de protección CMEK establecida para el repositorio. Entre estos datos, se incluyen los siguientes:
- Contenido del repositorio de Git del repositorio de Dataform y sus lugares de trabajo
- Consultas en SQL compiladas y errores de compilación
- Consultas en SQL almacenadas de acciones de flujo de trabajo
- Detalles de errores de las acciones del flujo de trabajo ejecutadas
Dataform usa claves de protección CMEK en las siguientes situaciones:
- Durante cada operación que requiera la desencriptación de los datos del cliente almacenados en reposo.
Estas operaciones incluyen, entre otras, las siguientes:
- Respuestas a una consulta del usuario, por ejemplo,
compilationResults.query
- Creación de recursos de Dataform que requieran datos de repositorio encriptados creados con anterioridad, por ejemplo, invocaciones de flujo de trabajo.
- Operaciones de Git para actualizar el repositorio remoto, por ejemplo, enviar una confirmación de Git
- Respuestas a una consulta del usuario, por ejemplo,
- Durante cada operación que requiera almacenar datos en reposo del cliente.
Estas operaciones incluyen, entre otras, las siguientes:
- Respuestas a una consulta del usuario, por ejemplo,
compilationResults.create
- Operaciones de Git en un lugar de trabajo, por ejemplo, extraer una confirmación de Git
- Respuestas a una consulta del usuario, por ejemplo,
Dataform administra la encriptación de los datos del cliente asociados solo con los recursos de Dataform. Dataform no administra la encriptación de los datos del cliente que se crean en BigQuery a través de la ejecución de flujos de trabajo de Dataform. Para encriptar los datos creados y almacenados en BigQuery, configura CMEK para BigQuery.
Claves admitidas
Dataform admite los siguientes tipos de claves CMEK:
La disponibilidad de las claves varía según el tipo y la región. Para obtener más información sobre la disponibilidad geográfica de las claves CMEK, consulta Ubicaciones de Cloud KMS.
Restricciones
Dataform admite CMEK con las siguientes restricciones:
- No puedes aplicar una clave de protección CMEK a un repositorio después de crearlo. Solo puedes aplicar la encriptación CMEK durante la creación del repositorio.
- No puedes quitar una clave de protección CMEK de un repositorio.
- No puedes cambiar una clave de protección CMEK para un repositorio.
- Las políticas de la organización de CMEK no están disponibles.
- El uso de claves de Cloud HSM está sujeto a disponibilidad. Para obtener más información sobre la disponibilidad de claves en todas las ubicaciones, consulta Ubicaciones de Cloud KMS.
Cuotas de Cloud KMS y Dataform
Puedes usar las claves de Cloud HSM con Dataform. Cuando usas CMEK en Dataform, tus proyectos pueden consumir cuotas de solicitudes criptográficas de Cloud KMS. Por ejemplo, los repositorios de Dataform encriptados con CMEK pueden consumir estas cuotas por cada cambio en el contenido del repositorio. Las operaciones de encriptación y desencriptación con claves CMEK afectan las cuotas de Cloud KMS solo si usas claves de hardware (Cloud HSM) o externas (Cloud EKM). Para obtener más información, consulta Cuotas de Cloud KMS.
Administra claves
Usa Cloud KMS para todas las operaciones de administración de claves. Dataform no puede detectar ni actuar sobre ningún cambio de clave hasta que Cloud KMS los propague. Algunas operaciones, como inhabilitar o destruir una clave, pueden tardar hasta tres horas en propagarse. Los cambios en los permisos generalmente se propagan mucho más rápido.
Después de crear el repositorio, Dataform llama a Cloud KMS para asegurarse de que la clave siga siendo válida durante cada operación de datos encriptados del repositorio.
Si Dataform detecta que tu clave de Cloud KMS se inhabilitó o destruyó, todos los datos almacenados en el repositorio correspondiente se volverán inaccesibles.
Si las llamadas de Dataform a Cloud KMS detectan que se volvió a habilitar una clave inhabilitada anteriormente, Dataform restablece el acceso automáticamente.
Cómo se controla un estado de clave no disponible
En situaciones poco frecuentes, como durante los períodos en que Cloud KMS no está disponible, es posible que Dataform no pueda recuperar el estado de tu clave desde Cloud KMS.
Si tu repositorio de Dataform está protegido por una clave que está habilitada en el momento en que Dataform no puede comunicarse con Cloud KMS, los datos encriptados del repositorio se vuelven inaccesibles.
Los datos encriptados del repositorio permanecen inaccesibles hasta que Dataform puede volver a conectarse con Cloud KMS y Cloud KMS responde que la clave está activa.
Por el contrario, si tu repositorio de Dataform está protegido por una clave que está inhabilitada en el momento en que Dataform no puede comunicarse con Cloud KMS por primera vez, no se podrá acceder a los datos encriptados del repositorio hasta que pueda volver a conectarse a Cloud KMS y hayas vuelto a habilitar la clave.
Logging
Puedes auditar las solicitudes que Dataform envía a Cloud KMS en tu nombre en Cloud Logging, si habilitaste el registro de auditoría para la API de Cloud KMS en tu proyecto. Estas entradas de registro de Cloud KMS son visibles en Cloud Logging. Para obtener más información, consulta Visualiza los registros.
Antes de comenzar
Decide si ejecutarás Dataform y Cloud KMS en proyectos diferentes o en el mismo proyecto. Te recomendamos que uses proyectos separados para tener un mayor control sobre los permisos. Para obtener información sobre los números y los ID de los proyectos de Google Cloud, consulta la sección Identifica proyectos.
En el proyecto de Google Cloud que ejecuta Cloud KMS, haz lo siguiente:
- Habilita la API de Cloud Key Management Service.
- Crea un llavero de claves y una clave como se describe en Crea claves simétricas. Crea el llavero de claves
en una ubicación que coincida con la de tu repositorio
de Dataform:
-
Los repositorios deben usar claves regionales coincidentes. Por ejemplo, un repositorio en la región
asia-northeast3
debe protegerse con una clave de un llavero de claves ubicado enasia-northeast3
. -
La región
global
no se puede usar con Dataform.
-
Los repositorios deben usar claves regionales coincidentes. Por ejemplo, un repositorio en la región
Habilitar CMEK
Dataform puede acceder a la clave en tu nombre después de que otorgues la función Encriptador/Desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
) de Cloud KMS a la cuenta de servicio predeterminada de Dataform.
El ID predeterminado de la cuenta de servicio de Dataform tiene el siguiente formato:
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Para otorgar la función de Encriptador o Desencriptador de CryptoKey a la cuenta de servicio predeterminada de Dataform, sigue estos pasos:
Consola
Abre la página Administración de claves en la consola de Google Cloud.
Haz clic en el nombre del llavero de claves que contiene la clave.
Haz clic en la casilla de verificación de la clave de encriptación a la que deseas agregar la función. Se abrirá la pestaña Permisos.
Haz clic en Agregar miembro.
Ingresa la dirección de correo electrónico de la cuenta de servicio
- Si la cuenta de servicio ya se encuentra en la lista de miembros, es porque tiene funciones existentes. Haz clic en la lista desplegable de la función actual de la cuenta de servicio.
Haz clic en la lista desplegable y selecciona Selecciona una función. Haz clic en Cloud KMS y, luego, en la función de Encriptador/desencriptador de CryptoKey de Cloud KMS.
Haz clic en Guardar para aplicar el rol a la cuenta de servicio.
gcloud
Puedes usar Google Cloud CLI para asignar la función:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Reemplaza lo siguiente:
KMS_PROJECT_ID
: Es el ID del proyecto de Google Cloud que ejecuta Cloud KMS.SERVICE_ACCOUNT
: Es la dirección de correo electrónico de tu cuenta de servicio predeterminada de Dataform.KMS_KEY_LOCATION
: Es el nombre de la ubicación de la clave de Cloud KMS.KMS_KEY_RING
: Es el nombre del llavero de claves de la clave de Cloud KMS.KMS_KEY
: Es el nombre de la clave de Cloud KMS.
Aplica CMEK a un repositorio
Puedes aplicar la protección con CMEK a un repositorio de Dataform durante su creación.
Para aplicar la encriptación de CMEK a un repositorio de Dataform, especifica una clave de Cloud KMS cuando lo crees. Para obtener instrucciones, consulta Crea un repositorio.
No puedes cambiar el mecanismo de encriptación de un repositorio de Dataform después de crearlo.
Para obtener más información, consulta Restricciones.
¿Qué sigue?
- Para obtener más información sobre CMEK, consulta la Descripción general de CMEK.
- Para obtener más información sobre las cuotas de Cloud KMS, consulta Cuotas de Cloud KMS.
- Para obtener más información sobre los precios de Cloud KMS, consulta Precios de Cloud KMS.
- Para obtener más información sobre los repositorios de Dataform, consulta Introducción a los repositorios.