Tutorial ini ditujukan bagi data scientist, peneliti, dan administrator jaringan perusahaan. Contoh ini menunjukkan cara mengamankan instance notebook yang dikelola pengguna 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 notebook yang dikelola pengguna 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 notebook yang dikelola pengguna yang baru dibuat.
- Gunakan Cloud Monitoring untuk memantau instance notebook yang dikelola pengguna.
- 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.
- Membuat instance notebook yang dikelola pengguna 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 menggunakan komponen Google Cloud yang 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
-
Di konsol Google Cloud, buka halaman Pemilih project.
-
Pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
- 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}
-
Aktifkan API IAM, Compute Engine, Notebooks, Cloud Storage, and Vertex AI:
gcloud services enable iam.googleapis.com
compute.googleapis.com notebooks.googleapis.com storage.googleapis.com aiplatform.googleapis.com -
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/compute.networkAdmin, roles/compute.securityAdmin, roles/compute.instanceAdmin, 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:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
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
Jika diinginkan, 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
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
Ganti BUCKET_NAME dengan nama bucket.
Membuat dan mengupload skrip pasca-startup
Untuk membuat skrip, gunakan editor teks seperti
vi
ataunano
untuk membuat file bernamapoststartup.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.
Upload file ke bucket Cloud Storage Anda:
gcloud storage cp poststartup.sh gs://$BUCKET_NAME
Membuat akun layanan kustom
Saat membuat instance notebook yang dikelola pengguna, sebaiknya Anda menghapus centang pada kotak Gunakan akun layanan default Compute Engine dan tentukan akun layanan kustom. Akun layanan default Compute Engine (dan dengan demikian siapa pun yang Anda tetapkan sebagai pengguna instance) diberi peran Editor (roles/editor
) pada project Anda. Anda dapat menonaktifkan perilaku ini
dengan menonaktifkan pemberian peran otomatis untuk akun
layanan default.
Buat akun layanan kustom bernama
user-managed-notebook-sa
:gcloud iam service-accounts create user-managed-notebook-sa \ --display-name="user-managed-notebook-sa"
Tetapkan peran IAM Storage Object Viewer ke akun layanan:
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.objectViewer"
Tetapkan peran Vertex AI User IAM ke akun layanan:
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
Membuat instance notebook yang dikelola pengguna
Di konsol Google Cloud, buka halaman Notebook yang dikelola pengguna.
Klik
Buat baru, lalu pilih Opsi Lanjutan.Halaman Buat instance akan terbuka.
Di halaman Buat instance, di bagian Detail, berikan informasi berikut untuk instance baru Anda, lalu klik Lanjutkan .
- 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 dua kali
file
poststartup.sh
, klik sekali lagi, lalu klik Pilih.
- Skrip pasca-startup: Klik Jelajahi, klik dua kali
file
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 Kunci enkripsi yang dikelola Google 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) diberi peran Editor (
roles/editor
) pada project Anda. Di kolom Email akun layanan, masukkan
user-managed-notebook-sa@$projectid.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 notebook yang dikelola pengguna.
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 repo 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.
Opsional: Memberikan peran Service Account User kepada pengguna instance
Jika Anda membuat instance notebook yang dikelola pengguna
untuk pengguna lain, Anda harus memberi mereka
peran Service Account User
(roles/iam.serviceAccountUser
) di akun layanan khusus user-managed-notebook-sa
sebagai berikut:
gcloud iam service-accounts add-iam-policy-binding \ user-managed-notebook-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
Pastikan bahwa instance notebook yang dikelola pengguna telah dibuat
Vertex AI Workbench membuat instance notebook yang dikelola pengguna berdasarkan properti yang Anda tentukan dan otomatis memulai instance.
Saat instance siap digunakan, Vertex AI Workbench akan mengaktifkan link Buka JupyterLab. Link ini hanya dapat diakses oleh satu pengguna yang Anda tentukan pada saat pembuatan instance.
Buka instance di JupyterLab dan verifikasi bahwa ada repo GitHub Google Cloud Generative AI yang di-clone.
Di konsol Google Cloud, buka halaman Notebook yang dikelola pengguna.
Pada daftar instance notebook yang dikelola pengguna, klik link Buka JupyterLab untuk instance yang Anda buat.
Dalam daftar folder, Anda akan melihat folder
generative-ai
. Folder ini berisi repo GitHub yang telah di-clone.
Memantau status respons melalui Monitoring
Anda dapat memantau metrik sistem dan aplikasi untuk instance notebook yang dikelola pengguna menggunakan konsol Google Cloud. Untuk mempelajari lebih lanjut pemantauan instance dan cara membuat metrik kustom, lihat Memantau status kondisi.
Di konsol Google Cloud, buka halaman Notebook yang dikelola pengguna.
Klik nama instance notebook yang dikelola pengguna yang ingin Anda lihat metriknya.
Di halaman Detail notebook, 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 notebook yang dikelola pengguna
Karena instance notebook yang dikelola pengguna 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 notebook yang dikelola pengguna. 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 notebook yang dikelola pengguna 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 notebook yang dikelola pengguna, 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:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"
Buat dan lampirkan jadwal
Untuk membuat jadwal instance yang memulai instance notebook yang dikelola pengguna 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 notebook yang dikelola pengguna 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 notebook yang dikelola pengguna.
Lampirkan jadwal instance ke instance notebook yang dikelola pengguna:
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 akun Google Cloud Anda tidak dikenai biaya 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:
Di konsol Google Cloud, buka halaman Notebook yang dikelola pengguna.
Pilih instance notebook yang dikelola pengguna.
Klik Delete.
Di Cloud Shell, hapus setiap resource yang tersisa dengan menjalankan perintah berikut.
gcloud compute routers delete cloud-router-us-central1 --region=us-central1 --quiet gcloud compute routers nats delete cloud-nat-us-central1 --region=us-central1 --router=cloud-router-us-central1 --quiet gcloud compute instances remove-resource-policies $notebook_vm \ --resource-policies=optimize-notebooks \ --zone=us-central1-a --quiet gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet gcloud compute instances delete $notebook_vm --zone=us-central1-a --quiet gcloud compute networks subnets delete securevertex-subnet-a --region=us-central1 --quiet gcloud iam service-accounts delete user-managed-notebook-sa@$projectid.iam.gserviceaccount.com --quiet gcloud projects remove-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler" gcloud iam roles delete Vm_Scheduler --project=$projectid gcloud compute networks delete securevertex-vpc --quiet
Langkah selanjutnya
- Menyelesaikan codelab Vertex AI membuat notebook yang dikelola pengguna yang aman.
- Pelajari cara menggunakan Kontrol Layanan VPC untuk menyiapkan instance notebook yang dikelola pengguna dalam perimeter layanan.
- Pelajari Praktik terbaik dan arsitektur referensi untuk desain VPC.
- Pelajari lebih lanjut cara Melindungi data rahasia di notebook Vertex AI Workbench yang dikelola pengguna.