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.

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

    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 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).

    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.