Membuat instance Vertex AI Workbench yang aman di jaringan VPC


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.

Diagram arsitektur instance Vertex AI Workbench di jaringan VPC.

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. Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. 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.
  5. Buka Cloud Shell
  6. Di Cloud Shell, tetapkan project saat ini ke project ID Google Cloud Anda dan simpan project ID yang sama ke dalam variabel shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${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.
  7. 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
  8. 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.
  9. 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.

Membuat dan mengonfigurasi VPC mandiri

  1. Buat jaringan VPC bernama securevertex-vpc:

    gcloud compute networks create securevertex-vpc --subnet-mode=custom
    
  2. Buat subnet bernama securevertex-subnet-a, dengan rentang IPv4 utama 10.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.

  3. Buat Cloud Router regional bernama cloud-router-us-central1:

    gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1
    
  4. 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.

  1. 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.

  2. 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.

  1. Untuk membuat skrip, gunakan editor teks seperti vim atau nano untuk membuat file poststartup.sh. Anda harus menambahkan sudo di awal agar memiliki izin untuk menulis ke file, misalnya:

    sudo vim poststartup.sh
    
  2. 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
    
  3. Simpan file sebagai berikut:

    • Jika Anda menggunakan vim, tekan tombol Esc, lalu ketik :wq untuk menyimpan file dan keluar.
    • Jika Anda menggunakan nano, ketik Control+O dan tekan Enter untuk menyimpan file, lalu ketik Control+X untuk keluar.
  4. 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.

  1. Buat akun layanan kustom bernama workbench-sa:

    gcloud iam service-accounts create workbench-sa \
        --display-name="workbench-sa"
    
  2. 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"
    
  3. 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"
    
  4. 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.

  1. Di konsol Google Cloud, buka tab Instances di halaman Vertex AI Workbench.

    Buka Vertex AI Workbench

  2. Klik  Buat baru, lalu klik Opsi lanjutan.

    Halaman New instance akan terbuka.

  3. 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.
  4. Di bagian Lingkungan, berikan hal berikut, lalu klik Lanjutkan:

    • Skrip pasca-startup: Klik Jelajahi, klik  Lihat resource turunan di samping nama bucket, klik poststartup.sh, lalu klik Pilih.
  5. 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
  6. Di bagian Disk, pastikan Google-managed encryption key dipilih, lalu klik Lanjutkan:

  7. Di bagian Networking, berikan hal berikut, lalu klik Lanjutkan:

    • Networking: Pilih Network dalam project ini dan selesaikan langkah-langkah berikut:

      1. Pada kolom Network, pilih securevertex-vpc.

      2. Di kolom Subnetwork, pilih securevertex-subnet-a.

      3. 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.

      4. Centang kotak Izinkan akses proxy.

  8. 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:

      1. Pilih Satu pengguna.
      2. 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.
      3. 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.
      4. 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.
  9. 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
  10. 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.

  1. Di konsol Google Cloud, buka halaman Vertex AI Workbench.

    Buka Vertex AI Workbench

  2. 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.

  1. Di konsol Google Cloud, buka halaman Vertex AI Workbench.

    Buka Vertex AI Workbench

  2. Klik nama instance Vertex AI Workbench yang ingin Anda lihat metriknya.

  3. 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
  1. 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 
    
  2. 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.

  1. Identifikasi nomor project Anda dan simpan di variabel shell project_number:

    project_number=$(gcloud projects describe $projectid --format 'get(projectNumber)')
    echo $project_number
    
  2. 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:

  1. 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 default UTC akan digunakan. Untuk mengetahui informasi selengkapnya, lihat zona waktu.

  2. Identifikasi nama instance Vertex AI Workbench Anda dengan menjalankan perintah berikut dan mencatat nilai NAME yang ditampilkan:

    gcloud compute instances list
    
  3. 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.

  4. Lampirkan jadwal instance ke instance Vertex AI Workbench:

    gcloud compute instances add-resource-policies $notebook_vm \
        --resource-policies=optimize-notebooks \
        --zone=us-central1-a
    
  5. 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:

  1. Hapus jadwal dari instance:

    gcloud compute instances remove-resource-policies $notebook_vm \
        --resource-policies=optimize-notebooks \
        --zone=us-central1-a --quiet
    
  2. Hapus jadwal instance:

    gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet
    
  3. Hapus peran Vm_Scheduler:

    gcloud iam roles delete Vm_Scheduler --project=$projectid
    
  4. Hapus instance Vertex AI Workbench:

    gcloud workbench instances delete $notebook_vm \
        --location=us-central1-a \
        --quiet
    
  5. Hapus akun layanan:

    gcloud iam service-accounts delete workbench-sa@$projectid.iam.gserviceaccount.com --quiet 
    
  6. Hapus bucket Cloud Storage:

    gcloud storage rm -r gs://BUCKET_NAME
    
  7. Hapus gateway Cloud NAT regional:

    gcloud compute routers nats delete cloud-nat-us-central1 \
        --region=us-central1 \
        --router=cloud-router-us-central1 \
        --quiet
    
  8. Hapus Cloud Router regional:

    gcloud compute routers delete cloud-router-us-central1 \
        --region=us-central1 \
        --quiet
    
  9. Hapus subnet VPC:

    gcloud compute networks subnets delete securevertex-subnet-a \
        --region=us-central1 \
        --quiet 
    
  10. Hapus jaringan VPC:

    gcloud compute networks delete securevertex-vpc --quiet 
    

Langkah selanjutnya

- Pelajari instance Vertex AI Workbench. - Pelajari cara mengelola akses ke instance. - Pelajari cara menggunakan instance dalam perimeter layanan.