Architecture de référence
Dans l'architecture de référence suivante, un VPC partagé est déployé avec un modèle Gemini dans le projet de service, ph-fm-svc-project
(projet de service de modèle de base) avec les attributs de stratégie de service permettant un accès privé à l'API Vertex AI depuis AWS:
- Un seul périmètre VPC Service Controls
- Identité utilisateur définie par le projet
Facultatif: Créer le niveau d'accès
Si vos utilisateurs finaux ont besoin d'accéder à Vertex AI via la console Google Cloud, suivez les instructions de cette section pour créer un niveau d'accès VPC Service Controls. Toutefois, si l'accès programmatique aux API provient de sources privées (par exemple, sur site avec un accès privé à Google ou des stations de travail cloud), le niveau d'accès n'est pas requis.
Dans cette architecture de référence, nous utilisons une plage CIDR d'entreprise, corp-public-block
, pour autoriser le trafic des employés de l'entreprise à accéder à la console Google Cloud.
Access Context Manager permet aux administrateurs d' Google Cloud organisations de définir un contrôle d'accès précis et basé sur des attributs pour les projets et les ressources dansGoogle Cloud.
Les niveaux d'accès décrivent les conditions requises pour que les requêtes soient honorées. Exemples:
- Type d'appareil et système d'exploitation (nécessite une licence Chrome Enterprise Premium)
- Adresse IP
- Identité des utilisateurs
S'il s'agit de la première fois que l'organisation utilise Access Context Manager, les administrateurs doivent définir une stratégie d'accès, qui est un conteneur pour les niveaux d'accès et les périmètres de service.
Dans le sélecteur de projet en haut de la console Google Cloud, cliquez sur l'onglet Tous, puis sélectionnez votre organisation.
Créez un niveau d'accès de base en suivant les instructions de la page Créer un niveau d'accès de base. Spécifiez les options suivantes:
- Sous Créer des conditions en, sélectionnez Mode de base.
- Dans le champ Titre du niveau d'accès, saisissez
corp-public-block
. - Dans la section Conditions, pour l'option When condition is met, return (Lorsque la condition est remplie, renvoyer), sélectionnez TRUE.
- Sous Sous-réseaux IP, sélectionnez Adresse IP publique.
- Pour la plage d'adresses IP, spécifiez la plage CIDR externe qui nécessite un accès au périmètre VPC Service Controls.
Créer le périmètre de service VPC Service Controls
Lorsque vous créez un périmètre de service, vous autorisez l'accès aux services protégés depuis l'extérieur du périmètre en spécifiant les projets protégés. Lorsque vous utilisez VPC Service Controls avec un VPC partagé, vous créez un grand périmètre incluant à la fois les projets hôte et de service. (Si vous ne sélectionnez que le projet de service dans votre périmètre, les points de terminaison réseau appartenant aux projets de service semblent se trouver en dehors du périmètre, car les sous-réseaux ne sont associés qu'au projet hôte.)
Sélectionnez le type de configuration du nouveau périmètre.
Dans cette section, vous allez créer un périmètre de service VPC Service Controls en mode simulation. En mode simulation, le périmètre consigne les violations comme si les périmètres étaient appliqués, mais n'empêche pas l'accès aux services restreints. Il est recommandé d'utiliser le mode simulation avant de passer au mode forcé.
Dans le menu de navigation de la console Google Cloud, cliquez sur Sécurité, puis sur VPC Service Controls.
Sur la page VPC Service Controls, cliquez sur Mode simulation.
Cliquez sur Nouveau périmètre.
Dans l'onglet Nouveau périmètre de service VPC, saisissez un nom dans le champ Nom du périmètre. Sinon, acceptez les valeurs par défaut.
Un nom de périmètre peut comporter au maximum 50 caractères, commencer par une lettre et ne contenir que des lettres de l'alphabet latin ASCII (az, AZ), des chiffres (0-9) ou des traits de soulignement (_). Le nom du périmètre est sensible à la casse et doit être unique dans une règle d'accès.
Sélectionner les ressources à protéger
Cliquez sur Ressources à protéger.
Pour ajouter des projets ou des réseaux VPC que vous souhaitez sécuriser au sein du périmètre, procédez comme suit:
Cliquez sur Ajouter des ressources.
Pour ajouter des projets au périmètre, dans le volet Ajouter des ressources, cliquez sur Ajouter un projet.
Pour sélectionner un projet, cochez la case correspondante dans la boîte de dialogue Ajouter des projets. Dans cette architecture de référence, nous sélectionnons les projets suivants:
infra-host-project
aiml-host-project
ph-fm-svc-project
Cliquez sur Ajouter les ressources sélectionnées. Les projets ajoutés apparaissent dans la section Projets.
Sélectionner les services restreints
Dans cette architecture de référence, le champ d'application des API limitées est limité, et seules les API nécessaires à Gemini sont activées. Toutefois, nous vous recommandons de limiter tous les services lorsque vous créez un périmètre pour limiter le risque d'exfiltration de données des servicesGoogle Cloud .
Pour sélectionner les services à sécuriser dans le périmètre, procédez comme suit:
Cliquez sur Services restreints.
Dans le volet Services restreints, cliquez sur Ajouter des services.
Dans la boîte de dialogue Spécifier les services à limiter, sélectionnez API Vertex AI.
Cliquez sur Ajouter l'API Vertex AI.
Facultatif: Sélectionner les services accessibles par VPC
Le paramètre Services accessibles par VPC limite l'ensemble de services accessibles à partir de points de terminaison du réseau dans votre périmètre de service. Dans cette architecture de référence, nous conservons le paramètre par défaut Tous les services.
Facultatif: Sélectionnez le niveau d'accès
Si vous avez créé un niveau d'accès CIDR d'entreprise dans une section précédente, procédez comme suit pour autoriser l'accès aux ressources protégées depuis l'extérieur du périmètre:
Cliquez sur Niveaux d'accès.
Cochez la case Sélectionnez le niveau d'accès.
Vous pouvez également ajouter des niveaux d'accès après la création d'un périmètre.
Cochez la case correspondant au niveau d'accès. (Dans cette architecture de référence, il s'agit de
corp-public-block
.)
Règles d'entrée et de sortie
Dans cette architecture de référence, vous n'avez pas besoin de spécifier de paramètres dans les volets Ingress Policy (Règle d'entrée) ou Egress Policy (Règle de sortie).
Créer le périmètre
Une fois les étapes de configuration précédentes terminées, créez le périmètre en cliquant sur Créer un périmètre.
Configurer la connectivité réseau entre AWS et les API Google
Configurer Private Service Connect pour les API Google
L'accès aux API Google à l'aide de Private Service Connect est une alternative à l'utilisation de l'accès privé à Google ou des noms de domaine publics pour les API Google. Dans ce cas, le producteur est Google.
L'utilisation de Private Service Connect vous permet d'effectuer les opérations suivantes :
- Créer une ou plusieurs adresses IP internes pour accéder aux API Google pour différents cas d'utilisation.
- Diriger le trafic sur site vers des adresses IP et des régions spécifiques lors de l'accès aux API Google.
- Créez un nom DNS de point de terminaison personnalisé utilisé pour résoudre les API Google.
Dans l'architecture de référence, un point de terminaison d'API Google Private Service Connect nommé restricted
, avec l'adresse IP 10.10.10.3,
, est déployé avec le VPC-SC cible, utilisé comme adresse IP virtuelle (VIP) pour accéder aux services restreints configurés dans le périmètre VPC-SC. Le ciblage de services non restreints avec l'adresse IP virtuelle n'est pas accepté. Pour en savoir plus, consultez la section À propos de l'accès à l'API Vertex AI | Google Cloud.
Configurer le réseau VPC AWS
La connectivité réseau entre Amazon Web Services (AWS) et Google Cloudest établie à l'aide de tunnels de réseau privé virtuel haute disponibilité (HA VPN). Cette connexion sécurisée facilite la communication privée entre les deux environnements cloud. Toutefois, pour permettre un routage et une communication fluides entre les ressources d'AWS et de Google Cloud, le protocole BGP (Border Gateway Protocol) est utilisé.
Dans l'environnement Google Cloud , une annonce de routage personnalisée est requise. Cette route personnalisée annonce spécifiquement l'adresse IP de l'API Google Private Service Connect au réseau AWS. En annonçant cette adresse IP, AWS peut établir un chemin direct vers l'API Google, en contournant l'Internet public et en améliorant les performances.
Dans l'architecture de référence, une instance Sagemaker est déployée avec une association au VPC AWS où le VPN est établi avec Google Cloud. Le protocole BGP (Border Gateway Protocol) est utilisé pour annoncer des routes via le VPN HA entre AWS et le réseau Google Cloud . Par conséquent,Google Cloud et AWS peuvent acheminer le trafic bidirectionnel via un VPN. Pour en savoir plus sur la configuration de connexions VPN haute disponibilité, consultez la section Créer des connexions VPN haute disponibilité entre Google Cloud et AWS.
Configurer les mises à jour de Route 53
Créez une zone hébergée privée nommée p.googleapis.com
dans AWS Route 53, puis ajoutez le nom de domaine complet REGION-aiplatform-restricted.p.googleapis.com
avec l'adresse IP 10.10.10.3
(adresse IP Googleapis Private Service Connect) en tant qu'enregistrement A DNS.
Lorsque le SDK Jupyter Notebook effectue une résolution DNS pour l'API Vertex AI afin d'atteindre Gemini, Route 53 renvoie l'adresse IP des API Google Private Service Connect. Jupyter Notebook utilise l'adresse IP obtenue auprès de Route 53 pour établir une connexion au point de terminaison des API Google Private Service Connect acheminé via le VPN HA dans Google Cloud.
Configurer les mises à jour de Sagemaker
Cette architecture de référence utilise des instances de notebook Amazon SageMaker pour accéder à l'API Vertex AI. Toutefois, vous pouvez obtenir la même configuration avec d'autres services de calcul compatibles avec VPC, tels que Amazon EC2 ou AWS Lambda.
Pour authentifier vos requêtes, vous pouvez utiliser une Google Cloud clé de compte de service ou la fédération d'identité de charge de travail. Pour en savoir plus sur la configuration de la fédération d'identité de charge de travail, consultez la section Fournisseur sur site ou autre fournisseur cloud.
L'instance Jupyter Notebook appelle un appel d'API au modèle Gemini hébergé dansGoogle Cloud en effectuant une résolution DNS du nom de domaine complet (FQDN) personnalisé des API Google Private Service Connect REGION-aiplatform-restricted.p.googleapis.com
, qui remplace le nom de domaine complet par défaut (REGION-aiplatform.googleapis.com
).
L'API Vertex AI peut être appelée à l'aide de Rest, gRPC ou du SDK. Pour utiliser le nom de domaine complet du client Private Service Connect, mettez à jour API_ENDPOINT dans Jupyter Notebook avec ce qui suit:
Instructions pour utiliser le SDK Vertex AI pour Python
Installez le SDK:
pip install --upgrade google-cloud-aiplatform
Importez les dépendances:
from google.cloud import aiplatform from vertexai.generative_models import GenerativeModel, Part, SafetySetting import vertexai import base64
Définissez les variables d'environnement suivantes :
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
Initialisez le SDK Vertex AI pour Python:
vertexai.init(project=PROJECT_ID,api_endpoint=API_ENDPOINT, api_transport="rest")
Envoyez la requête suivante à l'API Vertex AI Gemini:
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)
À ce stade, vous pouvez effectuer un appel d'API à Gemini à partir d'un notebook Jupyter pour accéder à Gemini hébergé dans Google Cloud. Si l'appel aboutit, la sortie ressemble à ceci:
They weigh the same. Both weigh 1 kilogram.
Instructions d'utilisation de l'API REST Vertex AI
Dans cette section, vous allez configurer des variables importantes qui seront utilisées tout au long du processus. Ces variables stockent des informations sur votre projet, telles que l'emplacement de vos ressources, le modèle Gemini spécifique et le point de terminaison Private Service Connect que vous souhaitez utiliser.
Ouvrez une fenêtre de terminal dans un notebook Jupyter.
Définissez les variables d'environnement suivantes :
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"
Utilisez un éditeur de texte tel que
vim
ounano
pour créer un fichier nommérequest.json
contenant la requête formatée suivante pour l'API Gemini 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" } ] }
Envoyez la requête cURL suivante à l'API Vertex AI Gemini:
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'
Valider votre périmètre en mode simulation
Dans cette architecture de référence, le périmètre de service est configuré en mode simulation, ce qui vous permet de tester l'effet de la stratégie d'accès sans l'appliquer. Vous pouvez ainsi voir l'impact de vos règles sur votre environnement si elles étaient actives, sans risque de perturber le trafic légitime.
Après avoir validé votre périmètre en mode simulation, passez-le en mode application forcée.
Étape suivante
- Découvrez comment utiliser des noms DNS
p.googleapis.com
. - Pour savoir comment valider votre périmètre en mode simulation, regardez la vidéo sur la journalisation en mode simulation de VPC Service Controls.
- Découvrez comment utiliser l'API REST Vertex AI.
- Découvrez comment utiliser le SDK Vertex AI pour Python.