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.
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:
Perlindungan default terhadap serangan DDoS volumetrik (Lapisan 3 dan Lapisan 4).
Aturan WAF yang telah dikonfigurasi sebelumnya berdasarkan CRS 3.3 Kumpulan Aturan Inti ModSecurity. Aturan ini memungkinkan Google Cloud Armor untuk mengevaluasi puluhan tanda tangan traffic yang berbeda dengan merujuk ke aturan yang telah diberi nama sebelumnya, bukan mengharuskan Anda menentukan setiap tanda tangan secara manual.
Konfigurasi dasar kebijakan keamanan edge Google Cloud Armor untuk memfilter permintaan masuk dan mengontrol akses ke layanan backend dan bucket Cloud Storage yang dilindungi.
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:
- Harga Google Cloud Armor
- Harga Cloud Load Balancing
- Harga Cloud CDN
- Untuk menemukan harga untuk skenario deployment tertentu, lihat kalkulator harga Google Cloud
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:
- Repositori kode sumber: Contoh Perlindungan Aplikasi Web adalah bagian dari repositori Perlindungan Aplikasi Web dan API (WAAP).
- CD dan CI: Folder build
berisi file deskriptif berikut untuk Jenkins, GitLab, dan Cloud Build:
- Jenkins: Repositori ini menyertakan file Jenkins yang berisi aturan yang dieksekusi pipeline.
- GitLab: Repositori ini menyertakan file YAML.gitlab-ci yang berisi aturan yang dijalankan pipeline GitLab.
- Cloud Build: Repositori ini mencakup file Cloud Build yang berisi aturan berdasarkan nama cabang.
- Repositori ini menyertakan opsi untuk deployment multi-lingkungan (produksi dan pengembangan). Untuk informasi selengkapnya, lihat
file
README
.
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:
- Praktik terbaik keamanan web
- Praktik terbaik performa Load Balancer Aplikasi Eksternal
- Praktik terbaik penayangan konten
- Praktik terbaik untuk menyesuaikan aturan WAF Google Cloud Armor
Cloud Armor Enterprise: Kemampuan Google Cloud Armor dalam arsitektur ini tersedia di paket Google Cloud Armor Standard. Dengan mendaftarkan project ke Cloud Armor Enterprise, Anda dapat menggunakan fitur tambahan seperti berikut:
- Threat Intelligence, yang memungkinkan Anda mengizinkan atau memblokir traffic ke Load Balancer Aplikasi eksternal berdasarkan beberapa kategori data threat intelligence.
- Perlindungan Adaptif, yang membantu melindungi aplikasi, situs, dan layanan Google Cloud Anda dari serangan DDoS Lapisan 7 seperti flood HTTP, serta aktivitas berbahaya frekuensi tinggi lainnya di Lapisan 7 (tingkat aplikasi). Adaptive Protection membuat model machine learning yang mendeteksi dan memberikan pemberitahuan tentang aktivitas yang tidak wajar, membuat tanda tangan yang mendeskripsikan potensi serangan, dan membuat aturan Google Cloud Armor WAF kustom untuk memblokir tanda tangan tersebut.
- Visibilitas serangan DDoS, yang memberikan visibilitas melalui metrik, serta logging peristiwa seperti upaya serangan volumetrik Lapisan 3 Lapisan 4.
- Layanan tambahan seperti dukungan respons DDoS dan perlindungan tagihan DDoS. Untuk mempelajari lebih lanjut, lihat Ringkasan Cloud Armor Enterprise
Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.
Kontributor
Penulis:
- Lihi Shadmi | Product Manager
- David Tu | Customer Engineer
Kontributor lainnya:
- Alex Maclinovsky | Enterprise Architect
- Anderson Duboc | Customer Engineer
- Grant Sorbo | Solutions Architect
- Michele Chubirka | Cloud Security Advocate
- Rob Harman | Technical Solutions Engineer Manager
- Susan Wu | Outbound Product Manager