SQL Firewall PolarProxy memungkinkan Anda memblokir pernyataan SQL atau jenis pernyataan tertentu sebelum mencapai kluster PolarDB for MySQL. Gunakan aturan blacklist untuk mencegah operasi data yang tidak disengaja atau tidak sah—seperti pernyataan DELETE atau UPDATE tanpa batas, perintah DDL, atau pola SQL tertentu yang teridentifikasi selama insiden keamanan.
Cara kerja
PolarProxy mencegat pernyataan SQL di lapisan proxy dan membandingkannya dengan aturan blacklist yang telah Anda konfigurasikan. Pernyataan yang sesuai dengan aturan akan ditolak dengan error; semua pernyataan lain dilewatkan secara normal.
Tersedia tiga mode aturan:
| Mode | Cara Anda menentukan pola blokir | Paling cocok untuk |
|---|---|---|
| Fixed rule mode | Pilih kriteria bawaan di Konsol (jenis pernyataan, klausa WHERE yang hilang, kolom atau fungsi tertentu, tanda bintang wildcard) | Memblokir kategori luas pernyataan berisiko di seluruh kluster atau akun |
| Mode SQL parameterized kustom | Jalankan pernyataan target melalui PolarProxy dengan petunjuk khusus; PolarProxy menghasilkan templat parameterized yang cocok dengan nilai apa pun di posisi variabel | Memblokir kelompok pernyataan yang identik secara struktural, terlepas dari nilai literalnya |
| Custom SQL mode | Jalankan pernyataan persis melalui PolarProxy dengan petunjuk berbeda | Memblokir satu pernyataan spesifik; pernyataan dengan nilai parameter berbeda tidak terpengaruh |
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster PolarDB for MySQL dengan PolarProxy yang diaktifkan
Akses ke Konsol PolarDB
Buat aturan blacklist
Masuk ke Konsol PolarDB.
Di pojok kiri atas Konsol, pilih wilayah tempat kluster Anda dideploy.
Temukan kluster tersebut dan klik ID kluster.
Di panel navigasi sebelah kiri, pilih Settings and Management > Security Management.
Di tab SQL Firewall, klik Add di pojok kiri atas.
Di kotak dialog Create a Rule, pilih mode dan konfigurasikan parameter.
Mode aturan tetap
Konfigurasikan parameter yang dijelaskan dalam tabel berikut, lalu klik OK.
Informasi dasar
| Parameter | Wajib | Deskripsi |
|---|---|---|
| Rule Name | Ya | Nama aturan. Hanya boleh berisi angka dan huruf, serta tidak lebih dari 30 karakter. |
| Description | Tidak | Deskripsi aturan. Tidak lebih dari 64 karakter. |
| Endpoint | Ya | Titik akhir tempat aturan ini berlaku. |
Configurations
| Parameter | Wajib | Deskripsi |
|---|---|---|
| Rule Type | Ya | Pilih Blacklist Rule. |
| Current Mode | Tidak | Atur ke Protection Mode. PolarProxy memblokir pernyataan SQL yang sesuai dengan aturan. |
| Database Account Name | Tidak | Akun database tempat aturan ini berlaku. Opsi: All Accounts (berlaku untuk semua akun; biarkan bidang di sampingnya kosong), Include (hanya berlaku untuk akun yang tercantum; masukkan minimal satu nama akun), atau Exclude (berlaku untuk semua akun kecuali yang tercantum; masukkan minimal satu nama akun). Nama akun harus mengikuti salah satu format berikut: Username (contoh: user) atau Username@IP address (contoh: user@10.0.0.0). Pisahkan beberapa nama dengan koma (,). |
| **Block SQLs With Asterisks (*)** | Tidak | Atur ke Enable untuk memblokir pernyataan yang mengandung tanda bintang (*). |
| Block SQLs of Specific Types | Tidak | Atur ke Enable untuk memblokir pernyataan jenis tertentu. Jika diaktifkan, pilih minimal satu jenis: CREATE, DROP, ALTER, TRUNCATE, RENAME, INSERT, UPDATE, SELECT, atau DELETE. |
| Block SQLs Without WHERE | Tidak | Atur ke Enable untuk memblokir pernyataan UPDATE, SELECT, atau DELETE yang tidak memiliki klausa WHERE. Jika diaktifkan, pilih minimal satu jenis. Pengaturan ini hanya berlaku untuk pernyataan yang mereferensikan minimal satu nama tabel. Misalnya, SELECT 1; tidak diblokir. |
| Block SQLs With Specific Columns | Tidak | Atur ke Enable untuk memblokir pernyataan yang mereferensikan kolom tertentu. Jika diaktifkan, pilih All (semua kolom), Include (hanya kolom yang tercantum; masukkan minimal satu), atau Exclude (semua kolom kecuali yang tercantum; masukkan minimal satu). |
| Block SQLs With Specific Functions | Tidak | Atur ke Enable untuk memblokir pernyataan yang memanggil fungsi tertentu. Jika diaktifkan, pilih All (semua fungsi), Include (hanya fungsi yang tercantum; masukkan minimal satu), atau Exclude (semua fungsi kecuali yang tercantum; masukkan minimal satu). |
| Block SQLs With Specific Columns and Specific Functions | Tidak | Atur ke Enable untuk memblokir pernyataan yang memenuhi kombinasi kriteria kolom dan fungsi. Masukkan minimal satu fungsi dan satu nama kolom. Parameter Function Name dan Column Name masing-masing mendukung Include atau Exclude. Tabel berikut menunjukkan cara kombinasi tersebut berinteraksi. |
Kombinasi Function Name dan Column Name
| Function Name | Column Name | Pernyataan yang diblokir |
|---|---|---|
| Include | Include | Pernyataan yang mengandung fungsi yang ditentukan DAN kolom yang ditentukan |
| Include | Exclude | Pernyataan yang mengandung fungsi yang ditentukan DAN tidak mengandung kolom yang ditentukan |
| Exclude | Include | Pernyataan yang tidak mengandung fungsi yang ditentukan DAN mengandung kolom yang ditentukan |
| Exclude | Exclude | Pernyataan yang tidak mengandung fungsi maupun kolom yang ditentukan |
Mode SQL parameterized kustom
Dalam mode SQL parameterized kustom, PolarProxy menghasilkan templat parameterized dari pernyataan SQL nyata yang Anda berikan. Templat tersebut mengganti semua nilai literal dengan placeholder ?, dan PolarProxy memblokir setiap pernyataan di masa depan yang sesuai dengan struktur templat—terlepas dari nilai aktual yang digunakan.
Contoh: Jika Anda menambahkan select id from sqlblack_test where id = 1; ke dalam blacklist, PolarProxy menghasilkan templat select id from sqlblack_test where id = ?. Tanda tanya (?) dalam templat menunjukkan nilai apa pun.
Di kotak dialog Create a Rule, pilih Custom parameterized SQL mode. Konfigurasikan parameter yang diperlukan. Untuk bagian Configurations, Anda dapat menonaktifkan semua opsi.
Klik OK.
Hubungkan ke titik akhir yang ditentukan menggunakan database account name yang didefinisikan dalam aturan.
Tambahkan awalan petunjuk
/* store_to_blacklist */pada pernyataan SQL yang ingin Anda blokir, lalu jalankan./* store_to_blacklist */ select id from sqlblack_test where id = 1;PolarProxy menyimpan templat parameterized
select id from sqlblack_test where id = ?di tabelproxy_auditing.sql_list.Tunggu 5 detik. Setelah itu, setiap pernyataan yang sesuai dengan templat akan diblokir. PolarProxy mengembalikan error berikut:
ERROR 1141 (HY000): This SQL is rejected by SQL Firewall. Access denied for user 'xxx'@'x.x.x.x' to database 'xzh': This SQL is in blacklist bl_test.bl_testadalah nama tabel aturan blacklist.
Jika Anda menggunakan command line MySQL, tambahkan opsi-csaat menghubungkan. Tanpa-c, client MySQL menghapus petunjuk berupa komentar sebelum mengirim pernyataan ke server, sehingga/* store_to_blacklist */tidak berpengaruh.
Mode SQL kustom
Dalam mode SQL kustom, PolarProxy hanya memblokir pernyataan persis yang Anda berikan—termasuk nilai parameter spesifiknya. Pernyataan dengan nilai berbeda tidak diblokir.
Di kotak dialog Create a Rule, pilih Custom SQL mode. Konfigurasikan parameter yang diperlukan. Untuk bagian Configurations, Anda dapat menonaktifkan semua opsi.
Klik OK.
Hubungkan ke titik akhir yang ditentukan menggunakan database account name yang didefinisikan dalam aturan.
Tambahkan awalan petunjuk
/* orginal_store_to_blacklist */pada pernyataan yang ingin Anda blokir, lalu jalankan./* orginal_store_to_blacklist */ update t set k = 2 where id = 2;PolarProxy menyimpan pernyataan persis ini di tabel
proxy_auditing.org_sql_list.Tunggu 5 detik. Setelah itu, menjalankan
update t set k = 2 where id = 2;pada kluster tersebut akan diblokir. Pernyataan dengan nilai berbeda, sepertiupdate t set k = 3 where id = 5;, tidak terpengaruh. PolarProxy mengembalikan error berikut saat pernyataan yang sesuai diblokir:ERROR 1141 (HY000): This SQL is rejected by SQL Firewall. Access denied for user 'xxx'@'x.x.x.x' to database 'xzh': This SQL is in blacklist bl_test.
Jika Anda menggunakan command line MySQL, tambahkan opsi-csaat menghubungkan. Tanpa-c, client MySQL menghapus petunjuk berupa komentar sebelum mengirim pernyataan ke server, sehingga/* orginal_store_to_blacklist */tidak berpengaruh.
Aktifkan atau nonaktifkan aturan blacklist
Masuk ke Konsol PolarDB.
Di pojok kiri atas Konsol, pilih wilayah tempat kluster Anda dideploy.
Temukan kluster tersebut dan klik ID kluster.
Di panel navigasi sebelah kiri, pilih Settings and Management > Security Management.
Di tab SQL Firewall, temukan aturan tersebut dan alihkan tombol Enable/Disable.
Di dialog konfirmasi, klik OK.
Untuk mengaktifkan atau menonaktifkan beberapa aturan sekaligus, pilih aturan tersebut dalam daftar lalu klik Enable atau Disable.
Ubah aturan blacklist
Masuk ke Konsol PolarDB.
Di pojok kiri atas Konsol, pilih wilayah tempat kluster Anda dideploy.
Temukan kluster tersebut dan klik ID kluster.
Di panel navigasi sebelah kiri, pilih Settings and Management > Security Management.
Di tab SQL Firewall, temukan aturan tersebut dan klik Modify di kolom Actions.
Di kotak dialog Modify a Rule, perbarui parameter sesuai kebutuhan, lalu klik OK.
Nama aturan tidak dapat diubah setelah dibuat. Untuk memperbarui pernyataan SQL yang tersimpan dalam aturan mode SQL parameterized kustom atau mode SQL kustom, Anda harus menghapus pernyataan tersebut langsung dari tabel dasarnya dan menambahkannya kembali. Hal ini tidak dapat dilakukan melalui Konsol.
Hapus aturan blacklist
Masuk ke Konsol PolarDB.
Di pojok kiri atas Konsol, pilih wilayah tempat kluster Anda dideploy.
Temukan kluster tersebut dan klik ID kluster.
Di panel navigasi sebelah kiri, pilih Settings and Management > Security Management.
Di tab SQL Firewall, temukan aturan tersebut dan klik Delete di kolom Actions.
Di dialog konfirmasi, klik OK.
Untuk menghapus beberapa aturan sekaligus, pilih aturan tersebut dalam daftar lalu klik Delete.
Hapus pernyataan SQL yang tersimpan dari aturan kustom
Menonaktifkan atau menghapus aturan di Konsol menghentikan penegakan aturan, tetapi pernyataan SQL yang tersimpan tetap ada di tabel dasar. Jika Anda mengaktifkan kembali aturan tersebut nanti, PolarProxy akan melanjutkan pemblokiran berdasarkan pernyataan yang tersimpan tersebut.
Untuk sepenuhnya menghapus pernyataan yang tersimpan, hubungkan ke node primary menggunakan akun super administrator dan hapus baris terkait langsung dari tabel tersebut.
Jangan menjalankan pernyataan DROP terhadap tabel-tabel ini. Hanya hapus baris spesifik yang ingin Anda hapus.
Mode SQL parameterized kustom
Pernyataan yang tersimpan berada di tabel proxy_auditing.sql_list. Hapus baris terkait dari tabel ini. Templat berhenti mencocokkan dalam waktu 5 detik.
Mode SQL kustom
Pernyataan yang tersimpan berada di tabel proxy_auditing.org_sql_list. Hapus baris terkait dari tabel ini. Pemblokiran berhenti berlaku dalam waktu 5 detik.