Ce tutoriel est destiné aux data scientists, aux chercheurs et aux administrateurs réseau d'entreprise. Il montre comment sécuriser une instance Vertex AI Workbench en la créant dans un réseau cloud privé virtuel (VPC).
Un réseau VPC est une version virtuelle d'un réseau physique, mise en œuvre au sein du réseau de production de Google Il s'agit d'un réseau privé, avec ses propres adresses IP, sous-réseaux et passerelles réseau. Dans l'entreprise, les réseaux VPC permettent de protéger les données et les instances en contrôlant l'accès à ceux-ci depuis d'autres réseaux et depuis Internet.
Le réseau VPC de ce tutoriel est un réseau autonome. Cependant, vous pouvez partager un réseau VPC d'un projet (appelé projet hôte) avec d'autres projets de votre organisation Google Cloud . Pour en savoir plus sur le type de réseau VPC à utiliser, consultez Réseau VPC unique et VPC partagé.
Conformément aux bonnes pratiques de sécurité réseau, le réseau VPC de ce tutoriel utilise une combinaison de Cloud Router, Cloud NAT et Accès privé à Google pour sécuriser l'instance comme suit :
- L'instance Vertex AI Workbench ne possède pas d'adresse IP externe.
- L'instance dispose d'un accès Internet sortant via un routeur Cloud Router régional et une passerelle Cloud NAT afin que vous puissiez installer des packages logiciels ou d'autres dépendances. Cloud NAT autorise les connexions sortantes et les réponses entrantes à destination de ces connexions. Cloud NAT n'autorise pas les requêtes entrantes non sollicitées en provenance d'Internet.
- L'instance utilise l'accès privé à Google pour accéder aux adresses IP externes des API et services Google.
Le tutoriel explique également comment effectuer les opérations suivantes :
- Créer un script post-démarrage pour cloner automatiquement un dépôt GitHub dans l'instance Vertex AI Workbench nouvellement créée.
- Utiliser Cloud Monitoring pour surveiller l'instance Vertex AI Workbench.
- Utiliser l'API Compute Engine pour démarrer et arrêter automatiquement l'instance afin d'optimiser les coûts.
Objectifs
- Créez un réseau VPC et ajoutez un sous-réseau sur lequel l'accès privé à Google est activé.
- Créez un routeur Cloud et Cloud NAT pour le réseau VPC.
- Créez une instance Vertex AI Workbench dans le sous-réseau à l'aide d'un script post-démarrage qui clone le dépôt GitHub Google Cloud Generative AI.
- Activez Cloud Monitoring pour l'instance.
- Créez une programmation d'instances de VM et associez-la à l'instance.
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Ouvrez Cloud Shell pour exécuter les commandes répertoriées dans ce tutoriel. Cloud Shell est un environnement shell interactif pour Google Cloud qui vous permet de gérer vos projets et vos ressources depuis un navigateur Web. Accéder à Cloud Shell
- Dans Cloud Shell, définissez le projet actuel sur votre ID de projet Google Cloud , puis stockez le même ID de projet dans la variable de shell
projectid: Remplacez PROJECT_ID par l'ID de votre projet. Si nécessaire, vous pouvez trouver l'ID de votre projet dans la console Google Cloud . Pour en savoir plus, consultez Trouver votre ID de projet.projectid="PROJECT_ID" gcloud config set project ${projectid} -
Enable the IAM, Compute Engine, Notebooks, Cloud Storage, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Si vous n'êtes pas le propriétaire du projet, demandez à son propriétaire de vous accorder le rôle Administrateur de projet IAM (roles/resourcemanager.projectIamAdmin). Vous devez disposer de ce rôle pour attribuer des rôles IAM à l'étape suivante.
-
Make sure that you have the following role or roles on the project: roles/aiplatform.user, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/compute.instanceAdmin, roles/monitoring.viewer, roles/notebooks.admin, roles/resourcemanager.projectIamAdmin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/storage.Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
-
Créer et configurer un VPC autonome
Créez un réseau VPC nommé
securevertex-vpc:gcloud compute networks create securevertex-vpc --subnet-mode=customCréez un sous-réseau nommé
securevertex-subnet-aavec une plage IPv4 principale de10.10.10.0/29:gcloud compute networks subnets create securevertex-subnet-a --range=10.10.10.0/29 --network=securevertex-vpc --region=us-central1 --enable-private-ip-google-accessVous pouvez indiquer une valeur différente pour le paramètre
--range. Cependant, la longueur minimale du préfixe pour un seul notebook est de 29. Pour en savoir plus, consultez la section sur les plages de sous-réseaux IPv4.Créez un routeur Cloud Router régional nommé
cloud-router-us-central1:gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1Créez une passerelle Cloud NAT régionale nommée
cloud-nat-us-central1:gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1 --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Créer un bucket Cloud Storage
Dans cette section, vous allez créer un bucket Cloud Storage pour stocker un script post-démarrage que vous pourrez exécuter lorsque vous créerez une instance Vertex AI Workbench.
Créez le bucket Cloud Storage :
gcloud storage buckets create --location=us-central1 --uniform-bucket-level-access gs://BUCKET_NAMERemplacez BUCKET_NAME par un nom de bucket unique.
Définissez la variable d'interface système
BUCKET_NAMEet vérifiez qu'elle a été saisie correctement :BUCKET_NAME=BUCKET_NAME echo $BUCKET_NAME
Créer et importer un script post-démarrage
Dans cette section, vous allez créer un script post-démarrage pour cloner un dépôt GitHub dans une nouvelle instance Vertex AI Workbench.
Pour créer le script, utilisez un éditeur de texte tel que
vimounanopour créer un fichierpoststartup.sh. Vous devez ajoutersudopour pouvoir écrire dans le fichier, par exemple :sudo vim poststartup.shCollez le script suivant dans le fichier.
#! /bin/bash echo "Current user: id" >> /tmp/notebook_config.log 2>&1 echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1 cd /home/jupyter echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1 su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1 echo "Current user: id" >> /tmp/notebook_config.log 2>&1 echo "Installing python packages" >> /tmp/notebook_config.log 2&1 su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \ google-cloud-bigquery \ google-cloud-pipeline-components \ google-cloud-aiplatform \ seaborn \ kfp" >> /tmp/notebook_config.log 2>&1Enregistrez le fichier comme suit :
- Si vous utilisez
vim, appuyez sur la toucheEsc, puis saisissez:wqpour enregistrer le fichier et quitter. - Si vous utilisez
nano, saisissezControl+Oet appuyez surEnterpour enregistrer le fichier, puis saisissezControl+Xpour quitter.
- Si vous utilisez
Importez un fichier dans votre bucket Cloud Storage :
gcloud storage cp poststartup.sh gs://BUCKET_NAME
Créer un compte de service personnalisé
Lorsque vous créez une instance Vertex AI Workbench, nous vous recommandons vivement de décocher la case Utiliser le compte de service Compute Engine par défaut et de spécifier un compte de service personnalisé. Si votre organisation n'applique pas la contrainte de règle d'administration iam.automaticIamGrantsForDefaultServiceAccounts, le compte de service Compute Engine par défaut (et donc toute personne que vous spécifiez en tant qu'utilisateur d'instance) se voit attribuer le rôle Éditeur (roles/editor) sur votre projet. Pour désactiver ce comportement, consultez la section Désactiver les attributions automatiques de rôles pour les comptes de service par défaut.
Créez un compte de service personnalisé nommé
workbench-sa:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"Attribuez le rôle IAM de lecteur des objets de l'espace de stockage au compte de service :
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer"Attribuez le rôle IAM "Rédacteur de métriques Monitoring" au compte de service :
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Attribuez le rôle IAM "Utilisateur Vertex AI" au compte de service :
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Créer une instance Vertex AI Workbench
Dans cette section, vous allez créer l'instance Vertex AI Workbench. Lorsque l'instance est créée, le script de post-démarrage que vous avez créé est exécuté automatiquement.
Dans la console Google Cloud , accédez à l'onglet Instances de la page Vertex AI Workbench.
Cliquez sur Créer, puis sélectionnez Options avancées.
La page Nouvelle instance s'ouvre.
Dans la section Détails de la page Nouvelle instance, fournissez les informations suivantes pour la nouvelle instance, puis cliquez sur Continuer :
- Nom : donnez un nom à la nouvelle instance ou acceptez la valeur par défaut.
- Région : sélectionnez us-central1.
- Zone : sélectionnez us-central1-a.
Dans la section Environnement, fournissez les informations suivantes, puis cliquez sur Continuer :
- Script post-démarrage : cliquez sur Parcourir, puis sur Afficher les ressources enfants à côté du nom du bucket, et cliquez ensuite sur
poststartup.sh, puis sur Sélectionner.
- Script post-démarrage : cliquez sur Parcourir, puis sur Afficher les ressources enfants à côté du nom du bucket, et cliquez ensuite sur
Dans la section Type de machine, fournissez les informations suivantes, puis cliquez sur Continuer :
VM protégée : cochez les cases suivantes :
- Démarrage sécurisé
- Module vTPM (Virtual Trusted Platform Module)
- Surveillance de l'intégrité
Dans la section Disques, assurez-vous que l'option Google-managed encryption key est sélectionnée, puis cliquez sur Continuer :
Dans la section Mise en réseau, fournissez les informations suivantes, puis cliquez sur Continuer :
Mise en réseau : sélectionnez Réseau dans ce projet et procédez comme suit :
Dans le champ Réseau, sélectionnez securevertex-vpc.
Dans le champ Sous-réseau, sélectionnez securevertex-subnet-a.
Décochez la case Attribuer une adresse IP externe. Le fait de ne pas attribuer d'adresse IP externe empêche l'instance de recevoir des communications non sollicitées en provenance d'Internet ou d'autres réseaux VPC.
Cochez la case Autoriser l'accès proxy.
Dans la section IAM et sécurité, spécifiez les éléments suivants, puis cliquez sur Continuer :
IAM et sécurité : pour accorder à un seul utilisateur l'accès à l'interface JupyterLab de l'instance, procédez comme suit :
- Sélectionnez Un seul utilisateur.
- Dans le champ Adresse e-mail de l'utilisateur, saisissez l'adresse e-mail d'un seul compte utilisateur. Si vous créez l'instance pour un autre utilisateur, les conditions suivantes s'appliquent :
- Vous (le créateur de l'instance) n'avez pas accès à l'interface JupyterLab de l'instance. Cependant, vous contrôlez toujours l'instance, et vous pouvez la démarrer, l'arrêter ou la supprimer.
- Après avoir créé l'instance, vous devez attribuer à l'utilisateur le rôle d'utilisateur du compte de service (
roles/iam.serviceAccountUser) sur le compte de service de l'instance. Consultez la section Facultatif : Attribuez le rôle Utilisateur du compte de service à l'utilisateur de l'instance.
- Décochez la case Utiliser le compte de service Compute Engine par défaut.
Cette étape est importante, car le compte de service Compute Engine par défaut (et donc l'utilisateur que vous venez de spécifier) peut disposer du rôle Éditeur (
roles/editor) sur votre projet. Dans le champ Adresse e-mail du compte de service, saisissez l'adresse suivante en remplaçant PROJECT_ID par l'ID de projet :
workbench-sa@PROJECT_ID.iam.gserviceaccount.com(Il s'agit de l'adresse e-mail du compte de service personnalisé que vous avez créé précédemment.) Ce compte de service dispose d'autorisations limitées.
Pour en savoir plus sur l'attribution d'autorisations d'accès, consultez la section Gérer l'accès à l'interface JupyterLab d'une instance Vertex AI Workbench.
Options de sécurité : décochez la case suivante :
- Accès root à l'instance
Cochez la case suivante :
- nbconvert :
nbconvertpermet aux utilisateurs d'exporter et de télécharger un fichier notebook sous un type de fichier différent, tel que HTML, PDF ou LaTeX. Ce paramètre est requis par certains notebooks du dépôt GitHub Google Cloud Generative AI.
Décochez la case suivante :
- Téléchargement de fichiers
Cochez la case suivante, sauf si vous êtes dans un environnement de production :
- Accès au terminal : cette option permet d'accéder au terminal de votre instance à partir de l'interface utilisateur de JupyterLab.
Dans la section État du système, sélectionnez Mise à niveau automatique de l'environnement et fournissez les informations suivantes :
Dans Création de rapports, cochez les cases suivantes :
- Rendez compte de l'état du système
- Transmettre des métriques personnalisées à Cloud Monitoring
- Installer Cloud Monitoring
- Signaler l'état DNS des domaines Google requis
Cliquez sur Créer et attendez quelques minutes que l'instance Vertex AI Workbench soit créée.
Facultatif : Attribuer le rôle d'utilisateur du compte de service à l'utilisateur de l'instance
Si vous créez l'instance Vertex AI Workbench pour un autre utilisateur, vous devez lui attribuer le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service personnalisé workbench-sa comme suit :
gcloud iam service-accounts add-iam-policy-binding \ workbench-sa@PROJECT_ID.iam.gserviceaccount.com \ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountUser"
Remplacez les valeurs suivantes :
- PROJECT_ID : ID du projet
- USER_EMAIL : adresse e-mail de l'utilisateur.
Vérifier que l'instance Vertex AI Workbench a été créée
Vertex AI Workbench crée une instance Vertex AI Workbench en fonction des propriétés spécifiées et la démarre automatiquement.
Lorsque l'instance est prête à l'emploi, Vertex AI Workbench active automatiquement un lien Ouvrir JupyterLab. Ce lien n'est accessible qu'à l'utilisateur que vous avez spécifié au moment de la création de l'instance.
Ouvrez l'instance dans JupyterLab et vérifiez que le dépôt GitHub Google Cloud Generative AI cloné est présent.
Dans la console Google Cloud , accédez à la page Vertex AI Workbench.
Dans la liste des instances Vertex AI Workbench, cliquez sur le lien Ouvrir JupyterLab pour l'instance que vous avez créée.
Dans la liste des dossiers, un dossier
generative-ais'affiche. Ce dossier contient le dépôt GitHub cloné.
Surveiller l'état de fonctionnement via Monitoring
Vous pouvez surveiller les métriques du système et des applications de vos instances Vertex AI Workbench à l'aide de la consoleGoogle Cloud . Pour en savoir plus sur la surveillance des instances et sur la création de métriques personnalisées, consultez Surveiller l'état de fonctionnement.
Dans la console Google Cloud , accédez à la page Vertex AI Workbench.
Cliquez sur le nom de l'instance Vertex AI Workbench pour laquelle vous souhaitez afficher les métriques.
Sur la page Détails de l'instance, cliquez sur l'onglet Monitoring. Examinez l'utilisation du processeur et les octets réseau de votre instance de notebook. Pour apprendre à interpréter ces métriques, consultez la page Examiner les métriques de ressources.
Si vous venez de créer l'instance, aucune donnée ne s'affiche immédiatement. Attendez quelques minutes et actualisez l'onglet de la console.
Créer une programmation d'instances de VM pour votre instance Vertex AI Workbench
Une instance Vertex AI Workbench étant une instance de VM Compute Engine, vous pouvez utiliser les API Compute Engine pour lui créer une programmation d'instances de VM.
Utilisez une programmation d'instances de VM pour démarrer et arrêter votre instance Vertex AI Workbench. Pendant les heures d'arrêt de l'instance, vous ne payez que les coûts liés à Cloud Storage.
Vous pouvez associer une programmation d'instances à toute instance de VM située dans la même région, afin de pouvoir utiliser la même programmation pour contrôler toutes vos instances Vertex AI Workbench dans la région.
Pour en savoir plus sur les programmations d'instances de VM, consultez la page Planifier le démarrage et l'arrêt d'une instance de VM.
Créer un rôle IAM personnalisé
Pour des raisons de sécurité, nous vous recommandons de créer un rôle IAM personnalisé qui ne dispose que des autorisations suivantes et de l'attribuer au compte de service Compute Engine par défaut :
compute.instances.startcompute.instances.stop
Dans Cloud Shell, créez un rôle personnalisé nommé
Vm_Scheduleret incluez les autorisations nécessaires :gcloud iam roles create Vm_Scheduler \ --project=$projectid \ --title=vm-scheduler-notebooks \ --permissions="compute.instances.start,compute.instances.stop" --stage=gaDécrivez le rôle personnalisé :
gcloud iam roles describe Vm_Scheduler \ --project=$projectid
Attribuer le rôle au compte de service Compute Engine par défaut
Pour autoriser le compte de service Compute Engine par défaut à démarrer et à arrêter vos instances Vertex AI Workbench, vous devez lui attribuer le rôle personnalisé Vm_Scheduler.
Le compte de service Compute Engine par défaut de votre projet possède l'adresse e-mail suivante : PROJECT_NUMBER-compute@developer.gserviceaccount.com, où PROJECT_NUMBER est votre numéro de projet.
Identifiez le numéro de votre projet et stockez-le dans la variable d'interface système
project_number:project_number=$(gcloud projects describe $projectid --format 'get(projectNumber)') echo $project_numberAttribuez le rôle personnalisé au compte de service par défaut :
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:service-$project_number@compute-system.iam.gserviceaccount.com" \ --role="projects/$projectid/roles/Vm_Scheduler"
Créer et associer la programmation
Pour créer une programmation d'instances qui démarre votre instance Vertex AI Workbench à 7h00 et l'arrête à 18h00, procédez comme suit :
Créez une planification de démarrage et d'arrêt nommée
optimize-notebooks:gcloud compute resource-policies create instance-schedule optimize-notebooks \ --region=us-central1 \ --vm-start-schedule='0 7 * * *' \ --vm-stop-schedule='0 18 * * *' \ --timezone=TIME_ZONERemplacez TIME_ZONE par le fuseau horaire IANA basé sur l'emplacement pour cette programmation d'instances, par exemple
America/Chicago. En cas d'omission, la valeur par défautUTCest utilisée. Pour plus d'informations, consultez la section Fuseau horaire.Identifiez le nom de votre instance Vertex AI Workbench en exécutant la commande suivante et en notant la valeur
NAMEqu'elle renvoie :gcloud compute instances listStockez le nom dans la variable d'interface système
notebook_vm:notebook_vm=NOTEBOOK_VM_NAME echo $notebook_vmRemplacez NOTEBOOK_VM_NAME par le nom de votre instance Vertex AI Workbench.
Associez la programmation d'instances à votre instance Vertex AI Workbench :
gcloud compute instances add-resource-policies $notebook_vm \ --resource-policies=optimize-notebooks \ --zone=us-central1-aDécrivez la programmation d'instances :
gcloud compute resource-policies describe optimize-notebooks \ --region=us-central1
Vous pouvez vérifier si la programmation d'instances est correctement exécutée en consultant les journaux d'audit Compute Engine de la stratégie de ressources de programmation d'instances et de l'instance de VM associée. Vous devrez peut-être attendre jusqu'à 15 minutes après l'heure programmée de chaque opération.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce tutoriel ne soient facturées sur votre compte Google Cloud , supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.Vous pouvez supprimer les ressources individuelles du projet en exécutant les commandes suivantes dans Cloud Shell :
Retirez la programmation de l'instance :
gcloud compute instances remove-resource-policies $notebook_vm \ --resource-policies=optimize-notebooks \ --zone=us-central1-a --quietSupprimez la programmation d'instances :
gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quietSupprimez le rôle
Vm_Scheduler:gcloud iam roles delete Vm_Scheduler --project=$projectidSupprimez l'instance Vertex AI Workbench :
gcloud workbench instances delete $notebook_vm \ --location=us-central1-a \ --quietSupprimez le compte de service :
gcloud iam service-accounts delete workbench-sa@$projectid.iam.gserviceaccount.com --quietSupprimez le bucket Cloud Storage :
gcloud storage rm -r gs://BUCKET_NAMESupprimez la passerelle Cloud NAT régionale :
gcloud compute routers nats delete cloud-nat-us-central1 \ --region=us-central1 \ --router=cloud-router-us-central1 \ --quietSupprimez le routeur Cloud Router régional :
gcloud compute routers delete cloud-router-us-central1 \ --region=us-central1 \ --quietSupprimez le sous-réseau VPC :
gcloud compute networks subnets delete securevertex-subnet-a \ --region=us-central1 \ --quietSupprimez le réseau VPC :
gcloud compute networks delete securevertex-vpc --quiet