PolarDB PolarProxy menyediakan fitur SQL firewall yang dapat mengidentifikasi pernyataan SQL yang diizinkan dan diblokir setelah Anda mengonfigurasi aturan blacklist dan whitelist. Topik ini menjelaskan fitur SQL firewall tersebut.
Fitur SQL firewall berada dalam fase maintenance dan tidak lagi menerima pembaruan fitur. Sebagai alternatif, gunakan fitur SQL throttling di Database Autonomy Service (DAS).
Informasi latar belakang
Jika database Anda diakses secara ilegal, penyerang dapat memperoleh seluruh data di dalamnya. Bahkan dalam operasi O&M rutin sekalipun, eksekusi pernyataan DELETE tanpa klausa WHERE dapat mengakibatkan penghapusan tabel secara tidak sengaja.
Untuk mencegah operasi berisiko tinggi semacam ini, PolarProxy menyediakan fitur SQL firewall yang memungkinkan Anda mengonfigurasi aturan blacklist dan whitelist guna mengizinkan atau memblokir pernyataan SQL tertentu. Gambar berikut menunjukkan cara kerja fitur SQL firewall.
Prasyarat
PolarDB PolarProxy versi V2.5.1 atau lebih baru. Untuk informasi lebih lanjut tentang cara melihat versi saat ini dan melakukan upgrade PolarProxy, lihat Upgrade versi minor kluster PolarDB.
Batasan
Setelah fitur SQL firewall diaktifkan, PolarProxy membuat sebuah database bernama
database:proxy_auditingserta dua tabel bernamasql_listdan org_sql_list di kluster saat ini. Tabel sql_list menyimpan pernyataan SQL berparameter dari aturan blacklist dan whitelist, sedangkan tabelorg_sql_listmenyimpan pernyataan SQL dari aturan blacklist. Setiap tabel dapat menyimpan hingga 500.000 pernyataan SQL.Aturan yang pertama kali dibuat hanya berlaku untuk koneksi baru. Setelah dimodifikasi, perubahan tersebut berlaku pada koneksi yang sudah ada setelah lima detik.
Pernyataan SQL dalam aturan blacklist atau whitelist yang dibuat dalam mode custom parameterized SQL atau mode custom SQL tidak langsung diblokir saat aturan dibuat, melainkan baru diblokir setelah proses pembuatan aturan selesai.
Untuk akun dan endpoint yang sama, Anda tidak dapat mengaktifkan aturan blacklist dan whitelist secara bersamaan.
Multi-statements tidak didukung; semua multi-statements akan diblokir.
Pernyataan SQL yang tidak dapat diurai oleh PolarProxy dicatat dalam log audit firewall tetapi tidak diblokir. Misalnya, pernyataan SELECT yang mengandung kesalahan sintaksis tidak akan diblokir.
Pernyataan SQL dalam aturan blacklist atau whitelist yang dibuat dalam mode custom parameterized SQL atau mode custom SQL tetap disimpan meskipun aturan tersebut dinonaktifkan atau dihapus. Jika aturan diaktifkan kembali, aturan tersebut tetap berlaku untuk akun yang sama. Untuk menghapus sepenuhnya aturan blacklist atau whitelist tersebut, Anda dapat terhubung ke node primary dalam kluster menggunakan akun super administrator dan menghapus pernyataan SQL tersebut.
Aturan blacklist dan whitelist hanya dapat memblokir perintah SQL umum (3) atau perintah PREPARE (22). Perintah lain tidak diblokir. Sebagai contoh, setelah Anda terhubung ke kluster menggunakan command line MySQL, pernyataan USE db; dikonversi oleh command line MySQL menjadi perintah COM_INIT_DB(1), yang tidak diblokir.
Dampak terhadap performa
Setelah mengaktifkan aturan blacklist, overhead performa kurang dari 10% akan terjadi.
Jika aturan whitelist diaktifkan dan tidak ada log alert yang dihasilkan, overhead performa sekitar 10% akan terjadi.
Jika log alert dihasilkan untuk semua pernyataan SQL yang dieksekusi, laju permintaan berkurang 20% hingga 30% dalam kondisi bisnis normal. Namun, tidak semua pernyataan SQL memicu log alert—hanya beberapa pernyataan tertentu yang dapat memicunya. Oleh karena itu, dalam kondisi bisnis normal, fitur aturan blacklist atau whitelist tidak memberikan dampak signifikan terhadap laju permintaan.
Fitur aturan blacklist atau whitelist
Blacklist rule feature: Anda dapat mengonfigurasi aturan blacklist untuk memblokir jenis atau pernyataan SQL tertentu. Ketika pernyataan SQL yang ditambahkan ke aturan blacklist dieksekusi, PolarProxy akan memblokirnya. Untuk informasi lebih lanjut, lihat Konfigurasi aturan blacklist.
Whitelist rule feature: Pernyataan SQL yang terkait dengan bisnis dilatih terlebih dahulu sebelum dapat diizinkan oleh aturan whitelist. Setelah mode proteksi diaktifkan, hanya pernyataan SQL yang ditambahkan ke aturan whitelist yang diizinkan. Untuk informasi lebih lanjut, lihat Atur aturan whitelist.