Claves de encriptado gestionadas por el cliente (CMEK)

De forma predeterminada, Vertex AI cifra el contenido del cliente en reposo. Vertex AI 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 Vertex AI. 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 Vertex AI 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 guía se describen algunas ventajas de usar CMEK en los recursos de Vertex AI y se explica cómo configurar un trabajo de entrenamiento para usar CMEK.

Para obtener más información sobre cómo usar las claves de cifrado gestionadas por el cliente en Colab Enterprise, consulta la página sobre las claves de cifrado gestionadas por el cliente de Colab Enterprise. Para obtener más información sobre cómo usar CMEK en instancias de Vertex AI Workbench, consulta la página de CMEK de instancias de Vertex AI Workbench.

CMEK para recursos de Vertex AI

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

Ventajas de CMEK

En general, las CMEKs son más útiles si necesitas tener un control total sobre las claves que se usan para cifrar tus datos. Con CMEK, puedes gestionar tus claves en Cloud KMS. Por ejemplo, puedes rotar o inhabilitar una clave, o bien configurar una programación de rotación con la API de Cloud KMS. Para obtener más información sobre CMEK en general, incluido cuándo y por qué habilitarla, consulta la documentación de Cloud KMS.

Cuando ejecutas una tarea de AutoML personalizado o de AutoML, tu código se ejecuta en una o varias instancias de máquina virtual (VM) gestionadas por Vertex AI. Cuando habilitas las CMEKs para los recursos de Vertex AI, se usa la clave que designes, en lugar de una clave gestionada por Google, para encriptar los datos de los discos de arranque de estas VMs. La clave CMEK cifra los siguientes tipos de datos:

  • La copia de tu código en las máquinas virtuales.
  • Cualquier dato que cargue tu código.
  • Cualquier dato temporal que tu código guarde en el disco local.
  • Modelos entrenados con AutoML.
  • Archivos multimedia (datos) subidos a conjuntos de datos multimedia.

Por lo general, la clave de CMEK no cifra los metadatos asociados a tu operación, como el nombre y la región del trabajo, o el nombre visible de un conjunto de datos. Los metadatos asociados a las operaciones siempre se cifran mediante el mecanismo de cifrado predeterminado de Google.

En el caso de los conjuntos de datos, cuando un usuario importa datos en un conjunto de datos, los elementos de datos y las anotaciones se cifran con CMEK. El nombre visible del conjunto de datos no está cifrado con CMEK.

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

En el caso de los endpoints, todos los archivos de modelo utilizados para el despliegue de modelos en el endpoint están cifrados con CMEK. Esto no incluye ningún dato en memoria.

En el caso de la predicción por lotes, los archivos temporales (como los archivos de modelo, los registros y los discos de máquinas virtuales) que se usan para ejecutar la tarea de predicción por lotes se cifran con CMEK. Los resultados de las predicciones por lotes se almacenan en el destino proporcionado por el usuario. Por lo tanto, Vertex AI respeta el valor predeterminado de la configuración de cifrado del destino. De lo contrario, los resultados también se cifrarán con CMEK.

En el caso del etiquetado de datos, todos los archivos de entrada (imagen, texto, vídeo, tabla), las conversaciones temporales (por ejemplo, preguntas y comentarios) y los archivos de salida (resultados del etiquetado) se cifran con CMEK. Los nombres visibles de las especificaciones de anotación no están cifrados con CMEK.

En el caso de los agentes, las CMEKs encriptan todos los archivos de origen que se usan para desarrollar agentes. Además, las imágenes de contenedor y las instancias desplegadas del agente también están cifradas con CMEK.

Claves externas

Puedes usar Cloud External Key Manager (Cloud EKM) para crear claves externas que gestionas y que te permiten cifrar datos en Google Cloud.

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave gestionada externamente. Si solicitas acceso a un recurso cifrado con una clave gestionada externamente 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 información sobre las consideraciones que debes tener en cuenta al usar claves externas, consulta Cloud External Key Manager.

Usar CMEK con otros Google Cloud productos

Configurar CMEK para los recursos de Vertex AI no configura automáticamente CMEK para otros productos de Google Cloud que uses junto con Vertex AI. Para usar CMEK y cifrar datos en otros productos, se necesita una configuración adicional.Google Cloud Por ejemplo:

Recursos compatibles con CMEK

Los recursos de Vertex AI que cubre CMEK son los siguientes: La compatibilidad con CMEK para las funciones en versión preliminar también está en versión preliminar.

Recurso Material cifrado Enlaces de documentación
Conjunto de datos
  • Todos los datos importados por el usuario (por ejemplo, contenido de texto o vídeos) para DataItems y Annotations.
  • Contenido creado por usuarios, como AnnotationSpecs, ColumnSpecs.
Modelo
  • Archivos de modelo subidos.
  • Resultados de la evaluación del modelo entrenado.
Endpoint
  • Todos los archivos de modelo utilizados para el despliegue del modelo en el endpoint. Esto no incluye ningún dato en memoria, pero el modelo se retirará automáticamente si se inhabilita la clave.
CustomJob
  • La copia de tu código en las VMs que se usan para ejecutar la operación.
  • Cualquier dato que cargue tu código.
  • Cualquier dato temporal que tu código guarde en el disco local.
HyperparameterTuningJob
  • La copia de tu código en las VMs que se usan para ejecutar la operación.
  • Cualquier dato que cargue tu código.
  • Cualquier dato temporal que tu código guarde en el disco local.
TrainingPipeline
  • La copia de tu código en las VMs que se usan para ejecutar la operación.
  • Cualquier dato que cargue tu código.
  • Cualquier dato temporal que tu código guarde en el disco local.
  • Modelos entrenados con AutoML.
BatchPredictionJob (no incluye AutoML image batchPrediction)
  • Todos los archivos temporales (por ejemplo, archivos de modelo, registros, discos de VM) que se usan en la tarea para llevar a cabo la tarea de predicción por lotes.
  • Si los resultados escritos de BatchPrediction se almacenan en el destino proporcionado por el usuario, se respetará la configuración de cifrado de su valor predeterminado. De lo contrario, también se cifrará con CMEK.
ModelDeploymentMonitoringJob
  • Los archivos temporales (por ejemplo, archivos de conjuntos de datos de entrenamiento, registros y discos de máquinas virtuales) que se usan en la tarea para procesar la tarea de monitorización del despliegue del modelo.
  • Cualquier dato utilizado para detectar anomalías de monitorización.
  • Si la clave está inhabilitada, la tarea de monitorización del despliegue del modelo se pausará.
PipelineJob
  • El trabajo de la canalización y todos sus recursos secundarios.
MetadataStore
  • Todo el contenido del almacén de metadatos.
TensorBoard
  • Todos los datos de los registros de TensorBoard subidos, incluidos los escalares, los histogramas, las definiciones de gráficos, las imágenes y el texto.
Feature Store
  • El almacén de características y todo su contenido.
Índice
  • Todos los archivos de datos utilizados para los índices de búsqueda vectorial almacenados en Cloud Storage, Pub/Sub y almacenamiento interno. Index e IndexEndpoint deben crearse con la misma clave.
IndexEndpoint
  • Todos los archivos de datos utilizados para los índices de búsqueda vectorial almacenados en Cloud Storage, Pub/Sub y almacenamiento interno. Index e IndexEndpoint deben crearse con la misma clave.
Entorno de ejecución de Colab Enterprise
  • El disco de arranque y los discos de datos de la VM del tiempo de ejecución
Cuaderno de Colab Enterprise
  • El archivo del cuaderno y sus comentarios
Vertex AI Agent Engine
  • La copia de los archivos de origen de tu agente, incluidos el código, las secuencias de comandos y los archivos de dependencia
  • Las imágenes de contenedor creadas a partir de los archivos de origen del agente
  • Las instancias en ejecución desplegadas a partir de las imágenes de contenedor de tu agente

Compatibilidad con CMEK para las canalizaciones de ajuste de la IA generativa

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

  • BERT
  • T5
  • image-generation (GPU)

Limitaciones

No se ofrece asistencia para CMEK en los siguientes casos:

  • Predicción por lotes de modelos de imágenes de AutoML (BatchPredictionJob)
  • Ajuste de TPUs

Configurar CMEK para tus recursos

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

Antes de empezar

En esta guía se presupone que usas dos proyectos independientes para configurar CMEK para los datos de Vertex AI: Google Cloud

  • Un proyecto para gestionar tu clave de cifrado (denominado "proyecto de Cloud KMS").
  • Un proyecto para acceder a los datos o resultados de Vertex AI en Cloud Storage e interactuar con cualquier otro producto de Google Cloud que necesites para tu caso de uso (denominado "proyecto de AI Platform").

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

También puedes usar un solo Google Cloud proyecto para toda la guía. Para ello, usa el mismo proyecto para todas las tareas siguientes que hagan referencia al proyecto de Cloud KMS y a las tareas que hagan referencia al proyecto de AI Platform.

Configurar el proyecto de Cloud KMS

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Configurar el proyecto de AI Platform

    1. 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.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Vertex AI API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    6. Verify that billing is enabled for your Google Cloud project.

    7. Enable the Vertex AI API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    8. Configurar Google Cloud CLI

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

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      Crear un conjunto de claves y una clave

      Sigue la guía de Cloud KMS para crear claves simétricas y crea un conjunto de claves y una clave. Cuando crees tu conjunto de claves, especifica una región que admita operaciones de Vertex AI como ubicación del conjunto 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 o global para tu conjunto de claves.

      Crea el conjunto de claves y la clave en tu proyecto de Cloud KMS.

      Conceder permisos de Vertex AI

      Para usar CMEK en tus recursos, debes conceder permiso a Vertex AI para cifrar y descifrar datos con tu clave. Vertex AI usa un agente de servicio gestionado por Google para ejecutar operaciones con tus recursos. Esta cuenta de servicio se identifica mediante una dirección de correo con el siguiente formato:

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

      Para encontrar la cuenta de servicio adecuada para tu proyecto de AI Platform, ve a la página Gestión de identidades y accesos de la Google Cloud consola y busca el miembro que coincida con este formato de dirección de correo, con el número de proyecto de tu proyecto de AI Platform en lugar de la variable AI_PLATFORM_PROJECT_NUMBER. La cuenta de servicio también tiene el nombre Vertex AI Service Agent.

      Ve a la página de gestión de identidades y accesos.

      Anota la dirección de correo de esta cuenta de servicio y úsala en los pasos siguientes para concederle permiso para cifrar y descifrar datos con tu clave. Puedes conceder permisos mediante la Google Cloud consola o la CLI de Google Cloud:

      Google Cloud consola

      1. En la consola de Google Cloud , haz clic en Seguridad y selecciona Gestión de claves. Se le dirigirá a la página Claves criptográficas y deberá seleccionar su proyecto de Cloud KMS.

        Ir a la página Claves criptográficas

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

      3. Marca la casilla de la clave que has creado en una sección anterior de esta guía. Si aún no se ha abierto un panel de información con el nombre de tu clave, haz clic en Mostrar panel de información.

      4. En el panel de información, haz clic en Añadir miembro para abrir el cuadro de diálogo Añadir miembros a "KEY_NAME". En este cuadro de diálogo, haz lo siguiente:

        1. En el cuadro Miembros nuevos, introduce la dirección de correo de la cuenta de servicio que has anotado en la sección anterior: service-AI_PLATFORM_PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
        2. En la lista desplegable Selecciona un rol, haz clic en Cloud KMS y, a continuación, selecciona el rol Encargado del encriptado y desencriptado de la clave criptográfica 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, sustituye los siguientes marcadores de posición:

      • KEY_NAME: el nombre de la clave que has creado en una sección anterior de esta guía.
      • KEY_RING_NAME: el llavero que has creado en una sección anterior de esta guía.
      • REGION: la región en la que has creado el conjunto de claves.
      • KMS_PROJECT_ID: el ID de tu proyecto de Cloud KMS.
      • AI_PLATFORM_PROJECT_NUMBER: el número de proyecto de AI Platform, que has anotado en la sección anterior como parte de una dirección de correo de una cuenta de servicio.

      Crear recursos con la clave de KMS

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

      Consola

      Cuando creas un recurso compatible con CMEK en la sección Vertex AI de laGoogle Cloud consola, puedes seleccionar tu clave en la sección de opciones generales o avanzadas:

      Seleccionar la clave de cifrado de la sección de recursos

      REST y línea de comandos

      Cuando cree un recurso admitido, añada un objeto encryptionSpec a su solicitud y configure el campo encryptionSpec.kmsKeyName para que apunte a su recurso de clave.

      Por ejemplo, al crear 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 compatible, asigna el valor EncryptionSpec para que apunte a tu recurso de clave. Consulta la documentación de la biblioteca de cliente de Vertex AI para Java para obtener más información.

      Node.js

      Cuando crees un recurso admitido, asigna al parámetro encryptionSpec el valor que corresponda a tu recurso de clave. Para obtener más información, consulta la documentación de la biblioteca de cliente de Vertex AI para Node.js.

      Python

      Cuando crees un recurso admitido, asigna al parámetro encryption_spec el valor que corresponda a tu recurso de clave. Para obtener más información, consulta la documentación del cliente de Python para Cloud AI Platform.

      Siguientes pasos