Ringkasan Keamanan Aplikasi

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

Keamanan adalah fitur inti Google Cloud. Namun, terdapat beberapa langkah yang harus Anda lakukan untuk melindungi aplikasi App Engine dan mengidentifikasi kerentanan.

Gunakan fitur berikut untuk memastikan bahwa aplikasi App Engine Anda aman. Untuk mempelajari lebih lanjut Model Keamanan Google dan langkah-langkah tersedia yang dapat Anda ambil untuk mengamankan project Google Cloud, baca Keamanan Google Cloud Platform.

Permintaan HTTPS

Gunakan permintaan HTTPS untuk mengakses aplikasi App Engine Anda dengan aman. Tergantung pada cara aplikasi dikonfigurasi, Anda memiliki opsi berikut:

Domain appspot.com
  • Gunakan awalan URL https untuk mengirim permintaan HTTPS ke layanan default project Google Cloud Anda, misalnya:
    https://PROJECT_ID.REGION_ID.r.appspot.com
  • Untuk menargetkan resource tertentu di aplikasi App Engine Anda, gunakan sintaksis -dot- untuk memisahkan setiap resource yang ingin ditargetkan, misalnya:
    https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

  • Untuk mengonversi URL HTTP menjadi URL HTTPS, ganti titik di antara setiap resource dengan -dot-, misalnya:
    http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
    https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

Untuk informasi selengkapnya tentang URL HTTPS dan resource penargetan, baca Cara Permintaan Dirutekan.

Domain kustom

Untuk mengirim permintaan HTTPS dengan domain kustom, Anda dapat menggunakan sertifikat SSL terkelola yang disediakan oleh App Engine. Untuk informasi selengkapnya, lihat Mengamankan Domain Kustom dengan SSL.

Pengendali aplikasi

Untuk memaksa HTTPS bagi pengendali aplikasi, Anda dapat menentukan elemen secure: always untuk setiap pengendali di app.yaml, misalnya:

handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301

Penggunaan secure: always akan mengalihkan semua traffic HTTP ke URL HTTPS dengan jalur yang sama. Lihat referensi konfigurasi app.yaml untuk mengetahui informasi selengkapnya.

Kontrol akses

Di setiap project Google Cloud, siapkan kontrol akses untuk menentukan akun yang dapat mengakses layanan dalam project tersebut, termasuk App Engine Anda dapat menetapkan peran yang berbeda ke akun yang berbeda untuk memastikan setiap akun hanya memiliki izin yang diperlukan guna mendukung aplikasi Anda. Untuk mengetahui detailnya, baca Menyiapkan Kontrol Akses.

Firewall App Engine

Firewall App Engine memungkinkan Anda mengontrol akses ke aplikasi App Engine melalui sekumpulan aturan yang dapat mengizinkan atau menolak permintaan dari rentang alamat IP yang ditentukan. Anda tidak dikenai biaya untuk traffic atau bandwidth yang diblokir oleh firewall. Buat firewall untuk:

Hanya mengizinkan traffic dari dalam jaringan tertentu
Pastikan hanya rentang alamat IP tertentu dari jaringan tertentu yang dapat mengakses aplikasi Anda. Misalnya, buat aturan untuk hanya mengizinkan rentang alamat IP dari dalam jaringan pribadi perusahaan Anda selama fase pengujian aplikasi. Kemudian, Anda dapat membuat dan mengubah aturan firewall untuk mengontrol cakupan akses selama proses rilis, sehingga hanya organisasi tertentu yang dapat mengakses aplikasi Anda, baik di dalam maupun di luar perusahaan, saat proses rilis untuk ketersediaan publik.
Hanya mengizinkan traffic dari layanan tertentu
Pastikan semua traffic ke aplikasi App Engine Anda di-proxy terlebih dahulu melalui layanan tertentu. Misalnya, jika menggunakan Firewall Aplikasi Web (WAF) pihak ketiga untuk mem-proxy permintaan yang ditujukan ke aplikasi, Anda dapat membuat aturan firewall untuk menolak semua permintaan kecuali yang diteruskan dari WAF Anda.
Memblokir alamat IP yang melanggar
Meskipun Google Cloud menerapkan banyak mekanisme untuk mencegah serangan, Anda dapat menggunakan firewall App Engine untuk memblokir traffic ke aplikasi dari alamat IP yang menunjukkan niat jahat atau melindungi aplikasi dari serangan denial-of-service dan bentuk pelanggaran serupa. Anda dapat menambahkan alamat IP atau subnetwork ke daftar tolak, sehingga permintaan yang dirutekan dari alamat dan subnetwork tersebut ditolak sebelum mencapai aplikasi App Engine Anda.

Untuk detail tentang cara membuat aturan dan mengonfigurasi firewall, baca Mengontrol Akses Aplikasi dengan Firewall.

Kontrol traffic masuk

Bagian ini menjelaskan cara menggunakan setelan traffic masuk untuk membatasi akses jaringan ke aplikasi App Engine Anda. Pada tingkat jaringan, secara default, resource apa pun di internet dapat menjangkau aplikasi App Engine Anda di URL appspot atau didomain kustom yang telah disiapkan di App Engine. Misalnya, URL appspot.com dapat memiliki format berikut: SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com.

Anda dapat mengubah setelan default ini dengan menentukan setelan yang berbeda untuk traffic masuk. Semua jalur traffic masuk, termasuk URL appspot.com default, tunduk pada setelan traffic masuk Anda. Traffic masuk ditetapkan di tingkat layanan.

Setelan traffic masuk yang tersedia

Berikut adalah setelan yang tersedia:

Setelan Deskripsi
Internal Batasan maksimum. Mengizinkan permintaan dari resource yang terpasang ke jaringan VPC project, seperti:
Permintaan dari sumber ini tetap berada dalam jaringan Google, meskipun permintaan tersebut mengakses layanan Anda di URL appspot.com. Permintaan dari sumber lain, termasuk internet, tidak dapat menjangkau layanan Anda di URL appspot.com atau domain kustom. Tidak ada dukungan untuk multi-tenancy, yaitu, beberapa domain kepercayaan dalam project yang sama.
Cloud Load Balancing dan Internal Mengizinkan permintaan dari resource berikut:
  • Resource yang diizinkan oleh setelan Internal yang lebih ketat
  • Load Balancer Aplikasi Eksternal
Gunakan setelan Cloud Load Balancing dan Internal untuk menerima permintaan dari Load Balancer Aplikasi eksternal, tetapi tidak langsung dari internet. Permintaan ke URL appspot.com mengabaikan Load Balancer Aplikasi eksternal, sehingga setelan ini mencegah permintaan eksternal mencapai URL appspot.com.
Semua Batasan minimum. Mengizinkan semua permintaan, termasuk permintaan langsung dari internet ke URL appspot.com.

Mengakses layanan internal

Pertimbangan berikut berlaku:

  • Untuk permintaan dari VPC Bersama, traffic hanya dianggap internal jika aplikasi App Engine di-deploy di project host VPC Bersama. Jika aplikasi App Engine di-deploy di project layanan VPC Bersama, hanya traffic dari jaringan yang dimiliki oleh project aplikasi itu sendiri yang bersifat internal. Semua traffic lainnya, termasuk traffic dari VPC Bersama lainnya, bersifat eksternal.

  • Saat mengakses layanan internal, panggil layanan seperti yang biasa Anda lakukan menggunakan URL publiknya, baik URL appspot.com default maupun domain kustom yang disiapkan di App Engine.

  • Untuk permintaan dari instance VM Compute Engine atau resource lain yang berjalan di dalam jaringan VPC pada project yang sama, tidak diperlukan penyiapan lebih lanjut.

  • Untuk permintaan dari layanan App Engine lain atau dari Cloud Run atau Cloud Functions dalam project yang sama, hubungkan layanan atau fungsi ke jaringan VPC dan rutekan semua traffic keluar melalui konektor, seperti yang dijelaskan dalam Menghubungkan ke jaringan VPC Bersama.

  • Permintaan dari resource dalam jaringan VPC pada project yang sama diklasifikasikan sebagai internal meskipun resource asalnya memiliki alamat IP publik.

  • Permintaan dari resource lokal yang terhubung ke jaringan VPC melalui Cloud VPN dianggap sebagai internal.

Melihat setelan traffic masuk

Konsol

  1. Buka halaman Layanan App Engine.

    Buka halaman Services

  2. Cari kolom Traffic Masuk. Untuk setiap layanan, nilai dalam kolom ini menunjukkan setelan traffic masuk sebagai salah satu dari Semua (default), Internal + Load Balancing, atau Internal.

gcloud

Untuk melihat setelan traffic masuk layanan menggunakan gcloud CLI:

gcloud app services describe SERVICE

Ganti SERVICE dengan nama layanan Anda.

Misalnya, untuk melihat setelan traffic masuk dan informasi lainnya terkait menjalankan layanan default:

gcloud app services describe default

Mengedit setelan traffic masuk

Konsol

  1. Buka halaman Layanan App Engine.

    Buka halaman Services

  2. Pilih layanan yang ingin Anda edit.

  3. Klik Edit setelan traffic masuk.

  4. Pilih setelan traffic masuk yang Anda inginkan dari menu, lalu klik Simpan.

gcloud

Untuk mengupdate setelan traffic masuk layanan menggunakan gcloud CLI:

gcloud app services update SERVICE --ingress=INGRESS

Ganti:

  • SERVICE: Nama layanan Anda.
  • INGRESS: Kontrol traffic masuk yang ingin Anda terapkan. Salah satu dari all, internal-only, atau internal-and-cloud-load-balancing.

Contoh:

  • Untuk mengupdate layanan default aplikasi App Engine agar hanya menerima traffic dari Cloud Load Balancing dan jaringan VPC yang ada dalam project yang sama:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • Untuk memperbarui layanan bernama "internal-requests" agar hanya menerima traffic dari jaringan VPC yang ada dalam project yang sama:

    gcloud app services update internal-requests --ingress=internal-only

Setelan traffic keluar

Jika menggunakan Akses VPC Serverless, Anda dapat menentukan setelan traffic keluar untuk layanan App Engine Anda.

Secara default, hanya permintaan ke alamat IP internal dan nama DNS internal yang dirutekan melalui konektor Akses VPC Serverless. Anda dapat menentukan setelan traffic keluar untuk layanan Anda di file app.yaml.

Setelan traffic keluar tidak kompatibel dengan layanan URL-fetch. Jika Anda belum melakukannya, nonaktifkan setelan default URL-fetch menggunakan soket dan menghentikan penggunaan eksplisit dari paket urlfetch. Menggunakan library urlfetch akan mengabaikan setelan traffic keluar, dan permintaan tidak akan dirutekan melalui konektor Akses VPC Serverless.

Untuk mengonfigurasi perilaku traffic keluar layanan App Engine Anda:

  1. Tambahkan atribut egress_setting ke kolom vpc_access_connector dari file app.yaml layanan Anda:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    Ganti:

    • PROJECT_ID dengan project ID Google Cloud Anda
    • REGION dengan region tempat konektor Anda berada
    • CONNECTOR_NAME dengan nama konektor Anda
    • EGRESS_SETTING dengan salah satu dari berikut ini:
      • private-ranges-only Default. Hanya permintaan ke rentang alamat IP RFC 1918 dan RFC 6598 atau nama DNS internal yang dirutekan ke jaringan VPC Anda. Semua permintaan lainnya dirutekan langsung ke internet.
      • all-traffic Semua permintaan keluar dari layanan dirutekan ke jaringan VPC Anda. Selanjutnya, permintaan akan mengikuti aturan firewall, DNS, dan perutean yang berlaku untuk jaringan VPC Anda. Perlu diperhatikan bahwa merutekan semua permintaan keluar ke jaringan VPC akan meningkatkan jumlah traffic keluar yang ditangani oleh konektor Akses VPC Serverless dan dapat dikenai biaya.
  2. Men-deploy layanan:

    gcloud app deploy
    

Pemindai keamanan

Web Security Scanner Google Cloud menemukan kerentanan dengan meng-crawl aplikasi App Engine Anda, mengikuti semua link tersebut dalam cakupan URL awal, dan mencoba menguji input pengguna dan pengendali peristiwa sebanyak mungkin.

Untuk menggunakan pemindai keamanan, Anda harus menjadi pemilik project Google Cloud. Untuk informasi selengkapnya tentang cara menetapkan peran, baca Menyiapkan Kontrol Akses.

Anda dapat menjalankan pemindaian keamanan dari konsol Google Cloud untuk mengidentifikasi kerentanan keamanan di aplikasi App Engine. Untuk mengetahui detail selengkapnya tentang cara menjalankan Security Scanner, baca Menggunakan Web Security Scanner.