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
.
Dalam keadaan tertentu, lingkungan fleksibel App Engine dapat secara otomatis mengonfigurasi aturan firewall di tingkat Virtual Private Cloud (VPC). Namun, perlu diperhatikan bahwa firewall VPC tidak berinteraksi dengan firewall App Engine.
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 |
---|---|---|
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 |
Instance Compute Engine yang menggunakan Cloud NAT untuk koneksi keluar | Alamat IP Cloud NAT yang dikonfigurasi | Alamat IP Cloud NAT yang dikonfigurasi |
Instance Compute Engine dengan alamat IP eksternal | Alamat IP eksternal instance | Alamat IP eksternal instance |
Instance Compute Engine tanpa alamat IP eksternal | 0.0.0.0/32 | 0.0.0.0/32 |
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 |
Cloud Storage atau Blobstore | 0.1.0.30/32 | Tidak berlaku |
URL-fetch | 0.1.0.40/32 | 0.1.0.40/32 |
Permintaan penghangat | 0.1.0.3/32, mengabaikan aturan {i>firewall<i} default jika disetel untuk menolak | Tidak berlaku |
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.
Firewall VPC
Firewall App Engine dikonfigurasi dan diterapkan secara terpisah dari firewall berbasis VPC. Aturan firewall VPC berlaku untuk resource yang berjalan di jaringan VPC, seperti virtual machine Compute Engine, sedangkan aturan firewall App Engine berlaku untuk permintaan masuk ke aplikasi atau layanan Anda.
Jika ada aturan firewall berbasis VPC (seperti aturan firewall VPC atau kebijakan firewall hierarkis) yang dikonfigurasi di lingkungan jaringan Anda, kedua tingkat firewall VPC dan firewall App Engine harus mengizinkan rentang IP permintaan masuk agar aplikasi App Engine Anda dapat menerimanya.
Untuk firewall tingkat VPC, Kebijakan firewall hierarkis dievaluasi sebelum aturan firewall VPC dan mengikuti urutan selama evaluasi firewall VPC. Permintaan yang diizinkan oleh firewall tingkat VPC dan firewall App Engine diterima oleh aplikasi atau layanan App Engine Anda. Jika firewall VPC menolak permintaan dari rentang IP yang sama yang diizinkan oleh firewall App Engine, akses tidak diizinkan ke aplikasi App Engine Anda.
VPC Bersama
Lingkungan fleksibel App Engine dapat membuat firewall, bergantung pada apakah aplikasi Anda dikonfigurasi untuk menggunakan jaringan VPC melalui VPC Bersama.
Jika aplikasi fleksibel App Engine Anda menggunakan VPC Bersama, lingkungan fleksibel App Engine tidak secara otomatis membuat aturan firewall. Jika Anda perlu mengontrol akses dan mengizinkan traffic di jaringan VPC, Anda dapat membuat aturan firewall di jaringan VPC Bersama.
Selain itu, untuk mengizinkan permintaan dari sumber traffic, Anda harus mengizinkan rentang IP yang sama di firewall VPC dan di firewall App Engine. Tanpa menentukan rentang IP di kedua tempat (firewall VPC dan firewall App Engine), rentang IP tersebut tidak akan diizinkan untuk mengakses aplikasi atau layanan App Engine Anda.
Jika aplikasi lingkungan fleksibel App Engine Anda tidak dikonfigurasi untuk menggunakan VPC Bersama, lingkungan fleksibel App Engine akan membuat hingga dua aturan firewall VPC tersembunyi, bergantung pada apakah aplikasi Anda menggunakan health check terpisah (default) atau health check lama. Aturan firewall tersembunyi ini memungkinkan penyaluran traffic dan traffic health check ke lingkungan fleksibel:
- Nama jaringan: Jaringan yang ditentukan di
app.yaml
, atau jaringan default jika tidak ada jaringan yang dikonfigurasi. - Tag target:
instance_tags
yang ditentukan dalam fileapp.yaml
. Secara default, jika tidak ada tag target yang disediakan, lingkungan fleksibel App Engine akan menghasilkan tag unik yang mengikuti formataef-INSTANCE_ID
. Tag ini hanya memengaruhi instance dalam versi fleksibel tertentu, dan aturan firewall akan menargetkan tag ini. - Direction of traffic: Masuk
- Action on match: Izinkan
- Rentang IP sumber:
35.191.0.0/16
dan130.211.0.0/22
- Protokol dan port:
- tcp:
8443
(untuk health check lama) atau10402
(untuk health check terpisah)
- tcp:
- Prioritas:
1000
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 mencegah konten Anda disimpan dalam cache, gunakan header respons HTTP Cache-Control
dan Expires
. Untuk mengetahui informasi selengkapnya tentang header HTTP ini, termasuk
cara mengontrol penyimpanan cache, lihat Menghindari caching.
Langkah selanjutnya
Ikuti petunjuk di bagian Membuat Firewall untuk mempelajari cara mengonfigurasi aturan firewall App Engine.