1. Pengantar
Kebijakan Keamanan Edge Google Cloud Armor memungkinkan Anda membatasi akses ke objek yang di-cache di Google Cloud CDN dan Google Cloud Storage. Contoh alasan untuk melakukannya mencakup memastikan bahwa pengguna Anda tidak mengakses objek di bucket penyimpanan dari geografi yang dibatasi atau memastikan bahwa distribusi media Anda memfilter geografi yang memiliki lisensi untuk melakukannya.
Di lab ini, kita akan membuat bucket GCS, mengupload image ke bucket tersebut, mengikatnya ke load balancer, lalu mengaktifkan kebijakan Cloud CDN dan Edge Security di bucket tersebut.
Yang akan Anda pelajari
- Cara menyiapkan Bucket Cloud Storage dengan konten yang dapat di-cache
- Cara membuat Kebijakan Keamanan Edge untuk melindungi konten
- Cara memvalidasi bahwa Kebijakan Keamanan Edge berfungsi seperti yang diharapkan
Yang Anda butuhkan
- Networking Dasar dan pengetahuan tentang HTTP
- Pengetahuan dasar mengenai command line Unix/Linux
2. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat. - Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Konsol GCP, klik ikon Cloud Shell di toolbar kanan atas:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
Aktifkan API
Aktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Membuat Bucket Cloud Storage
Di Cloud Console, buka Menu navigasi > Cloud Storage > Browser. Klik CREATE BUCKET:

Aturan penamaan bucket:
- Jangan sertakan informasi sensitif pada nama bucket, karena namespace bucket bersifat global dan dapat dilihat publik.
- Nama bucket hanya boleh berisi huruf kecil, angka, tanda pisah (-), garis bawah (_), dan titik (.). Nama yang berisi titik membutuhkan verifikasi.
- Nama bucket harus diawali dan diakhiri dengan angka atau huruf.
- Nama bucket harus berisi 3 hingga 63 karakter. Nama yang mengandung titik dapat berisi hingga 222 karakter, tetapi masing-masing komponen yang dipisahkan titik dapat berisi tidak lebih dari 63 karakter.
- Nama bucket tidak dapat direpresentasikan sebagai alamat IP dalam notasi desimal bertitik (misalnya, 192.168.5.4).
- Nama bucket tidak boleh dimulai dengan awalan "goog".
- Nama bucket tidak boleh mengandung kata "google" atau salah eja yang mendekati "google".
- Juga, untuk kepatuhan dan kompatibilitas DNS pada masa mendatang, Anda tidak boleh menggunakan garis bawah (_) maupun titik yang berdekatan titik lain atau tanda pisah. Misalnya, ".." atau "-." atau ".-" tidak valid pada nama DNS.
Klik LANJUTKAN.
Location type: region
Lokasi: pilih wilayah yang jauh dari Anda
Klik LANJUTKAN.
Kelas Penyimpanan default: Standard
Klik LANJUTKAN.
Hapus centang pada kotak Enforce public access prevention on this bucket di bagian Prevent public access.
Pilih Fine Grained di bagian Access Control.
Klik LANJUTKAN.
Setelah bucket berhasil dikonfigurasi, klik BUAT:
Selesai — Anda baru saja berhasil membuat bucket Cloud Storage!
4. Mengupload Objek ke bucket Anda
Sekarang upload objek ke dalam bucket.
Pertama, download gambar ini ke instance sementara di Cloud Shell. Dalam contoh di bawah, gambar Google dari beranda Google digunakan.
Dari Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Gunakan perintah gsutil cp untuk mengupload gambar dari lokasi tempat Anda menyimpannya ke bucket yang Anda buat:
Dari Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
Sekarang hapus gambar yang didownload:
Dari Cloud Shell
rm google.png
Temukan Objek Anda, klik tiga titik di sisi kanan, lalu edit izin agar menjadi publik.


5. Membuat Load Balancer
Selanjutnya, kita akan membuat Load balancer HTTP.
Buka Networking >> Network services >> Load Balancing >> Create Load Balancer >> HTTP Load Balancer >> Internet to my VMs >> Classic HTTP(S) Load Balancer
Pertama, buat nama untuk load balancer yang akan Anda buat.
Membuat bucket backend
Buat bucket backend baru yang merupakan bucket yang baru saja Anda buat, lalu pilih Aktifkan CDN dan Simpan Konten Statis ke dalam Cache. Klik Buat.

Membuat aturan host dan jalur
Buka Host and path rules di sisi kiri. Kita akan menggunakan aturan host/jalur sederhana dan mengirim permintaan apa pun ke bucket.

Buat konfigurasi frontend
Pilih konfigurasi frontend. Untuk konfigurasi frontend, kita akan menggunakan HTTP (meskipun HTTPS juga akan berfungsi jika Anda memiliki sertifikat) dan alamat IP efemeral serta memastikan Anda telah memilih jaringan tingkat premium.

Klik Buat
Mendapatkan IP Load Balancer
Dapatkan IP Load Balancer dari konsol dengan mengklik nama load balancer dalam daftar load balancer untuk project Anda.

Mengirim Kueri ke Load Balancer
Setelah beberapa menit, coba kueri load balancer untuk objek yang Anda upload. Anda akan memerlukan alamat IP load balancer dan nama image. Perintahnya disusun sebagai berikut:
Dari Terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Output
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
Pastikan konten Anda ditayangkan dari CDN melalui Pemantauan CDN atau Load Balancing. Anda akan dapat mencapai rasio hit hampir 100%. Jika Anda perlu menjalankan beberapa kueri, Anda dapat melakukan hal berikut
Dari Terminal
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
Mengonfirmasi konten yang disajikan oleh Cloud CDN
Validasi bahwa Anda menyalurkan traffic dari CDN dengan membuka Network Services >> CDN

6. Menghapus Objek dari GCS
Setelah cache diisi, mari kita hapus objek dari bucket, yang memperkuat bahwa kita menerapkan kebijakan ke cache, bukan ke backend.
Buka Cloud Storage >> %bucket name% >> objects
Pilih gambar, lalu hapus.

7. Membuat Kebijakan Keamanan Edge untuk Cache CDN
Buka Network Security >> Cloud Armor, lalu klik create policy
Pilih opsi berikut
Jenis Kebijakan: Kebijakan Keamanan Edge
Tindakan Default: Tolak



Terapkan kebijakan ke bucket backend Anda.
8. Memvalidasi Kebijakan Keamanan Edge
Setelah membuat Kebijakan Keamanan Edge di depan bucket backend, mari kita validasi bahwa kebijakan tersebut berfungsi seperti yang diharapkan.
Periksa kebijakan keamanan
Setelah beberapa menit berlalu, Anda akan dapat memeriksa bahwa Kebijakan Cloud Armor sedang berjalan. Dari command line, menjalankan perintah berikut akan memberi Anda 403
Dari Terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Output
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
Menyelidiki log
Selanjutnya, Anda dapat memeriksa log untuk melihat kebijakan keamanan edge yang diterapkan. Buka Operations >> Logging >> Logs Explorer
Masukkan cuplikan di bawah ke dalam kueri, lalu klik jalankan

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
Perhatikan respons 403 dan kebijakan keamanan yang diterapkan

Menghapus kebijakan keamanan
Hapus kebijakan keamanan dan kueri objek dari cache.
Buka Network Security >> Cloud Armor >> %POLICY NAME% >> targets, lalu hapus bucket target.

Konfirmasi kebijakan dihapus
Setelah beberapa menit berlalu, kirim curl lain ke resource di bucket penyimpanan. Kali ini Anda akan mendapatkan respons 200.
Dari Terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Output
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png
* Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M
< Date: Mon, 13 Dec 2021 23:06:46 GMT
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer
< Age: 1621
< Cache-Control: public,max-age=3600
<
{ [775 bytes data]
* Connection #0 to host 34.98.81.123 left intact
* Closing connection 0
Selamat! Anda telah menyelesaikan lab ini tentang Kebijakan Keamanan Edge Cloud Armor.
©2020 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lainnya mungkin merupakan merek dagang dari tiap-tiap perusahaan yang bersangkutan.
9. Pembersihan Lab
Buka Network Security >> Cloud Armor >> %POLICY NAME%, lalu pilih hapus

Buka Cloud Storage, pilih bucket yang Anda buat, lalu klik hapus

Buka Networking >> Network services >> Load Balancing. Pilih load balancer yang Anda buat, lalu klik hapus.

10. Selamat!
Anda telah menyelesaikan codelab Defending Edge Cache with Cloud Armor.
Yang telah kita bahas
- Cara menyiapkan bucket Cloud Storage dan load balancer cloud terkait
- Cara membuat Kebijakan Keamanan Edge Cloud Armor
- Cara memvalidasi bahwa Kebijakan Keamanan Edge berfungsi sebagaimana mestinya.
Langkah berikutnya
- Coba siapkan Kebijakan Keamanan Edge dengan cache hit dari resource Compute Engine.