Menggunakan 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 frontend global yang menggabungkan praktik terbaik Google Cloud untuk membantu menskalakan, mengamankan, dan mempercepat pengiriman aplikasi yang ditayangkan di internet. Arsitektur ini mencakup dukungan untuk Cloud Build, serta alat continuous integration (CI) dan continuous delivery (CD) pihak ketiga seperti Jenkins dan GitLab. Arsitektur ini ditujukan untuk developer dan pemilik aplikasi yang ingin menskalakan aplikasi mereka dengan load balancer, dan melindungi aplikasi mereka dari distributed denial of service (DDoS) dan serangan berbasis web dengan firewall aplikasi web (WAF).

Arsitektur

Diagram berikut menunjukkan arsitektur yang dijelaskan dalam dokumen ini.

Arsitektur aplikasi web.

Dalam arsitektur ini, aplikasi di-load balance dengan Load Balancer Aplikasi eksternal global, yang mendistribusikan traffic HTTP dan HTTPS di beberapa instance backend di beberapa region. Cloud CDN mempercepat aplikasi yang ditayangkan di internet menggunakan titik kehadiran (PoP) edge Google dan berfungsi 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 menyaring permintaan masuk untuk serangan web umum atau atribut Lapisan 7 lainnya, sehingga membantu memblokir traffic sebelum mencapai layanan backend yang di-load balance. Perlindungan terhadap serangan DDoS volumetrik diaktifkan secara default.

Saat pengguna meminta konten dari layanan Anda, permintaan tersebut akan dikirim ke frontend global untuk aplikasi yang menghadap internet, yang disediakan oleh Cross-Cloud Network. Permintaan 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 menghasilkan cache yang tidak ada, permintaan tersebut akan dievaluasi oleh kebijakan backend, lalu, sesuai dengan aturan kebijakan, ditolak atau dipenuhi oleh server backend Anda.

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 oleh Load Balancer Aplikasi eksternal global. Anda dapat menggunakan load balancer yang sama untuk aplikasi GKE, Cloud Run, fungsi Cloud Run, dan App Engine, serta aplikasi yang dihosting secara lokal dan di cloud lain menggunakan konfigurasi backend yang berbeda. Untuk mempelajari lebih lanjut, lihat Ringkasan Load Balancer Aplikasi.
    • Pemisahan 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 pembagian 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 penyeimbangan pilihan Anda.
  • Cloud CDN: Platform Cloud CDN berfungsi sebagai cache. Cloud CDN Gateway di-deploy dengan server origin untuk menyediakan rangkaian lengkap fitur Cloud CDN, termasuk QUIC dan HTTP/2, serta kontrol pemilihan rute dan penyimpanan dalam cache. Pendekatan ini memungkinkan aplikasi Anda diskalakan secara global tanpa mengorbankan performa, dan juga mengurangi bandwidth dan biaya komputasi frontend. Konfigurasi default yang digunakan frontend global didasarkan pada praktik terbaik pengiriman konten dan praktik terbaik keamanan web Cloud CDN.

  • Google Cloud Armor: Komponen ini mencakup Perlindungan DDoS dan aturan 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 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 cetak biru fondasi Enterprise. Blueprint ini membantu organisasi yang menggunakan Google Cloud untuk menetapkan dasar pengukuran yang aman bagi semua beban kerja di masa 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, sebaiknya Anda tidak meng-cache konten khusus pengguna. Untuk meng-cache jenis konten HTML (text/html) dan JSON (application/json), tetapkan header cache-control eksplisit dalam respons Cloud CDN. Pastikan Anda tidak menyimpan data satu pengguna dalam cache dan menayangkannya kepada semua pengguna.

Mengontrol akses ke aplikasi Anda dengan IAP

Arsitektur ini juga kompatibel dengan Identity-Aware Proxy (IAP). IAP memverifikasi identitas pengguna, lalu menentukan apakah pengguna tersebut harus diizinkan untuk mengakses aplikasi. Untuk mengaktifkan IAP untuk Load Balancer Aplikasi untuk mode eksternal global atau mode klasik, Anda harus 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, menggunakan Cloud CDN bersama dengan Google Cloud Armor dapat membantu meminimalkan efek tagihan transfer data keluar.

Cloud CDN

Objek statis yang ditayangkan ke klien dari cache tidak transit melalui load balancer. Strategi penyimpanan dalam cache 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 dikenai biaya 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. Dampaknya terhadap biaya Anda bergantung pada persentase traffic yang 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 dan traffic keluar cache, serta volume data. Untuk mempelajari lebih lanjut, lihat hal berikut:

Deployment

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

Struktur folder di folder Terraform adalah sebagai berikut:

Saat Anda melakukan perubahan pada cabang yang menjadi dasar pipeline, perubahan tersebut akan memicu pengoperasian pipeline dan perubahan tersebut akan diintegrasikan ke dalam rilis baru setelah selesai. Saat Anda mengambil toolkit untuk pertama kalinya, solusi tersebut 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: