Usar claves de encriptación administradas por el cliente (CMEK)

Descripción general

En esta página, se describe cómo funcionan las claves de encriptación administradas por el cliente (CMEK) con Datastream.

¿Las CMEK son adecuadas para ti?

Las CMEK están diseñadas para las organizaciones que tienen datos sensibles o regulados y, por lo tanto, requieren que administren sus claves de encriptación.

Diferencias entre la encriptación administrada por Google y la encriptación administrada por el cliente

La función CMEK te permite usar tus propias claves criptográficas para los datos en reposo en Datastream. Después de agregar CMEK, cada vez que se realiza una llamada a la API, Datastream usa tu clave para acceder a los datos.

Datastream usa claves de encriptación de datos (DEK) administradas por Google y claves de encriptación de claves (KEK) para encriptar Datastream. Existen dos niveles de encriptación:

  1. La DEK encripta datos.
  2. La KEK encripta la DEK.

Datastream almacena la DEK encriptada junto con los datos encriptados, y Google administra la KEK de Google. Con las CMEK, creas una clave que una la KEK de Google. Las CMEK te permiten crear, revocar y borrar la KEK.

Las CMEK, incluidos el software, el hardware y las claves externas, se administran a través de la API de Cloud Key Management Service (KMS).

¿Qué ubicaciones admiten transmisiones de Datastream con CMEK habilitadas?

Las CMEK están disponibles en todas las ubicaciones de Datastream.

Comprende las cuentas de servicio

Cuando las transmisiones de Datastream tienen CMEK habilitadas, debes usar una cuenta de servicio para solicitar acceso a las claves desde Cloud Key Management Service.

Para usar una CMEK en un proyecto, debes tener una cuenta de servicio y otorgarle acceso a la clave. La cuenta de servicio debe existir dentro del proyecto. La cuenta de servicio es visible en todas las regiones.

Si usas la consola para crear una transmisión, Datastream crea la cuenta de servicio automáticamente cuando eliges la opción Clave administrada por el cliente por primera vez (si no existe una cuenta de servicio). No necesitas tener permisos especiales en tu cuenta de usuario cuando Datastream crea la cuenta de servicio automáticamente.

Comprende las claves

En Cloud Key Management Service, debes crear un llavero de claves con una clave criptográfica, configurado con una ubicación. Cuando crees una transmisión nueva en Datastream, debes seleccionar esta clave para encriptarla.

Debes conocer el ID y la región de la clave cuando crees flujos nuevos que usen CMEK. Debes colocar transmisiones nuevas en la misma región que la CMEK asociada con las transmisiones. Puedes crear un proyecto para las claves y los flujos, o bien proyectos diferentes para cada uno.

La 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 clave), cambiará el estado de la transmisión a FAILED y aparecerá un mensaje de error asociado. Después de solucionar los problemas asociados con el mensaje de error para que se pueda volver a acceder a la clave, Datastream reanuda la transmisión automáticamente.

Administradores de claves externas

Puedes usar las claves almacenadas en administradores de claves externos, como Fortanix, Ionic o Thales, como tu CMEK. Para obtener información sobre cómo usar claves externas con Cloud Key Management Service, consulta Cloud External Key Manager.

¿Cómo se hace inaccesible de forma permanente el acceso a los datos encriptados con CMEK?

Es posible que surjan situaciones en las que quieras destruir de forma permanente los datos encriptados con CMEK. Para hacerlo, debes destruir la versión de la CMEK. No puedes destruir el llavero de claves o la clave, pero puedes destruir las versiones de la clave.

Restricciones

Se aplican las siguientes restricciones cuando se usan CMEK:

  • No puedes actualizar las CMEK en una transmisión en ejecución.

  • Si bien puedes usar CMEK para encriptar filas de la base de datos de origen, no puedes usarlas para encriptar metadatos de transmisiones, como el ID de transmisión, la dirección IP de la base de datos de origen, los nombres de las tablas de la base de datos de origen, etcétera.

Usa CMEK

Ahora que comprendes las CMEK, está todo listo para configurar una cuenta de servicio y claves para CMEK. Además, aprenderás a configurar Datastream para que use CMEK. Para obtener más información sobre CMEK, consulta la Descripción general.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Instala e inicializa el SDK de Cloud.
  7. Asegúrate de tener asignado el rol Administrador de Datastream a tu cuenta de usuario.

    Ir a la página IAM

  8. Habilita Cloud Key Management Service API.

    Habilita la API

  9. Habilita la API de Datastream.

    Habilitación de la API

Flujo de trabajo para crear una transmisión en Datastream con CMEK

  1. Solo para usuarios de gcloud y API: Asegúrate de tener una cuenta de servicio para cada proyecto que requiera CMEK. De lo contrario, consulta cómo crear una cuenta de servicio.
  2. Crea un llavero de claves y una clave, y establece la ubicación de cada clave. La ubicación es la región de Google Cloud.
  3. Solo para usuarios de gcloud y API: otórgale a la cuenta de servicio acceso a la clave.
  4. Copia o escribe el ID de clave (KMS_KEY_ID) y la ubicación de la clave, y el ID (KMS_KEYRING_ID) del llavero de claves. Necesitarás esta información para otorgar acceso a la clave a la cuenta de servicio.
  5. Ve a un proyecto y crea una transmisión en Datastream con las siguientes opciones:
    1. La misma ubicación que la CMEK
    2. La configuración de CMEK
    3. El ID de CMEK

Tu transmisión en Datastream ahora está habilitada con CMEK.

Crea una cuenta de servicio

Debes crear una cuenta de servicio para cada proyecto que requiera CMEK.

Para permitir que un usuario administre cuentas de servicio, otorga una de las siguientes funciones:

  • Usuario de cuenta de servicio (roles/iam.serviceAccountUser): Incluye permisos para enumerar cuentas de servicio, obtener detalles sobre ellas, o bien actuar en nombre de una.
  • Administrador de cuenta de servicio (roles/iam.serviceAccountAdmin): Incluye permisos para enumerar cuentas de servicio y obtener detalles sobre ellas. También incluye permisos para crear, actualizar y borrar cuentas de servicio, y ver o cambiar la política de Datastream en una cuenta de servicio.

Por el momento, solo puedes usar comandos de gcloud a fin de crear el tipo de cuenta de servicio que necesitas para CMEK. Si usas Console, Datastream creará 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

En el comando anterior, se muestra un nombre de cuenta de servicio. Debes usar este nombre de cuenta de servicio durante el procedimiento en Otorga acceso a la clave a la cuenta de servicio.

Crear una clave

Puedes crear la clave en el mismo proyecto de Google Cloud en el que se encuentra la transmisión en Datastream o en otro proyecto de usuario. La ubicación del llavero de claves de Cloud KMS debe coincidir con la región en la que deseas crear la transmisión. Una clave multirregional o de región global no funcionará. Si las regiones no coinciden, no podrás crear la transmisión.

Para crear una clave de Cloud KMS:

Consola

  1. En la consola de Google Cloud, ve a la página Claves criptográficas.
  2. Haz clic en Crear llavero de claves.
  3. Agrega el Nombre del llavero de claves. Anota este nombre porque lo necesitarás al momento de otorgar el acceso a la clave a la cuenta de servicio.
  4. Agrega la Ubicación del llavero de claves.
  5. Haga clic en Crear. Se abre la página Crear clave.
  6. Agrega el Nombre de la clave.
  7. Selecciona un Propósito (simétrico o asimétrico).
  8. Selecciona un Período de rotación y una Fecha de inicio.
  9. Haz clic en Crear.
  10. En la tabla Claves, en la última columna, haz clic en los tres puntos y selecciona Copiar ID del recurso o escribe el ID. Este es el KMS_KEY_ID. Necesitas el KMS_KEY_ID cuando otorgas acceso a la clave a la cuenta de servicio.

gcloud

  1. Crea un llavero de claves nuevo.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Anota este nombre, ya que lo necesitarás al momento de otorgar el acceso a la clave a la cuenta de servicio.
  2. Crea una llave en el llavero de claves.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Anota este nombre, ya que lo necesitarás al momento de otorgar el acceso a la clave a la cuenta de servicio.

Otorga acceso a la clave a la cuenta de servicio

Solo debes realizar este procedimiento si usas gcloud o la API.

Para otorgar 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

Crea una transmisión en Datastream con CMEK

Como parte de la creación de una transmisión en Datastream, puedes usar tus CMEK para administrar la encriptación de tus datos.

Inhabilita y vuelve a habilitar versiones de claves

Consulta los siguientes temas: