Claves de encriptación administradas por el cliente (CMEK)

De forma predeterminada, Google Cloud encripta los datos cuando están en reposo de manera automática mediante claves de encriptación administradas por Google. Si tienes requisitos normativos o de cumplimiento específicos relacionados con las claves que protegen los datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para los recursos.

Puedes leer más sobre los beneficios específicos de usar CMEK para los recursos de Vertex AI en esta sección. Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud Key Management Service.

En esta guía, se describen algunos beneficios de usar CMEK para los recursos de Vertex AI y se explica cómo configurar un trabajo de entrenamiento a fin de que use CMEK.

CMEK para recursos de Vertex AI

En las siguientes secciones, se describe la información básica sobre CMEK para los recursos de Vertex AI que debes comprender antes de configurar CMEK para los trabajos.

Beneficios de CMEK

En general, las CMEK son más útiles si necesitas control total sobre las claves que se usan para encriptar los datos. Mediante CMEK, puedes administrar las claves dentro de Cloud KMS. Por ejemplo, puedes rotar o inhabilitar una clave, o bien puedes configurar una programación de rotación mediante la API de Cloud KMS. Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud KMS.

Cuando ejecutas un trabajo de entrenamiento de AutoML o personalizado, tu código se ejecuta en una o más instancias de máquina virtual (VM) administradas por Vertex AI. Cuando habilitas CMEK para los recursos de Vertex AI, la clave que designes, en lugar de una clave administrada por Google, se usa para encriptar datos en los discos de arranque de estas VM. La clave CMEK encripta las siguientes categorías de datos:

  • La copia del código en las VM.
  • Cualquier dato que se cargue con el código.
  • Cualquier dato temporal que el código guarde en el disco local.
  • Modelos con entrenamiento de AutoML.
  • Archivos de medios (datos) subidos como conjuntos de datos de medios.

En general, la clave CMEK no encripta los metadatos asociados con tu operación, como el nombre y la región del trabajo, o el nombre visible de un conjunto de datos. Los metadatos asociados con las operaciones siempre se encriptan mediante el mecanismo de encriptación predeterminado de Google.

En los conjuntos de datos, cuando un usuario importa datos a un conjunto de datos, las anotaciones y los elementos de datos están encriptados con CMEK. El nombre visible del conjunto de datos no está encriptado con CMEK.

Para los modelos, los modelos almacenados en el sistema de almacenamiento (por ejemplo, el disco) están encriptados con CMEK. Todos los resultados de la evaluación del modelo están encriptados con CMEK.

En endpoints, todos los archivos del modelo usados para la implementación del modelo en el extremo están encriptados con CMEK. Esto no incluye ningún dato en la memoria.

En la predicción por lotes, los archivos temporales (como los archivos de modelo, los registros y los discos de VM) que se usan para ejecutar el trabajo de predicción por lotes están encriptados con CMEK. Los resultados de la predicción por lotes se almacenan en el destino que proporcionó el usuario. En consecuencia, Vertex AI respeta el valor predeterminado de la configuración de encriptación del destino. De lo contrario, los resultados también se encriptarán con CMEK.

En el etiquetado de datos, todos los archivos de entrada (imagen, texto, video, tabulares), discusiones temporales (por ejemplo, preguntas, comentarios) y salida (resultado de etiquetado) están encriptados con CMEK. Los nombres de visualización de las especificaciones de anotación no están encriptados con CMEK.

Claves externas

Puedes usar Cloud External Key Manager (Cloud EKM) a fin de crear claves externas, que administras, para encriptar datos dentro de Google Cloud.

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave administrada de forma externa. Si solicitas acceso a un recurso encriptado con una clave administrada de forma externa y la clave no está disponible, Vertex AI rechazará la solicitud. Puede haber un retraso de hasta 10 minutos antes de que puedas acceder al recurso una vez que la clave esté disponible.

Para obtener más consideraciones sobre el uso de claves externas, consulta Cloud External Key Manager.

Usa CMEK con otros productos de Google Cloud

La configuración de CMEK para los recursos de Vertex AI no configura de forma automática CMEK para otros productos de Google Cloud que usas junto con Vertex AI. Para usar CMEK a fin de encriptar datos en otros productos de Google Cloud, se requiere una configuración adicional. Por ejemplo:

Recursos actualmente compatibles con CMEK

Los recursos actuales de Vertex AI que abarca CMEK son los siguientes. La compatibilidad de CMEK con las funciones de Vista previa también se encuentra en el estado Vista previa.

Recurso Material encriptado Vínculos de documentación
Conjunto de datos
  • Todos los datos importados de los usuarios (por ejemplo, contenido de texto o videos) para DataItems y Annotations.
  • Contenido que creó el usuario, como AnnotationSpecs, ColumnSpecs.
Modelo
  • Archivos de modelo subidos.
  • Resultados de la evaluación del modelo entrenado.
Extremo
  • Todos los archivos de modelo usados para la implementación del modelo en el extremo. Esto no incluye ningún dato en la memoria, pero se anulará la implementación automática del modelo si la clave está inhabilitada.
CustomJob (excluye recursos que usan una VM de TPU)
  • La copia del código en las VM que se usa para ejecutar la operación.
  • Cualquier dato que se cargue con el código.
  • Cualquier dato temporal que el código guarde en el disco local.
HyperparameterTuningJob (excluye recursos que usan una VM de TPU)
  • La copia del código en las VM que se usa para ejecutar la operación.
  • Cualquier dato que se cargue con el código.
  • Cualquier dato temporal que el código guarde en el disco local.
TrainingPipeline (excluye recursos que usan una VM de TPU)
  • La copia del código en las VM que se usa para ejecutar la operación.
  • Cualquier dato que se cargue con el código.
  • Cualquier dato temporal que el código guarde en el disco local.
  • Modelos con entrenamiento de AutoML.
BatchPredictionJob (excluye batchPrediction de imagen de AutoML)
  • Cualquier archivo temporal (por ejemplo, archivos de modelo, registros, discos de VM) que se usa en el trabajo para continuar con el trabajo de predicción por lotes.
  • Si los resultados escritos de BatchPrediction se almacenan en el destino proporcionado por el usuario, este respetará la configuración de encriptación del valor predeterminado. De lo contrario, también se encriptará con CMEK.
ModelDeploymentMonitoringJob
  • Cualquier archivo temporal (por ejemplo, archivos de conjunto de datos de entrenamiento, registros, discos de VM) que se usa en el trabajo para procesar el trabajo de supervisión de la implementación del modelo.
  • Cualquier dato que se usa para detectar anomalías de supervisión.
  • Si la clave está inhabilitada, se detendrá el trabajo de supervisión de la implementación del modelo.
PipelineJob
  • El trabajo de canalización y todos sus subrecursos
MetadataStore
  • Todo el contenido del almacén de metadatos.
TensorBoard
  • Todos los datos de los registros de TensorBoard que se subieron, incluidos los escalares, los histogramas, las imágenes del grafo, las imágenes y el texto.
Tienda de funciones
  • El almacén de atributos y todo el contenido del almacén de atributos

Compatibilidad con CMEK para canalizaciones de ajuste de IA generativa

La compatibilidad con CMEK se proporciona en la canalización de ajuste de los siguientes modelos:

  • text-bison for PaLM 2 (GPU)
  • BERT
  • T5
  • image-generation (GPU)

Limitaciones

La compatibilidad de CMEK no se proporciona en los siguientes casos:

  • Predicción por lotes del modelo de imagen de AutoML (BatchPredictionJob)
  • Ajuste de TPU

Configura CMEK para tus recursos

En las siguientes secciones, se describe cómo crear un llavero de claves y una clave en Cloud Key Management Service, cómo otorgar permisos de encriptador y desencriptador de Vertex AI para tu clave y cómo crear recursos que usen CMEK.

Antes de comenzar

En esta guía, se supone que usas dos proyectos de Google Cloud diferentes a fin de configurar CMEK para los datos de Vertex AI:

  • Un proyecto para administrar la clave de encriptación (denominado “proyecto de Cloud KMS”)
  • Un proyecto para acceder a datos o resultados de Vertex AI en Cloud Storage y, además, interactuar con cualquier otro producto de Google Cloud que necesites para el caso práctico (denominado “proyecto de AI Platform”).

Esta configuración recomendada admite una separación de obligaciones.

Como alternativa, puedes usar un solo proyecto de Google Cloud para toda la guía. Para hacerlo, usa el mismo proyecto para todas las tareas que hacen referencia al proyecto de Cloud KMS y las tareas que hacen referencia al proyecto de AI Platform.

Configura el proyecto de Cloud KMS

  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. Habilita la API de Cloud KMS.

    Habilita la API

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

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

  7. Habilita la API de Cloud KMS.

    Habilita la API

Configura el proyecto de AI Platform

  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. Habilita Vertex AI API.

    Habilita la API

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

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

  7. Habilita Vertex AI API.

    Habilita la API

Configura la CLI de Google Cloud

La CLI de gcloud es obligatoria en algunos pasos de esta guía y opcional en otros.

Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

gcloud init

Crea un llavero de claves y una clave

Sigue la guía de Cloud KMS para crear claves simétricas a fin de crear un llavero de claves y una clave. Cuando crees el llavero de claves, especifica una región que admita operaciones de Vertex IA como la ubicación del llavero de claves. El entrenamiento de Vertex AI solo admite CMEK cuando el recurso y la clave usan la misma región. No debes especificar una ubicación birregional, multirregional ni global para el llavero de claves.

Asegúrate de crear el llavero de claves y la clave en el proyecto de Cloud KMS.

Otorga permisos de Vertex AI

A fin de usar CMEK en los recursos, debes otorgar permiso a Vertex AI para encriptar y desencriptar datos con la clave. Vertex AI usa un agente de servicio administrado por Google para ejecutar operaciones mediante tus recursos. Esta cuenta de servicio se identifica con una dirección de correo electrónico que tiene el siguiente formato:

service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

A fin de encontrar la cuenta de servicio adecuada para tu proyecto de AI Platform, ve a la página IAM en la consola de Google Cloud y busca el miembro que coincida con este formato de dirección de correo electrónico. Debes reemplazar la variable AI_PLATFORM_PROJECT_NUMBER por el número de proyecto de AI Platform. La cuenta de servicio también tiene el nombre Vertex AI Service Agent.

Ir a la página IAM

Toma nota de la dirección de correo electrónico de esta cuenta de servicio y úsala en los pasos siguientes a fin de otorgarle permiso para encriptar y desencriptar datos con la clave. Puedes otorgar permisos mediante la consola de Google Cloud o mediante la CLI de Google Cloud.

Consola de Google Cloud

  1. En la consola de Google Cloud, haz clic en Seguridad y selecciona Administración de claves. Esto te llevará a la página Claves criptográficas y seleccionar tu proyecto de Cloud KMS.

    Ir a la página Claves criptográficas

  2. Haz clic en el nombre del llavero de claves que creaste en la sección anterior de esta guía para ir a la página Detalles del llavero de claves.

  3. Selecciona la casilla de verificación de la clave que creaste en una sección anterior de esta guía. Si no hay un panel de información etiquetado con el nombre de la clave que ya esté abierto, haz clic en Mostrar panel de información.

  4. En el panel de información, haz clic en  Agregar miembro para abrir el cuadro de diálogo Agregar miembros a “KEY_NAME. En este cuadro de diálogo, haz la siguiente acción:

    1. En el cuadro Miembros nuevos, ingresa la dirección de correo electrónico de la cuenta de servicio que anotaste en la sección anterior: service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com.
    2. En la lista desplegable Seleccionar una función, haz clic en Cloud KMS y, luego, selecciona la función Encriptador/desencriptador de CryptoKey de Cloud KMS.

    3. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando:

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING_NAME \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

En este comando, reemplaza los siguientes marcadores de posición:

  • KEY_NAME: Es el nombre de la clave que creaste en una sección anterior de esta guía.
  • KEY_RING_NAME: Es el llavero de claves que creaste en una sección anterior de esta guía.
  • REGION: Es la región en la que creaste el llavero de claves.
  • KMS_PROJECT_ID: Es el ID del proyecto de Cloud KMS.
  • AI_PLATFORM_PROJECT_NUMBER: Es el número del proyecto de AI Platform, que anotaste en la sección anterior como parte de una dirección de correo electrónico de cuenta de servicio.

Crea recursos con la clave de KMS

Cuando creas un recurso compatible con CMEK nuevo, puedes especificar la clave como uno de los parámetros de creación.

Console

Cuando creas un nuevo recurso compatible con CMEK en la sección Vertex AI de la consola de Google Cloud, puedes seleccionar tu clave en el sección general o avanzada:

Sección Selecciona la clave de encriptación para el recurso

Línea de REST y CMD

Cuando crees un recurso compatible, agrega un objeto encryptionSpec a la solicitud y configura el campo encryptionSpec.kmsKeyName para que apunte a tu recurso de clave.

Por ejemplo, cuando creas un recurso dataset, especificarías tu clave en el cuerpo de la solicitud:

 {
   "displayName": DATASET_NAME,
   "metadataSchemaUri": METADATA_URI,
   "encryptionSpec": {
     "kmsKeyName": "projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME"
   }
 }

Java

Cuando crees un recurso admitido, configura EncryptionSpec para que apunte a tu recurso de clave. Consulta la documentación de la biblioteca cliente de Vertex IA para Java a fin de obtener más información.

Node.js

Cuando crees un recurso admitido, configura el parámetro encryptionSpec para que apunte a tu recurso de clave. Consulta la documentación de la biblioteca cliente de Vertex AI para Node.js a fin de obtener más información.

Python

Cuando crees un recurso admitido, configura el parámetro encryption_spec para que apunte a tu recurso de clave. Consulta la documentación Cliente de Python para Cloud AI Platform a fin de obtener más información.

¿Qué sigue?