Gunakan Google Cloud Armor, load balancing, dan Cloud CDN untuk men-deploy frontend global yang dapat diprogram

Last reviewed 2024-04-04 UTC

Dokumen ini memberikan arsitektur referensi untuk aplikasi web yang dihosting di Google Cloud. Arsitektur ini menggunakan front end global yang menggabungkan praktik terbaik Google Cloud untuk membantu menskalakan, mengamankan, dan mempercepat pengiriman aplikasi Anda yang terhubung ke internet. Arsitekturnya mencakup dukungan untuk Cloud Build, serta alat continuous integration (CI) dan continuous delivery (CD) pihak ketiga seperti Jenkins dan GitLab. Arsitektur ini ditujukan bagi developer dan pemilik aplikasi yang ingin menskalakan aplikasi mereka dengan load balancer, serta melindungi aplikasi mereka dari serangan distributed denial of service (DDoS) maupun serangan berbasis web menggunakan firewall aplikasi web (WAF).

Arsitektur

Diagram berikut menunjukkan arsitektur yang dijelaskan dalam dokumen ini.

Arsitektur aplikasi web.

Dalam arsitektur ini, aplikasi di-load balanced dengan Load Balancer Aplikasi eksternal global, yang mendistribusikan traffic HTTP dan HTTPS di beberapa backend instance, di beberapa region. Cloud CDN mempercepat aplikasi yang terhubung ke internet menggunakan titik kehadiran (PoP) Google dan bekerja sama dengan Load Balancer Aplikasi eksternal global untuk mengirimkan konten kepada pengguna. Backend dilindungi oleh kebijakan keamanan Google Cloud Armor yang menyediakan pemfilteran Lapisan 7 dengan menghapus permintaan masuk untuk serangan web umum atau atribut Lapisan 7 lainnya, sehingga membantu memblokir traffic sebelum mencapai layanan backend dengan load balancing. Perlindungan terhadap serangan DDoS volumetrik diaktifkan secara default.

Saat pengguna meminta konten dari layanan Anda, permintaan tersebut dikirim ke front end global untuk aplikasi yang terhubung ke internet, yang disediakan oleh Jaringan Lintas Cloud. Permintaan ini dievaluasi oleh kebijakan keamanan Google Cloud Armor, dimulai dengan kebijakan keamanan edge Google Cloud Armor. Jika permintaan diizinkan dan dapat dipenuhi oleh Cloud CDN, konten akan diambil dari cache Google Cloud Armor dan dikirim kembali ke pengguna. Jika permintaan menyebabkan cache tidak ditemukan, permintaan akan dievaluasi oleh kebijakan backend, lalu, menurut aturan kebijakan, ditolak atau dipenuhi oleh server backend.

Komponen arsitektur

Diagram sebelumnya mencakup komponen berikut:

  • Load Balancer Aplikasi eksternal global: Load Balancer Aplikasi ini adalah load balancer Lapisan 7 berbasis proxy yang memungkinkan Anda menjalankan dan menskalakan layanan. Load Balancer Aplikasi mendistribusikan traffic HTTP dan HTTPS ke backend yang dihosting di berbagai platform Google Cloud. Load Balancer Aplikasi memiliki fitur berikut:

    • Backend yang dapat dikonfigurasi: Arsitektur ini menggunakan dua Grup Instance Terkelola (MIG) di region yang berbeda, tetapi Anda dapat mengonfigurasi backend apa pun yang didukung Load Balancer Aplikasi eksternal global. Anda dapat menggunakan load balancer yang sama untuk aplikasi GKE, Cloud Run, Cloud Functions, dan App Engine, serta yang dihosting di infrastruktur lokal dan cloud lain menggunakan konfigurasi backend yang berbeda. Untuk mempelajari lebih lanjut, baca bagian Ringkasan Load Balancer Aplikasi.
    • Pembagian traffic: Anda dapat menggunakan Load Balancer Aplikasi untuk pengelolaan traffic, termasuk pengelolaan versi software dengan mengirim pengguna yang berbeda ke server backend yang berbeda. Dalam arsitektur yang dijelaskan dalam dokumen ini, ada pemisahan traffic sederhana 60/40. Namun, Anda dapat mengubah pemisahan ini untuk membuat skema pengelolaan traffic yang lebih kompleks. Untuk mempelajari opsi konfigurasi tambahan, lihat waktu tunggu dan percobaan ulang yang dapat dikonfigurasi dan tentukan mode keseimbangan pilihan Anda.
  • Cloud CDN: Platform Cloud CDN bertindak sebagai cache. Layanan ini di-deploy dengan server origin untuk menyediakan rangkaian lengkap fitur Cloud CDN, termasuk QUIC dan HTTP/2, serta kontrol perutean dan cache. Pendekatan ini memungkinkan aplikasi Anda melakukan penskalaan secara global tanpa mengorbankan performa, dan juga mengurangi biaya bandwidth dan komputasi front-end. Konfigurasi default yang digunakan front end global didasarkan pada praktik terbaik penayangan konten Cloud CDN dan praktik terbaik keamanan web.

  • Google Cloud Armor: Komponen ini mencakup aturan Perlindungan DDoS dan WAF. Arsitektur ini memiliki konfigurasi Google Cloud Armor dasar berikut, yang membantu memitigasi vektor ancaman umum:

Produk yang digunakan

Arsitektur referensi ini menggunakan produk Google Cloud berikut:

Pertimbangan desain

Bagian ini berisi panduan untuk membantu Anda menggunakan dokumen ini sebagai titik awal untuk mengembangkan arsitektur yang memenuhi persyaratan spesifik Anda terkait keamanan, keandalan, efisiensi operasional, biaya, dan performa.

Keamanan, privasi, dan kepatuhan:

Bagian ini menjelaskan faktor-faktor tambahan yang harus Anda pertimbangkan saat menggunakan arsitektur referensi ini untuk men-deploy aplikasi web.

Menetapkan dasar pengukuran keamanan

Untuk membantu meningkatkan keamanan Anda lebih lanjut, arsitektur yang dijelaskan dalam dokumen ini juga kompatibel dengan blueprint Enterprise Foundation. Blueprint membantu organisasi yang menggunakan Google Cloud menetapkan dasar pengukuran yang aman untuk semua workload mendatang, termasuk penyiapan Identity and Access Management (IAM), Cloud Key Management Service, dan Security Command Center.

Melindungi data pengguna dengan Cloud CDN

Dalam arsitektur ini, kami menyarankan Anda untuk tidak meng-cache konten khusus pengguna. Untuk menyimpan jenis konten HTML (text/html) dan JSON (application/json) dalam cache, tetapkan header kontrol cache eksplisit dalam respons Cloud CDN. Pastikan Anda tidak meng-cache satu data pengguna dan menayangkannya kepada semua pengguna.

Mengontrol akses ke aplikasi dengan IAP

Arsitektur ini juga kompatibel dengan Identity-Aware Proxy (IAP). IAP memverifikasi identitas pengguna, lalu menentukan apakah pengguna harus diizinkan untuk mengakses aplikasi. Jika ingin mengaktifkan IAP untuk Load Balancer Aplikasi untuk mode eksternal global atau mode klasik, Anda dapat mengaktifkannya di layanan backend load balancer. Permintaan HTTP/HTTPS masuk dievaluasi oleh Google Cloud Armor sebelum dikirim untuk load balancing oleh Load Balancer Aplikasi. Jika Google Cloud Armor memblokir permintaan, IAP tidak akan mengevaluasi permintaan tersebut. Jika Google Cloud Armor mengizinkan permintaan, IAP akan mengevaluasi permintaan tersebut. Permintaan akan diblokir jika IAP tidak mengautentikasi permintaan. Untuk mempelajari lebih lanjut, lihat Mengintegrasikan Google Cloud Armor dengan produk Google lainnya.

Pengoptimalan biaya

Sebagai panduan umum, penggunaan Cloud CDN bersama dengan Google Cloud Armor dapat membantu meminimalkan efek biaya transfer data.

Cloud CDN

Objek statis yang disalurkan ke klien dari cache tidak akan transit melalui load balancer. Strategi caching yang efektif dapat mengurangi jumlah data keluar yang diproses oleh load balancer dan menurunkan biaya Anda.

Google Cloud Armor

Google Cloud Armor membantu Anda menurunkan biaya dengan mencegah akun Anda ditagih untuk traffic yang tidak diinginkan. Permintaan yang diblokir oleh Google Cloud Armor tidak menghasilkan respons dari aplikasi Anda, sehingga secara efektif mengurangi jumlah data keluar yang diproses oleh load balancer. Efek pada biaya Anda bergantung pada persentase traffic tidak diinginkan yang diblokir oleh kebijakan keamanan Google Cloud Armor yang Anda terapkan.

Biaya akhir juga dapat bervariasi, bergantung pada jumlah layanan atau aplikasi yang ingin Anda lindungi, jumlah kebijakan dan aturan Google Cloud Armor yang Anda miliki, pengisian cache dan traffic keluar, serta volume data. Untuk mempelajari lebih lanjut, lihat referensi berikut:

Deployment

Untuk men-deploy arsitektur referensi ini, gunakan contoh Terraform. Untuk mempelajari lebih lanjut, lihat file README. Folder web_app_protection_example berisi file (main.tf). Kode dalam file ini membuat arsitektur yang dijelaskan dalam dokumen ini, dan memberikan dukungan tambahan untuk deployment otomatis.

Struktur folder dalam folder Terraform adalah sebagai berikut:

Jika Anda melakukan perubahan pada cabang mana pun yang menjadi dasar pipeline Anda, perubahan tersebut memicu proses pipeline dijalankan dan perubahan akan diintegrasikan ke dalam rilis baru setelah selesai. Saat Anda menarik toolkit untuk pertama kalinya, solusi akan dimuat ke project Google Cloud yang Anda pilih.

Langkah selanjutnya

Pelajari lebih lanjut praktik terbaik untuk produk Google Cloud yang digunakan dalam arsitektur referensi ini:

Kontributor

Penulis:

Kontributor lainnya: