Netmedia Framecode
IT Solutions / 19 Dec 2024 - 08:29 WIB

Bagaimana cara melakukan pemblokiran geografis dengan Gateway API

  • Arlan Butar Butar
  • Written by

    Arlan Butar Butar

  • Viewed

    107

Bagaimana cara melakukan pemblokiran geografis dengan Gateway API

US - NGROK, Bayangkan Anda merilis API baru yang menyediakan data cuaca untuk lokasi di seluruh dunia. Kecuali, karena beberapa alasan, satelit cuaca Anda memiliki dua titik buta di dunia. Satelit tersebut tidak dapat menampilkan informasi cuaca yang akurat untuk negara kepulauan Samoa Amerika dan Islandia.

Saat Anda berupaya memperbaiki masalah tersebut, Anda tidak ingin membuat pengguna di kedua negara frustrasi dengan memberikan informasi yang tidak akurat. Sebaliknya, Anda menginginkan pengalaman pengguna yang bersih dengan pesan kesalahan khusus. Anda dapat melakukannya dengan pemblokiran geografis menggunakan gateway API Anda.

Pemblokiran geografis adalah strategi yang membatasi akses ke API Anda berdasarkan lokasi geografis permintaan atau Titik Kehadiran (PoP) regional yang menerima permintaan tersebut. Lokasi diambil dari registri geolokasi, yang menyimpan informasi geolokasi dan memetakannya ke alamat IP di wilayah tersebut. Gateway API seperti ngrok dapat menggunakan informasi ini untuk memfilter, merutekan, dan memblokir permintaan.

Mengapa pemblokiran geografis penting

Pada intinya, pemblokiran geografis adalah tentang kontrol. Dengan API yang sering kali terekspos secara global, kemampuan untuk memblokir lalu lintas dari wilayah tertentu dapat meningkatkan keamanan, mengurangi risiko, dan memastikan kepatuhan. Dalam contoh kami, kami ingin membatasi permintaan yang mencari data cuaca di wilayah yang tidak didukung oleh API kami. Namun, Anda mungkin memiliki alasan lain untuk memblokir permintaan secara geografis. 

Misalnya, jika Anda beroperasi di wilayah dengan undang-undang privasi data yang ketat, Anda mungkin ingin membatasi akses dari negara-negara dengan kepatuhan yang tidak pasti. Demikian pula, memblokir lalu lintas dari wilayah dengan aktivitas berbahaya yang tinggi—seperti botnet atau serangan DDoS berulang—dapat membantu mengurangi permukaan serangan Anda.

Pemblokiran geografis juga dapat meningkatkan kinerja. Membatasi lalu lintas ke wilayah tempat Anda mengetahui lokasi pengguna dapat menghindari beban yang tidak perlu pada server dan mengurangi latensi bagi pengguna yang sah.

Pemblokiran geografis dengan ngrok

ngrok memungkinkan pemblokiran geografis melalui ekspresi Common Expression Language (CEL) di mesin Traffic Policy. Ekspresi tersebut juga mendukung berbagai variabel dan makro. Variabel dalam conn.geonamespace memungkinkan ngrok untuk memblokir permintaan berdasarkan lokasi permintaan. conn.geo.country_codeVariabel tersebut memungkinkan Anda membuat ekspresi menggunakan kode negara dua huruf. Dalam kasus API cuaca yang disebutkan sebelumnya, conn.geo.country_codememungkinkan Anda mengidentifikasi semua permintaan dari Amerika Samoa (AS) dan Islandia (IS) menggunakan kode negara mereka. Untuk memblokir permintaan tersebut dan mengembalikan custom-response, aturan Traffic Policy akan terlihat seperti ini:

  • on_http_request: - expressions: - "conn.geo.country_code in ['AS', 'IS']" name: "Block traffic from unwanted countries" actions: - type: "custom-response" config: status_code: 403 content: "Forbidden request due to unsupported country of origin" on_http_response: []

Aturan tersebut memblokir semua permintaan yang berasal dari negara yang tercantum dan mengembalikan custom-responsewith status_code: 403.

Jika kebutuhan pemblokiran geografis Anda memerlukan ketelitian yang lebih tinggi, conn.geonamespace juga memiliki variabel untuk kota, garis bujur, garis lintang, wilayah server, dan bahkan radius–kilometer di sekitar garis lintang dan garis bujur tempat pemblokiran conn.client_ipkemungkinan berasal.

Anda bahkan dapat menggabungkan ekspresi. Jika Anda hanya ingin memblokir titik akhir tertentu, ekspresi tersebut akan terlihat seperti ini:

  • - expressions: - "conn.geo.country_code in ['AS', 'IS']" - “req.URL.contains(‘/api/forecast’)”

Pemblokiran geografis tidak hanya berlaku untuk koneksi HTTP. Anda juga dapat memfilter permintaan pada lapisan TCP . Dengan menggunakan Kebijakan Lalu Lintas, variabel dari conn.geonamespace masih tersedia untuk membangun ekspresi. Satu-satunya perbedaan adalah ekspresi akan berada di bawah on_tcp_connectfase, bukan on_http_connectfase.

Meskipun ada strategi lain untuk pemblokiran geografis, seperti pemblokiran geografis berbasis DNS dan pemblokiran pada lapisan aplikasi, pemblokiran dengan lokasi IP klien merupakan cara yang paling umum untuk melakukan pemblokiran geografis.

Hal-hal yang perlu dipertimbangkan dengan pemblokiran geografis

Pemblokiran geografis dapat menjadi alat yang ampuh, tetapi ada beberapa faktor yang perlu diingat:

  1. Positif palsu : Tidak semua alamat IP terhubung langsung ke lokasi tertentu. Menentukan lokasinya bisa jadi sulit saat pengguna terhubung melalui VPN dan layanan proxy.
  2. Dampak kinerja : Mungkin ada implikasi kinerja tergantung pada bagaimana dan di mana Anda menerapkan pemblokiran geografis. Pemblokiran geografis berbasis IP dengan layanan seperti ngrok biasanya terjadi di awal siklus permintaan dan berdampak minimal pada aplikasi Anda. Namun, pemblokiran di tingkat aplikasi dapat menambah latensi pada permintaan Anda.
  3. Kepatuhan vs. kegunaan : Pemblokiran geografis dapat membantu memastikan kepatuhan terhadap hukum regional, tetapi jika dilakukan terlalu luas, hal itu dapat membuat frustrasi pengguna yang seharusnya diizinkan mengakses. Perhatikan wilayah tempat pengguna Anda mungkin bepergian atau menggunakan layanan lintas batas, dan seimbangkan pemblokiran dengan kebutuhan akses yang sah.

Memulai dengan pemblokiran geografis

Untuk mulai bekerja dengan geolokasi permintaan pada API Anda, daftar untuk akun ngrok dan periksa dokumentasi untuk modul Kebijakan Lalu Lintas ngrok untuk melihat cara merumuskan ekspresi dan tindakan. Kemudian, pelajari bagian Variabel Geo Koneksi dari dokumen Variabel HTTP untuk menemukan berbagai cara mengambil geoinformasi untuk permintaan.

Share