1. Ringkasan
Confidential Space menawarkan lingkungan yang aman untuk kolaborasi antara beberapa pihak. Codelab ini menunjukkan cara Ruang Rahasia dapat digunakan untuk melindungi kekayaan intelektual sensitif, seperti model machine learning.
Dalam codelab ini, Anda akan menggunakan Ruang Rahasia untuk memungkinkan satu perusahaan membagikan model machine learning eksklusifnya dengan aman kepada perusahaan lain yang ingin menggunakan model tersebut. Secara khusus, Perusahaan Primus memiliki model machine learning yang hanya akan dirilis ke workload yang berjalan di Confidential Space, sehingga Primus dapat mempertahankan kontrol penuh atas kekayaan intelektualnya. Perusahaan Secundus akan menjadi operator workload dan akan menjalankan workload machine learning di Confidential Space. Secundus akan memuat model ini dan menjalankan inferensi menggunakan data sampel yang dimiliki oleh Secundus.
Di sini, Primus adalah penulis workload yang menulis kode workload, dan kolaborator yang ingin melindungi kekayaan intelektualnya dari operator workload yang tidak tepercaya, Secundus. Secundus adalah operator workload dari workload machine learning.
Yang akan Anda pelajari
- Cara mengonfigurasi lingkungan tempat satu pihak dapat membagikan model ML eksklusifnya kepada pihak lain tanpa kehilangan kontrol atas kekayaan intelektualnya.
Yang Anda butuhkan
- Project Google Cloud Platform
- Pengetahuan dasar tentang Google Compute Engine ( codelab), Confidential VM, container, dan repositori jarak jauh
- Pengetahuan dasar tentang Akun Layanan, Workload Identity Federation, dan kondisi atribut.
Peran yang terlibat dalam penyiapan Confidential Space
Dalam codelab ini, Perusahaan Primus akan menjadi pemilik resource dan penulis beban kerja, yang akan bertanggung jawab atas hal berikut:
- Menyiapkan resource cloud yang diperlukan dengan model machine learning
- Menulis kode beban kerja
- Memublikasikan image workload
- Mengonfigurasi kebijakan Workload Identity Pool untuk melindungi model ML dari operator yang tidak tepercaya
Perusahaan Secundus akan menjadi operator, dan bertanggung jawab atas:
- Menyiapkan resource cloud yang diperlukan untuk menyimpan gambar contoh yang digunakan oleh beban kerja dan hasilnya
- Menjalankan beban kerja ML di Confidential Space menggunakan model yang disediakan oleh Primus
Cara kerja Ruang Rahasia
Saat Anda menjalankan workload di Confidential Space, proses berikut akan terjadi, menggunakan resource yang dikonfigurasi:
- Workload meminta token akses Google umum untuk
$PRIMUS_SERVICEACCOUNT
dari Workload Identity Pool. Layanan ini menawarkan token layanan Attestation Verifier dengan klaim beban kerja dan lingkungan. - Jika klaim pengukuran beban kerja dalam token layanan Pengesah Pengesahan cocok dengan kondisi atribut dalam WIP, token tersebut akan menampilkan token akses untuk
$PRIMUS_SERVICEACCOUNT.
- Workload menggunakan token akses akun layanan yang terkait dengan
$PRIMUS_SERVICEACCOUNT
untuk mengakses model machine learning yang disimpan di bucket$PRIMUS_INPUT_STORAGE_BUCKET
. - Beban kerja melakukan operasi pada data yang dimiliki oleh Secundus dan beban kerja tersebut dioperasikan dan dijalankan oleh Secundus dalam project-nya.
- Workload menggunakan akun layanan
$WORKLOAD_SERVICEACCOUNT
untuk menulis hasil operasi tersebut ke bucket$SECUNDUS_RESULT_STORAGE_BUCKET
.
2. Menyiapkan Resource Cloud
Sebelum memulai
- Clone repositori ini menggunakan perintah di bawah untuk mendapatkan skrip yang diperlukan yang digunakan sebagai bagian dari codelab ini.
git clone https://github.com/GoogleCloudPlatform/confidential-space.git
- Ubah direktori untuk codelab ini.
cd confidential-space/codelabs/ml_model_protection/scripts
- Pastikan Anda telah menetapkan variabel lingkungan project yang diperlukan seperti yang ditunjukkan di bawah. Untuk informasi selengkapnya tentang cara menyiapkan project GCP, lihat codelab ini. Anda dapat membaca artikel ini untuk mendapatkan detail tentang cara mengambil project ID dan perbedaannya dengan nama project dan nomor project.
export PRIMUS_PROJECT_ID=<GCP project id of Primus>
export SECUNDUS_PROJECT_ID=<GCP project id of Secundus>
- Aktifkan Penagihan untuk project Anda.
- Aktifkan Confidential Computing API dan API berikut untuk kedua project.
gcloud services enable \
cloudapis.googleapis.com \
cloudresourcemanager.googleapis.com \
cloudshell.googleapis.com \
container.googleapis.com \
containerregistry.googleapis.com \
iam.googleapis.com \
confidentialcomputing.googleapis.com
- Tetapkan nilai ke variabel untuk nama resource yang ditentukan di atas menggunakan perintah berikut. Variabel ini memungkinkan Anda menyesuaikan nama resource sesuai kebutuhan dan juga menggunakan resource yang ada jika sudah dibuat. (misalnya
export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket'
)
- Anda dapat menetapkan variabel berikut dengan nama resource cloud yang ada di project Primus. Jika variabel ditetapkan, resource cloud yang ada dan sesuai dari project Primus akan digunakan. Jika variabel tidak ditetapkan, nama resource cloud akan dibuat dari project-name dan resource cloud baru akan dibuat dengan nama tersebut. Berikut adalah variabel yang didukung untuk nama resource:
| Bucket yang menyimpan model machine learning Primus. |
| Workload identity pool (WIP) Primus yang memvalidasi klaim. |
| Penyedia kumpulan workload identity Primus yang menyertakan kondisi otorisasi yang akan digunakan untuk token yang ditandatangani oleh layanan Attestation Verifier. |
| Akun layanan Primus yang digunakan |
| Repositori artefak tempat image Docker beban kerja akan dikirim. |
- Anda dapat menetapkan variabel berikut dengan nama resource cloud yang ada di project Secundus. Jika variabel ditetapkan, resource cloud yang ada dan sesuai dari project Secundus akan digunakan. Jika variabel tidak ditetapkan, nama resource cloud akan dibuat dari project-name dan resource cloud baru akan dibuat dengan nama tersebut. Berikut adalah variabel yang didukung untuk nama resource:
| Bucket yang menyimpan gambar contoh yang ingin diklasifikasikan oleh Secundus menggunakan model yang disediakan oleh Primus. |
| Bucket yang menyimpan hasil beban kerja. |
| Nama image container beban kerja. |
| Tag image container workload. |
| Akun layanan yang memiliki izin untuk mengakses Confidential VM yang menjalankan beban kerja. |
- Anda memerlukan izin tertentu untuk kedua project ini dan dapat membaca panduan ini tentang cara memberikan peran IAM menggunakan konsol GCP:
- Untuk
$PRIMUS_PROJECT_ID
, Anda memerlukan Storage Admin, Artifact Registry Administrator, Service Account Admin, IAM Workload Identity Pool Admin. - Untuk
$SECUNDUS_PROJECT_ID
, Anda memerlukan Compute Admin, Storage Admin, Service Account Admin, IAM Workload Identity Pool Admin, Security Admin (opsional). - Jalankan skrip berikut untuk menetapkan nama variabel yang tersisa ke nilai berdasarkan project ID Anda untuk nama resource.
source config_env.sh
Menyiapkan resource Perusahaan Primus
Sebagai bagian dari langkah ini, Anda akan menyiapkan resource cloud yang diperlukan untuk Primus. Jalankan skrip berikut untuk menyiapkan resource untuk Primus. Resource berikut akan dibuat sebagai bagian dari eksekusi skrip:
- Bucket Cloud Storage (
$PRIMUS_INPUT_STORAGE_BUCKET
) untuk menyimpan model machine learning Primus. - Workload identity pool (
$PRIMUS_WORKLOAD_IDENTITY_POOL
) untuk memvalidasi klaim berdasarkan kondisi atribut yang dikonfigurasi di bawah penyedianya. - Akun layanan (
$PRIMUS_SERVICEACCOUNT
) yang dilampirkan ke kumpulan identitas beban kerja ($PRIMUS_WORKLOAD_IDENTITY_POOL
) yang disebutkan di atas dengan akses IAM untuk membaca data dari bucket cloud storage (menggunakan peranobjectViewer
) dan untuk menghubungkan akun layanan ini ke kumpulan identitas beban kerja (menggunakan peranroles/iam.workloadIdentityUser
).
Sebagai bagian dari penyiapan resource cloud ini, kita akan menggunakan model TensorFlow. Kita dapat menyimpan seluruh model yang menyertakan arsitektur, bobot, dan konfigurasi pelatihan model dalam arsip ZIP. Untuk tujuan codelab ini, kita akan menggunakan model MobileNet V1 yang dilatih pada set data ImageNet yang dapat ditemukan di sini.
./setup_primus_company_resources.sh
Skrip yang disebutkan di atas akan menyiapkan resource cloud. Sekarang, kita akan mendownload dan memublikasikan model ke bucket Cloud Storage yang dibuat oleh skrip.
- Download model terlatih dari sini.
- Setelah didownload, ganti nama file tar yang didownload menjadi model.tar.gz.
- Publikasikan file model.tar.gz ke bucket Cloud Storage menggunakan perintah berikut dari direktori yang berisi file model.tar.gz.
gsutil cp model.tar.gz gs://${PRIMUS_INPUT_STORAGE_BUCKET}/
Menyiapkan resource Perusahaan Secundus
Sebagai bagian dari langkah ini, Anda akan menyiapkan resource cloud yang diperlukan untuk Secundus. Jalankan skrip berikut untuk menyiapkan resource untuk Secundus. Sebagai bagian dari langkah-langkah ini, resource berikut akan dibuat:
- Bucket Cloud Storage (
$SECUNDUS_INPUT_STORAGE_BUCKET
) untuk menyimpan gambar sampel guna menjalankan inferensi oleh Secundus. - Bucket Cloud Storage (
$SECUNDUS_RESULT_STORAGE_BUCKET
) untuk menyimpan hasil eksekusi beban kerja ML oleh Secundus.
Beberapa contoh gambar tersedia di sini untuk codelab ini.
./setup_secundus_company_resources.sh
3. Membuat Beban Kerja
Membuat akun layanan workload
Sekarang, Anda akan membuat akun layanan untuk beban kerja dengan peran dan izin yang diperlukan. Jalankan skrip berikut untuk membuat akun layanan beban kerja di project Secundus. Akun layanan ini akan digunakan oleh VM yang menjalankan beban kerja ML.
Akun layanan beban kerja ini ($WORKLOAD_SERVICEACCOUNT
) akan memiliki peran berikut:
confidentialcomputing.workloadUser
untuk mendapatkan token pengesahanlogging.logWriter
untuk menulis log ke Cloud Logging.objectViewer
untuk membaca data dari bucket penyimpanan cloud$SECUNDUS_INPUT_STORAGE_BUCKET
.objectUser
untuk menulis hasil beban kerja ke bucket cloud storage$SECUNDUS_RESULT_STORAGE_BUCKET
.
./create_workload_service_account.sh
Membuat beban kerja
Sebagai bagian dari langkah ini, Anda akan membuat image Docker workload. Beban kerja akan ditulis oleh Primus. Beban kerja yang digunakan dalam codelab ini adalah kode Python machine learning yang mengakses model ML yang disimpan di bucket penyimpanan Primus dan menjalankan inferensi dengan gambar contoh yang disimpan di bucket penyimpanan.
Model machine learning yang disimpan di bucket penyimpanan Primus hanya dapat diakses oleh workload yang memenuhi kondisi atribut yang diperlukan. Kondisi atribut ini dijelaskan secara lebih mendetail di bagian berikutnya tentang cara memberikan otorisasi pada beban kerja.
Berikut adalah metode run_inference() dari beban kerja yang akan dibuat dan digunakan dalam codelab ini. Anda dapat menemukan seluruh kode beban kerja di sini.
def run_inference(image_path, model):
try:
# Read and preprocess the image
image = tf.image.decode_image(tf.io.read_file(image_path), channels=3)
image = tf.image.resize(image, (128, 128))
image = tf.image.convert_image_dtype(image, tf.float32)
image = tf.expand_dims(image, axis=0)
# Get predictions from the model
predictions = model(image)
predicted_class = np.argmax(predictions)
top_k = 5
top_indices = np.argsort(predictions[0])[-top_k:][::-1]
# Convert top_indices to a TensorFlow tensor
top_indices_tensor = tf.convert_to_tensor(top_indices, dtype=tf.int32)
# Use TensorFlow tensor for indexing
top_scores = tf.gather(predictions[0], top_indices_tensor)
return {
"predicted_class": int(predicted_class),
"top_k_predictions": [
{"class_index": int(idx), "score": float(score)}
for idx, score in zip(top_indices, top_scores)
],
}
except Exception as e:
return {"error": str(e)}
Jalankan skrip berikut untuk membuat workload tempat langkah-langkah berikut dilakukan:
- Buat Artifact Registry(
$PRIMUS_ARTIFACT_REGISTRY
) yang dimiliki oleh Primus. - Perbarui kode beban kerja dengan nama resource yang diperlukan.
- Build beban kerja ML dan buat Dockerfile untuk mem-build image Docker dari kode beban kerja. Di sini adalah Dockerfile yang digunakan untuk codelab ini.
- Build dan publikasikan image Docker ke Artifact Registry (
$PRIMUS_ARTIFACT_REGISTRY
) yang dimiliki oleh Primus. - Berikan izin baca
$WORKLOAD_SERVICEACCOUNT
untuk$PRIMUS_ARTIFACT_REGISTRY
. Hal ini diperlukan agar penampung beban kerja dapat mengambil image docker beban kerja dari Artifact Registry.
./create_workload.sh
Selain itu, beban kerja dapat dienkode untuk memastikan bahwa beban kerja memuat versi model machine learning yang diharapkan dengan memeriksa hash atau tanda tangan model sebelum menggunakannya. Keuntungan dari pemeriksaan tambahan tersebut adalah memastikan integritas model machine learning. Dengan demikian, operator beban kerja juga harus memperbarui image beban kerja atau parameternya saat beban kerja diperkirakan akan menggunakan versi model ML yang berbeda.
4. Memberi Otorisasi dan Menjalankan Workload
Memberi Otorisasi pada Beban Kerja
Primus ingin memberikan otorisasi pada workload untuk mengakses model machine learning-nya berdasarkan atribut resource berikut:
- Apa: Kode yang diverifikasi
- Di mana: Lingkungan yang aman
- Who: Operator yang tepercaya
Primus menggunakan Workload identity federation untuk menerapkan kebijakan akses berdasarkan persyaratan ini. Workload identity federation memungkinkan Anda menentukan kondisi atribut. Kondisi ini membatasi identitas yang dapat melakukan autentikasi dengan workload identity pool (WIP). Anda dapat menambahkan Layanan Pengverifikasi Pengesahan ke WIP sebagai penyedia workload identity pool untuk menampilkan pengukuran dan menerapkan kebijakan.
Workload identity pool telah dibuat sebelumnya sebagai bagian dari langkah penyiapan resource cloud. Sekarang Primus akan membuat penyedia workload identity pool OIDC baru. --attribute-condition
yang ditentukan memberikan otorisasi akses ke penampung beban kerja. Hal ini memerlukan:
- Apa:
$WORKLOAD_IMAGE_NAME
terbaru yang diupload ke repositori$PRIMUS_ARTIFACT_REPOSITORY
. - Di mana: Trusted execution environment Confidential Space berjalan di image VM Confidential Space yang sepenuhnya didukung.
- Siapa: Akun layanan
$WORKLOAD_SERVICE_ACCOUNT
Secundus.
export WORKLOAD_IMAGE_DIGEST=$(gcloud artifacts docker images describe ${PRIMUS_PROJECT_REPOSITORY_REGION}-docker.pkg.dev/$PRIMUS_PROJECT_ID/$PRIMUS_ARTIFACT_REPOSITORY/$WORKLOAD_IMAGE_NAME:$WORKLOAD_IMAGE_TAG --format="value(image_summary.digest)" --project ${PRIMUS_PROJECT_ID})
gcloud config set project $PRIMUS_PROJECT_ID
gcloud iam workload-identity-pools providers create-oidc $PRIMUS_WIP_PROVIDER \
--location="global" \
--workload-identity-pool="$PRIMUS_WORKLOAD_IDENTITY_POOL" \
--issuer-uri="https://confidentialcomputing.googleapis.com/" \
--allowed-audiences="https://sts.googleapis.com" \
--attribute-mapping="google.subject='assertion.sub'" \
--attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' &&
'STABLE' in assertion.submods.confidential_space.support_attributes &&
assertion.submods.container.image_digest == '${WORKLOAD_IMAGE_DIGEST}' &&
assertion.submods.container.image_reference == '${PRIMUS_PROJECT_REPOSITORY_REGION}-docker.pkg.dev/$PRIMUS_PROJECT_ID/$PRIMUS_ARTIFACT_REPOSITORY/$WORKLOAD_IMAGE_NAME:$WORKLOAD_IMAGE_TAG' &&
'$WORKLOAD_SERVICEACCOUNT@$SECUNDUS_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts"
Menjalankan Beban Kerja
Sebagai bagian dari langkah ini, kita akan menjalankan beban kerja di Confidential Space VM. Argumen TEE yang diperlukan diteruskan menggunakan flag metadata. Argumen untuk penampung beban kerja diteruskan menggunakan bagian "tee-cmd
" dari flag. Hasil eksekusi beban kerja akan dipublikasikan ke $SECUNDUS_RESULT_STORAGE_BUCKET
.
gcloud compute instances create ${WORKLOAD_VM} \
--confidential-compute-type=SEV \
--shielded-secure-boot \
--project=${SECUNDUS_PROJECT_ID} \
--maintenance-policy=MIGRATE \
--scopes=cloud-platform --zone=${SECUNDUS_PROJECT_ZONE} \
--image-project=confidential-space-images \
--image-family=confidential-space \
--service-account=${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com \
--metadata ^~^tee-image-reference=${PRIMUS_PROJECT_REPOSITORY_REGION}-docker.pkg.dev/${PRIMUS_PROJECT_ID}/${PRIMUS_ARTIFACT_REPOSITORY}/${WORKLOAD_IMAGE_NAME}:${WORKLOAD_IMAGE_TAG}
Lihat hasil
Setelah beban kerja berhasil diselesaikan, hasil beban kerja ML akan dipublikasikan ke $SECUNDUS_RESULT_STORAGE_BUCKET
.
gsutil cat gs://$SECUNDUS_RESULT_STORAGE_BUCKET/result
Berikut beberapa contoh tampilan hasil inferensi pada gambar contoh:
Image: sample_image_1.jpeg, Response: {'predicted_class': 531, 'top_k_predictions': [{'class_index': 531, 'score': 12.08437442779541}, {'class_index': 812, 'score': 10.269512176513672}, {'class_index': 557, 'score': 9.202644348144531}, {'class_index': 782, 'score': 9.08737564086914}, {'class_index': 828, 'score': 8.912498474121094}]}
Image: sample_image_2.jpeg, Response: {'predicted_class': 905, 'top_k_predictions': [{'class_index': 905, 'score': 9.53619384765625}, {'class_index': 557, 'score': 7.928380966186523}, {'class_index': 783, 'score': 7.70129919052124}, {'class_index': 531, 'score': 7.611623287200928}, {'class_index': 906, 'score': 7.021416187286377}]}
Image: sample_image_3.jpeg, Response: {'predicted_class': 905, 'top_k_predictions': [{'class_index': 905, 'score': 6.09878396987915}, {'class_index': 447, 'score': 5.992854118347168}, {'class_index': 444, 'score': 5.9582319259643555}, {'class_index': 816, 'score': 5.502010345458984}, {'class_index': 796, 'score': 5.450454235076904}]}
Untuk setiap gambar contoh di bucket penyimpanan Secundus, Anda akan melihat entri dalam hasil. Entri ini akan menyertakan dua informasi utama:
- Indeks predicted_class: Ini adalah indeks numerik yang mewakili class yang diprediksi model untuk gambar.
- Top_k_predictions: Ini memberikan hingga k prediksi untuk gambar, yang diberi peringkat dari yang paling mungkin hingga yang paling tidak mungkin. Nilai k ditetapkan ke 5 dalam codelab ini, tetapi Anda dapat menyesuaikannya dalam kode beban kerja untuk mendapatkan lebih banyak atau lebih sedikit prediksi.
Untuk menerjemahkan indeks class menjadi nama class yang dapat dibaca manusia, lihat daftar label yang tersedia di sini. Misalnya, jika Anda melihat indeks class 2, indeks tersebut sesuai dengan label class "tench" dalam daftar label.
Dalam codelab ini, kami telah menunjukkan bahwa model yang dimiliki oleh Primus hanya dirilis ke beban kerja yang berjalan di TEE. Secundus menjalankan beban kerja ML di TEE dan beban kerja ini dapat menggunakan model yang dimiliki oleh Primus, sementara Primus mempertahankan kontrol penuh atas model tersebut.
Menjalankan Workload Tidak Sah
Secundus mengubah image workload dengan mengambil image workload yang berbeda dari repositori artefaknya sendiri yang tidak diotorisasi oleh Primus. Workload identity pool Primus hanya telah memberikan otorisasi pada ${PRIMUS_PROJECT_REPOSITORY_REGION}-docker.pkg.dev/$PRIMUS_PROJECT_ID/$PRIMUS_ARTIFACT_REPOSITORY/$WORKLOAD_IMAGE_NAME:$WORKLOAD_IMAGE_TAG
Image workload.
Menjalankan ulang workload
Saat Secundus mencoba menjalankan workload asli dengan image workload baru ini, operasi tersebut akan gagal. Untuk melihat error, hapus file hasil asli dan instance VM, lalu coba jalankan kembali workload.
Pastikan ada image docker baru yang dipublikasikan di artifact registry Secundus (sebagai us-docker.pkg.dev/${SECUNDUS_PROJECT_ID}/custom-image/${WORKLOAD_IMAGE_NAME}:${WORKLOAD_IMAGE_TAG}
) dan akun layanan workload ($WORKLOAD_SERVICEACCOUNT
) telah memberikan izin pembaca artifact registry untuk membaca image workload baru ini. Hal ini untuk memastikan bahwa workload tidak keluar sebelum kebijakan WIP Primus menolak token yang ditampilkan oleh workload.
Menghapus file hasil dan instance VM yang ada
- Tetapkan project ke project
$SECUNDUS_PROJECT_ID
.
gcloud config set project $SECUNDUS_PROJECT_ID
- Hapus file hasil.
gsutil rm gs://$SECUNDUS_RESULT_STORAGE_BUCKET/result
- Hapus instance Confidential VM.
gcloud compute instances delete ${WORKLOAD_VM} --zone=${SECUNDUS_PROJECT_ZONE}
Jalankan workload yang tidak sah:
gcloud compute instances create ${WORKLOAD_VM} \
--confidential-compute-type=SEV \
--shielded-secure-boot \
--maintenance-policy=MIGRATE \
--scopes=cloud-platform --zone=${SECUNDUS_PROJECT_ZONE} \
--image-project=confidential-space-images \
--image-family=confidential-space \
--service-account=${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com \
--metadata ^~^tee-image-reference=us-docker.pkg.dev/${SECUNDUS_PROJECT_ID}/custom-image/${WORKLOAD_IMAGE_NAME}:${WORKLOAD_IMAGE_TAG}
Lihat error
Anda akan melihat error (The given credential is rejected by the attribute condition
) alih-alih hasil beban kerja.
gsutil cat gs://$SECUNDUS_RESULT_STORAGE_BUCKET/result
5. Pembersihan
Berikut adalah skrip yang dapat digunakan untuk membersihkan resource yang telah kita buat sebagai bagian dari codelab ini. Sebagai bagian dari pembersihan ini, resource berikut akan dihapus:
- Masukkan bucket penyimpanan Primus (
$PRIMUS_INPUT_STORAGE_BUCKET)
. - Akun layanan Primus (
$PRIMUS_SERVICEACCOUNT
). - Repositori artefak Primus (
$PRIMUS_ARTIFACT_REPOSITORY
). - Workload identity pool Primus (
$PRIMUS_WORKLOAD_IDENTITY_POOL
). - Akun layanan workload Secundus (
$WORKLOAD_SERVICEACCOUNT
). - Bucket penyimpanan input Secundus (
$SECUNDUS_INPUT_STORAGE_BUCKET)
. - Instance Compute Workload.
- Bucket penyimpanan hasil Secundus (
$SECUNDUS_RESULT_STORAGE_BUCKET
).
$ ./cleanup.sh
Jika Anda sudah selesai menjelajahi, pertimbangkan untuk menghapus project Anda.
- Buka Cloud Platform Console
- Pilih project yang ingin dinonaktifkan, lalu klik 'Hapus' di bagian atas: tindakan ini akan menjadwalkan penghapusan project
Apa selanjutnya?
Lihat beberapa codelab serupa ini...