Permite el acceso multicloud a recursos protegidos desde un extremo privado fuera de un perímetro de Controles del 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 base) con los atributos de política de servicio que permiten el acceso privado a la API de Agent Platform desde AWS:

  • Un solo perímetro de Controles del servicio de VPC
  • Identidad de usuario definida por el proyecto

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

Opcional: Crea el nivel de acceso

Si tus usuarios finales requieren acceso a Agent Platform de Gemini Enterprise a través de la Google Cloud consola, sigue las instrucciones de esta sección para crear un nivel de acceso de Controles del servicio de VPC. Sin embargo, si el acceso programático a las APIs es de fuentes privadas (como las instalaciones locales con Acceso privado a Google o Cloud Workstations), no se requiere el nivel de acceso.

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

Access Context Manager permite a los administradores de la organización definir un control de acceso detallado basado en atributos para proyectos y recursos en . Google Cloud Google Cloud

Los niveles de acceso describen los requisitos que se deben respetar para las solicitudes. Algunos ejemplos son los siguientes:

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

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

  2. Crea un nivel de acceso básico siguiendo las instrucciones de la página Crea 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, ingresa corp-public-block.
    3. En la sección Condiciones, para la opción Cuando se cumpla la condición, devolver, elige VERDADERO.
    4. En Subredes de IP, elige IP pública.
    5. Para el rango de direcciones IP, especifica tu rango CIDR externo que requiere acceso al perímetro de Controles del servicio de VPC.

Compila el perímetro de servicio de Controles del servicio de VPC

Cuando creas un perímetro de servicio, permitas el acceso a los servicios protegidos desde fuera del perímetro especificando los proyectos protegidos. Cuando usas los Controles del servicio de VPC con la VPC compartida, creas un perímetro grande que incluye los proyectos host y de servicio. (Si solo seleccionas el proyecto de servicio en tu perímetro, los extremos de red que pertenecen a los proyectos de servicio parecen estar fuera del perímetro, ya que las subredes solo están asociadas con el proyecto host).

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

En esta sección, crearás un perímetro de servicio de Controles del 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 los perímetros fueran de aplicación forzosa, pero no impiden el acceso a los servicios restringidos. Se recomienda usar el modo de ejecución de prueba antes de cambiar al modo de aplicación forzosa como práctica recomendada.

  1. En el Google Cloud menú de navegación de la consola, haz clic en Seguridad y, luego, en Controles del servicio de VPC.

    Ir a la página Controles del servicio de VPC

  2. En la página Controles del servicio de VPC, haz clic en Modo de ejecución de prueba.

  3. Haz clic en Perímetro nuevo.

  4. En la pestaña Nuevo perímetro de servicio de VPC, en el cuadro Nombre del perímetro , escribe un nombre para el 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 comenzar con 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 mayúsculas de minúsculas y debe ser único dentro de la política de acceso.

Selecciona los recursos que deseas proteger

  1. Haz clic en Recursos que se protegerán.

  2. Para agregar proyectos o redes de VPC que deseas proteger dentro del perímetro, haz lo siguiente:

    1. Haz clic en Agregar recursos.

    2. Para agregar proyectos al perímetro, en el panel Agregar recursos , haz clic en Agregar proyecto.

      1. Para seleccionar un proyecto, en el cuadro de diálogo Agregar proyectos, selecciona la casilla de verificación de ese proyecto. En esta arquitectura de referencia, seleccionamos los siguientes proyectos:

        • infra-host-project
        • aiml-host-project
        • ph-fm-svc-project
      2. Haz clic en Agregar los recursos seleccionados. Los proyectos agregados aparecen en la sección Proyectos.

Selecciona los servicios restringidos

En esta arquitectura de referencia, el alcance de las APIs restringidas es limitado, lo que permite solo las APIs necesarias para Gemini. Sin embargo, como práctica recomendada, te recomendamos que restrinjas todos los servicios cuando crees un perímetro para mitigar el riesgo de robo de datos de los Google Cloud servicios.

Para seleccionar los servicios que deseas proteger dentro del perímetro, haz lo siguiente:

  1. Haz clic en Servicios restringidos.

  2. En el panel Servicios restringidos, haz clic en Agregar servicios.

  3. En el cuadro de diálogo Especificar los servicios que deseas restringir, selecciona API de Agent Platform.

  4. Haz clic en Agregar API de Agent Platform.

Opcional: Selecciona los servicios accesibles de VPC

La configuración de servicios accesibles de VPC limita el conjunto de servicios a los que se puede acceder desde extremos de red dentro del perímetro de servicio. En esta arquitectura de referencia, conservamos la configuración predeterminada de Todos los servicios.

Opcional: Selecciona el nivel de acceso

Si creaste un nivel de acceso de 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 Selecciona el nivel de acceso.

    También puedes agregar niveles de acceso después de crear un perímetro.

  3. Selecciona la casilla de verificación 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 ninguna configuración en los paneles Política de entrada o Política de salida.

Crea el perímetro

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

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

Configura Private Service Connect para las APIs de Google

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

El uso de Private Service Connect te permite hacer lo siguiente:

  • Crear una o más direcciones IP internas para acceder a las APIs de Google en diferentes casos de uso
  • Dirige el tráfico local a direcciones IP y regiones específicas cuando accedas a las APIs de Google.
  • Crea un nombre de DNS de extremo personalizado que se usa para resolver las APIs de Google.

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

Configura la red de VPC de AWS

La conectividad de red entre Amazon Web Services (AWS) y Google Cloud se establece con túneles de red privada virtual con alta disponibilidad (VPN con alta disponibilidad). Esta conexión segura facilita la comunicación privada entre los dos entornos de nube. Sin embargo, para habilitar el enrutamiento y la comunicación sin problemas entre los recursos en AWS y Google Cloud, se emplea el Protocolo de puerta de enlace de frontera (BGP).

En el Google Cloud entorno, se requiere 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. Cuando se anuncia esta dirección IP, AWS puede establecer una ruta directa a la API de Google, omitir la Internet pública y mejorar el rendimiento.

En la arquitectura de referencia, se implementa una instancia de Sagemaker con una asociación con la VPC de AWS en la que se establece la VPN con Google Cloud. El Protocolo de puerta de enlace de frontera (BGP) se usa para anunciar rutas a través de la VPN con alta disponibilidad entre AWS y la Google Cloud red. Como resultado, Google Cloud y AWS pueden enrutar el tráfico bidireccional a través de la VPN. Para obtener más información sobre la configuración de conexiones de VPN con alta disponibilidad, consulta Crea conexiones de VPN con alta disponibilidad entre Google Cloud y AWS.

Configura las actualizaciones de Route 53

Crea una zona alojada privada llamada p.googleapis.com en AWS Route 53 y agrega el nombre de dominio completamente calificado REGION-aiplatform-restricted.p.googleapis.com con la dirección IP 10.10.10.3 (IP de Googleapis de Private Service Connect) como el registro A de DNS. Cuando el SDK de Jupyter Notebook realiza una búsqueda de DNS para la API de Agent Platform para llegar a Gemini, Route 53 muestra 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 extremo de las APIs de Google de Private Service Connect enrutado a través de la VPN con alta disponibilidad en Google Cloud.

Configura las actualizaciones de Sagemaker

Esta arquitectura de referencia usa instancias de Amazon SageMaker Notebook para acceder a la API de Agent Platform. Sin embargo, puedes lograr la misma configuración con otros servicios de procesamiento que admitan VPC, como Amazon EC2 o AWS Lambda.

Para autenticar tus solicitudes, puedes usar una Google Cloud clave de cuenta de servicio o usar la federación de identidades para cargas de trabajo. Para obtener información sobre la configuración de la federación de identidades para cargas de trabajo, consulta Instalaciones locales o otro proveedor de servicios en la nube.

La instancia de Jupyter Notebook invoca una llamada a la API al modelo de Gemini alojado en Google Cloud realizando una resolución de DNS al nombre de dominio completamente calificado personalizado de las APIs de Google de Private Service Connect que anula el nombre de dominio completamente calificado predeterminado (REGION-aiplatform.googleapis.com).REGION-aiplatform-restricted.p.googleapis.com

Se puede llamar a la API de Agent Platform con Rest, gRPC o SDK. Para usar el nombre de dominio completamente calificado del cliente de Private Service Connect, actualiza el API_ENDPOINT en Jupyter Notebook con lo siguiente:

Instrucciones para usar el SDK de Agent Platform para Python

  1. Instala el SDK de:

    pip install --upgrade google-genai
    
  2. Importa las dependencias:

    from google.cloud import genai
    from google.genai.types import (
       GenerateContentConfig,
       HarmBlockThreshold,
       HarmCategory,
       Part,
       SafetySetting
    )
    
  3. Inicializa las siguientes variables de entorno:

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

    from google import genai
    client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})
    
  5. Realiza la siguiente solicitud a la API de Gemini de Agent Platform de Gemini Enterprise:

    prompt = "which weighs more, 1kg feathers or 1kg stones"
    
    safety_settings = [
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_HARASSMENT,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
        SafetySetting(
            category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
            threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
    ]
    
    response = client.models.generate_content(
        model=MODEL_ID,
        contents=prompt,
        config=GenerateContentConfig(
            safety_settings=safety_settings,
        ),
    )
    
    # Response will be `None` if it is blocked.
    print(response.text)
    

    En este punto, puedes realizar una llamada a la API a Gemini desde Jupyter Notebook para acceder a Gemini alojado en Google Cloud. Si la llamada se realiza correctamente, el resultado es similar al siguiente:

    They weigh the same. Both weigh 1 kilogram.
    

Instrucciones para usar la API de REST de Agent Platform de Gemini Enterprise

En esta sección, configurarás algunas variables importantes que se usan durante todo el proceso. Estas variables almacenan información sobre tu proyecto, la ubicación de tus recursos, el modelo de Gemini específico y el extremo de PSC que deseas usar. Abre una ventana de terminal dentro de un notebook de JupyterLab para ejecutar los siguientes comandos:

  1. Abre una ventana de terminal dentro de un notebook 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-1.5-flash-002"
    
  3. Usa un editor de texto, como vim o nano, para crear un archivo nuevo llamado request.json que contenga la siguiente solicitud con formato para la API de Gemini de Agent Platform de Gemini Enterprise:

    {
        "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. Realiza la siguiente solicitud de curl a la API de Gemini de Agent Platform de Gemini Enterprise:

    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'
    

Valida tu perímetro en modo de ejecución de prueba

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

Después de validar tu perímetro en modo de ejecución de prueba, cámbialo al modo de aplicación forzosa.

¿Qué sigue?