Usar claves de encriptación administradas por el cliente

De forma predeterminada, Google Cloud encripta los datos cuando están en reposo automáticamente 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 los repositorios de Dataform.

En esta guía, se describe el uso de CMEK para Dataform y se explica cómo habilitar la encriptación con CMEK en 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 de los datos del repositorio con CMEK

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 los 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 almacenadas en SQL de acciones de flujo de trabajo
  • Detalles del error de las acciones de 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:
  • Durante cada operación que requiera almacenar datos del cliente en reposo. Estas operaciones incluyen, entre otras, las siguientes:

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 de clientes 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 la clave 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 su creación. 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 de un repositorio.
  • Las políticas de la organización de CMEK no están disponibles.
  • El uso de las claves de Cloud HSM está sujeto a disponibilidad. Para obtener más información sobre la disponibilidad de claves en las distintas 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 para cada cambio en el contenido de los repositorios. 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 realizar acciones 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. Por lo general, los cambios en los permisos se propagan mucho más rápido.

Después de crear el repositorio, Dataform llama a Cloud KMS para asegurarse de que la clave sigue siendo válida durante cada operación en datos de repositorio encriptados.

Si Dataform detecta que tu clave de Cloud KMS se inhabilitó o se destruyó, todos los datos almacenados en el repositorio correspondiente se vuelven inaccesibles.

Si las llamadas de Dataform a Cloud KMS detectan que se volvió a habilitar una clave que antes estaba inhabilitada, Dataform restablece el acceso automáticamente.

Cómo se controla un estado de clave no disponible

En situaciones poco frecuentes, como durante períodos en los que Cloud KMS no está disponible, es posible que Dataform no pueda recuperar el estado de tu clave desde Cloud KMS.

Si el repositorio de Dataform está protegido por una clave habilitada en el momento en que Dataform no puede comunicarse con Cloud KMS, los datos encriptados del repositorio se vuelven inaccesibles.

Los datos del repositorio encriptado 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, los datos encriptados del repositorio permanecerán inaccesibles hasta que pueda volver a conectarse a Cloud KMS y vuelvas a habilitar tu 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 se pueden ver 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 diferentes proyectos 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 ubicación del 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.
      Para 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 el rol 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 el rol Encriptador o Desencriptador de CryptoKey a la cuenta de servicio predeterminada de Dataform, sigue estos pasos:

Console

  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 la 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 protección con CMEK a un repositorio de Dataform durante la creación del repositorio.

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?