Multi-Cloud-Zugriff auf geschützte Ressourcen von einem privaten Endpunkt außerhalb eines VPC Service Controls-Perimeters zulassen

Referenzarchitektur

In der folgenden Referenzarchitektur wird eine freigegebene VPC mit einem Gemini-Modell im Dienstprojekt ph-fm-svc-project (Foundation Model-Dienstprojekt) bereitgestellt. Die Attribute der Dienstrichtlinie ermöglichen den privaten Zugriff auf die Vertex AI API von AWS aus:

  • Ein einzelner VPC Service Controls-Perimeter
  • Projektdefinierte Nutzeridentität

Architekturdiagramm zur Verwendung von VPC Service Controls zum Erstellen eines Dienstperimeters.

Optional: Zugriffsebene erstellen

Wenn Ihre Endnutzer über die Google Cloud -Konsole auf Vertex AI zugreifen müssen, folgen Sie der Anleitung in diesem Abschnitt, um eine VPC Service Controls-Zugriffsebene zu erstellen. Wenn der programmatische Zugriff auf APIs jedoch von privaten Quellen erfolgt (z. B. lokal mit privater Google-Zugriff oder Cloud Workstations), ist die Zugriffsebene nicht erforderlich.

In dieser Referenzarchitektur verwenden wir den Unternehmens-CIDR-Bereich corp-public-block, damit Mitarbeiter des Unternehmens auf die Google Cloud -Konsole zugreifen können.

Mit Access Context Manager können Google Cloud Organisationsadministratoren eine differenzierte, attributbasierte Zugriffssteuerung für Projekte und Ressourcen inGoogle Clouddefinieren.

Zugriffsebenen beschreiben die Anforderungen, die Anfragen erfüllen müssen. Beispiele:

Wenn Access Context Manager zum ersten Mal in der Organisation verwendet wird, müssen Administratoren eine Zugriffsrichtlinie definieren. Dies ist ein Container für Zugriffsebenen und Dienstperimeter.

  1. Klicken Sie in der Projektauswahl oben in der Google Cloud Console auf den Tab Alle und wählen Sie dann Ihre Organisation aus.

  2. Erstellen Sie eine einfache Zugriffsebene gemäß der Anleitung auf der Seite Einfache Zugriffsebene erstellen. Geben Sie die folgenden Optionen an:

    1. Wählen Sie unter Bedingungen erstellen in die Option Standardmodus aus.
    2. Geben Sie in das Feld Titel der Zugriffsebene corp-public-block ein.
    3. Wählen Sie im Bereich Bedingungen für die Option Bei erfüllter Bedingung Folgendes zurückgeben die Option WAHR aus.
    4. Wählen Sie unter IP-Subnetzwerke die Option Öffentliche IP aus.
    5. Geben Sie für den IP-Adressbereich den externen CIDR-Bereich an, der Zugriff auf den VPC Service Controls-Perimeter benötigt.

VPC Service Controls-Dienstperimeter erstellen

Wenn Sie einen Dienstperimeter erstellen, können Sie den Zugriff auf geschützte Dienste von außerhalb des Perimeters zulassen, indem Sie die geschützten Projekte angeben. Wenn Sie VPC Service Controls mit einer freigegebene VPC verwenden, erstellen Sie einen großen Perimeter, der sowohl das Host- als auch das Dienstprojekt umfasst. Wenn Sie nur das Dienstprojekt in Ihrem Perimeter auswählen, scheinen Netzwerkendpunkte, die zu Dienstprojekten gehören, außerhalb des Perimeters zu liegen, da die Subnetze nur dem Hostprojekt zugeordnet sind.

Konfigurationstyp für den neuen Perimeter auswählen

In diesem Abschnitt erstellen Sie einen VPC Service Controls-Dienstperimeter im Probelaufmodus. Im Probelaufmodus werden Verstöße gegen den Perimeter so protokolliert, als ob die Perimeter erzwungen würden, der Zugriff auf eingeschränkte Dienste aber nicht verhindert wird. Es empfiehlt sich, den Probelaufmodus zu verwenden, bevor Sie zum erzwungenen Modus wechseln.

  1. Klicken Sie im Navigationsmenü der Google Cloud Console auf Sicherheit und dann auf VPC Service Controls.

    Zur Seite „VPC Service Controls“

  2. Klicken Sie auf der Seite VPC Service Controls auf Probelaufmodus.

  3. Klicken Sie auf Neuer Perimeter.

  4. Geben Sie auf dem Tab Neuer VPC-Dienstperimeter im Feld Perimetername einen Namen für den Perimeter ein. Akzeptieren Sie andernfalls die Standardwerte.

    Ein Perimetername darf maximal 50 Zeichen lang sein und muss mit einem Buchstaben beginnen. Er darf nur lateinische ASCII-Buchstaben (a–z, A–Z), Zahlen (0–9) oder Unterstriche (_) enthalten. Beim Namen des Perimeters wird die Groß-/Kleinschreibung beachtet und er muss innerhalb einer Zugriffsrichtlinie eindeutig sein.

Zu schützende Ressourcen auswählen

  1. Klicken Sie auf Zu schützende Ressourcen.

  2. So fügen Sie Projekte oder VPC-Netzwerke hinzu, die Sie im Perimeter sichern möchten:

    1. Klicken Sie auf Ressourcen hinzufügen.

    2. Wenn Sie dem Perimeter Projekte hinzufügen möchten, klicken Sie im Bereich Ressourcen hinzufügen auf Projekt hinzufügen.

      1. Wenn Sie ein Projekt auswählen möchten, klicken Sie im Dialogfeld Projekte hinzufügen auf das Kästchen für das gewünschte Projekt. In dieser Referenzarchitektur wählen wir die folgenden Projekte aus:

        • infra-host-project
        • aiml-host-project
        • ph-fm-svc-project
      2. Klicken Sie auf Ausgewählte Ressourcen hinzufügen. Die hinzugefügten Projekte werden im Bereich Projekte angezeigt.

Eingeschränkte Dienste auswählen

In dieser Referenzarchitektur ist der Umfang der eingeschränkten APIs begrenzt, sodass nur die für Gemini erforderlichen APIs aktiviert werden. Wir empfehlen jedoch, beim Erstellen eines Perimeters alle Dienste einzuschränken, um das Risiko der Daten-Exfiltration ausGoogle Cloud -Diensten zu verringern.

So wählen Sie die Dienste aus, die Sie im Perimeter sichern möchten:

  1. Klicken Sie auf Eingeschränkte Dienste.

  2. Klicken Sie im Bereich Eingeschränkte Dienste auf Dienste hinzufügen.

  3. Wählen Sie im Dialogfeld Geben Sie Dienste an, die eingeschränkt werden sollen die Option Vertex AI API aus.

  4. Klicken Sie auf Vertex AI API hinzufügen.

Optional: Über VPC zugängliche Dienste auswählen

Die Einstellung Über VPC zugängliche Dienste beschränkt die Gruppe von Diensten, auf die von Netzwerkendpunkten in Ihrem Dienstperimeter zugegriffen werden kann. In dieser Referenzarchitektur behalten wir die Standardeinstellung Alle Dienste bei.

Optional: Zugriffsebene auswählen

Wenn Sie im vorherigen Abschnitt eine CIDR-Zugriffsebene für das Unternehmen erstellt haben, gehen Sie so vor, um den Zugriff auf geschützte Ressourcen von außerhalb des Perimeters zuzulassen:

  1. Klicken Sie auf Zugriffsebenen.

  2. Klicken Sie auf das Kästchen Zugriffsebene auswählen.

    Sie können zugängliche Dienste auch hinzufügen, nachdem ein Perimeter erstellt wurde.

  3. Klicken Sie auf das Kästchen für die Zugriffsebene. In dieser Referenzarchitektur ist das corp-public-block.

Richtlinien für ein- und ausgehenden Traffic

In dieser Referenzarchitektur müssen Sie keine Einstellungen in den Bereichen Richtlinie für eingehenden Traffic oder Richtlinie für ausgehenden Traffic angeben.

Perimeter erstellen

Nachdem Sie die vorherigen Konfigurationsschritte ausgeführt haben, klicken Sie auf Perimeter erstellen, um den Perimeter zu erstellen.

Netzwerkverbindung zwischen AWS und Google APIs konfigurieren

Private Service Connect für Google APIs konfigurieren

Die Verwendung von Private Service Connect für den Zugriff auf Google APIs ist eine Alternative zum privater Google-Zugriff oder zu den öffentlichen Domainnamen für Google APIs. In diesem Fall ist der Ersteller Google.

Mit Private Service Connect haben Sie folgende Möglichkeiten:

  • Eine oder mehrere interne IP-Adressen für den Zugriff auf Google APIs für verschiedene Anwendungsfälle erstellen.
  • Lokalen Traffic beim Zugreifen auf Google APIs an bestimmte IP-Adressen und Regionen weiterleiten.
  • Erstellen Sie einen benutzerdefinierten DNS-Namen für Endpunkte, der zum Auflösen von Google APIs verwendet wird.

In der Referenzarchitektur wird ein Private Service Connect-Endpunkt für Google APIs mit dem Namen restricted und der IP-Adresse 10.10.10.3, mit der Ziel-VPC-SC bereitgestellt. Er wird als virtuelle IP-Adresse (VIP) für den Zugriff auf eingeschränkte Dienste verwendet, die im VPC-SC-Perimeter konfiguriert sind. Die Ausrichtung auf nicht eingeschränkte Dienste mit der VIP wird nicht unterstützt. Weitere Informationen finden Sie unter Zugriff auf die Vertex AI API. Google Cloud

AWS-VPC-Netzwerk konfigurieren

Die Netzwerkverbindung zwischen Amazon Web Services (AWS) und Google Cloudwird über HA VPN-Tunnel (High-Availability Virtual Private Network) hergestellt. Diese sichere Verbindung ermöglicht die private Kommunikation zwischen den beiden Cloud-Umgebungen. Um jedoch ein nahtloses Routing und eine nahtlose Kommunikation zwischen Ressourcen in AWS und Google Cloudzu ermöglichen, wird das Border Gateway Protocol (BGP) verwendet.

In der Google Cloud -Umgebung ist ein benutzerdefiniertes Route Advertisement erforderlich. Mit dieser benutzerdefinierten Route wird die Private Service Connect-Google API-IP-Adresse speziell für das AWS-Netzwerk beworben. Durch die Bewerbung dieser IP-Adresse kann AWS eine direkte Route zur Google API einrichten, das öffentliche Internet umgehen und die Leistung verbessern.

In der Referenzarchitektur wird eine SageMaker-Instanz bereitgestellt, die mit der AWS-VPC verknüpft ist, in der die VPN-Verbindung mit Google Cloudhergestellt wird. Das Border Gateway Protocol (BGP) wird verwendet, um Routen über HA VPN zwischen AWS und dem Google Cloud -Netzwerk anzukündigen. Infolgedessen könnenGoogle Cloud und AWS bidirektionalen Traffic über VPN weiterleiten. Weitere Informationen zum Einrichten von HA VPN-Verbindungen finden Sie unter HA VPN-Verbindungen zwischen Google Cloud und AWS erstellen.

Route 53-Updates konfigurieren

Erstellen Sie in AWS Route 53 eine private gehostete Zone mit dem Namen p.googleapis.com und fügen Sie den vollständig qualifizierten Domainnamen REGION-aiplatform-restricted.p.googleapis.com mit der IP-Adresse 10.10.10.3 (Private Service Connect-IP für Googleapis) als DNS-A-Eintrag hinzu. Wenn das Jupyter Notebook SDK einen DNS-Lookup für die Vertex AI API durchführt, um Gemini zu erreichen, gibt Route 53 die Private Service Connect Google APIs-IP-Adresse zurück. Jupyter Notebook verwendet die von Route 53 abgerufene IP-Adresse, um eine Verbindung zum Private Service Connect-Endpunkt für Google APIs herzustellen, der über HA VPN in Google Cloudweitergeleitet wird.

SageMaker-Updates konfigurieren

In dieser Referenzarchitektur werden Amazon SageMaker-Notebook-Instanzen verwendet, um auf die Vertex AI API zuzugreifen. Sie können jedoch dieselbe Einrichtung mit anderen Compute-Diensten erreichen, die VPC unterstützen, z. B. Amazon EC2 oder AWS Lambda.

Zum Authentifizieren Ihrer Anfragen können Sie entweder einen Google Cloud Dienstkontoschlüssel oder die Workload Identity-Föderation verwenden. Informationen zum Einrichten der Identitätsföderation von Arbeitslasten finden Sie unter Lokal oder bei einem anderen Cloud-Anbieter.

Die Jupyter Notebook-Instanz ruft einen API-Aufruf an das inGoogle Cloud gehostete Gemini-Modell auf, indem sie eine DNS-Auflösung für den benutzerdefinierten vollständig qualifizierten Domainnamen der Google APIs von Private Service Connect REGION-aiplatform-restricted.p.googleapis.com durchführt und den standardmäßigen vollständig qualifizierten Domainnamen (REGION-aiplatform.googleapis.com) überschreibt.

Die Vertex AI API kann über REST, gRPC oder SDK aufgerufen werden. Wenn Sie den vollständig qualifizierten Domainnamen des Private Service Connect-Kunden verwenden möchten, aktualisieren Sie API_ENDPOINT im Jupyter-Notebook mit Folgendem:

Anleitung zur Verwendung des Vertex AI SDK für Python

  1. Installieren Sie das SDK:

    pip install --upgrade google-genai
    
  2. Importieren Sie die Abhängigkeiten:

    from google.cloud import genai
    from google.genai.types import (
       GenerateContentConfig,
       HarmBlockThreshold,
       HarmCategory,
       Part,
       SafetySetting
    )
    
  3. Initialisieren Sie die folgenden Umgebungsvariablen:

    PROJECT_ID="ph-fm-svc-projects" # Google Cloud Project ID
    LOCATION_ID="us-central1" # Enter Vertex AI 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. Vertex AI SDK für Python initialisieren:

    from google import genai
    client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})
    
  5. Senden Sie die folgende Anfrage an die Vertex AI Gemini API:

    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)
    

    An diesem Punkt können Sie einen API-Aufruf an Gemini aus dem Jupyter-Notebook ausführen, um auf Gemini zuzugreifen, die in Google Cloudgehostet wird. Wenn der Aufruf erfolgreich ist, sieht die Ausgabe so aus:

    They weigh the same. Both weigh 1 kilogram.
    

Anleitung zur Verwendung der Vertex AI REST API

In diesem Abschnitt richten Sie einige wichtige Variablen ein, die im gesamten Prozess verwendet werden. In diesen Variablen werden Informationen zu Ihrem Projekt, zum Speicherort Ihrer Ressourcen, zum spezifischen Gemini-Modell und zum PSC-Endpunkt gespeichert, den Sie verwenden möchten. Öffnen Sie ein Terminalfenster in einem JupyterLab-Notebook, um die folgenden Befehle auszuführen:

  1. Öffnen Sie ein Terminalfenster in einem Jupyter-Notebook.

  2. Initialisieren Sie die folgenden Umgebungsvariablen:

    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. Erstellen Sie mit einem Texteditor wie vim oder nano eine neue Datei namens request.json, die die folgende formatierte Anfrage für die Vertex AI Gemini API enthält:

    {
        "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. Senden Sie die folgende curl-Anfrage an die Vertex AI Gemini API:

    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'
    

Perimeter im Probelaufmodus validieren

In dieser Referenzarchitektur ist der Dienstperimeter im Probelaufmodus konfiguriert. So können Sie die Auswirkungen der Zugriffsrichtlinie testen, ohne sie zu erzwingen. So können Sie sehen, wie sich Ihre Richtlinien auf Ihre Umgebung auswirken würden, wenn sie aktiv wären, ohne dass legitimer Traffic unterbrochen wird.

Nachdem Sie Ihren Perimeter im Probelaufmodus validiert haben, stellen Sie ihn auf den erzwungenen Modus um.

Nächste Schritte