1. Pengantar
Dengan Kebijakan Keamanan Google Cloud Armor Edge, Anda dapat membatasi akses ke objek yang di-cache di Google Cloud CDN dan Google Cloud Storage. Contoh alasan untuk melakukan hal ini termasuk memastikan bahwa pengguna Anda tidak mengakses objek dalam bucket penyimpanan dari wilayah geografis yang dibatasi atau memastikan bahwa distribusi media Anda memfilter wilayah geografis tempat Anda memiliki lisensi untuk melakukannya.
Di lab ini, kita akan membuat bucket GCS, mengupload gambar ke dalamnya, mengikatnya ke load balancer, lalu mengaktifkan kebijakan Cloud CDN dan Keamanan Edge di dalamnya.
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
- Jaringan 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 GCP Console, 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.
Jenis lokasi: wilayah
Lokasi: pilih wilayah yang jauh dari lokasi Anda
Klik LANJUTKAN.
Class Storage Default: Standard
Klik LANJUTKAN.
Hapus centang Terapkan pencegahan akses publik di bucket ini di bagian Cegah akses publik.
Pilih Fine Grained di bagian Kontrol Akses.
Klik LANJUTKAN.
Setelah bucket berhasil dikonfigurasi, klik CREATE:
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 ini, gambar Google dari halaman 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 Object Anda dan klik tiga titik di sisi kanan dan edit izin akses menjadi publik.
5. Membuat Load Balancer
Selanjutnya, kita akan membuat Load balancer HTTP.
Buka Jaringan >> Layanan jaringan >> Load Balancing >> Buat Load Balancer >> Load Balancer HTTP >> Internet ke VM saya >> Load Balancer HTTP(S) Klasik
Pertama, beri nama untuk load balancer yang akan dibuat.
Membuat bucket backend
Buat bucket backend baru yang merupakan bucket Anda yang baru saja Anda buat, lalu pilih CDN yang Diaktifkan dan Cache Static Content. Klik Buat.
Membuat aturan host dan jalur
Buka Aturan host dan jalur di sebelah kiri. Kita akan menggunakan aturan host/jalur sederhana dan mengirimkan permintaan apa pun ke bucket.
Membuat konfigurasi frontend
Pilih konfigurasi frontend. Untuk konfigurasi frontend, kami akan menggunakan HTTP (meskipun HTTPS juga dapat digunakan jika Anda memiliki sertifikat) serta alamat IP efemeral, serta memastikan bahwa Anda telah memilih jaringan tingkat premium.
Klik Buat
Mendapatkan IP Load Balancer
Dapatkan IP Load Balancer dari konsol dengan mengklik nama load balancer di daftar load balancer untuk project Anda.
Mengkueri Load Balancer
Setelah beberapa menit, coba buat kueri load balancer untuk objek yang Anda upload. Anda memerlukan alamat IP load balancer dan nama image. Perintah ini memiliki struktur seperti ini:
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
Validasi bahwa konten Anda ditayangkan dari CDN melalui CDN atau Load Balancing Monitoring. Anda harus bisa mendekati rasio hit 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 ditayangkan oleh Cloud CDN
Validasi bahwa Anda melayani traffic dari CDN dengan membuka Layanan Jaringan >> CDN
6. Menghapus Objek dari GCS
Setelah cache terisi, mari kita hapus objek tersebut dari bucket, yang menegaskan bahwa kita akan menerapkan kebijakan ke cache dan bukan backend.
Buka Cloud Storage >> %nama bucket% >> objek
Pilih gambar dan hapus.
7. Membuat Kebijakan Keamanan Edge untuk Cache CDN Anda
Buka Keamanan Jaringan >> Cloud Armor lalu klik Buat kebijakan
Pilih opsi berikut
Jenis Kebijakan: Kebijakan Keamanan Edge
Tindakan Default: Tolak
Terapkan kebijakan tersebut ke bucket backend Anda.
8. Validasi Kebijakan Keamanan Edge
Sekarang setelah membuat Kebijakan Keamanan Edge di depan bucket back-end, mari kita validasi bahwa kebijakan tersebut berfungsi seperti yang diharapkan.
Memeriksa kebijakan keamanan
Setelah beberapa menit, Anda dapat memeriksa apakah Kebijakan Cloud Armor sudah berjalan atau belum. Menjalankan perintah berikut dari command line 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 Operasi >> Pembuatan Log >> Logs Explorer
Masukkan cuplikan di bawah ke dalam kueri, lalu klik run
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 buat kueri objek dari cache.
Buka Keamanan Jaringan >> Cloud Armor >> % NAMA KEBIJAKAN >> target, lalu menghapus bucket target.
Kebijakan konfirmasi dihapus
Setelah beberapa menit, kirim curl lain ke resource dalam bucket penyimpanan. Anda akan mendapatkan respons 200 kali ini.
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 Cloud Armor Edge.
©2020 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.
9. Pembersihan Lab
Buka Keamanan Jaringan >> Cloud Armor >> %POLICY NAME% dan pilih hapus
Buka Cloud Storage, pilih bucket yang Anda buat, lalu klik hapus
Buka Jaringan >> Layanan jaringan >> Load Balancing. Pilih load balancer yang Anda buat, lalu klik hapus.
10. Selamat!
Anda telah menyelesaikan codelab Defending Edge dengan Cloud Armor.
Yang telah kita bahas
- Cara menyiapkan bucket Cloud Storage dan load balancer cloud terkait
- Cara membuat Kebijakan Keamanan Cloud Armor Edge
- Cara memvalidasi bahwa Kebijakan Keamanan Edge berfungsi sebagaimana mestinya.
Langkah berikutnya
- Coba siapkan Kebijakan Keamanan Edge dengan cache ditemukan dari resource Compute Engine.