Tutorial ini ditujukan bagi data scientist, peneliti, dan administrator jaringan perusahaan. Contoh ini menunjukkan cara mengamankan instance Vertex AI Workbench dengan membuatnya di jaringan Virtual Private Cloud (VPC).
Jaringan VPC adalah versi virtual dari jaringan fisik yang diterapkan di dalam jaringan produksi Google. Ini merupakan jaringan pribadi, dengan alamat IP pribadi, subnet, dan gateway jaringannya sendiri. Di perusahaan, jaringan VPC digunakan untuk melindungi data dan instance dengan mengontrol akses ke keduanya dari jaringan lain dan dari internet.
Jaringan VPC dalam tutorial ini merupakan jaringan mandiri. Namun, Anda dapat berbagi jaringan VPC dari satu project (disebut project host) ke project lain di organisasi Google Cloud Anda. Untuk mempelajari lebih lanjut jenis jaringan VPC yang akan digunakan, lihat Jaringan VPC Tunggal dan VPC Bersama.
Setelah praktik terbaik keamanan jaringan, jaringan VPC dalam tutorial ini menggunakan kombinasi dariRouter Cloud .Cloud NAT , dan Akses Google Pribadi untuk mengamankan instance dengan cara berikut:
- Instance Vertex AI Workbench tidak memiliki alamat IP eksternal.
- Instance ini memiliki akses internet keluar melalui Cloud Router regional dan gateway Cloud NAT sehingga Anda dapat menginstal paket software atau dependensi lainnya. Cloud NAT memungkinkan koneksi keluar dan respons masuk ke koneksi tersebut. API ini tidak mengizinkan permintaan masuk yang tidak diminta dari internet.
- Instance ini menggunakan Akses Google Pribadi untuk menjangkau alamat IP eksternal Google API dan layanan Google.
Tutorial ini juga menunjukkan cara melakukan hal berikut:
- Membuat skrip pasca-startup untuk meng-clone repo GitHub secara otomatis ke instance Vertex AI Workbench yang baru dibuat.
- Gunakan Cloud Monitoring untuk memantau instance Vertex AI Workbench.
- Gunakan API Compute Engine untuk memulai dan menghentikan instance secara otomatis guna mengoptimalkan biaya.
Tujuan
- Membuat jaringan VPC dan menambahkan subnet yang telah mengaktifkan Akses Google Pribadi.
- Membuat Cloud Router dan Cloud NAT untuk jaringan VPC.
- Buat instance Vertex AI Workbench di subnet, menggunakan skrip pasca-startup yang meng-clone repositori GitHub Google Cloud Generative AI.
- Mengaktifkan Cloud Monitoring untuk instance.
- Membuat jadwal instance VM dan melampirkan ke instance.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Buka Cloud Shell untuk menjalankan perintah yang tercantum dalam tutorial ini. Cloud Shell adalah lingkungan shell interaktif untuk Google Cloud yang dapat Anda gunakan untuk mengelola project dan resource dari browser web. Buka Cloud Shell
- Di Cloud Shell, tetapkan project saat ini ke project ID Google Cloud Anda dan simpan project ID yang sama ke dalam variabel shell
projectid
: Ganti PROJECT_ID dengan project ID Anda. Jika perlu, Anda dapat menemukan project ID di konsol Google Cloud. Untuk mengetahui informasi selengkapnya, baca Menemukan project ID.projectid="PROJECT_ID" gcloud config set project ${projectid}
-
Enable the IAM, Compute Engine, Notebooks, Cloud Storage, and Vertex AI APIs:
gcloud services enable iam.googleapis.com
compute.googleapis.com notebooks.googleapis.com storage.googleapis.com aiplatform.googleapis.com - Jika Anda bukan pemilik project, minta pemilik project untuk memberi Anda peran Project IAM Admin (roles/resourcemanager.projectIamAdmin). Anda harus memiliki peran ini untuk memberikan peran IAM pada langkah berikutnya.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
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
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Membuat dan mengonfigurasi VPC mandiri
Buat jaringan VPC bernama
securevertex-vpc
:gcloud compute networks create securevertex-vpc --subnet-mode=custom
Buat subnet bernama
securevertex-subnet-a
, dengan rentang IPv4 utama10.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-access
Anda dapat memberikan nilai yang berbeda untuk parameter
--range
. Namun, panjang imbuhan minimum untuk satu notebook adalah 29. Untuk mengetahui informasi selengkapnya, lihat Rentang subnet IPv4.Buat Cloud Router regional bernama
cloud-router-us-central1
:gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1
Buat gateway Cloud NAT regional bernama
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
Membuat bucket Cloud Storage
Di bagian ini, Anda akan membuat bucket Cloud Storage untuk menyimpan skrip pasca-startup yang dapat dijalankan saat membuat instance Vertex AI Workbench baru.
Buat bucket Cloud Storage:
gcloud storage buckets create --location=us-central1 --uniform-bucket-level-access gs://BUCKET_NAME
Ganti BUCKET_NAME dengan nama unik bucket.
Tetapkan variabel shell
BUCKET_NAME
dan pastikan variabel shell telah dimasukkan dengan benar:BUCKET_NAME=BUCKET_NAME echo $BUCKET_NAME
Membuat dan mengupload skrip pasca-startup
Di bagian ini, Anda akan membuat skrip pasca-startup untuk meng-clone repositori GitHub ke instance Vertex AI Workbench baru.
Untuk membuat skrip, gunakan editor teks seperti
vim
ataunano
untuk membuat filepoststartup.sh
. Anda harus menambahkansudo
di awal agar memiliki izin untuk menulis ke file, misalnya:sudo vim poststartup.sh
Tempel skrip shell berikut ke dalam file:
#! /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>&1
Simpan file sebagai berikut:
- Jika Anda menggunakan
vim
, tekan tombolEsc
, lalu ketik:wq
untuk menyimpan file dan keluar. - Jika Anda menggunakan
nano
, ketikControl+O
dan tekanEnter
untuk menyimpan file, lalu ketikControl+X
untuk keluar.
- Jika Anda menggunakan
Upload file ke bucket Cloud Storage Anda:
gcloud storage cp poststartup.sh gs://BUCKET_NAME
Membuat akun layanan kustom
Saat membuat instance Vertex AI Workbench, sebaiknya Anda menghapus centang pada kotak Gunakan akun layanan default Compute Engine dan tentukan akun layanan kustom. Jika organisasi Anda tidak menerapkan batasan kebijakan organisasi iam.automaticIamGrantsForDefaultServiceAccounts
, akun layanan default Compute Engine (dan dengan demikian siapa pun yang Anda tetapkan sebagai pengguna instance) akan diberi peran Editor (roles/editor
) pada project Anda. Untuk menonaktifkan perilaku ini,
lihat Menonaktifkan pemberian peran otomatis ke akun layanan
default.
Buat akun layanan kustom bernama
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Tetapkan peran IAM Storage Object Viewer ke akun layanan:
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer"
Tetapkan peran IAM Monitoring Metric Writer ke akun layanan:
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
Tetapkan peran Vertex AI User IAM ke akun layanan:
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Membuat instance Vertex AI Workbench
Di bagian ini, Anda akan membuat instance Vertex AI Workbench. Saat instance dibuat, skrip pasca-startup yang Anda buat akan otomatis dijalankan.
Di konsol Google Cloud, buka tab Instances di halaman Vertex AI Workbench.
Klik
Buat baru, lalu klik Opsi lanjutan.Halaman New instance akan terbuka.
Di halaman New instance, di bagian Details, berikan informasi berikut untuk instance baru Anda, lalu klik Continue:
- Nama: Berikan nama untuk instance baru Anda, atau setujui nama default.
- Region: Pilih us-central1.
- Zona: Pilih us-central1-a.
Di bagian Lingkungan, berikan hal berikut, lalu klik Lanjutkan:
- Skrip pasca-startup: Klik Jelajahi, klik
poststartup.sh
, lalu klik Pilih.
Lihat resource turunan di samping nama bucket,
klik
- Skrip pasca-startup: Klik Jelajahi, klik
Di bagian Jenis mesin, berikan informasi berikut, lalu klik Lanjutkan:
Shielded VM: Pilih kotak centang berikut:
- Secure Boot
- Virtual Trusted Platform Module (vTPM)
- Integrity monitoring
Di bagian Disk, pastikan Google-managed encryption key dipilih, lalu klik Lanjutkan:
Di bagian Networking, berikan hal berikut, lalu klik Lanjutkan:
Networking: Pilih Network dalam project ini dan selesaikan langkah-langkah berikut:
Pada kolom Network, pilih securevertex-vpc.
Di kolom Subnetwork, pilih securevertex-subnet-a.
Hapus centang pada kotak Tetapkan alamat IP eksternal. Dengan tidak menetapkan alamat IP eksternal, Anda dapat mencegah instance menerima komunikasi yang tidak diminta dari internet atau jaringan VPC lainnya.
Centang kotak Izinkan akses proxy.
Di bagian IAM dan keamanan, berikan hal berikut, lalu klik Lanjutkan:
IAM dan keamanan: Untuk memberikan akses kepada satu pengguna ke antarmuka JupyterLab instance, selesaikan langkah-langkah berikut:
- Pilih Satu pengguna.
- Di kolom Email pengguna, masukkan alamat email untuk satu akun pengguna. Jika Anda membuat instance untuk orang lain, kondisi berikut akan berlaku:
- Anda (pembuat instance) tidak memiliki akses ke antarmuka JupyterLab instance. Namun Anda tetap mengontrol instance tersebut, dan Anda dapat memulai, menghentikan, atau menghapusnya.
- Setelah membuat instance, Anda perlu memberikan peran Service Account User (
roles/iam.serviceAccountUser
) kepada pengguna di akun layanan instance. Lihat Opsional: Memberikan peran Service Account User kepada pengguna instance.
- Hapus centang pada kotak Gunakan akun layanan default Compute Engine.
Langkah ini penting, karena akun layanan default Compute Engine (dan dengan demikian satu pengguna yang baru saja Anda tentukan) dapat memiliki peran Editor (
roles/editor
) pada project Anda. Di kolom Email akun layanan, masukkan kode berikut, dengan mengganti PROJECT_ID dengan project ID:
workbench-sa@PROJECT_ID.iam.gserviceaccount.com
(Ini adalah alamat email akun layanan khusus yang Anda buat sebelumnya.) Akun layanan ini memiliki izin terbatas.
Untuk mempelajari lebih lanjut cara memberikan akses, lihat Mengelola akses ke antarmuka JupyterLab instance Vertex AI Workbench.
Opsi keamanan: Hapus centang pada kotak berikut:
- Akses root ke instance
Centang kotak berikut:
- nbconvert:
nbconvert
memungkinkan pengguna mengekspor dan mendownload file notebook sebagai jenis file berbeda, seperti HTML, PDF, atau LaTeX. Setelan ini diperlukan oleh beberapa notebook di repositori GitHub Google Cloud Generative AI.
Hapus centang pada kotak berikut:
- Mendownload file
Pilih kotak centang berikut, kecuali jika Anda berada di lingkungan produksi:
- Akses terminal: Ini memungkinkan akses terminal ke instance Anda dari dalam antarmuka pengguna JupyterLab.
Di bagian Kondisi Sistem, pilih Upgrade otomatis lingkungan dan berikan hal berikut:
Di Pelaporan, centang kotak berikut:
- Melaporkan kondisi sistem
- Melaporkan metrik kustom ke Cloud Monitoring
- Menginstal Cloud Monitoring
- Melaporkan status DNS untuk domain Google yang diperlukan
Klik Create dan tunggu beberapa menit hingga instance Vertex AI Workbench dibuat.
Opsional: Memberikan peran Service Account User kepada pengguna instance
Jika Anda membuat instance Vertex AI Workbench
untuk pengguna lain, Anda harus memberi mereka
peran Service Account User
(roles/iam.serviceAccountUser
) di akun layanan kustom workbench-sa
sebagai berikut:
gcloud iam service-accounts add-iam-policy-binding \ workbench-sa@PROJECT_ID.iam.gserviceaccount.com \ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountUser"
Ganti nilai berikut:
- PROJECT_ID: project ID
- USER_EMAIL: alamat email untuk pengguna
Memverifikasi bahwa instance Vertex AI Workbench telah dibuat
Vertex AI Workbench membuat instance Vertex AI Workbench berdasarkan properti yang Anda tentukan dan otomatis memulai instance tersebut.
Saat instance siap digunakan, Vertex AI Workbench akan mengaktifkan link Open JupyterLab. Link ini hanya dapat diakses oleh satu pengguna yang Anda tentukan pada saat pembuatan instance.
Buka instance di JupyterLab dan verifikasi bahwa ada repositori GitHub Google Cloud Generative AI yang di-clone.
Di konsol Google Cloud, buka halaman Vertex AI Workbench.
Pada daftar instance Vertex AI Workbench, klik link Buka JupyterLab untuk instance yang Anda buat.
Dalam daftar folder, Anda akan melihat folder
generative-ai
. Folder ini berisi repositori GitHub yang telah di-clone.
Memantau status respons melalui Monitoring
Anda dapat memantau metrik sistem dan aplikasi untuk instance Vertex AI Workbench menggunakan konsolGoogle Cloud . Untuk mempelajari lebih lanjut pemantauan instance dan cara membuat metrik kustom, lihat Memantau status kondisi.
Di konsol Google Cloud, buka halaman Vertex AI Workbench.
Klik nama instance Vertex AI Workbench yang ingin Anda lihat metriknya.
Di halaman Detail instance, klik tab Monitoring. Tinjau Penggunaan CPU dan Byte Jaringan untuk instance notebook Anda. Untuk mempelajari cara menafsirkan metrik ini, lihat Meninjau metrik resource.
Jika Anda baru saja membuat instance, Anda tidak akan langsung melihat data apa pun. Tunggu beberapa menit, lalu muat ulang tab konsol.
Membuat jadwal instance VM untuk instance Vertex AI Workbench
Karena instance Vertex AI Workbench merupakan instance VM Compute Engine, Anda dapat menggunakan Compute Engine API untuk membuat jadwal instance VM untuk instance tersebut.
Gunakan jadwal instance VM untuk memulai dan menghentikan instance Vertex AI Workbench Anda. Selama jam-jam ketika instance dihentikan, Anda hanya perlu membayar biaya Cloud Storage.
Anda dapat menyertakan jadwal instance ke instance VM apa pun yang berada di region yang sama, sehingga Anda dapat menggunakan jadwal instance yang sama untuk mengontrol semua instance Vertex AI Workbench di region tersebut.
Untuk mempelajari jadwal instance VM lebih lanjut, lihat Menjadwalkan instance VM untuk dimulai dan dihentikan.
Membuat peran IAM khusus
Sebagai praktik terbaik keamanan, sebaiknya buat peran IAM kustom yang hanya memiliki izin berikut dan tetapkan ke akun layanan default Compute Engine:
compute.instances.start
compute.instances.stop
Di dalam Cloud Shell, buat peran khusus bernama
Vm_Scheduler
dan sertakan izin yang diperlukan:gcloud iam roles create Vm_Scheduler \ --project=$projectid \ --title=vm-scheduler-notebooks \ --permissions="compute.instances.start,compute.instances.stop" --stage=ga
Jelaskan peran khusus:
gcloud iam roles describe Vm_Scheduler \ --project=$projectid
Menetapkan peran ke akun layanan default Compute Engine
Untuk memberi akun layanan default Compute Engine izin agar dapat memulai dan menghentikan instance Vertex AI Workbench, Anda perlu menetapkan peran khusus Vm_Scheduler
ke dalamnya.
Akun layanan default Compute Engine untuk project Anda memiliki alamat email berikut: PROJECT_NUMBER-compute@developer.gserviceaccount.com
, dengan PROJECT_NUMBER
sebagai nomor project Anda.
Identifikasi nomor project Anda dan simpan di variabel shell
project_number
:project_number=$(gcloud projects describe $projectid --format 'get(projectNumber)') echo $project_number
Tetapkan peran khusus ke akun layanan default:
gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:service-$project_number@compute-system.iam.gserviceaccount.com" \ --role="projects/$projectid/roles/Vm_Scheduler"
Buat dan lampirkan jadwal
Untuk membuat jadwal instance yang memulai instance Vertex AI Workbench pada pukul 07.00 dan menghentikannya pada pukul 18.00:
Buat jadwal mulai dan berhenti yang bernama
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_ZONE
Ganti TIME_ZONE dengan zona waktu IANA berbasis lokasi untuk jadwal instance ini, misalnya,
America/Chicago
. Jika dihilangkan, nilai defaultUTC
akan digunakan. Untuk mengetahui informasi selengkapnya, lihat zona waktu.Identifikasi nama instance Vertex AI Workbench Anda dengan menjalankan perintah berikut dan mencatat nilai
NAME
yang ditampilkan:gcloud compute instances list
Simpan nama dalam variabel shell
notebook_vm
:notebook_vm=NOTEBOOK_VM_NAME echo $notebook_vm
Ganti NOTEBOOK_VM_NAME dengan nama instance Vertex AI Workbench Anda.
Lampirkan jadwal instance ke instance Vertex AI Workbench:
gcloud compute instances add-resource-policies $notebook_vm \ --resource-policies=optimize-notebooks \ --zone=us-central1-a
Jelaskan jadwal instance:
gcloud compute resource-policies describe optimize-notebooks \ --region=us-central1
Anda dapat memastikan bahwa jadwal instance berjalan dengan baik dengan memeriksa log audit untuk kebijakan resource jadwal instance dan instance VM yang terpasang. Untuk setiap operasi, Anda mungkin harus menunggu hingga 15 menit setelah waktu yang dijadwalkan.
Pembersihan
Agar tidak dikenai biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.Anda dapat menghapus setiap resource dalam project dengan cara berikut dengan menjalankan perintah berikut di Cloud Shell:
Hapus jadwal dari instance:
gcloud compute instances remove-resource-policies $notebook_vm \ --resource-policies=optimize-notebooks \ --zone=us-central1-a --quiet
Hapus jadwal instance:
gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet
Hapus peran
Vm_Scheduler
:gcloud iam roles delete Vm_Scheduler --project=$projectid
Hapus instance Vertex AI Workbench:
gcloud workbench instances delete $notebook_vm \ --location=us-central1-a \ --quiet
Hapus akun layanan:
gcloud iam service-accounts delete workbench-sa@$projectid.iam.gserviceaccount.com --quiet
Hapus bucket Cloud Storage:
gcloud storage rm -r gs://BUCKET_NAME
Hapus gateway Cloud NAT regional:
gcloud compute routers nats delete cloud-nat-us-central1 \ --region=us-central1 \ --router=cloud-router-us-central1 \ --quiet
Hapus Cloud Router regional:
gcloud compute routers delete cloud-router-us-central1 \ --region=us-central1 \ --quiet
Hapus subnet VPC:
gcloud compute networks subnets delete securevertex-subnet-a \ --region=us-central1 \ --quiet
Hapus jaringan VPC:
gcloud compute networks delete securevertex-vpc --quiet