GSP499
Ringkasan
Di lab ini, Anda akan membangun aplikasi web sederhana dengan Cloud Run, lalu mempelajari berbagai cara dalam menggunakan Identity-Aware Proxy (IAP) untuk membatasi akses ke aplikasi dan menyediakan informasi identitas pengguna ke aplikasi tersebut. Aplikasi Anda akan:
- Menampilkan halaman sambutan.
- Mengakses informasi identitas pengguna yang disediakan oleh IAP.
- Menggunakan verifikasi kriptografi untuk mencegah spoofing informasi identitas pengguna.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Menulis dan men-deploy layanan Cloud Run sederhana menggunakan Python.
- Mengaktifkan dan menonaktifkan IAP untuk membatasi akses ke aplikasi Anda.
- Mendapatkan informasi identitas pengguna dari IAP ke aplikasi Anda.
- Memverifikasi informasi dari IAP secara kriptografis untuk berlindung dari spoofing.
Prasyarat
Pengetahuan dasar terkait bahasa pemrograman Python akan meningkatkan pengalaman belajar Anda.
Lab ini berfokus pada Cloud Run dan IAP. Konsep dan blok kode yang tidak relevan akan dibahas sekilas dan disediakan, jadi Anda cukup menyalin dan menempelkannya.
Pengantar Identity-Aware Proxy
Mengautentikasi pengguna aplikasi web sering kali diperlukan, dan biasanya memerlukan pemrograman khusus di aplikasi Anda. Untuk aplikasi Google Cloud, Anda dapat menyerahkan tugas tersebut pada layanan Identity-Aware Proxy. Jika Anda hanya perlu membatasi akses ke pengguna tertentu, perubahan pada aplikasi tidak diperlukan. Jika aplikasi perlu mengetahui identitas pengguna (seperti untuk menyimpan preferensi pengguna di sisi server), Identity-Aware Proxy dapat menyediakannya dengan sedikit kode aplikasi.
Apa yang dimaksud dengan Identity-Aware Proxy?
Identity-Aware Proxy (IAP) adalah layanan Google Cloud yang menangkap permintaan web yang dikirim ke aplikasi Anda, mengautentikasi pengguna yang membuat permintaan tersebut menggunakan Google Identity Service, dan hanya mengizinkan permintaan tersebut jika berasal dari pengguna yang diberi otorisasi. Selain itu, layanan ini dapat mengubah header permintaan untuk menyertakan informasi tentang pengguna yang diautentikasi.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Konsol Google Cloud
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kanan terdapat panel Lab setup and access yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Kredensial sementara (nama pengguna dan sandi) yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
Perhatikan bahwa timer lab terletak di dekat bagian atas halaman, yang menampilkan waktu yang tersisa.
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab setup and access.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab setup and access.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Penggunaan akun Google Cloud sendiri untuk lab ini mungkin dikenai biaya tambahan.
-
Klik untuk melanjutkan ke halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan daftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Mendownload kode
Klik bidang command line di Cloud Shell untuk mengetikkan perintah.
Download kode dari bucket penyimpanan publik lalu ubah ke folder kode:
gcloud storage cp gs://{{{project_0.project_id}}}-bucket/user-authentication-with-iap.zip .
unzip user-authentication-with-iap.zip
cd user-authentication-with-iap
Folder ini berisi satu subfolder untuk tiap langkah di lab ini. Anda akan mengubahnya ke folder yang benar di tiap langkahnya.
Tugas 1. Men-deploy aplikasi dan melindunginya dengan IAP
Ini adalah layanan Cloud Run yang ditulis dalam bahasa Python dan hanya menampilkan halaman sambutan “Halo, Dunia”. Kita akan men-deploy dan mengujinya, lalu membatasi aksesnya menggunakan IAP.
Meninjau kode aplikasi
- Ubah dari folder project utama ke subfolder
1-HelloWorld yang berisi kode untuk langkah ini.
cd 1-HelloWorld
Kode aplikasi berada di file main.py. Kode ini menggunakan framework web Flask untuk merespons permintaan web dengan konten template. File template tersebut berada di templates/index.html, dan hanya berisi HTML biasa untuk langkah ini. File template kedua berisi contoh kerangka kebijakan privasi di templates/privacy.html.
Ada satu file lainnya: requirements.txt berisi daftar semua library Python non-default yang digunakan oleh aplikasi.
Anda dapat mencantumkan tiap file dalam shell menggunakan perintah cat, seperti berikut:
cat main.py
Atau, Anda dapat membuka editor kode Cloud Shell dengan mengklik ikon (Pensil) Open Editor di toolbar Cloud Shell, dan memeriksa kode tersebut.
Anda tidak perlu mengubah file apa pun untuk langkah ini.
Men-deploy ke Cloud Run
- Deploy aplikasi ke Cloud Run:
gcloud run deploy user-auth-lab --source . --allow-unauthenticated --region={{{ project_0.default_region | "REGION" }}}
- Jika diminta untuk mengaktifkan API, tekan Y untuk ya. Jika diminta untuk membuat repositori Artifact Registry untuk melanjutkan, tekan Y untuk ya.
Dalam hitungan menit, deployment akan selesai. Anda akan melihat pesan dengan URL Layanan.
- Buka URL Layanan yang ditampilkan di tab browser baru untuk melihat halaman web. Akses belum dibatasi.

Klik Periksa progres saya untuk memverifikasi tujuan.
Men-deploy layanan Cloud Run
Membatasi akses dengan IAP
-
Di Konsol Google Cloud, pada Navigation menu (
), klik Security > Identity-Aware Proxy.
-
Klik Enable API.
-
Klik Go to Identity Aware Proxy.
-
Klik tombol di kolom IAP di samping user-auth-lab untuk mengaktifkan IAP.
-
Klik Turn On untuk mengonfirmasi.
Menguji apakah IAP telah diaktifkan atau belum
-
Buka tab browser baru, lalu buka URL aplikasi Anda. Halaman Login dengan Google akan terbuka.
-
Login dengan kredensial akun siswa yang Anda gunakan untuk login ke konsol.
Tampilan layar yang menolak upaya akses tersebut akan muncul.
Anda berhasil melindungi aplikasi dengan IAP, tetapi belum melakukan otorisasi akun pengguna mana pun.
-
Kembali ke halaman Identity-Aware Proxy di konsol.
-
Pilih kotak centang di samping layanan Cloud Run user-auth-lab untuk membuka sidebar detail di sebelah kanan.
-
Klik Add Principal.
-
Untuk New principals, masukkan alamat email siswa Anda.
-
Untuk Select a role, pilih Cloud IAP > IAP-Secured Web App User.
-
Klik Save.
Pesan "Policy Updated" muncul di bagian bawah halaman.
-
Kembali ke aplikasi dan muat ulang halaman. Karena sudah login dengan akun yang diizinkan, Anda sekarang akan melihat aplikasi web Anda.
Catatan:
Perlu waktu satu menit hingga perubahan peran diterapkan. Jika halaman masih menampilkan pesan "You don't have access", tunggu sebentar dan coba muat ulang halaman.
Klik Periksa progres saya untuk memverifikasi tujuan.
Mengaktifkan dan menambahkan kebijakan ke IAP
Jika Anda masih melihat halaman penolakan akses, hapus cookie login IAP:
- Tambahkan
/_gcp_iap/clear_login_cookie ke akhir URL layanan Anda (misalnya, https://user-auth-lab-[random-hash].run.app/_gcp_iap/clear_login_cookie), lalu buka URL tersebut.
- Saat halaman Login dengan Google yang baru muncul, klik Gunakan akun lain, lalu masukkan kembali kredensial siswa Anda.
Tugas 2. Mengakses informasi identitas pengguna
Setelah dilindungi dengan IAP, aplikasi dapat menggunakan informasi identitas yang disediakan IAP dalam header permintaan web yang dilaluinya. Pada langkah ini, aplikasi akan mendapatkan alamat email pengguna yang login dan ID pengguna unik persisten yang ditetapkan Google Identity Service untuk pengguna tersebut. Data tersebut akan ditampilkan kepada pengguna di halaman sambutan.
- Di Cloud Shell, ubah ke folder untuk langkah ini:
cd ~/user-authentication-with-iap/2-HelloUser
Men-deploy ke Cloud Run
- Deploy aplikasi ke Cloud Run:
gcloud run deploy user-auth-lab --source . --region={{{ project_0.default_region | "REGION" }}}
- Jika diminta untuk melanjutkan, tekan Y untuk ya.
Dalam hitungan menit, deployment akan selesai. Sambil menunggu, Anda dapat memeriksa file aplikasi seperti yang dijelaskan di bawah.
Klik Periksa progres saya untuk memverifikasi tujuan.
Mengakses Informasi Identitas Pengguna
Memeriksa file aplikasi
- Lihat file aplikasi utama di Cloud Shell menggunakan perintah
cat:
cat main.py
- Lihat file template untuk melihat cara menampilkan data pengguna:
cat templates/index.html
Folder ini berisi kumpulan file yang sama seperti yang terlihat di aplikasi yang di-deploy sebelumnya, 1-HelloWorld, tetapi dua dari file tersebut telah diubah: main.py dan templates/index.html. Program telah diubah untuk mengambil informasi pengguna yang disediakan IAP dalam header permintaan, dan sekarang, template menampilkan data tersebut.
Ada dua baris di main.py yang mendapatkan data identitas yang disediakan IAP:
user_email = request.headers.get('X-Goog-Authenticated-User-Email')
user_id = request.headers.get('X-Goog-Authenticated-User-ID')
Header X-Goog-Authenticated-User- disediakan IAP. Nama-namanya tidak peka huruf besar/kecil, sehingga dapat dituliskan dalam huruf kecil atau huruf besar. Pernyataan render_template sekarang menyertakan nilai-nilai tersebut agar dapat ditampilkan:
page = render_template('index.html', email=user_email, id=user_id)
Template index.html dapat menampilkan nilai tersebut dengan mengurung nama menggunakan tanda kurung kurawal ganda:
Hello, {{ email }}! Your persistent ID is {{ id }}.
Seperti yang Anda lihat, data yang disediakan diawali dengan accounts.google.com, yang menunjukkan asal informasi tersebut. Aplikasi Anda dapat menghapus semuanya hingga dan termasuk tanda titik dua untuk mendapatkan nilai mentah jika diinginkan.
Menguji aplikasi yang diupdate
- Ambil URL untuk aplikasi Anda:
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Buka URL tersebut di tab browser baru.
- Muat ulang halaman jika diperlukan untuk melihat alamat email dan ID persisten Anda ditampilkan.
Menonaktifkan IAP
Apa yang terjadi pada aplikasi ini jika IAP dinonaktifkan atau diabaikan? Nonaktifkan IAP untuk mengetahuinya.
- Di jendela Konsol Cloud, pada Navigation menu, klik Security > Identity-Aware Proxy.
- Klik tombol pengalih IAP di samping layanan Cloud Run Anda (misalnya,
user-auth-lab) untuk menonaktifkan IAP.
- Klik Allow public access.
- Muat ulang halaman web aplikasi. Anda akan melihat halaman yang sama, tetapi tanpa informasi pengguna.
Karena aplikasi sekarang tidak terlindungi, pengguna dapat mengirim permintaan web yang terlihat telah melewati IAP. Misalnya, jalankan perintah curl berikut dari Cloud Shell (ganti <your-url-here> dengan URL aplikasi Anda):
curl -X GET YOUR_URL -H "X-Goog-Authenticated-User-Email: totally fake email"
Halaman web akan ditampilkan pada command line, yang menunjukkan email palsu:
<!doctype html>
<html>
<head>
<title>IAP Hello User</title>
</head>
<body>
<h1>Hello World</h1>
<p>
Hello, totally fake email! Your persistent ID is None.
</p>
<p>
This is step 2 of the User Authentication with IAP</em>
codelab.
</p>
</body>
</html>
Tidak ada cara bagi aplikasi untuk mengetahui apakah IAP telah dinonaktifkan atau diabaikan. Untuk kasus yang memiliki risiko potensial, Verifikasi Kriptografi bisa menjadi solusinya.
Tugas 3. Menggunakan verifikasi kriptografi
Jika ada risiko IAP dinonaktifkan atau diabaikan, aplikasi dapat memeriksa untuk memastikan informasi identitas yang diterimanya valid. Layanan ini menggunakan header permintaan web ketiga yang ditambahkan oleh IAP, yang disebut X-Goog-IAP-JWT-Assertion. Nilai header adalah objek yang ditandatangani secara kriptografis yang juga berisi data identitas pengguna. Aplikasi Anda dapat memverifikasi tanda tangan digital dan menggunakan data yang disediakan dalam objek ini untuk memastikan bahwa tanda tangan tersebut disediakan oleh IAP tanpa adanya perubahan.
Verifikasi tanda tangan digital memerlukan beberapa langkah tambahan, seperti mengambil set kunci publik Google yang terbaru. Perlu tidaknya langkah tambahan ini dapat ditentukan berdasarkan risikonya. Misalnya, seseorang mungkin dapat menonaktifkan atau mengabaikan IAP. Faktor penentu lainnya adalah sensitivitas aplikasi.
- Di Cloud Shell, ubah ke folder untuk langkah ini:
cd ~/user-authentication-with-iap/3-HelloVerifiedUser
Men-deploy ke Cloud Run
-
Temukan Client ID Signed Header JWT Audience untuk layanan Cloud Run yang diamankan IAP Anda:
-
Buka halaman Identity-Aware Proxy di Konsol Cloud.
-
Temukan user-auth-lab dalam daftar.
-
Catatan: Anda mungkin perlu men-scroll tabel resource ke kanan (menggunakan scrollbar horizontal di bagian bawah tabel) untuk menampilkan kolom Actions di sisi paling kanan.
-
Di bagian Actions, klik tombol tiga titik vertikal di samping resource, lalu pilih Get JWT audience code.
-
Dari modal yang muncul, salin dan tempel string Client ID yang ditampilkan ke editor teks, lalu pilih Ok.
-
Deploy aplikasi ke Cloud Run, dengan menetapkan variabel lingkungan IAP_AUDIENCE menggunakan nilai Client ID yang Anda salin:
gcloud run deploy user-auth-lab --source . --set-env-vars IAP_AUDIENCE="YOUR_CLIENT_ID" --region={{{ project_0.default_region | "REGION" }}}
- Jika diminta untuk melanjutkan, tekan Y untuk ya.
Dalam hitungan menit, deployment akan selesai. Sambil menunggu, Anda dapat memeriksa file aplikasi seperti yang dijelaskan di bawah.
Klik Periksa progres saya untuk memverifikasi tujuan.
Menggunakan Verifikasi Kriptografi
Memeriksa file aplikasi
- Lihat file helper autentikasi baru di Cloud Shell menggunakan perintah
cat:
cat auth.py
- Buka file aplikasi utama untuk melihat cara metode pengguna terverifikasi diintegrasikan:
cat main.py
Folder ini berisi kumpulan file yang sama seperti yang terlihat di 2-HelloUser, dengan dua file telah diubah dan satu file baru. File yang baru adalah auth.py, yang menyediakan metode bagi user() untuk mendapatkan dan memverifikasi informasi identitas yang ditandatangani secara kriptografis. File yang diubah adalah main.py dan templates/index.html, yang saat ini menggunakan hasil dari metode tersebut. Header yang belum diverifikasi seperti yang ditemukan dalam deployment terakhir juga ditampilkan sebagai perbandingan.
- Fungsi baru ini sebagian besar terdapat pada fungsi
user():
def user():
assertion = request.headers.get('X-Goog-IAP-JWT-Assertion')
if assertion is None:
return None, None
info = jwt.decode(
assertion,
keys(),
algorithms=['ES256'],
audience=audience()
)
return info['email'], info['sub']
assertion adalah data yang ditandatangani secara kriptografis yang tersedia dalam header permintaan yang ditentukan. Kode ini menggunakan library untuk memvalidasi dan mendekode data tersebut. Validasi menggunakan kunci publik yang disediakan oleh Google untuk memeriksa data yang ditandatanganinya, serta mengetahui audiens yang dituju oleh data tersebut (pada dasarnya, project Google Cloud yang sedang dilindungi). Fungsi bantuan keys() dan audience() mengumpulkan dan menampilkan nilai tersebut.
Objek yang ditandatangani memiliki dua buah data yang diperlukan: alamat email yang diverifikasi, dan nilai ID unik (disediakan di bagian sub, untuk pelanggan, kolom standar).
Langkah 3 telah selesai.
Menguji verifikasi kriptografi
Setelah deployment siap, Anda bisa mendapatkan URL untuk aplikasi Anda dengan:
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Buka URL tersebut di tab browser baru.
- Ingat, sebelumnya Anda telah menonaktifkan IAP, sehingga aplikasi tidak menyediakan data IAP. Pastikan Anda melihat halaman yang menampilkan None untuk email dan ID.
- Buka halaman Identity-Aware Proxy di konsol.
- Klik tombol pengalih IAP di samping layanan Cloud Run Anda untuk mengaktifkan IAP kembali.
- Klik Turn On untuk mengonfirmasi.
- Di Cloud Shell, jalankan perintah berikut untuk memberikan izin ke agen layanan IAP agar dapat memanggil layanan Cloud Run Anda:
gcloud run services add-iam-policy-binding user-auth-lab \
--member="serviceAccount:service-$(gcloud projects describe {{{project_0.project_id}}} --format='value(projectNumber)')@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker" \
--region={{{ project_0.default_region | "REGION" }}}
- Muat ulang halaman aplikasi. Pastikan bahwa email dan ID pengguna yang ditandatangani secara kriptografis kini ditampilkan dan diverifikasi dengan benar.
Perhatikan bahwa alamat email yang disediakan oleh metode terverifikasi tidak memiliki awalan accounts.google.com:.
Jika IAP dinonaktifkan atau diabaikan, data yang diverifikasi akan hilang, atau tidak valid, karena data tersebut tidak dapat memiliki tanda tangan yang valid kecuali jika dibuat oleh pemegang kunci pribadi Google.
Selamat!
Anda telah men-deploy layanan Cloud Run. Pertama, Anda membatasi akses ke aplikasi hanya ke pengguna yang Anda pilih. Kemudian Anda mengambil dan menampilkan identitas pengguna yang diizinkan IAP untuk mengakses aplikasi, dan memahami bagaimana informasi tersebut dapat di-spoofing jika IAP dinonaktifkan atau diabaikan. Terakhir, Anda memverifikasi pernyataan yang ditandatangani secara kriptografis pada identitas pengguna, yang tidak dapat di-spoofing.
Langkah berikutnya/Pelajari lebih lanjut
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 28 Mei 2026
Lab Terakhir Diuji pada 28 Mei 2026
Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.