De forma predeterminada, Google Cloud automáticamente encripta los datos cuando están en reposo con claves de encriptación administradas por Google. Si tienes requisitos específicos de cumplimiento requisitos regulatorios relacionados con las claves que protegen tus datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para Dataform de Cloud Storage.
En esta guía, se describe el uso de CMEK para Dataform y recorridos aprenderás a habilitar la encriptación CMEK de los repositorios de Dataform.
Para obtener más información sobre las CMEK en general, incluido cuándo y por qué habilitarlo, consulta la documentación de CMEK.
Encriptación con CMEK de los datos del repositorio
Cuando aplicas la encriptación CMEK a un repositorio de Dataform, todos los datos de clientes administrados por Dataform en ese repositorio se encriptan resto con la clave de protección CMEK establecida para el repositorio. Estos datos incluyen lo siguiente:
- 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 requieren la creación previa de datos encriptados del repositorio, por ejemplo, invocaciones de flujo de trabajo.
- Operaciones de Git para actualizar el repositorio remoto Por ejemplo, el envío de 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 Recursos de Dataform. Dataform no administra la encriptación de datos de clientes que se crean en BigQuery mediante la ejecución de Flujos de trabajo de Dataform. Para encriptar 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:
- El tamaño máximo de un repositorio encriptado con CMEK es de 512 MB.
- No puedes aplicar una clave de protección CMEK a un repositorio después del repositorio . 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 solicitudes criptográficas de Cloud KMS y cuotas. 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 podrá detectar ni actuar sobre ningún cambio clave hasta que y se propagan mediante Cloud KMS. Algunas operaciones, como inhabilitar o destruir una clave, puede hasta tres horas para propagarse. Por lo general, los cambios en los permisos se propagan mucho más rápido.
Después de que se crea el repositorio, Dataform llama Cloud KMS para asegurarse de que la clave esté siguen siendo válidos durante cada operación de datos encriptados del repositorio.
Si Dataform detecta que tu clave de Cloud KMS tiene se inhabilitaron o destruyeron, todos los datos almacenados en el repositorio correspondiente se vuelve inaccesible.
Si las llamadas de Dataform a Cloud KMS detecta que una clave que estaba inhabilitada que vuelvas a habilitar, Dataform restablecerá 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 se 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 tiene las siguientes características: habilitado en el momento en que Dataform no puede con Cloud KMS, los datos encriptados del repositorio se vuelve inaccesible.
No se podrá acceder a los datos encriptados del repositorio hasta que Dataform puede volver a conectarse con Cloud KMS y Cloud KMS responde esté activa.
Por el contrario, si tu repositorio de Dataform está protegido por una clave que esté inhabilitada en el momento en que Dataform se ejecute por primera vez no pueden comunicarse con Cloud KMS, los datos encriptados del repositorio permanecerá inaccesible hasta que pueda reconectarse a Cloud KMS y tú hayan vuelto a habilitar tu clave.
Logging
Puedes auditar las solicitudes que Dataform envía Cloud KMS en tu nombre en Cloud Logging, si tienes registros de auditoría habilitados para la API de Cloud KMS en tu proyecto. Estos Las 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:
- 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 Dataform
siguiente:
-
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
. -
No se puede usar la región
global
Dataform.
-
Los repositorios deben usar claves regionales coincidentes. Por ejemplo:
un repositorio en la región
Habilitar CMEK
Dataform podrá acceder a la clave en tu nombre después de
otorgas a la API de Cloud KMS
Encriptador/Desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
)
el rol de analista de seguridad en la nube
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 de Encriptador/Desencriptador de CryptoKey al Dataform predeterminado cuenta de servicio, sigue estos pasos:
Console
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 roles actuales de 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 al servicio. de servicio predeterminada.
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
: La dirección de correo electrónico de tu configuración predeterminada Cuenta de servicio de DataformKMS_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 la creación del repositorio.
Para aplicar la encriptación de CMEK a un repositorio de Dataform, especifica una clave de Cloud KMS cuando crees el repositorio. Para obtener instrucciones, consulta Crea un repositorio.
No puedes cambiar el mecanismo de encriptación de un repositorio de Dataform una vez creado el repositorio.
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.