De forma predeterminada, Datastream cifra el contenido del cliente en reposo. Datastream se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.
Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Datastream. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Cloud KMS también te permite monitorizar el uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y el gestor de las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.
Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceder a tus recursos de Datastream será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).
En esta página se describe cómo funcionan las claves de encriptado gestionadas por el cliente (CMEK) con Datastream.
¿Te conviene usar CMEK?
Las CMEK están pensadas para organizaciones que tienen datos sensibles o regulados que requieren que gestionen sus claves de encriptado.
Cifrado gestionado por Google frente a cifrado gestionado por el cliente
La función de CMEK te permite usar tus propias claves criptográficas en los datos en reposo de Datastream. Después de añadir CMEK, cada vez que se haga una llamada a la API, Datastream usará tu clave para acceder a los datos.
Datastream usa claves de cifrado de datos (DEK) y claves de cifrado de claves (KEK) gestionadas por Google para cifrar Datastream. Hay dos niveles de cifrado:
- La DEK cifra los datos.
- La KEK cifra la DEK.
Datastream almacena la DEK cifrada junto con los datos cifrados, y Google gestiona la KEK de Google. Con CMEK, creas una clave que envuelve la KEK de Google. Las claves de cifrado gestionadas por el cliente te permiten crear, revocar y eliminar la KEK.
Las CMEK, incluidas las claves de software, hardware y externas, se gestionan a través de la API de Cloud Key Management Service (KMS).
¿En qué ubicaciones se admiten las secuencias de Datastream habilitadas para CMEK?
La CMEK está disponible en todas las ubicaciones de Datastream.
Información sobre las cuentas de servicio
Cuando tus flujos de Datastream tengan habilitadas las CMEK, deberás usar una cuenta de servicio para solicitar acceso a las claves de Cloud Key Management Service.
Para usar una clave de cifrado gestionada por el cliente en un proyecto, debes tener una cuenta de servicio y concederle acceso a la clave. La cuenta de servicio debe estar en el proyecto. La cuenta de servicio está visible en todas las regiones.
Si usas la consola para crear un flujo, Datastream creará la cuenta de servicio automáticamente la primera vez que elijas la opción Clave gestionada por el cliente (si aún no existe una cuenta de servicio). No es necesario que tu cuenta de usuario tenga permisos especiales cuando Datastream crea la cuenta de servicio automáticamente.
Información sobre las claves
En Cloud Key Management Service, debes crear un conjunto de claves con una clave criptográfica y una ubicación. Cuando creas un nuevo flujo en Datastream, seleccionas esta clave para cifrar el flujo.
Debes conocer el ID y la región de la clave cuando crees nuevos flujos que usen CMEK. Debes colocar las nuevas emisiones en la misma región que la CMEK asociada a las emisiones. Puede crear un proyecto para ambas claves y flujos, o proyectos diferentes para cada uno.
CMEK usa el siguiente formato:
projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]
Si Datastream no puede acceder a la clave (por ejemplo, si inhabilitas la versión de la clave), Datastream cambia el estado del flujo a FAILED
y aparece un mensaje de error asociado. Una vez que haya solucionado los problemas asociados al mensaje de error para que la clave vuelva a estar accesible, Datastream reanudará el flujo automáticamente.
Administradores de claves externos
Puedes usar como CMEK las claves almacenadas en gestores de claves externos, como Fortanix, Ionic o Thales. Para saber cómo usar claves externas con Cloud Key Management Service, consulta Cloud External Key Manager.
¿Cómo se puede hacer que los datos cifrados con CMEK sean inaccesibles de forma permanente?
Puede que haya situaciones en las que quieras destruir permanentemente los datos cifrados con una CMEK. Para ello, destruye la versión de la CMEK. No puedes destruir el conjunto de claves ni la clave, pero sí puedes destruir las versiones de la clave.
Restricciones
Al usar la CMEK, se aplican las siguientes restricciones:
No puedes actualizar CMEK en una emisión en curso.
Aunque puedes usar CMEK para cifrar filas de la base de datos de origen, no puedes usar estas claves para cifrar metadatos de la secuencia, como el ID de la secuencia, la dirección IP de la base de datos de origen o los nombres de las tablas de la base de datos de origen.
Usar CMEK
Ahora que ya sabes qué es CMEK, puedes configurar una cuenta de servicio y claves para CMEK. Además, aprenderá a configurar Datastream para usar CMEK.
Antes de empezar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Instala e inicializa el SDK de Google Cloud.
- Asegúrate de que tienes asignado el rol de administrador de flujo de datos a tu cuenta de usuario.
-
Enable the Cloud Key Management Service API.
- Habilita la API Datastream.
Flujo de trabajo para crear un flujo en Datastream con CMEK
- Solo para usuarios de gcloud y de la API: asegúrate de tener una cuenta de servicio para cada proyecto que requiera CMEK. Si no tienes ninguna, consulta cómo crear una cuenta de servicio.
- Crea un conjunto de claves y una clave, y define la ubicación de cada clave. La ubicación es la región Google Cloud .
- Solo para usuarios de gcloud y de la API: concede acceso a la clave a la cuenta de servicio.
- Copia o anota el ID de la clave (
KMS_KEY_ID
) y la ubicación de la clave, así como el ID (KMS_KEYRING_ID
) del conjunto de claves. Necesitarás esta información cuando concedas acceso a la clave de la cuenta de servicio. - Vaya a un proyecto y cree un flujo en Datastream con las siguientes opciones:
- La misma ubicación que la CMEK
- La configuración de CMEK
- ID de CMEK
Tu flujo de Datastream ahora tiene habilitada la función de claves de cifrado gestionadas por el cliente (CMEK).
Crear una cuenta de servicio
Debes crear una cuenta de servicio para cada proyecto que requiera CMEK.
Para permitir que un usuario gestione cuentas de servicio, concédele uno de los siguientes roles:
- Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
): incluye permisos para enumerar cuentas de servicio, obtener detalles sobre una cuenta de servicio y suplantar la identidad de una cuenta de servicio. - Administrador de cuentas de servicio (
roles/iam.serviceAccountAdmin
): incluye permisos para enumerar cuentas de servicio y obtener detalles sobre una cuenta de servicio. También incluye permisos para crear, actualizar y eliminar cuentas de servicio, así como para ver o cambiar la política de Datastream de una cuenta de servicio.
Solo puedes usar comandos gcloud
para crear el tipo de cuenta de servicio que necesitas para CMEK. Si usas la consola, Datastream crea esta cuenta de servicio automáticamente.
Para crear una cuenta de servicio con gcloud
, ejecuta el siguiente comando:
gcloud beta services identity create \ --service=datastream.googleapis.com \ --project=PROJECT_ID
El comando anterior devuelve el nombre de una cuenta de servicio. Usarás este nombre de cuenta de servicio durante el procedimiento descrito en la sección Conceder acceso a la clave a la cuenta de servicio.
Crear clave
Puedes crear la clave en el mismo proyecto Google Cloud que el flujo de Datastream o en un proyecto de usuario independiente. La ubicación del llavero de claves de Cloud KMS debe coincidir con la región en la que quieras crear el flujo. Una clave de región global o multirregión no funcionará. Si las regiones no coinciden, no podrás crear la emisión.
Para crear una clave de Cloud KMS, sigue estos pasos:
Consola
- En la Google Cloud consola, ve a la página Claves criptográficas.
- Haz clic en Crear conjunto de claves.
- Añade un nombre del conjunto de claves. Anota este nombre, ya que lo necesitarás para conceder acceso a la clave a la cuenta de servicio.
- Añade una ubicación del conjunto de claves.
- Haz clic en Crear. Se abrirá la página Crear clave.
- Añade un nombre de clave.
- Seleccione un Propósito (simétrico o asimétrico).
- Selecciona un Periodo de rotación y una Fecha de inicio.
- Haz clic en Crear.
- En la tabla Claves, haz clic en los tres puntos de la última columna y selecciona Copiar ID de recurso o anótalo. Esta es la
KMS_KEY_ID
. Necesitas elKMS_KEY_ID
cuando concedas acceso a la clave a la cuenta de servicio.
gcloud
- Crea un conjunto de claves.
Anota este nombre, ya que lo necesitarás para conceder acceso a la clave a la cuenta de servicio.gcloud kms keyrings create KMS_KEYRING_ID \ --location=GCP_REGION
- Crea una clave en el conjunto de claves.
Anota este nombre, ya que lo necesitarás para conceder acceso a la clave a la cuenta de servicio.gcloud kms keys create KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --purpose=encryption
Concede acceso a la clave a la cuenta de servicio
Solo tienes que seguir este procedimiento si usas gcloud
o la API.
Para conceder acceso a la cuenta de servicio, usa el siguiente código:
gcloud kms keys add-iam-policy-binding KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Crear un flujo en Datastream con CMEK
Al crear un flujo en Datastream, puedes usar tu CMEK para gestionar el cifrado de tus datos.
Siguientes pasos
- Para saber cómo inhabilitar una versión de clave, consulta Inhabilitar una versión de clave habilitada.
- Para saber cómo volver a habilitar una versión de clave, consulta Habilitar una versión de clave inhabilitada.