Controles de Servicio de VPC con Vertex AI

Controles de Servicio de VPC puede ayudarte a mitigar el riesgo de filtración externa de datos de Vertex AI. Usa Controles de Servicio de VPC para crear un perímetro de servicio que proteja los recursos y los datos que especifiques. Por ejemplo, cuando usas Controles de Servicio de VPC para proteger Vertex AI, los siguientes artefactos no pueden salir de tu perímetro de servicio:

  • Datos de entrenamiento para un modelo de AutoML o un modelo personalizado
  • Modelos que has creado
  • Modelos que has buscado con Neural Architecture Search
  • Solicitudes de inferencias online
  • Resultados de una solicitud de inferencia por lotes
  • Modelos de Gemini

Controlar el acceso a las APIs de Google

Las APIs de Vertex AI, tal como se describe en el artículo Acceder a Vertex AI desde entornos locales y multicloud, abarcan una serie de opciones de accesibilidad, como Internet público, Private Service Connect para APIs de Google y Acceso privado de Google.

Acceso público

De forma predeterminada, se puede acceder a estas APIs públicas desde Internet. Sin embargo, se necesitan permisos de IAM para usarlas. Aunque funciones como Private Service Connect y Acceso privado de Google facilitan la comunicación privada a través de arquitecturas de red híbridas, no eliminan la accesibilidad a Internet pública para las APIs de Vertex AI.

Para establecer un control granular sobre el acceso a las APIs y restringir explícitamente la exposición a Internet público, es fundamental implementar Controles de Servicio de VPC. Esta capa de seguridad permite a los administradores definir y aplicar políticas de acceso, así como habilitar de forma selectiva la conectividad pública o privada a las APIs de Google para cumplir los requisitos de la organización.

Acceso privado

Las organizaciones que necesiten restringir el acceso público a las APIs de Google para que sea privado pueden usar Controles de Servicio de VPC junto con APIs de Google de Private Service Connect (paquete de Controles de Servicio de VPC) o Acceso privado de Google. Cuando se implementan en redes híbridas y en Google Cloud, ambas opciones permiten el acceso privado a las APIs de Google desde las instalaciones. Sin embargo, Private Service Connect también ofrece flexibilidad a la hora de definir una dirección IP personalizada y un nombre de endpoint de DNS.

Como práctica recomendada, usa la IP virtual (VIP) restringida con las APIs de Google de Private Service Connect o con Acceso privado de Google para proporcionar una ruta de red privada a las solicitudes de los servicios de Google Cloud sin exponerlas a Internet. El servicio VIP restringido admite todas las APIs que Controles de Servicio de VPC puede proteger y que requieren consideraciones para las redes locales y de VPC. A continuación, se muestran algunos ejemplos:

Controlar el acceso a las APIs mediante el acceso privado a servicios

Las siguientes APIs de Vertex AI implementadas con acceso a servicios privados requieren una configuración de red adicional cuando se implementan en un entorno protegido con Controles de Servicio de VPC:

  • Vector Search (consulta de índice)
  • Entrenamiento personalizado (plano de datos)
  • Vertex AI Pipelines
  • Endpoints de predicción online privados

Por ejemplo, Vertex AI Pipelines es un servicio gestionado por Google (productor) que se implementa en un proyecto de un solo inquilino y en una red VPC, y que puede escalar los servicios admitidos en función de los requisitos del consumidor. La comunicación entre las redes del productor y del consumidor se establece mediante el emparejamiento de redes VPC, excepto en el caso del tráfico de salida de Internet, que se enruta a través de la red del productor.

En la red del productor, existe una ruta predeterminada que permite el tráfico de salida a Internet, además de acceso sin restricciones a las APIs de Google. Para actualizar la red del productor de forma que admita la IP virtual restringida, debes habilitar Controles de Servicio de VPC para los emparejamientos, lo que realiza las siguientes acciones en todos los servicios admitidos implementados en la red del productor de Service Networking:

  • Quita la ruta predeterminada de IPv4 (destino 0.0.0.0/0, pasarela de Internet predeterminada del siguiente salto).
  • Crea zonas privadas gestionadas por Cloud DNS y autoriza esas zonas para la red de VPC del productor de servicios. Las zonas incluyen googleapis.com, pkg.dev, gcr.io y otros dominios o nombres de host necesarios para las APIs y los servicios de Google que son compatibles con Controles de Servicio de VPC.
  • Los datos de registro de las zonas resuelven todos los nombres de host en 199.36.153.4, 199.36.153.5, 199.36.153.6 y 199.36.153.7.

Para eliminar la ruta predeterminada de la red del productor sin que afecte a los servicios gestionados por Google, puedes usar HA VPN sobre Cloud Interconnect. Para ello, sigue estos pasos:

  1. Implementa una red de VPC de servicios junto con una VPN de alta disponibilidad en la red de VPC del consumidor.
  2. Despliega servicios gestionados por Google en la red de VPC de servicios.
  3. Habilita Controles de Servicio de VPC para los peerings.
  4. Anuncia la subred de acceso a servicios privados como un anuncio de ruta personalizada desde el router de Cloud Router si los servicios gestionados requieren accesibilidad local.
  5. Actualiza el emparejamiento entre redes de VPC de la red de servicio con la opción exportar rutas personalizadas.

Creación de perímetros de servicio

Para obtener una descripción general de cómo crear un perímetro de servicio, consulta el artículo Crear un perímetro de servicio en la documentación de Controles de Servicio de VPC.

Añadir servicios restringidos a tu perímetro

Cuando establezcas un perímetro de servicio, te recomendamos que incluyas todos los servicios restringidos como práctica recomendada de seguridad. Este enfoque integral ayuda a minimizar las posibles vulnerabilidades y el acceso no autorizado. Sin embargo, puede haber casos en los que tu organización tenga requisitos específicos centrados en proteger Vertex AI y sus APIs interconectadas. En estos casos, puedes seleccionar e incluir solo las APIs de Vertex AI específicas que sean esenciales para tus operaciones.

Las APIs de Vertex AI que puedes incorporar a tu perímetro de servicio son las siguientes:

  • La API de Vertex AI admite los siguientes servicios y funciones:
    • Inferencia por lotes
    • Conjuntos de datos
    • Vertex AI Feature Store (servicio online de Bigtable)
    • Vertex AI Feature Store (servicio online optimizado)
    • IA generativa en Vertex AI (Gemini)
    • Registro de modelos de Vertex AI
    • Inferencia online
    • Vector Search (creación de índices)
    • Vector Search (consulta de índice)
    • Entrenamiento personalizado (plano de control)
    • Entrenamiento personalizado (plano de datos)
    • Vertex AI Pipelines
    • Endpoints de inferencia online privados
    • Colab Enterprise
    • Vertex AI Agent Engine
  • La API Notebooks es compatible con el siguiente servicio:
    • Vertex AI Workbench

Compatibilidad con Controles de Servicio de VPC para las canalizaciones de ajuste de la IA generativa

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

  • text-bison for PaLM 2
  • BERT
  • T5
  • La familia de modelos textembedding-gecko.

Usar Controles de Servicio de VPC con Vertex AI Pipelines

El perímetro de servicio bloquea el acceso de Vertex AI a APIs y servicios de terceros en Internet. Si usas componentes de flujo de trabajo o creas tus propios componentes de flujo de trabajo personalizados Google Cloud para usarlos con Vertex AI Pipelines, no puedes instalar dependencias de PyPI desde el registro público de Python Package Index (PyPI). En su lugar, debe hacer una de las siguientes acciones:

Usar contenedores personalizados

Como práctica recomendada para el software de producción, los autores de componentes deben usar componentes de Python en contenedores e incorporar las dependencias en su imagen de contenedor, de modo que no se requiera ninguna instalación activa durante la ejecución de una canalización. Una forma de hacerlo es la siguiente:

  1. Crea tu propia imagen de contenedor con el SDK de Kubeflow Pipelines y otros paquetes preinstalados. Por ejemplo, puedes usar us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-17:latest como capa base de tu imagen y añadir una capa adicional para instalar los paquetes en el momento de compilar el contenedor.

  2. Actualice el código de definición del componente para definir la ruta base_image y la marca install_kfp_package en False. Esta marca indica al compilador de KFP que no inserte un comando pip install kfp en la línea de comandos del contenedor, ya que el paquete del SDK de Kubeflow Pipelines ya está instalado en la imagen. Por ejemplo:

    @component(
        base_image='gcr.io/deeplearning-platform-release/tf-cpu.2-17',
        install_kfp_package=False,
    )
    def my_component(...):
        ...
    

Instalar paquetes desde un repositorio de Artifact Registry

También puedes crear un repositorio de Artifact Registry en tu proyecto, almacenar paquetes de Python en él y configurar tu entorno de Vertex AI para que instale desde él, tal como se describe en esta sección. Para obtener más información, consulta Gestionar paquetes de Python.

Configurar roles y permisos

  1. La cuenta de servicio de tu entorno de Vertex AI debe tener el rol iam.serviceAccountUser.

  2. Si instalas paquetes PyPI personalizados desde un repositorio de la red de tu proyecto y este repositorio no tiene una dirección IP pública, haz lo siguiente:

    1. Asigna permisos para acceder a este repositorio a la cuenta de servicio del entorno.

    2. Asegúrate de que la conectividad a este repositorio esté configurada en tu proyecto.

Crear el repositorio

  1. Crea un repositorio de Artifact Registry en modo VPC en tu proyecto.
  2. Almacena los paquetes de Python necesarios en el repositorio.

Configurar el entorno de Vertex AI para instalar desde el repositorio

Para instalar paquetes PyPI personalizados desde uno o varios repositorios de Artifact Registry, haz una llamada similar a la siguiente a @dsl.component:

@dsl.component(packages_to_install=["tensorflow"],
pip_index_urls=['http://myprivaterepo.com/simple', 'http://pypi.org/simple'],)
def hello_world(text: str) -> str:
    import my_package
    import tensorflow

    return my_package.hello_world(text)

Limitaciones

Se aplican las siguientes limitaciones cuando usas Controles de Servicio de VPC:

  • Para etiquetar datos, debe añadir las direcciones IP de los etiquetadores a un nivel de acceso.
  • En el caso de los Google Cloud componentes de la canalización, los componentes inician contenedores que comprueban su imagen base para ver si cumplen todos los requisitos. El paquete KFP, así como los paquetes que se incluyan en el argumento packages_to_install, son los requisitos de un contenedor. Si alguno de los requisitos especificados no está presente en la imagen base (ya sea proporcionada o personalizada), el componente intenta descargarlos del índice de paquetes de Python (PyPI). Como el perímetro de servicio bloquea el acceso de Vertex AI a APIs y servicios de terceros en Internet, la descarga falla con Connection to pypi.org timed out. Para saber cómo evitar este error, consulta Usar Controles de Servicio de VPC con Vertex AI Pipelines.
  • Cuando se usan Controles de Servicio de VPC con kernels personalizados en Vertex AI Workbench, debes configurar el peering de DNS para enviar solicitudes de *.notebooks.googleusercontent.com a la subred 199.36.153.8/30 (private.googleapis.com) en lugar de a 199.36.153.4/30 (restricted.googleapis.com).
  • Cuando se usan Controles de Servicio de VPC con la inferencia de Vertex AI, los endpoints se deben crear después de añadir el proyecto al perímetro de servicio. Si se crea un endpoint en un proyecto que no forma parte de un perímetro de servicio y, posteriormente, se añade ese proyecto a un perímetro de servicio, se producirá un error al intentar implementar un modelo en ese endpoint. Si el endpoint es un endpoint público compartido, también fallará el envío de una solicitud al endpoint. Del mismo modo, si intentas desplegar un modelo en un endpoint que se ha creado en un proyecto que formaba parte de un perímetro de servicio y, después, se elimina el proyecto, no podrás hacerlo.

Siguientes pasos