Firewall menentukan traffic jaringan mana yang boleh diteruskan dan mana yang ditolak. Firewall dapat menerapkan traffic masuk (ingress), traffic keluar (egress), atau keduanya. Untuk App Engine, firewall App Engine hanya berlaku untuk traffic masuk yang dirutekan ke aplikasi atau layanan Anda.
Ringkasan
Firewall App Engine diperiksa untuk semua jenis permintaan ke aplikasi Anda, termasuk:
- Traffic web reguler yang dirutekan ke alamat
appspot.com
atau domain kustom aplikasi. - Permintaan yang datang dari Cloud Load Balancing.
- Traffic dari sumber internal seperti virtual machine (VM) Compute Engine dan Cloud Tasks.
Jika aplikasi Anda dikonfigurasi untuk menggunakan produk atau layanan jaringan lainnya, Anda mungkin perlu membuat aturan untuk mengontrol traffic masuk di firewall App Engine dan setelan firewall atau keamanan produk lainnya. Panduan ini membahas perilaku umum firewall App Engine, dan detail tentang kasus penggunaan khusus tersebut.
Aturan firewall App Engine
Anda dapat mengonfigurasi aturan firewall App Engine menggunakan Google Cloud Console, Google Cloud CLI, atau Admin API dengan menentukan aturan yang mengizinkan atau memblokir rentang IP tertentu.
Secara default, setiap permintaan yang tidak cocok dengan aturan diizinkan mengakses aplikasi Anda. Jika Anda perlu memblokir semua permintaan yang tidak cocok dengan aturan tertentu (tidak termasuk permintaan dari layanan internal yang diizinkan secara default), ubah tindakan aturan default
menjadi deny
.
Fitur firewall
Di lingkungan standar App Engine, firewall App Engine dapat mengizinkan traffic internal tertentu untuk mengabaikan firewall. Artinya, jika Anda menetapkan aturan default
ke deny
, permintaan dari layanan tertentu yang ditujukan untuk lingkungan standar App Engine tidak akan diblokir. Ini adalah semua jenis traffic yang diminta dalam konfigurasi aplikasi itu sendiri, atau dikirim dari aplikasi yang sama. Permintaan yang mengabaikan aturan firewall dengan cara ini mencakup:
- Warmup request
- Tugas Cloud Scheduler menggunakan HTTP App Engine (termasuk Cron App Engine
- Tugas App Engine di Cloud Tasks (termasuk Task Queue App Engine)
Untuk aplikasi yang menggunakan lingkungan dan layanan standar App Engine yang dipaketkan dengan runtime generasi pertama, notifikasi dari Mail API lama juga mengabaikan firewall.
Mengizinkan permintaan masuk dari layanan Anda
Tabel berikut mencantumkan daftar rentang IP dan perilaku firewall App Engine untuk layanan umum. Rentang IP yang Anda gunakan bergantung pada dikirim tidaknya permintaan masuk ke versi yang berjalan di lingkungan standar atau lingkungan fleksibel App Engine.
Layanan | Rentang IP untuk permintaan yang dikirim ke lingkungan standar App Engine | Rentang IP untuk permintaan yang dikirim ke lingkungan fleksibel App Engine |
---|---|---|
Cloud Storage atau Blobstore | 0.1.0.30/32 | Tidak berlaku |
Tugas Cloud Scheduler yang menggunakan tugas HTTP App Engine dan App Engine di Cloud Tasks (termasuk Task Queue App Engine) | 0.1.0.2/32, mengabaikan aturan default firewall jika diatur untuk menolak | 0.1.0.2/32 |
Cron App Engine | 0.1.0.1/32 atau 0.1.0.2/32, mengabaikan aturan firewall default jika diatur untuk menolak | 0.1.0.1/32 atau 0.1.0.2/32 |
URL-fetch | 0.1.0.40/32 | 0.1.0.40/32 |
Instance Compute Engine dengan Akses Google Pribadi diaktifkan | 0.0.0.0/32 | 0.0.0.0/32 |
Bergantung pada kasus penggunaan Anda, petunjuk tambahan berikut mungkin berlaku saat mengonfigurasi aturan firewall App Engine:
- Permintaan dari Cron job App Engine yang baru dibuat atau diperbarui yang dikirim ke lingkungan fleksibel atau standar App Engine berasal dari
0.1.0.2
. Untuk Cron job yang dibuat dengan versi gcloud sebelumnya (sebelum versi 326.0.0), permintaan Cron akan berasal dari0.1.0.1
. Untuk mempelajari lebih lanjut cara mengidentifikasi permintaan dari layanan Cron App Engine, lihat Memvalidasi permintaan cron. - Jika aplikasi Anda berinteraksi dengan Cloud Load Balancing atau terhubung ke jaringan VPC, lihat bagian Interaksi dengan produk atau layanan lain di bawah.
Contoh standar App Engine
Aplikasi Anda yang berjalan di lingkungan standar memiliki dua layanan: frontend_service
dan backend_service
. frontend_service
menggunakan Cloud Tasks dengan HTTP App Engine untuk mengirim pesan ke backend_service
. Karena aturan firewall default
mengizinkan permintaan Cloud Tasks meskipun dikonfigurasi ke deny
, Anda tidak perlu membuat aturan firewall untuk Cloud Tasks.
Namun, jika ingin membatasi akses ke aplikasi Anda dan memblokir permintaan Cloud Tasks secara eksplisit, Anda perlu membuat aturan firewall deny
untuk rentang IP 0.1.0.2/32
.
Contoh fleksibel App Engine
Aplikasi Anda yang berjalan di lingkungan fleksibel memiliki dua layanan: frontend_service
dan backend_service
, serta mengonfigurasi firewall untuk menolak traffic secara default. frontend_service
menggunakan Cloud Tasks dengan HTTP App Engine untuk mengirim pesan ke backend_service
. Karena aturan firewall default
menolak permintaan Cloud Tasks, Anda harus membuat aturan firewall allow
untuk 0.1.0.2/32
.
Interaksi dengan produk atau layanan lain
Cloud Load Balancing
Jika Anda menggunakan Cloud Load Balancing dan NEG serverless, perhatikan hal-hal berikut:
- Load balancer tidak mengganggu atau berinteraksi dengan aturan firewall App Engine. Aturan firewall App Engine tidak dievaluasi hingga NEG serverless mengarahkan traffic ke App Engine.
Sebaiknya gunakan kontrol masuk sehingga aplikasi Anda hanya menerima permintaan yang dikirim dari load balancer (dan VPC jika Anda menggunakannya). Jika tidak, pengguna dapat menggunakan URL App Engine aplikasi Anda untuk mengabaikan load balancer, kebijakan keamanan Google Cloud Armor, sertifikat SSL, dan kunci pribadi yang diteruskan melalui load balancer.
Jika kontrol masuk Anda disetel untuk menerima traffic
internal-and-cloud-load-balancing
, biarkan aturan firewall App Engine default apa adanya (allow
), dan gunakan aturan firewall aplikasi web (WAF) Google Cloud Armor).
Mencegah akses ke konten yang di-cache
Firewall App Engine berada di belakang mekanisme yang meng-cache konten, misalnya proxy web dan browser. Ketika di-cache, konten tersebut akan ditayangkan secara publik dari URL tertentu hingga masa berlakunya habis dan dapat diakses bahkan setelah membuat aturan firewall baru.
Untuk mengetahui informasi tentang cara mengubah waktu habis masa berlaku default untuk konten statis atau mencegah konten statis di-cache, lihat Masa berlaku cache.Untuk mencegah output konten dinamis dari kode aplikasi Anda di-cache, gunakan header respons HTTP Cache-Control
dan Expires
. Untuk mengetahui informasi selengkapnya tentang header HTTP ini, termasuk cara mengontrol cache, lihat Menghindari cache.
Langkah selanjutnya
Ikuti petunjuknya di bagian Membuat Firewall untuk mempelajari cara mengonfigurasi aturan firewall App Engine.