Permitir el acceso multicloud a recursos protegidos desde un endpoint privado fuera de un perímetro de Controles de Servicio de VPC

Arquitectura de referencia

En la siguiente arquitectura de referencia, se implementa una VPC compartida con un modelo de Gemini en el proyecto de servicio,ph-fm-svc-project (proyecto de servicio de modelo fundacional) con los atributos de la política de servicio que permiten el acceso privado a la API de Vertex AI desde AWS:

  • Un único perímetro de Controles de Servicio de VPC
  • Identidad de usuario definida por el proyecto

Diagrama de arquitectura del uso de Controles de Servicio de VPC para crear un perímetro de servicio.

Opcional: Crea el nivel de acceso

Si tus usuarios finales necesitan acceder a Vertex AI a través de la Google Cloud consola, sigue las instrucciones de esta sección para crear un nivel de acceso de Controles de Servicio de VPC. Sin embargo, si el acceso programático a las APIs se realiza desde fuentes privadas (como on-premise con Acceso privado a Google o Cloud Workstations), no es necesario el nivel de acceso.

En esta arquitectura de referencia, usamos un intervalo CIDR corporativo, corp-public-block, para permitir que el tráfico de los empleados de la empresa acceda a la consola de Google Cloud .

Administrador de contextos de acceso permite a los administradores de la organización definir un control de acceso pormenorizado y basado en atributos para proyectos y recursos en Google Cloud Google Cloud.

Los niveles de acceso describen los requisitos que deben cumplir las solicitudes para que se acepten. Estos son algunos ejemplos:

  • Tipo de dispositivo y sistema operativo (requiere una licencia de Chrome Enterprise Premium)
  • Dirección IP
  • Identidad de usuario

Si es la primera vez que la organización usa Access Context Manager, los administradores deben definir una política de acceso, que es un contenedor de niveles de acceso y perímetros de servicio.

  1. En el selector de proyectos situado en la parte superior de la Google Cloud consola, haz clic en la pestaña Todos y, a continuación, selecciona tu organización.

  2. Para crear un nivel de acceso básico, sigue las instrucciones de la página Crear un nivel de acceso básico. Especifica las siguientes opciones:

    1. En Crear condiciones en, elige Modo básico.
    2. En el campo Título del nivel de acceso, introduce corp-public-block.
    3. En la sección Condiciones, en la opción Si se cumple la condición, devolver, elige TRUE.
    4. En Subredes de IP, elija IP pública.
    5. En el intervalo de direcciones IP, especifica el intervalo CIDR externo que requiere acceso al perímetro de Controles de Servicio de VPC.

Crear el perímetro de servicio de Controles de Servicio de VPC

Cuando creas un perímetro de servicio, permites el acceso a los servicios protegidos desde fuera del perímetro especificando los proyectos protegidos. Cuando se usan Controles de Servicio de VPC con VPC compartida, se crea un perímetro grande que incluye tanto el proyecto host como los proyectos de servicio. Si solo seleccionas el proyecto de servicio en tu perímetro, los endpoints de red que pertenezcan a proyectos de servicio parecerán estar fuera del perímetro, ya que las subredes solo están asociadas al proyecto host.

Selecciona el tipo de configuración del nuevo perímetro

En esta sección, crearás un perímetro de servicio de Controles de Servicio de VPC en modo de ejecución de prueba. En el modo de ejecución de prueba, el perímetro registra las infracciones como si se aplicaran los perímetros, pero no impide el acceso a los servicios restringidos. Te recomendamos que uses el modo de prueba antes de cambiar al modo obligatorio.

  1. En el menú de navegación de la Google Cloud consola, haga clic en Seguridad y, a continuación, en Controles de servicios de VPC.

    Ir a la página Controles de Servicio de VPC

  2. En la página Controles de Servicio de VPC, haga clic en Modo de ejecución de prueba.

  3. Haga clic en Nuevo perímetro.

  4. En la pestaña Nuevo perímetro de servicio de VPC, en el cuadro Nombre del perímetro, escribe el nombre del perímetro. De lo contrario, acepta los valores predeterminados.

    El nombre de un perímetro puede tener una longitud máxima de 50 caracteres, debe empezar por una letra y solo puede contener letras latinas ASCII (a-z, A-Z), números (0-9) o guiones bajos (_). El nombre del perímetro distingue entre mayúsculas y minúsculas, y debe ser único en una política de acceso.

Selecciona los recursos que quieras proteger

  1. Haz clic en Recursos que proteger.

  2. Para añadir proyectos o redes de VPC que quieras proteger dentro del perímetro, haz lo siguiente:

    1. Haz clic en Añadir recursos.

    2. Para añadir proyectos al perímetro, en el panel Añadir recursos, haz clic en Añadir proyecto.

      1. Para seleccionar un proyecto, en el cuadro de diálogo Añadir proyectos, marca la casilla del proyecto. En esta arquitectura de referencia, seleccionamos los siguientes proyectos:

        • infra-host-project
        • aiml-host-project
        • ph-fm-svc-project
      2. Haz clic en Añadir recursos seleccionados. Los proyectos añadidos aparecen en la sección Proyectos.

Selecciona los servicios restringidos

En esta arquitectura de referencia, el ámbito de las APIs restringidas es limitado, lo que permite usar solo las APIs necesarias para Gemini. Sin embargo, como práctica recomendada, te aconsejamos que restrinjas todos los servicios cuando crees un perímetro para reducir el riesgo de filtración de datos de los servicios deGoogle Cloud .

Para seleccionar los servicios que quieres proteger dentro del perímetro, sigue estos pasos:

  1. Haz clic en Servicios restringidos.

  2. En el panel Servicios restringidos, haz clic en Añadir servicios.

  3. En el cuadro de diálogo Especifica los servicios que quieres restringir, selecciona API de Vertex AI.

  4. Haz clic en Add Vertex AI API (Añadir API de Vertex AI).

Opcional: Selecciona los servicios accesibles de VPC

El ajuste Servicios accesibles de VPC limita el conjunto de servicios a los que se puede acceder desde los endpoints de red que se encuentran dentro de tu perímetro de servicio. En esta arquitectura de referencia, mantenemos el ajuste predeterminado Todos los servicios.

Opcional: Selecciona el nivel de acceso

Si has creado un nivel de acceso CIDR corporativo en una sección anterior, haz lo siguiente para permitir el acceso a recursos protegidos desde fuera del perímetro:

  1. Haz clic en Niveles de acceso.

  2. Haz clic en el cuadro Elegir nivel de acceso.

    También puedes añadir niveles de acceso después de crear un perímetro.

  3. Selecciona la casilla correspondiente al nivel de acceso. (En esta arquitectura de referencia, es corp-public-block).

Políticas de entrada y salida

En esta arquitectura de referencia, no es necesario especificar ningún ajuste en los paneles Ingress Policy (Política de entrada) o Egress Policy (Política de salida).

Crear el perímetro

Una vez que hayas completado los pasos de configuración anteriores, crea el perímetro haciendo clic en Crear perímetro.

Configurar la conectividad de red entre AWS y las APIs de Google

Configurar Private Service Connect para APIs de Google

Private Service Connect para acceder a las APIs de Google es una alternativa a usar Acceso privado de Google o los nombres de dominio públicos de las APIs de Google. En este caso, el productor es Google.

Con Private Service Connect, puedes hacer lo siguiente:

  • Crea una o varias direcciones IP internas para acceder a las APIs de Google en diferentes casos prácticos.
  • Dirige el tráfico local directamente a direcciones IP y regiones específicas al acceder a las APIs de Google.
  • Crea un nombre DNS de endpoint personalizado que se use para resolver las APIs de Google.

En la arquitectura de referencia, se implementa un endpoint de API de Google de Private Service Connect llamado restricted, con la dirección IP 10.10.10.3,, en la VPC-SC de destino, que se usa como IP virtual (VIP) para acceder a los servicios restringidos configurados en el perímetro de la VPC-SC. No se admite la segmentación de servicios no restringidos con el servicio VIP. Para obtener más información, consulta Acerca del acceso a la API de Vertex AI | Google Cloud.

Configurar una red de VPC de AWS

La conectividad de red entre Amazon Web Services (AWS) y Google Cloud se establece mediante túneles de red privada virtual de alta disponibilidad (VPN de alta disponibilidad). Esta conexión segura facilita la comunicación privada entre los dos entornos de nube. Sin embargo, para permitir el enrutamiento y la comunicación fluidos entre los recursos de AWS y Google Cloud, se utiliza el protocolo de pasarela fronteriza (BGP).

En el entorno Google Cloud , se necesita un anuncio de ruta personalizado. Esta ruta personalizada anuncia específicamente la dirección IP de la API de Google de Private Service Connect a la red de AWS. Al anunciar esta dirección IP, AWS puede establecer una ruta directa a la API de Google, lo que le permite evitar Internet público y mejorar el rendimiento.

En la arquitectura de referencia, se implementa una instancia de Sagemaker asociada a la VPC de AWS en la que se establece la VPN. Google Cloud El protocolo de pasarela fronteriza (BGP) se usa para anunciar rutas en la VPN de alta disponibilidad entre AWS y la red Google Cloud . Por lo tanto,Google Cloud y AWS pueden enrutar el tráfico bidireccional a través de la VPN. Para obtener más información sobre cómo configurar conexiones de VPN de alta disponibilidad, consulta el artículo sobre cómo crear conexiones de VPN de alta disponibilidad entre Google Cloud y AWS.

Configurar las actualizaciones de Route 53

Crea una zona alojada privada llamada p.googleapis.com en AWS Route 53 y añade el nombre de dominio completo REGION-aiplatform-restricted.p.googleapis.com con la dirección IP 10.10.10.3 (IP de Googleapis de Private Service Connect) como registro A de DNS. Cuando el SDK de Jupyter Notebook realiza una búsqueda de DNS para que la API de Vertex AI acceda a Gemini, Route 53 devuelve la dirección IP de las APIs de Google de Private Service Connect. Jupyter Notebook usa la dirección IP obtenida de Route 53 para establecer una conexión con el endpoint de las APIs de Google de Private Service Connect, que se enruta a través de la VPN de alta disponibilidad a Google Cloud.

Configurar actualizaciones de SageMaker

Esta arquitectura de referencia usa instancias de cuaderno de Amazon SageMaker para acceder a la API de Vertex AI. Sin embargo, puedes conseguir la misma configuración con otros servicios de computación que admitan VPC, como Amazon EC2 o AWS Lambda.

Para autenticar tus solicitudes, puedes usar una clave de cuenta de servicio o la federación de identidades de cargas de trabajo. Google Cloud Para obtener información sobre cómo configurar la federación de identidades de carga de trabajo, consulta On-premise u otro proveedor de servicios en la nube.

La instancia de Jupyter Notebook invoca una llamada a la API del modelo de Gemini alojado enGoogle Cloud . Para ello, realiza una resolución de DNS al nombre de dominio completo de las APIs de Google de Private Service Connect personalizado REGION-aiplatform-restricted.p.googleapis.com, lo que anula el nombre de dominio completo predeterminado REGION-aiplatform.googleapis.com.

Se puede llamar a la API de Vertex AI mediante REST, gRPC o SDK. Para usar el nombre de dominio completo del cliente de Private Service Connect, actualiza API_ENDPOINT en Jupyter Notebook con lo siguiente:

Instrucciones para usar el SDK de Vertex AI para Python

  1. Instala el SDK:

    pip install --upgrade google-cloud-aiplatform
    
  2. Importa las dependencias:

    from google.cloud import aiplatform
    from vertexai.generative_models import GenerativeModel, Part, SafetySetting
    import vertexai
    import base64
    
  3. Inicializa las siguientes variables de entorno:

    PROJECT_ID="ph-fm-svc-projects" # Google Cloud Project ID
    LOCATION_ID="us-central1" # Enter Vertex AI Gemini region such a s us-central1
    API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" # PSC Endpoint
    MODEL_ID="gemini-2.0-flash-001" # Gemini Model ID
    
  4. Inicializa el SDK de Vertex AI para Python:

    vertexai.init(project=PROJECT_ID,api_endpoint=API_ENDPOINT, api_transport="rest")
    
  5. Haz la siguiente solicitud a la API de Gemini de Vertex AI:

    import base64
    from vertexai.generative_models import GenerativeModel, Part, SafetySetting
    
    def generate(model_id, prompt):
        model = GenerativeModel(
            model_id,
        )
        responses = model.generate_content(
            [prompt],
            generation_config=generation_config,
            safety_settings=safety_settings,
            stream=True,
        )
    
        for response in responses:
            print(response.text, end="")
    
    generation_config = {
        "max_output_tokens": 8192,
        "temperature": 1,
        "top_p": 0.95,
    }
    
    safety_settings = [
        SafetySetting(
            category=SafetySetting.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
            threshold=SafetySetting.HarmBlockThreshold.OFF
        ),
        SafetySetting(
            category=SafetySetting.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
            threshold=SafetySetting.HarmBlockThreshold.OFF
        ),
        SafetySetting(
            category=SafetySetting.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
            threshold=SafetySetting.HarmBlockThreshold.OFF
        ),
        SafetySetting(
            category=SafetySetting.HarmCategory.HARM_CATEGORY_HARASSMENT,
            threshold=SafetySetting.HarmBlockThreshold.OFF
        ),
    ]
    
    prompt = "which weighs more: 1kg feathers or 1kg stones"
    generate(MODEL_ID,prompt)
    

    En este punto, puedes hacer una llamada a la API de Gemini desde un cuaderno de Jupyter para acceder a Gemini alojado en Google Cloud. Si la llamada se realiza correctamente, el resultado será similar al siguiente:

    They weigh the same. Both weigh 1 kilogram.
    

Instrucciones para usar la API REST de Vertex AI

En esta sección, configurará algunas variables importantes que se usarán a lo largo del proceso. Estas variables almacenan información sobre tu proyecto, como la ubicación de tus recursos, el modelo de Gemini específico y el endpoint de Private Service Connect que quieras usar.

  1. Abre una ventana de terminal en un cuaderno de Jupyter.

  2. Inicializa las siguientes variables de entorno:

    export PROJECT_ID="ph-fm-svc-projects"
    export LOCATION_ID="us-central1"
    export API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" export MODEL_ID="gemini-2.0-flash-001"
    
  3. Usa un editor de texto como vim o nano para crear un archivo llamado request.json que contenga la siguiente solicitud con formato para la API de Gemini de Vertex AI:

    {
       "contents": [
          {
             "role": "user",
             "parts": [
                 {
                     "text": "which weighs more: 1kg feathers or 1kg stones"
                 }
             ]
          }
       ],
       "generationConfig": {
          "temperature": 1,
          "maxOutputTokens": 8192,
          "topP": 0.95,
          "seed": 0
       },
       "safetySettings": [
          {
             "category": "HARM_CATEGORY_HATE_SPEECH",
             "threshold": "OFF"
          },
          {
             "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
             "threshold": "OFF"
          },
          {
             "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
             "threshold": "OFF"
          },
          {
             "category": "HARM_CATEGORY_HARASSMENT",
             "threshold": "OFF"
          }
       ]
    }
    
  4. Haz la siguiente solicitud cURL a la API de Gemini de Vertex AI:

    curl -v \
    -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://$API_ENDPOINT/v1/projects/$PROJECT_ID/locations/$LOCATION_ID/publishers/google/models/$MODEL_ID:streamGenerateContent" -d '@request.json'
    

Validar el perímetro en el modo de ejecución de prueba

En esta arquitectura de referencia, el perímetro de servicio se configura en modo de prueba, lo que te permite probar el efecto de la política de acceso sin aplicarla. Esto significa que puedes ver cómo afectarían tus políticas a tu entorno si estuvieran activas, pero sin el riesgo de interrumpir el tráfico legítimo.

Una vez que hayas validado tu perímetro en el modo de prueba, cámbialo al modo obligatorio.

Siguientes pasos