Usar claves de encriptación administradas por el cliente

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:

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:

    1. Habilita la API de Cloud Key Management Service.
    2. 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 en asia-northeast3.
      • La región global no se puede usar con Dataform.
      Si deseas obtener más información sobre las ubicaciones compatibles con Dataform y Cloud KMS, consulta Ubicaciones de Cloud.

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

  1. Abre la página Administración de claves en la consola de Google Cloud.

    Abrir la página Administración de claves

  2. Haz clic en el nombre del llavero de claves que contiene la clave.

  3. 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.

  4. Haz clic en Agregar miembro.

  5. 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.
  6. 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.

  7. 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?