Memahami firewall App Engine

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 dari 0.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 file app.yaml. Secara default, jika tidak ada tag target yang disediakan, lingkungan fleksibel App Engine akan menghasilkan tag unik yang mengikuti format aef-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 dan 130.211.0.0/22
  • Protokol dan port:
    • tcp: 8443 (untuk health check lama) atau 10402 (untuk health check terpisah)
  • 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.