Referenzarchitektur
In der folgenden Referenzarchitektur wird eine freigegebene VPC mit einem Gemini-Modell im Dienstprojekt ph-fm-svc-project
(Dienstprojekt für das Basismodell) bereitgestellt. Die Dienstrichtlinienattribute ermöglichen den privaten Zugriff auf die Vertex AI API von AWS:
- Ein einzelner VPC Service Controls-Perimeter
- Projektdefinierte Nutzeridentität
Optional: Zugriffsebene erstellen
Wenn Ihre Endnutzer über die Google Cloud Console 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 aus privaten Quellen erfolgt (z. B. lokal mit privatem Google-Zugriff oder Cloud-Arbeitsstationen), ist die Zugriffsebene nicht erforderlich.
In dieser Referenzarchitektur verwenden wir den CIDR-Bereich corp-public-block
, um Mitarbeitern den Zugriff auf die Google Cloud Console zu ermöglichen.
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:
- Gerätetyp und Betriebssystem (Chrome Enterprise Premium-Lizenz erforderlich)
- IP-Adresse
- Nutzeridentität
Wenn die Organisation Access Context Manager zum ersten Mal verwendet, müssen Administratoren eine Zugriffsrichtlinie definieren. Dies ist ein Container für Zugriffsebenen und Dienstperimeter.
Klicken Sie in der Projektauswahl oben in der Google Cloud Console auf den Tab Alle und wählen Sie dann Ihre Organisation aus.
Folgen Sie der Anleitung auf der Seite Einfache Zugriffsebene erstellen, um eine einfache Zugriffsebene zu erstellen. Geben Sie die folgenden Optionen an:
- Wählen Sie unter Bedingungen erstellen in die Option Basismodus aus.
- Geben Sie in das Feld Titel der Zugriffsebene
corp-public-block
ein. - Wählen Sie im Abschnitt Bedingungen für die Option Wenn Bedingung erfüllt ist, folgenden Wert zurückgeben die Option TRUE aus.
- Wählen Sie unter IP-Subnetzwerke die Option Öffentliche IP-Adresse aus.
- Geben Sie für den IP-Adressbereich den externen CIDR-Bereich an, für den Zugriff auf den VPC Service Controls-Perimeter erforderlich ist.
VPC Service Controls-Dienstperimeter erstellen
Wenn Sie einen Dienstperimeter erstellen, gewähren Sie den Zugriff auf geschützte Dienste von außerhalb des Perimeters, indem Sie die geschützten Projekte angeben. Wenn Sie VPC Service Controls mit einer freigegebenen 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, befinden sich die Netzwerkendpunkte, die zu Dienstprojekten gehören, außerhalb des Perimeters, da die Subnetze nur mit dem Hostprojekt verknüpft sind.
Konfigurationstyp für den neuen Perimeter auswählen
In diesem Abschnitt erstellen Sie einen VPC Service Controls-Dienstperimeter im Probelaufmodus. Im Modus „Probelauf“ protokolliert der Perimeter Verstöße so, als ob die Perimeter erzwungen würden, der Zugriff auf eingeschränkte Dienste aber nicht verhindert wird. Es wird empfohlen, den Modus „Probelauf“ zu verwenden, bevor Sie zum erzwungenen Modus wechseln.
Klicken Sie im Navigationsmenü der Google Cloud Console auf Sicherheit und dann auf VPC Service Controls.
Klicken Sie auf der Seite VPC Service Controls auf Probelaufmodus.
Klicken Sie auf Neuer Perimeter.
Geben Sie auf dem Tab Neuer VPC-Dienstperimeter im Feld Perimetername einen Namen für den Perimeter ein. Andernfalls akzeptieren Sie 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. Der Perimetername ist groß- und kleinschreibungsempfindlich und muss innerhalb einer Zugriffsrichtlinie eindeutig sein.
Zu schützende Ressourcen auswählen
Klicken Sie auf Zu schützende Ressourcen.
So fügen Sie Projekte oder VPC-Netzwerke hinzu, die Sie im Perimeter schützen möchten:
Klicken Sie auf Ressourcen hinzufügen.
Wenn Sie dem Perimeter Projekte hinzufügen möchten, klicken Sie im Bereich Ressourcen hinzufügen auf Projekt hinzufügen.
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
Klicken Sie auf Auswahl hinzufügen. Die hinzugefügten Projekte werden im Bereich Projekte angezeigt.
Wählen Sie die eingeschränkten Dienste aus.
In dieser Referenzarchitektur ist der Umfang der eingeschränkten APIs begrenzt. Es sind nur die für Gemini erforderlichen APIs aktiviert. Als Best Practice empfehlen wir 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:
Klicken Sie auf Eingeschränkte Dienste.
Klicken Sie im Bereich Eingeschränkte Dienste auf Dienste hinzufügen.
Wählen Sie im Dialogfeld Geben Sie Dienste an, die eingeschränkt werden sollen die Option Vertex AI API aus.
Klicken Sie auf Vertex AI API hinzufügen.
Optional: Über VPC zugängliche Dienste auswählen
Mit der Einstellung Über VPC zugängliche Dienste wird die Gruppe von Diensten beschränkt, die von Netzwerkendpunkten in Ihrem Dienstperimeter zugänglich sind. In dieser Referenzarchitektur behalten wir die Standardeinstellung Alle Dienste bei.
Optional: Zugriffsebene auswählen
Wenn Sie in einem früheren Abschnitt eine CIDR-Zugriffsebene für Unternehmen erstellt haben, gehen Sie so vor, um den Zugriff auf geschützte Ressourcen von außerhalb des Perimeters zuzulassen:
Klicken Sie auf Zugriffsebenen.
Klicken Sie auf das Kästchen Zugriffsebene auswählen.
Sie können zugängliche Dienste auch hinzufügen, nachdem ein Perimeter erstellt wurde.
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 in den Bereichen Ingress-Richtlinie oder Egress-Richtlinie keine Einstellungen angeben.
Perimeter erstellen
Nachdem Sie die vorherigen Konfigurationsschritte ausgeführt haben, erstellen Sie den Perimeter, indem Sie auf Perimeter erstellen klicken.
Netzwerkverbindung zwischen AWS und Google APIs konfigurieren
Private Service Connect für Google APIs konfigurieren
Private Service Connect für den Zugriff auf Google APIs ist eine Alternative zum privaten Google-Zugriff oder zu den öffentlichen Domainnamen für Google APIs. In diesem Fall ist Google der Ersteller.
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 den Endpunkt, der zum Auflösen von Google APIs verwendet wird.
In der Referenzarchitektur wird ein Private Service Connect-Google API-Endpunkt mit dem Namen restricted
und der IP-Adresse 10.10.10.3,
im 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. Das Targeting 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 mithilfe von HA VPN-Tunneln (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 Umgebung Google Cloud ist ein benutzerdefiniertes Route Advertisement erforderlich. Über diese benutzerdefinierte Route wird die IP-Adresse der Private Service Connect-Google API speziell für das AWS-Netzwerk bekannt gegeben. Durch die Ankündigung dieser IP-Adresse kann AWS eine direkte Route zur Google API herstellen, das öffentliche Internet umgehen und so die Leistung verbessern.
In der Referenzarchitektur wird eine Sagemaker-Instanz mit einer Verknüpfung mit der AWS-VPC bereitgestellt, über die das VPN mit Google Cloudeingerichtet wird. Das Border Gateway Protocol (BGP) wird verwendet, um Routen über HA VPN zwischen AWS und dem Google Cloud -Netzwerk zu bewerben. Dadurch könnenGoogle Cloud und AWS bidirektionalen Traffic über VPN leiten. Weitere Informationen zum Einrichten von HA VPN-Verbindungen finden Sie unter HA VPN-Verbindungen zwischen Google Cloud und AWS erstellen. Google Cloud
Route 53-Aktualisierungen konfigurieren
Erstellen Sie in AWS Route 53 eine private gehostete Zone mit dem Namen p.googleapis.com
und fügen Sie den vollqualifizierten Domainnamen REGION-aiplatform-restricted.p.googleapis.com
mit der IP-Adresse 10.10.10.3
(Private Service Connect-Googleapis-IP) 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 IP-Adresse der Private Service Connect Google APIs zurück. Jupyter Notebook verwendet die von Route 53 abgerufene IP-Adresse, um eine Verbindung zum Private Service Connect-Google APIs-Endpunkt herzustellen, der über HA VPN an Google Cloudweitergeleitet wird.
Sagemaker-Updates konfigurieren
In dieser Referenzarchitektur wird für den Zugriff auf die Vertex AI API Amazon SageMaker-Notebook-Instanzen verwendet. Sie können die gleiche Einrichtung jedoch auch mit anderen Rechendiensten erreichen, die VPC unterstützen, z. B. Amazon EC2 oder AWS Lambda.
Sie können Ihre Anfragen entweder mit einem Google Cloud Dienstkontoschlüssel oder mit der Workload Identity-Föderation authentifizieren. 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 Gemini-Modell auf, das inGoogle Cloud gehostet wird, indem eine DNS-Auflösung für den benutzerdefinierten vollständig qualifizierten Domainnamen der Private Service Connect-Google APIs (REGION-aiplatform-restricted.p.googleapis.com
) ausgeführt wird, wodurch der standardmäßige vollständig qualifizierte Domainname (REGION-aiplatform.googleapis.com
) überschrieben wird.
Die Vertex AI API kann über REST, gRPC oder SDK aufgerufen werden. Wenn Sie den vollqualifizierten Domainnamen des Private Service Connect-Kunden verwenden möchten, aktualisieren Sie API_ENDPOINT in Jupyter Notebook mit Folgendem:
Anleitung zur Verwendung des Vertex AI SDK für Python
Installieren Sie das SDK:
pip install --upgrade google-cloud-aiplatform
Importieren Sie die Abhängigkeiten:
from google.cloud import aiplatform from vertexai.generative_models import GenerativeModel, Part, SafetySetting import vertexai import base64
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 a s us-central1 API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" # PSC Endpoint MODEL_ID="gemini-1.5-flash-002" # Gemini Model ID
So initialisieren Sie das Vertex AI SDK für Python:
vertexai.init(project=PROJECT_ID,api_endpoint=API_ENDPOINT, api_transport="rest")
Stellen Sie die folgende Anfrage an die Vertex AI Gemini API:
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)
Sie können jetzt einen API-Aufruf an Gemini über ein Jupyter-Notebook ausführen, um auf Gemini zuzugreifen, das in Google Cloudgehostet wird. Wenn der Aufruf erfolgreich ist, sieht die Ausgabe in etwa 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 während des gesamten Prozesses verwendet werden. In diesen Variablen werden Informationen zu Ihrem Projekt gespeichert, z. B. der Speicherort Ihrer Ressourcen, das spezifische Gemini-Modell und der Private Service Connect-Endpunkt, den Sie verwenden möchten.
Öffnen Sie ein Terminalfenster in einem Jupyter-Notebook.
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"
Erstellen Sie mit einem Texteditor wie
vim
odernano
eine neue Datei namensrequest.json
mit der folgenden formatierten Anfrage an die Vertex AI Gemini API:{ "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" } ] }
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 Modus „Probelauf“ konfiguriert, sodass Sie die Auswirkungen der Zugriffsrichtlinie ohne Erzwingung testen können. So können Sie sehen, wie sich Ihre Richtlinien auf Ihre Umgebung auswirken würden, wenn sie aktiv wären, ohne dass legitime Zugriffe beeinträchtigt werden.
Nachdem Sie den Perimeter im Probelaufmodus validiert haben, wechseln Sie in den Erzwingungsmodus.
Nächste Schritte
- Weitere Informationen zum Verwenden von
p.googleapis.com
-DNS-Namen - Informationen zum Validieren Ihres Perimeters im Modus „Probelauf“ finden Sie im Video zum Logging von VPC Service Controls-Probeläufen.
- Weitere Informationen zur Verwendung der Vertex AI REST API
- Weitere Informationen zur Verwendung des Vertex AI SDK für Python