Anda dapat membuat, menghapus, mengaktifkan, menonaktifkan, atau memodifikasi aturan blacklist untuk kluster di konsol PolarDB. Topik ini menjelaskan apa itu aturan blacklist dan cara mengonfigurasinya.
Aturan blacklist
PolarProxy memungkinkan Anda mengonfigurasi aturan blacklist untuk memblokir jenis-jenis pernyataan SQL tertentu atau pernyataan SQL spesifik.
Anda dapat mengonfigurasi aturan blacklist dengan salah satu cara berikut:
Fixed rule mode: Anda dapat mengonfigurasi aturan blacklist umum di konsol PolarDB. Setiap aturan dapat dikonfigurasi untuk berlaku pada akun Alibaba Cloud atau kluster. Untuk informasi lebih lanjut tentang aturan blacklist umum, lihat Tambahkan Aturan Blacklist.
Custom parameterized SQL mode: Anda dapat memarameterisasi semua variabel dalam pernyataan SQL yang ingin dieksekusi di database, menghasilkan template berparameter, dan mencatat template tersebut di database. PolarProxy memblokir pernyataan SQL yang cocok dengan template berparameter.
Custom SQL mode: Anda dapat menentukan pernyataan SQL yang akan diblokir tanpa perlu memarameterisasi variabel dari pernyataan tersebut. Pernyataan SQL yang menggunakan parameter lain tidak diblokir.
Buat aturan blacklist
Di pojok kiri atas, pilih wilayah tempat kluster diterapkan.
Temukan kluster dan klik ID-nya.
Di panel navigasi sisi kiri, pilih .
Di pojok kiri atas tab SQL Firewall, klik Add.
Di kotak dialog Create a Rule, konfigurasikan parameter yang diperlukan berdasarkan mode yang dipilih.
Fixed rule mode
Jika Anda memilih fixed rule mode, konfigurasikan parameter yang dijelaskan dalam tabel berikut.
Tabel 1. Parameter Aturan Blacklist Parameter
Diperlukan
Deskripsi
Basic Information
Rule Name
Ya
Nama aturan. Nama harus memenuhi persyaratan berikut:
Dapat berisi angka dan huruf.
Dapat memiliki panjang hingga 30 karakter.
Description
Tidak
Deskripsi aturan.
CatatanDeskripsi dapat memiliki panjang hingga 64 karakter.
Endpoint
Ya
Titik akhir tempat aturan saat ini berlaku.
Configurations
Rule Type
Ya
Tipe aturan. Pilih Blacklist Rule.
Current Mode
Tidak
Mode aturan. Tetapkan nilainya ke Protection Mode. PolarProxy memblokir pernyataan SQL yang sesuai dengan aturan blacklist.
Database Account Name
Tidak
Nama akun database tempat aturan berlaku. Nilai valid:
All Accounts: Aturan berlaku untuk semua akun database dalam kluster. Bidang di sebelah kanan opsi Semua Akun dapat dibiarkan kosong.
Include: Aturan hanya berlaku untuk akun database tertentu. Anda harus memasukkan setidaknya satu nama akun database di bidang di sebelah kanan opsi Termasuk. Pisahkan beberapa nama akun database dengan koma (,).
Exclude: Aturan berlaku untuk semua akun database dalam kluster kecuali akun database tertentu. Anda harus memasukkan setidaknya satu nama akun database di bidang di sebelah kanan opsi Kecualikan. Pisahkan beberapa nama akun database dengan koma (,).
CatatanNama akun database harus dalam salah satu format berikut:
Username. Contoh:user.Username@Alamat IP. Contoh:user@10.0.0.0.
Block SQLs With Asterisks (*)
Tidak
Menentukan apakah akan memblokir pernyataan SQL yang mengandung asterisk (
*). Nilai valid:Enable: memblokir pernyataan SQL yang mengandung asterisk (
*).Disable: tidak memblokir pernyataan SQL yang mengandung asterisk (
*).
Block SQLs of Specific Types
Tidak
Menentukan apakah akan memblokir pernyataan SQL jenis tertentu. Nilai valid:
Enable: memblokir pernyataan SQL jenis tertentu. Jika Anda menetapkan parameter Blokir SQL Jenis Tertentu ke Enable, pilih setidaknya satu jenis pernyataan SQL. Jenis pernyataan SQL berikut didukung:
CREATEDROPALTERTRUNCATERENAMEINSERTUPDATESELECTDELETE
Disable: tidak memblokir pernyataan SQL jenis tertentu.
Block SQLs Without WHERE
Tidak
Menentukan apakah akan memblokir pernyataan SQL yang tidak mengandung klausa WHERE. Nilai valid:
Enable: memblokir pernyataan SQL jenis tertentu yang tidak mengandung klausa WHERE. Jika Anda menetapkan parameter Blokir SQL Tanpa WHERE ke Enable, pilih setidaknya satu jenis pernyataan SQL. Jenis pernyataan SQL berikut didukung:
UPDATESELECTDELETE
Disable: tidak memblokir pernyataan SQL jenis tertentu yang tidak mengandung klausa WHERE.
CatatanParameter ini hanya valid untuk pernyataan
SELECT,UPDATE, danDELETEyang mengandung setidaknya satu nama tabel. PolarProxy tidak memblokir pernyataanSELECT 1;.Block SQLs With Specific Columns
Tidak
Menentukan apakah akan memblokir pernyataan SQL yang mengandung nama kolom tertentu. Nilai valid:
Enable: memblokir pernyataan SQL yang mengandung nama kolom tertentu. Jika Anda menetapkan parameter Blokir SQL dengan Kolom Tertentu ke Enable, opsi berikut didukung:
All: Aturan berlaku untuk semua nama kolom dalam kluster. Bidang di sebelah kanan opsi Semua dapat dibiarkan kosong.
Include: Aturan hanya berlaku untuk nama kolom tertentu. Anda harus memasukkan setidaknya satu nama kolom database di bidang di sebelah kanan opsi Termasuk. Pisahkan beberapa nama kolom dengan koma (,).
Exclude: Aturan berlaku untuk semua nama kolom dalam kluster kecuali nama kolom tertentu. Anda harus memasukkan setidaknya satu nama kolom di bidang di sebelah kanan opsi Kecualikan. Pisahkan beberapa nama kolom dengan koma (,).
Disable: tidak memblokir pernyataan SQL yang mengandung nama kolom tertentu.
Block SQLs With Specific Functions
Tidak
Menentukan apakah akan memblokir pernyataan SQL yang mengandung fungsi tertentu. Nilai valid:
Enable: memblokir pernyataan SQL yang mengandung fungsi tertentu. Jika Anda menetapkan parameter Blokir SQL dengan Fungsi Tertentu ke Enable, opsi berikut didukung:
All: Aturan berlaku untuk semua fungsi dalam kluster. Bidang di sebelah kanan opsi Semua dapat dibiarkan kosong.
Include: Aturan hanya berlaku untuk fungsi tertentu. Anda harus memasukkan setidaknya satu fungsi di bidang di sebelah kanan opsi Termasuk. Pisahkan beberapa fungsi dengan koma (,).
Exclude: Aturan berlaku untuk semua fungsi dalam kluster kecuali fungsi tertentu. Anda harus memasukkan setidaknya satu fungsi di bidang di sebelah kanan opsi Kecualikan. Pisahkan beberapa fungsi dengan koma (,).
Disable: tidak memblokir pernyataan SQL yang mengandung fungsi tertentu.
Block SQLs With Specific Columns and Specific Functions
Tidak
Menentukan apakah akan memblokir pernyataan SQL yang mengandung fungsi tertentu dan nama kolom tertentu. Nilai valid:
Enable: memblokir pernyataan SQL yang mengandung fungsi tertentu dan nama kolom tertentu. Jika Anda menetapkan parameter Blokir SQL dengan Kolom Tertentu dan Fungsi Tertentu ke Enable, Anda harus memasukkan setidaknya satu function dan satu column name di bidang di sebelah kanan.
Jika Anda menetapkan parameter Function Name ke Include dan parameter Column Name ke Include, aturan berlaku untuk pernyataan SQL yang mengandung fungsi tertentu dan nama kolom tertentu.
Jika Anda menetapkan parameter Function Name ke Include dan parameter Column Name ke Exclude, aturan berlaku untuk pernyataan SQL yang mengandung fungsi tertentu dan tidak mengandung nama kolom tertentu.
Jika Anda menetapkan parameter Function Name ke Exclude dan parameter Column Name ke Include, aturan berlaku untuk pernyataan SQL yang tidak mengandung fungsi tertentu dan mengandung nama kolom tertentu.
Jika Anda mengatur parameter Function Name ke Exclude dan parameter Column Name ke Exclude, aturan tersebut berlaku untuk pernyataan SQL yang tidak mencakup fungsi tertentu atau nama kolom tertentu.
Disable: tidak memblokir pernyataan SQL yang mengandung fungsi tertentu dan nama kolom tertentu.
Klik OK.
Custom parameterized SQL mode
Jika Anda memilih custom parameterized SQL mode, konfigurasikan parameter yang diperlukan. Untuk informasi lebih lanjut tentang parameter, lihat Tambahkan Aturan Blacklist.
CatatanJika Anda memilih custom parameterized SQL mode, Anda dapat menonaktifkan semua aturan blacklist dalam parameter Configurations yang dijelaskan di Tabel 1.
Klik OK.
Sambungkan ke titik akhir database yang ditentukan menggunakan database account name yang telah didefinisikan sebelumnya. Anda dapat menentukan pernyataan SQL yang ingin diblokir dengan menambahkan perintah
hintberikut sebelum pernyataan SQL:hint(/* store_to_blacklist */). Sebagai contoh, untuk memblokir pernyataanselect id from sqlblack_test where id = 1;, jalankan perintah berikut:/* store_to_blacklist */ select id from sqlblack_test where id = 1;Template Berparameter:
select id from sqlblack_test where id = ?Tanda tanya (
?) dalam template menunjukkan nilai apa pun.Tunggu selama 5 detik. Ketika Anda menggunakan akun untuk mengeksekusi pernyataan SQL yang sesuai dengan template berparameter di kluster yang ditentukan, PolarProxy memblokir pernyataan tersebut. Informasi berikut ditampilkan setelah pernyataan SQL 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.bl_testadalah nama tabel aturan blacklist.
CatatanJika Anda menggunakan baris perintah MySQL, Anda harus menambahkan opsi
-c. Jika tidak, perintahhinttidak akan berlaku.Pernyataan SQL berparameter mulai berlaku setelah 5 detik.
Custom SQL mode
Jika Anda memilih custom SQL mode, konfigurasikan parameter yang diperlukan. Untuk informasi lebih lanjut tentang parameter, lihat Tambahkan Aturan Blacklist.
CatatanJika Anda memilih custom SQL mode, Anda dapat menonaktifkan semua opsi dalam parameter Configurations yang dijelaskan di Tabel 1.
Klik OK.
Sambungkan ke titik akhir database yang ditentukan menggunakan database account name yang telah didefinisikan sebelumnya. Anda dapat menentukan pernyataan SQL yang ingin diblokir dengan menambahkan perintah
hintberikut sebelum pernyataan SQL:hint(/* orginal_store_to_blacklist */). Sebagai contoh, untuk memblokir pernyataanupdate t set k = 2 where id = 2;, jalankan perintah berikut:/* orginal_store_to_blacklist */ update t set k = 2 where id = 2;Tunggu selama 5 detik. Ketika Anda menggunakan akun untuk mengeksekusi pernyataan
update t set k = 2 where id = 2;pada kluster yang ditentukan, PolarProxy memblokir pernyataan tersebut. Namun, pernyataan SQL yang menggunakan parameter lain tidak diblokir. Informasi berikut ditampilkan setelah pernyataan SQL 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.bl_testadalah nama tabel aturan blacklist.
CatatanJika Anda menggunakan baris perintah MySQL, Anda harus menambahkan opsi
-c. Jika tidak, perintahhinttidak akan berlaku.Pernyataan SQL berparameter mulai berlaku setelah 5 detik.
Aktifkan atau nonaktifkan aturan blacklist
Di pojok kiri atas, pilih wilayah tempat kluster diterapkan.
Temukan kluster dan klik ID-nya.
Di panel navigasi sisi kiri, pilih .
Pada tab SQL Firewall, temukan aturan yang ingin dikelola dan aktifkan Enable/Disable.
CatatanAnda dapat memilih beberapa aturan dalam daftar aturan lalu klik Enable atau Disable untuk mengaktifkan atau menonaktifkan aturan secara massal.
Dalam pesan Enable atau Disable, klik OK.
Modifikasi aturan blacklist
Di pojok kiri atas, pilih wilayah tempat kluster diterapkan.
Temukan kluster dan klik ID-nya.
Di panel navigasi sisi kiri, pilih .
Pada tab SQL Firewall, temukan aturan yang ingin dikelola lalu klik Modify di kolom Actions. Dalam kotak dialog Modify a Rule, modifikasi parameter berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang parameter, lihat Tambahkan Aturan Blacklist.
CatatanSaat Anda memodifikasi aturan, Anda tidak dapat memodifikasi rule name.
Klik OK.
Anda tidak dapat memodifikasi pernyataan SQL berparameter dalam aturan yang dibuat di custom parameterized SQL mode dan pernyataan SQL dalam aturan yang dibuat di custom SQL mode di konsol PolarDB. Anda harus menghapus pernyataan SQL dari tabel lalu menambahkan pernyataan tersebut lagi.
Hapus aturan blacklist
Di pojok kiri atas, pilih wilayah tempat kluster diterapkan.
Temukan kluster dan klik ID-nya.
Di panel navigasi sisi kiri, pilih .
Pada tab SQL Firewall, temukan aturan yang ingin dikelola lalu klik Delete di kolom Actions.
CatatanAnda dapat memilih beberapa aturan dalam daftar aturan lalu klik Delete untuk menghapus aturan secara massal.
Dalam pesan Delete, klik OK.
Batalkan aturan blacklist yang dibuat dalam mode SQL berparameter kustom atau mode SQL kustom
Batalkan aturan blacklist yang dibuat dalam custom parameterized SQL mode
Anda dapat menggunakan salah satu metode berikut untuk membatalkan aturan blacklist yang dibuat dalam custom parameterized SQL mode:
Lihat bagian Aktifkan atau Nonaktifkan Aturan Blacklist atau Hapus Aturan Blacklist dari topik ini.
CatatanJika Anda hanya menonaktifkan aturan blacklist yang dibuat dalam mode SQL berparameter kustom di konsol PolarDB dan tidak menghapus pernyataan SQL berparameter dari tabel
proxy_auditing.sql_list, aturan untuk akun yang sama masih berlaku ketika Anda mengaktifkan kembali aturan blacklist di konsol PolarDB.Sambungkan ke node utama dalam kluster menggunakan akun administrator super dan hapus pernyataan SQL dari tabel
proxy_auditing.sql_list. Pernyataan SQL berparameter tidak lagi diblokir setelah 5 detik.CatatanSaat Anda menghapus pernyataan SQL dari tabel proxy_auditing.sql_list, jangan eksekusi pernyataan
DROPuntuk menghapus tabel.
Batalkan aturan blacklist yang dibuat dalam custom SQL mode
Anda dapat menggunakan salah satu metode berikut untuk membatalkan aturan blacklist yang dibuat dalam custom SQL mode:
Lihat bagian Aktifkan atau Nonaktifkan Aturan Blacklist atau Hapus Aturan Blacklist dari topik ini.
CatatanJika Anda hanya menonaktifkan aturan blacklist yang dibuat dalam mode SQL berparameter kustom di konsol PolarDB tanpa menghapus pernyataan SQL berparameter dari tabel
proxy_auditing.org_sql_list, aturan untuk akun yang sama tetap berlaku saat Anda mengaktifkan kembali aturan blacklist di konsol PolarDB.Sambungkan ke node utama dalam kluster menggunakan akun administrator super dan hapus pernyataan SQL dari tabel
proxy_auditing.org_sql_list. Pernyataan SQL tidak lagi diblokir setelah 5 detik.CatatanSaat Anda menghapus pernyataan SQL dari tabel proxy_auditing.org_sql_list, jangan eksekusi pernyataan
DROPuntuk menghapus tabel.