Architettura di riferimento
Nella seguente architettura di riferimento, viene implementato un VPC condiviso con un
modello Gemini nel progetto di servizio,ph-fm-svc-project
(progetto di servizio del modello di base) con gli attributi della politica di servizio che consentono l'accesso privato all'API Vertex AI da AWS:
- Un singolo perimetro dei Controlli di servizio VPC
- Identità utente definita dal progetto
(Facoltativo) Crea il livello di accesso
Se i tuoi utenti finali richiedono l'accesso a Vertex AI tramite la console Google Cloud , segui le istruzioni riportate in questa sezione per creare un livello di accesso di Controlli di servizio VPC. Tuttavia, se l'accesso programmatico alle API proviene da origini private (ad esempio on-premise con accesso privato Google o Cloud Workstations), il livello di accesso non è richiesto.
In questa architettura di riferimento utilizziamo un intervallo CIDR aziendale, corp-public-block
, per consentire al traffico dei dipendenti aziendali di accedere alla console Google Cloud .
Gestore contesto accesso consente agli amministratori dell'organizzazione Google Cloud di definire un controllo dell'accesso granulare e basato sugli attributi per i progetti e le risorse inGoogle Cloud.
I livelli di accesso descrivono i requisiti per l'accettazione delle richieste. Ecco alcuni esempi:
- Tipo di dispositivo e sistema operativo (richiede la licenza Chrome Enterprise Premium)
- Indirizzo IP
- Identità utente
Se è la prima volta che l'organizzazione utilizza Gestore contesto accesso, gli amministratori devono definire un criterio di accesso, che è un contenitore per i livelli di accesso e i perimetri di servizio.
Nel selettore di progetti nella parte superiore della console Google Cloud , fai clic sulla scheda Tutti e poi seleziona la tua organizzazione.
Crea un livello di accesso di base seguendo le istruzioni riportate nella pagina Creare un livello di accesso di base. Specifica le seguenti opzioni:
- In Crea condizioni in, scegli Modalità di base.
- Nel campo Titolo livello di accesso, inserisci
corp-public-block
. - Nella sezione Condizioni, per l'opzione Quando la condizione è soddisfatta, restituisci, scegli TRUE.
- In Subnet IP, scegli IP pubblico.
- Per l'intervallo di indirizzi IP, specifica l'intervallo CIDR esterno che richiede l'accesso al perimetro di Controlli di servizio VPC.
Crea il perimetro di servizio dei Controlli di servizio VPC
Quando crei un perimetro di servizio, consenti l'accesso ai servizi protetti dall'esterno del perimetro specificando i progetti protetti. Quando utilizzi Controlli di servizio VPC con VPC condiviso, crei un perimetro grande che include sia i progetti host che quelli di servizio. Se selezioni solo il progetto di servizio nel perimetro, gli endpoint di rete appartenenti ai progetti di servizio sembrano essere esterni al perimetro, perché le subnet sono associate solo al progetto host.
Seleziona il tipo di configurazione per il nuovo perimetro
In questa sezione, crei un perimetro di servizio dei Controlli di servizio VPC in modalità di prova. In modalità di prova, il perimetro registra le violazioni come se i perimetri fossero applicati, ma non impedisce l'accesso ai servizi con limitazioni. Come best practice, ti consigliamo di utilizzare la modalità di prova prima di passare alla modalità forzata.
Nel menu di navigazione della console Google Cloud , fai clic su Sicurezza e poi su Controlli di servizio VPC.
Nella pagina Controlli di servizio VPC, fai clic su Modalità di prova secca.
Fai clic su Nuovo perimetro.
Nella scheda Nuovo perimetro di servizio VPC, nella casella Nome perimetro, digita un nome per il perimetro. In caso contrario, accetta i valori predefiniti.
Il nome di un perimetro può avere una lunghezza massima di 50 caratteri, deve iniziare con una lettera e può contenere solo lettere latine ASCII (a-z, A-Z), numeri (0-9) o trattini bassi (_). Il nome del perimetro è sensibile alle maiuscole e deve essere univoco all'interno di un criterio di accesso.
Seleziona le risorse da proteggere
Fai clic su Risorse da proteggere.
Per aggiungere progetti o reti VPC che vuoi proteggere all'interno del perimetro, procedi nel seguente modo:
Fai clic su Aggiungi risorse.
Per aggiungere progetti al perimetro, fai clic su Aggiungi progetto nel riquadro Aggiungi risorse.
Per selezionare un progetto, nella finestra di dialogo Aggiungi progetti, seleziona la casella di controllo del progetto. In questa architettura di riferimento, selezioniamo i seguenti progetti:
infra-host-project
aiml-host-project
ph-fm-svc-project
Fai clic su Aggiungi risorse selezionate. I progetti aggiunti vengono visualizzati nella sezione Progetti.
Seleziona i servizi con limitazioni
In questa architettura di riferimento, l'ambito delle API con restrizioni è limitato, in quanto vengono attivate solo le API necessarie per Gemini. Tuttavia, come best practice, ti consigliamo di limitare tutti i servizi quando crei un perimetro per ridurre il rischio di esfiltrazione di dati dai serviziGoogle Cloud .
Per selezionare i servizi da proteggere all'interno del perimetro:
Fai clic su Servizi con limitazioni.
Nel riquadro Servizi con limitazioni, fai clic su Aggiungi servizi.
Nella finestra di dialogo Specifica i servizi da limitare, seleziona API Vertex AI.
Fai clic su Aggiungi API Vertex AI.
(Facoltativo) Seleziona i servizi accessibili da VPC
L'impostazione Servizi accessibili VPC limita l'insieme di servizi accessibili dagli endpoint di rete all'interno del perimetro di servizio. In questa architettura di riferimento, manteniamo l'impostazione predefinita di Tutti i servizi.
(Facoltativo) Seleziona il livello di accesso
Se hai creato un livello di accesso CIDR aziendale in una sezione precedente, procedi nel seguente modo per consentire l'accesso alle risorse protette dall'esterno del perimetro:
Fai clic su Livelli di accesso.
Fai clic sulla casella Scegli livello di accesso.
Puoi anche aggiungere i livelli di accesso dopo aver creato un perimetro.
Seleziona la casella di controllo corrispondente al livello di accesso. (In questa architettura di riferimento, è
corp-public-block
.)
Criteri in entrata e in uscita
In questa architettura di riferimento, non è necessario specificare impostazioni nelle sezioni Criteri per il traffico in entrata o Criteri per il traffico in uscita.
Crea il perimetro
Dopo aver completato i passaggi di configurazione precedenti, crea il perimetro facendo clic su Crea perimetro.
Configura la connettività di rete tra AWS e le API di Google
Configurare Private Service Connect per le API di Google
Private Service Connect per accedere alle API di Google è un'alternativa all'utilizzo dell'accesso privato Google o dei nomi di dominio pubblici per le API di Google. In questo caso, il produttore è Google.
L'utilizzo di Private Service Connect ti consente di:
- Crea uno o più indirizzi IP interni per accedere alle API Google per diversi casi d'uso.
- Indirizza il traffico on-premise ad indirizzi IP e regioni specifici quando accedhi alle API di Google.
- Crea un nome DNS dell'endpoint personalizzato utilizzato per risolvere le API di Google.
Nell'architettura di riferimento, viene implementato un endpoint API di Google Private Service Connect denominato restricted
con indirizzo IP 10.10.10.3,
con il VPC-SC di destinazione, utilizzato come IP virtuale (VIP) per accedere ai servizi con limitazioni configurati nel perimetro VPC-SC. Il targeting di servizi senza limitazioni con il VIP non è supportato. Per saperne di più, consulta
Informazioni sull'accesso all'API Vertex AI | Google Cloud.
Configura la rete VPC AWS
La connettività di rete tra Amazon Web Services (AWS) e Google Cloud viene stabilita utilizzando i tunnel VPN ad alta disponibilità (Virtual Private Network) ad alta disponibilità. Questa connessione sicura facilita la comunicazione privata tra i due ambienti cloud. Tuttavia, per abilitare il routing e la comunicazione senza interruzioni tra le risorse in AWS e Google Cloud, viene utilizzato il Border Gateway Protocol (BGP).
Nell'ambiente Google Cloud è richiesto un annuncio di route personalizzato. Questo percorso personalizzato pubblicizza specificamente l'indirizzo IP dell'API Google Private Service Connect alla rete AWS. Pubblicizzando questo indirizzo IP, AWS può stabilire un percorso diretto all'API Google, bypassando la rete internet pubblica e migliorando il rendimento.
Nell'architettura di riferimento, un'istanza Sagemaker viene dispiattata con un'associazione alla VPC AWS in cui è stabilita la VPN con Google Cloud. Il protocollo BGP (Border Gateway Protocol) viene utilizzato per pubblicizzare le route tramite VPN ad alta disponibilità tra AWS e la rete Google Cloud . Di conseguenza, Google Cloud e AWS possono instradare il traffico bidirezionale tramite VPN. Per ulteriori informazioni sulla configurazione delle connessioni VPN ad alta disponibilità, consulta Creare connessioni VPN ad alta disponibilità tra Google Cloud e AWS.
Configura gli aggiornamenti di Route 53
Crea una zona ospitata privata denominata p.googleapis.com
in AWS Route 53 e aggiungi il nome di dominio completo REGION-aiplatform-restricted.p.googleapis.com
con l'indirizzo IP 10.10.10.3
(IP Googleapis di Private Service Connect) come record A DNS.
Quando l'SDK Jupyter Notebook esegue una ricerca DNS per l'API Vertex AI per raggiungere Gemini, Route 53 restituisce l'indirizzo IP delle API di Google Private Service Connect. Jupyter Notebook
utilizza l'indirizzo IP ottenuto da Route 53 per stabilire una connessione all'endpoint delle API Google Private Service Connect instradato tramite VPN ad alta disponibilità in Google Cloud.
Configurare gli aggiornamenti di SageMaker
Questa architettura di riferimento utilizza istanze di notebook Amazon SageMaker per accedere all'API Vertex AI. Tuttavia, puoi ottenere la stessa configurazione con altri servizi di calcolo che supportano VPC, come Amazon EC2 o AWS Lambda.
Per autenticare le richieste, puoi utilizzare una chiave dell'account servizio Google Cloud o la Federazione delle identità di carico di lavoro. Per informazioni sulla configurazione della federazione di Workload Identity, consulta On-premise o un altro provider cloud.
L'istanza Jupyter Notebook invoca una chiamata API al modello Gemini ospitato in
Google Cloud eseguendo una risoluzione DNS al nome di dominio completo personalizzato delle API Google Private Service ConnectREGION-aiplatform-restricted.p.googleapis.com
sostituendo il nome di dominio completo predefinitoREGION-aiplatform.googleapis.com
.
L'API Vertex AI può essere chiamata utilizzando Rest, gRPC o SDK. Per utilizzare il nome di dominio completo del cliente Private Service Connect, aggiorna API_ENDPOINT in Jupyter Notebook con quanto segue:
Istruzioni per l'utilizzo dell'SDK Vertex AI per Python
Installa l'SDK:
pip install --upgrade google-cloud-aiplatform
Importa le dipendenze:
from google.cloud import aiplatform from vertexai.generative_models import GenerativeModel, Part, SafetySetting import vertexai import base64
Inizializza le seguenti variabili di ambiente:
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
Inizializza l'SDK Vertex AI per Python:
vertexai.init(project=PROJECT_ID,api_endpoint=API_ENDPOINT, api_transport="rest")
Invia la seguente richiesta all'API Gemini di 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)
A questo punto, puoi eseguire una chiamata API a Gemini da Jupyter Notebook per accedere a Gemini ospitato in Google Cloud. Se la chiamata ha esito positivo, l'output è simile al seguente:
They weigh the same. Both weigh 1 kilogram.
Istruzioni per l'utilizzo dell'API REST Vertex AI
In questa sezione, configuri alcune variabili importanti che verranno utilizzate throughout the process. Queste variabili memorizzano informazioni sul progetto, come la posizione delle risorse, il modello Gemini specifico e l'endpoint Private Service Connect che vuoi utilizzare.
Apri una finestra del terminale in un notebook Jupyter.
Inizializza le seguenti variabili di ambiente:
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"
Utilizza un editor di testo come
vim
onano
per creare un nuovo file denominatorequest.json
contenente la seguente richiesta formattata per l'API Vertex AI Gemini:{ "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" } ] }
Invia la seguente richiesta cURL all'API Gemini di 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'
Convalida il perimetro in modalità di prova
In questa architettura di riferimento, il perimetro di servizio è configurato in modalità di prova, consentendo di verificare l'effetto del criterio di accesso senza applicazione. Ciò significa che puoi vedere l'impatto dei tuoi criteri sul tuo ambiente se fossero attivi, ma senza il rischio di interrompere il traffico legittimo.
Dopo aver convalidato il perimetro in modalità dry run, passa alla modalità di applicazione forzata.
Passaggi successivi
- Scopri come utilizzare i nomi DNS
p.googleapis.com
. - Per scoprire come convalidare il perimetro in modalità di prova, guarda il video sul logging della prova di VPC Service Controls.
- Scopri come utilizzare l'API REST di Vertex AI.
- Scopri di più sull'utilizzo dell'SDK Vertex AI per Python.