GSP909

Ringkasan
Di lab ini, Anda akan menggunakan kebijakan perlindungan ancaman Apigee X untuk melindungi API dari ancaman berbasis konten. Anda juga menambahkan Cloud Armor ke load balancer HTTPS eksternal global untuk menyediakan fitur firewall aplikasi web seperti perlindungan dari distributed denial-of-service (DDoS), mitigasi risiko OWASP Top 10, dan kontrol akses berbasis IP dan geografis.
Load balancer dan grup instance terkelola VM jembatan telah dibuat untuk menyediakan akses ke instance runtime Anda. Arsitektur untuk konfigurasi tersebut ditampilkan di sini:

Panggilan API masuk memasuki project Pelanggan melalui load balancer HTTPS eksternal global. Load balancer HTTPS eksternal tidak dapat meneruskan panggilan ke project tenant. Sebaliknya, load balancer meneruskan permintaan ke grup instance terkelola VM jembatan di project pelanggan. VM jembatan ini berada di jaringan yang di-peering yang terhubung ke instance runtime Apigee, sehingga VM dapat meneruskan panggilan API ke instance runtime.
Setiap traffic HTTP yang dikirim ke load balancer akan diteruskan ke VM bridge, lalu ke instance runtime Apigee. Anda akan menambahkan kebijakan keamanan Cloud Armor untuk memblokir traffic tertentu agar tidak dikirim ke runtime.
Serangan JSON dan XML menggunakan payload yang dibuat untuk membebani parser JSON dan XML serta memicu serangan denial-of-service tingkat aplikasi. Cloud Armor tidak mendeteksi jenis serangan ini, tetapi Apigee dapat melakukannya. Kebijakan JSONThreatProtection dan XMLThreatProtection dapat mendeteksi payload berbahaya ini tanpa memuat payload ke dalam parser. Anda akan menggunakan kebijakan JSONThreatProtection untuk melindungi dari payload JSON yang salah format.
Petunjuk di lab ini berlaku untuk organisasi berbayar dan organisasi evaluasi.
Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Menggunakan kebijakan perlindungan ancaman Apigee untuk memblokir payload JSON dan XML berbahaya
- Membuat kebijakan Cloud Armor
- Membuat aturan Cloud Armor untuk memblokir dan mengizinkan permintaan
- Menerapkan kebijakan Cloud Armor ke load balancer
- Menguji kebijakan Cloud Armor menggunakan traffic HTTP
Penyiapan
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.
Catatan: Sebaiknya gunakan jendela Samaran baru untuk menyelesaikan lab ini.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
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 Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar 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.
Tugas 1. Membuat alur bersama untuk perlindungan ancaman JSON
Dalam tugas ini, Anda akan membuat alur bersama dengan kebijakan JSONThreatProtection, lalu menggunakan alur hook untuk mengaktifkannya bagi semua API Apigee.
Kebijakan JSONThreatProtection akan menolak permintaan JSON masuk yang melebihi batas yang ditentukan. Dengan menempatkan kebijakan di alur bersama, dan melampirkan alur bersama dengan alur hook, kebijakan tersebut dapat melindungi setiap permintaan untuk semua proxy yang di-deploy ke suatu lingkungan.
Membuka konsol Apigee
Untuk membuka konsol Apigee:
- Di Konsol Google Cloud, di kolom Search, masukkan
Apigee, lalu klik Apigee API Management di hasil penelusuran.
Konsol Apigee akan terbuka, dan halaman landing akan menampilkan link cepat ke lokasi yang biasa digunakan.
- Di Navigation menu (
), di samping Apigee, klik Favorite (
).
Apigee kini ditambahkan sebagai favorit ke Navigation menu.
Membuat alur bersama
-
Di menu navigasi, pilih Proxy development > Shared Flows.
-
Klik Create.
Alur bersama dapat berisi serangkaian kebijakan dan kondisi, serta dapat dijalankan di proxy API atau alur bersama lainnya dengan menggunakan kebijakan FlowCallout. Di lab ini, Anda akan menggunakan alur bersama dalam alur hook, yang melampirkannya ke setiap proxy yang di-deploy di organisasi evaluasi.
-
Beri nama alur bersama protect-json, lalu klik Create.
-
Klik tab Develop.
-
Di menu kiri untuk alur bersama, pada bagian Shared Flows, klik default.
-
Di panel sharedflows/default.xml, klik Add policy step (
).
-
Untuk Select policy, pilih Create new policy.
-
Pilih JSON Threat Protection, lalu tetapkan Display Name dan Name ke JTP-Protect.
-
Klik Add.
Kebijakan JSONThreatProtection berisi beberapa elemen yang memberikan batasan pada permintaan JSON yang masuk. Anda biasanya menetapkan batas ini berdasarkan nilai maksimum API Anda. Dalam hal ini, pertahankan konfigurasi default untuk kebijakan tersebut.
Kebijakan ini hanya akan dijalankan jika header Content-Type permintaan ditetapkan ke application/json, yang menunjukkan bahwa permintaan yang masuk memiliki payload JSON.
-
Klik Save.
-
Klik Deploy, dan untuk Environment, pilih eval.
-
Klik Deploy, lalu klik Confirm.
Melampirkan alur bersama ke alur hook
Alur bersama akan dilampirkan ke hook alur Pra-proxy sehingga alur tersebut dijalankan sebelum proxy dijalankan.
-
Buka Management > Environments
-
Klik eval > Flow Hooks.
-
Dari dropdown baris Pre-proxy, pilih alur bersama protect-json, lalu klik Save.
Anda akan menguji hook alur ini di tugas selanjutnya.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat alur bersama dan hook alur
Tugas 2. Menambahkan kebijakan keamanan Cloud Armor
Dalam tugas ini, Anda akan menambahkan kebijakan keamanan Cloud Armor untuk melindungi load balancer dan mengontrol akses ke API Anda.
Cloud Armor adalah firewall aplikasi web Google Cloud. Satu kebijakan Cloud Armor dapat ditetapkan untuk satu load balancer. Di lab ini, Anda akan menggunakan kebijakan keamanan Cloud Armor untuk menolak traffic tertentu sebelum mencapai instance runtime Apigee, sehingga melindungi API Anda.

Catatan: Load balancer tidak dapat dikonfigurasi sepenuhnya hingga alamat IP instance runtime Apigee diketahui, sehingga Anda mungkin melihat load balancer dengan instance tidak sehat hingga konfigurasi load balancer selesai.
Membuat kebijakan keamanan baru
-
Di tab Konsol Cloud, pada Navigation menu (
), klik View all Products, lalu pilih Network security di bagian Networking, lalu buka Cloud Armor policies.
-
Klik Create policy.
-
Untuk Name, tentukan protect-apis.
Kebijakan keamanan ini akan menggunakan aturan untuk memblokir traffic tertentu yang ditujukan untuk API Apigee kita.
-
Untuk Default rule action, pilih Deny.
Pengguna akan ditolak aksesnya ke API kecuali jika mereka cocok dengan aturan yang secara khusus mengizinkan traffic.
-
Untuk dropdown Deny status, pilih 403 (Forbidden).
Jika permintaan tidak cocok dengan aturan yang mengizinkan traffic, kode status 403 Forbidden akan ditampilkan kepada pengguna.
-
Klik Next Step.
Menambahkan aturan kebijakan keamanan untuk mengizinkan permintaan berdasarkan kode negara asal
Aturan ini hanya akan mengizinkan permintaan yang berasal dari negara tertentu.
-
Klik Add a Rule.
-
Klik Advanced mode.
Aturan mode Dasar hanya dapat menetapkan alamat IP atau rentang alamat IP yang cocok. Dalam hal ini, Anda ingin menetapkan kode negara yang diizinkan.
-
Untuk Match, tentukan ekspresi berikut:
origin.region_code == 'US'
Untuk Cloud Armor, region_code ditetapkan sebagai region ISO 3166-2. Aturan ini cocok dengan permintaan yang berasal dari Amerika Serikat.
-
Untuk Action, tentukan Allow.
-
Tetapkan Priority ke 1000, lalu klik SAVE CHANGE TO RULE.
Menambahkan aturan untuk memblokir serangan injeksi SQL
Aturan ini akan memblokir permintaan yang memiliki input SQL yang dapat mengakibatkan injeksi SQL.
-
Klik Add a Rule.
-
Klik Advanced mode.
-
Untuk Match, tentukan ekspresi berikut:
evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942251-sqli', 'owasp-crs-v030001-id942420-sqli', 'owasp-crs-v030001-id942431-sqli', 'owasp-crs-v030001-id942460-sqli', 'owasp-crs-v030001-id942421-sqli', 'owasp-crs-v030001-id942432-sqli'])
Ekspresi ini menetapkan aturan Cloud Armor yang telah dikonfigurasi sebelumnya. Aturan yang telah dikonfigurasi sebelumnya menggunakan tanda tangan standar industri open source untuk mendeteksi permintaan berbahaya. Tanda tangan tertentu dapat dinonaktifkan dengan memberikan nama tanda tangan yang akan dinonaktifkan.
Dalam hal ini, tanda tangan pada tingkat sensitivitas 3 dan 4 akan dinonaktifkan. Tingkat sensitivitas tanda tangan, yang juga dikenal sebagai tingkat paranoia, menetapkan kompromi antara tingkat keamanan yang lebih tinggi dengan jumlah positif palsu yang lebih tinggi.
Level 1 adalah level keamanan default yang jarang, atau bahkan tidak pernah, memiliki positif palsu. Level 2 menambahkan perlindungan ekstra dari serangan tingkat lanjut dan obfuscate. Tanda tangan pada level 3 dan 4 lebih agresif dan jauh lebih mungkin menyebabkan positif palsu. Misalnya, permintaan POST dengan payload JSON sederhana dapat ditandai oleh tanda tangan level 3 atau 4.
-
Biarkan setelan Action ke Deny. Biarkan juga setelan Deny status ke 403 (Forbidden).
-
Setel Priority ke 500.
Saat aturan kebijakan Cloud Armor dievaluasi, aturan pertama yang ditemui dan cocok dengan permintaan akan menentukan tindakan yang akan diambil. Pemeriksaan injeksi SQL harus dilakukan sebelum pemeriksaan region, karena kita ingin menolak permintaan yang berasal dari region yang diizinkan tetapi juga berisi pola injeksi SQL. Dengan memilih nomor prioritas yang lebih kecil, pemeriksaan injeksi SQL akan dilakukan sebelum pemeriksaan region.
-
Klik SAVE CHANGE TO RULE.
Lihat ringkasan di sebelah kanan. Kebijakan berisi 3 aturan. Aturan dievaluasi mulai dari urutan nomor prioritas terendah hingga tertinggi, dan aturan pertama yang cocok akan digunakan.
Aturan pertama menolak akses jika pola injeksi SQL terdeteksi.
Aturan kedua mengizinkan akses jika asalnya adalah Amerika Serikat.
Aturan terakhir menolak akses untuk semua traffic.
-
Klik Create policy.
Tab Policies menunjukkan bahwa kebijakan protect-apis baru memiliki 0 target karena Anda belum melampirkannya ke load balancer.
Melampirkan kebijakan ke load balancer
-
Di samping protect-apis, klik tombol menu policy (
), lalu klik Apply policy to target.
-
Untuk dropdown Backend Service 1, pilih apigee-proxy-backend, lalu klik Add.
Halaman detail kebijakan protect-apis akan segera menampilkan bahwa kebijakan tersebut berlaku untuk 1 target.
Catatan: Penerapan perubahan Cloud Armor ke target mungkin memerlukan waktu beberapa menit.
Klik Periksa progres saya untuk memverifikasi tujuan.
Menambahkan kebijakan keamanan Cloud Armor
Tugas 3. Tunggu hingga penyediaan instance Apigee selesai
Dalam tugas ini, Anda akan menunggu penyediaan organisasi evaluasi Apigee selesai.
Penyediaan organisasi Apigee mungkin memerlukan waktu yang cukup lama untuk diselesaikan. Progres penyediaan organisasi dapat dipantau menggunakan Apigee API.
Skrip mulai pemantauan
-
Di Cloud Shell, verifikasi bahwa variabel GOOGLE_CLOUD_PROJECT berisi nama project Anda dengan menggunakan perintah berikut:
echo ${GOOGLE_CLOUD_PROJECT}
Variabel GOOGLE_CLOUD_PROJECT harus berisi nama project Anda, yang sama dengan nama organisasi Apigee Anda.
-
Jika variabel GOOGLE_CLOUD_PROJECT tidak ditetapkan, tetapkan variabel secara manual menggunakan perintah yang terlihat seperti ini, dengan mengganti {project} dengan nama project Anda:
export GOOGLE_CLOUD_PROJECT={project}
Catatan: Tanda kurung kurawal harus dihapus selama langkah ini.
-
Tempel perintah berikut ke Cloud Shell:
export INSTANCE_NAME=eval-instance; export ENV_NAME=eval; export PREV_INSTANCE_STATE=; echo "waiting for runtime instance ${INSTANCE_NAME} to be active"; while : ; do export INSTANCE_STATE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}" | jq "select(.state != null) | .state" --raw-output); [[ "${INSTANCE_STATE}" == "${PREV_INSTANCE_STATE}" ]] || (echo; echo "INSTANCE_STATE=${INSTANCE_STATE}"); export PREV_INSTANCE_STATE=${INSTANCE_STATE}; [[ "${INSTANCE_STATE}" != "ACTIVE" ]] || break; echo -n "."; sleep 5; done; echo; echo "instance created, waiting for environment ${ENV_NAME} to be attached to instance"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo; echo "${ENV_NAME} environment attached, waiting for hello-world to be deployed"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo "***ORG IS READY TO USE***";
Rangkaian perintah ini menggunakan API Apigee untuk menentukan kapan instance runtime Apigee dibuat dan lingkungan eval dilampirkan.
-
Tunggu hingga instance siap.
Saat teks ***ORG IS READY TO USE*** ditampilkan, instance siap digunakan.
Catatan: Jika perintah langsung menunjukkan bahwa organisasi siap digunakan, lab mungkin telah melalui pra-pemanasan sebelum Anda memasuki lab.
Sambil menunggu organisasi siap, Anda dapat mempelajari ringkasan Cloud Armor, aturan khusus, dan aturan yang telah dikonfigurasi sebelumnya.
Klik Periksa progres saya untuk memverifikasi tujuan.
Menunggu instance siap
Tugas 4. Menguji dari region yang diizinkan
Dalam tugas ini, Anda akan memverifikasi bahwa kebijakan keamanan Cloud Armor melindungi API Anda, tetapi mengizinkan traffic yang dapat diterima dari region yang diizinkan. Anda juga akan memverifikasi bahwa hook alur melindungi dari ancaman JSON.
Virtual machine bernama apigeex-test-vm telah dibuat secara otomatis untuk Anda. Anda dapat menggunakan virtual machine ini untuk memanggil API dari Amerika Serikat.
-
Di Cloud Shell, buka koneksi ssh ke VM pengujian Anda di Amerika Serikat:
TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)")
gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
-
Jika diminta Do you want to continue (Y/n)?, tekan Y untuk melanjutkan.
-
Untuk setiap pertanyaan yang diajukan di Cloud Shell, klik Enter atau Return untuk menentukan input default.
Identitas yang Anda gunakan untuk login adalah pemilik project, sehingga SSH ke virtual machine ini diizinkan.
Sesi Cloud Shell Anda kini berjalan di dalam VM.
-
Pastikan proxy API hello-world kini dapat diakses:
export PREV_STATUS_CODE=; echo "waiting for hello-world to be accessible"; while : ; do export STATUS_CODE=$(curl -k -s -o /dev/null -w "%{http_code}" --max-time 5 -X GET "https://eval.example.com/hello-world"); [[ "${STATUS_CODE}" == "${PREV_STATUS_CODE}" ]] || (echo; echo "STATUS_CODE=${STATUS_CODE}"); export PREV_STATUS_CODE=${STATUS_CODE}; [[ "${STATUS_CODE}" != "200" ]] || break; echo -n "."; sleep 5; done; echo; echo "***HELLO-WORLD IS ACCESSIBLE***";
Deployment proxy hello-world dan penyediaannya melalui load balancer eksternal mungkin memerlukan waktu beberapa saat. Jika perintah ini menampilkan ***HELLO-WORLD IS ACCESSIBLE***, hal itu berarti proxy hello-world tersedia.
-
Panggil proxy API hello-world yang di-deploy di lingkungan eval:
curl -i -k "https://eval.example.com/hello-world"
Entri DNS untuk nama host eval.example.com telah dibuat dengan alamat IP masuk untuk load balancer Anda.
Opsi -i menampilkan kode status dan header untuk respons.
Opsi -k melewati verifikasi sertifikat TLS load balancer, karena sertifikat TLS yang digunakan untuk load balancer adalah sertifikat yang ditandatangani sendiri, bukan sertifikat yang diverifikasi oleh certificate authority (CA) yang dikenal.
Catatan: Penggunaan opsi -k untuk melewati validasi sertifikat tidak boleh digunakan di lingkungan produksi.
VM terletak di Amerika Serikat, jadi perintah curl Anda akan berhasil menampilkan respons Hello, Guest! yang dihasilkan oleh proxy hello-world:
HTTP/2 200
x-powered-by: Apigee
access-control-allow-origin: *
x-frame-options: ALLOW-FROM RESOURCE-URL
x-xss-protection: 1
x-content-type-options: nosniff
content-type: text/plain; charset=utf-8
content-length: 13
etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw"
date: Mon, 30 Aug 2021 19:14:45 GMT
alt-svc: clear
alt-svc: clear
x-request-id: b5532b95-c051-4f21-a131-07da1574edc3
server: apigee
via: 1.1 google, 1.1 google
Hello, Guest!
-
Panggil proxy hello-world menggunakan perintah ini:
curl -i -k -X POST "https://eval.example.com/hello-world" -H "Content-Type: application/json" -d '{ "ThisIsAReallyLongElementNameIMeanReallyReallyReallyLong": 42 }'
Permintaan ini melebihi batas ObjectEntryNameLength yang ditentukan dalam kebijakan JSONThreatProtection yang disertakan dalam alur bersama. Alur bersama dilampirkan ke semua proxy API menggunakan hook alur pra-proxy.
Responsnya akan terlihat seperti ini:
HTTP/2 500
content-type: application/json
x-request-id: 5360a9fb-b0b9-4fce-968c-22c2d3fd57dd
content-length: 235
date: Mon, 30 Aug 2021 19:16:17 GMT
server: apigee
via: 1.1 google
alt-svc: clear
{"fault":{"faultstring":"JSONThreatProtection[JTP-Protect]: Execution failed. reason: JSONThreatProtection[JTP-Protect]: Exceeded object entry name length at line 1","detail":{"errorcode":"steps.jsonthreatprotection.ExecutionFailed"}}}
Catatan: Kode status default yang ditampilkan adalah 500, yang menunjukkan error server. Dalam penggunaan kebijakan ini di produksi, lebih baik menulis ulang error yang menunjukkan masalah dengan permintaan (seperti 400 Bad Request), bukan error server.
-
Coba panggil proxy API hello-world menggunakan perintah ini:
curl -i -k "https://eval.example.com/hello-world?item=name'%20OR%20'a'='a"
Parameter kueri item menggunakan pola injeksi SQL yang dapat menimbulkan konsekuensi yang tidak diinginkan jika kueri SQL dibuat dengan menyambungkan string.
Pola injeksi SQL berhasil dideteksi oleh Cloud Armor dan permintaan diblokir, sehingga menampilkan respons 403 Forbidden:
HTTP/2 403
content-length: 134
content-type: text/html; charset=UTF-8
date: Thu, 22 Jul 2021 18:50:03 GMT
alt-svc: clear
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Catatan: Penerapan aturan Cloud Armor memerlukan waktu beberapa menit. Jika permintaan tidak diblokir, coba lagi panggilan hingga permintaan diblokir.
-
Ketik exit untuk menutup koneksi SSH ke virtual machine Amerika Serikat Anda.
Tugas 5. Menguji kebijakan keamanan dari region yang tidak diizinkan
Dalam tugas ini, Anda akan memverifikasi bahwa kebijakan keamanan Cloud Armor tidak mengizinkan traffic untuk region yang belum dimasukkan ke daftar yang diizinkan.
Virtual machine bernama apigeex-outside-us telah dibuat secara otomatis di zona . Anda dapat menggunakan virtual machine ini untuk memanggil API dari luar Amerika Serikat.
- Di Cloud Shell, buka koneksi ssh ke VM pengujian Anda di luar Amerika Serikat:
export SECOND_VM_NAME=apigeex-outside-us
export SECOND_VM_ZONE={{{project_0.default_zone_2| Secondary Zone}}}
gcloud compute ssh ${SECOND_VM_NAME} --zone=${SECOND_VM_ZONE} --force-key-file-overwrite
-
Jika diminta untuk memberikan otorisasi, klik Authorize.
-
Untuk setiap pertanyaan yang diajukan di Cloud Shell, klik Enter atau Return untuk menentukan input default.
Identitas yang Anda gunakan untuk login adalah pemilik project, sehingga SSH ke virtual machine ini diizinkan.
Sesi Cloud Shell Anda kini berjalan di dalam VM.
-
Panggil proxy API hello-world yang di-deploy di lingkungan eval:
curl -i -k "https://eval.example.com/hello-world"
VM tidak berlokasi di Amerika Serikat, jadi Cloud Armor harus memblokir permintaan, yang akan menampilkan 403:
HTTP/2 403
content-length: 134
content-type: text/html; charset=UTF-8
date: Thu, 22 Jul 2021 22:47:06 GMT
alt-svc: clear
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Tugas 6. Mempelajari pemantauan kebijakan untuk Cloud Armor
Dalam tugas ini, Anda akan memeriksa dasbor kebijakan Cloud Armor di Cloud Monitoring.
-
Di tab Cloud Console, buka Monitoring > Dashboards.
-
Klik Cloud Armor Policies Overview.
Dasbor ini menunjukkan rasio permintaan yang diizinkan dan diblokir untuk semua kebijakan Cloud Armor. Saat ini Anda hanya memiliki satu kebijakan.
-
Di panel Policies, klik protect-apis.
Dasbor ini menunjukkan rasio permintaan yang diizinkan dan diblokir untuk kebijakan protect-apis.
Untuk mencatat detail permintaan individual, Anda perlu mengaktifkan pencatatan permintaan untuk load balancer.
Selamat!
Di lab ini, Anda telah membuat kebijakan Cloud Armor dan menggunakannya untuk menolak atau mengizinkan traffic masuk berdasarkan aturan Cloud Armor Anda.
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 17 September 2025
Lab Terakhir Diuji pada 17 September 2025
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.