Anda dapat membuat, mengaktifkan, menonaktifkan, memodifikasi, dan menghapus aturan blacklist rule di Konsol PolarDB. Topik ini menjelaskan aturan blacklist dan cara mengonfigurasikannya.
Aturan blacklist
Proxy menyediakan fitur pemblokiran. Anda dapat mengonfigurasi aturan blacklist untuk memblokir jenis tertentu pernyataan SQL atau pernyataan SQL individual.
Anda dapat mengonfigurasi aturan blacklist dalam tiga mode berikut:
-
fixed rule mode: Mode umum untuk mengonfigurasi aturan blacklist di konsol. Setiap aturan dapat diterapkan pada akun dan kluster tertentu. Untuk daftar aturan umum yang didukung, lihat Konfigurasi aturan SQL Firewall.
-
custom parameterized SQL mode: Mode ini memparameterisasi semua variabel dalam pernyataan SQL Anda dan menyimpan templat yang dihasilkan ke database. Proxy kemudian akan memblokir setiap pernyataan SQL yang sesuai dengan templat ini.
-
custom SQL mode: Mode ini memblokir pernyataan SQL tertentu secara persis, tanpa memparameterisasi variabel apa pun. Pernyataan SQL yang memiliki parameter berbeda tidak terpengaruh.
Buat aturan blacklist
- Masuk ke Konsol PolarDB.
-
Di pojok kiri atas, pilih wilayah tempat kluster dideploy.
-
Temukan kluster target dan klik ID-nya.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada tab SQL Firewall, klik Add di sebelah kiri.
-
Pada kotak dialog Create a Rule, konfigurasi parameter berdasarkan mode blacklist yang diinginkan.
-
fixed rule mode
-
Jika Anda memilih fixed rule mode, konfigurasi parameter berikut.
Tabel 1. Parameter untuk aturan SQL Firewall Parameter
Wajib
Deskripsi
Basic Information
Rule Name
Ya
Nama aturan SQL Firewall. Nama harus memenuhi persyaratan berikut:
-
Terdiri dari huruf dan angka.
-
Panjang maksimal 30 karakter.
Description
Tidak
Deskripsi untuk memudahkan identifikasi dan pengelolaan.
CatatanPanjang deskripsi maksimal 64 karakter.
Endpoint
Ya
Titik akhir tempat aturan diterapkan.
Configurations
Rule Type
Ya
Pilih Blacklist Rule.
Current Mode
Tidak
Mode untuk aturan SQL Firewall. Nilai ini selalu diatur ke Protection Mode, artinya pernyataan SQL yang sesuai dengan aturan blacklist akan diblokir.
Database Account Name
Tidak
Akun database tempat aturan ini berlaku. Opsi berikut tersedia:
-
All Accounts: Menerapkan aturan ke semua akun database dalam kluster. Anda tidak perlu memasukkan apa pun di kotak teks.
-
Include: Menerapkan aturan hanya pada akun database tertentu. Masukkan satu atau beberapa nama akun yang dipisahkan koma.
-
Exclude: Menerapkan aturan ke semua akun database dalam kluster kecuali yang Anda tentukan. Masukkan satu atau beberapa nama akun yang dipisahkan koma.
CatatanNama akun database yang Anda masukkan harus dalam salah satu format berikut:
-
AccountName. Contoh:user. -
AccountName@IPAddress. Contoh:user@10.0.0.0.
Block SQLs With Asterisks (*)
Tidak
Memblokir pernyataan SQL yang berisi tanda bintang (
*). Nilai yang valid:-
Enable: Memblokir pernyataan SQL yang berisi tanda bintang (
*). -
Close: Tidak memblokir pernyataan SQL yang berisi tanda bintang (
*).
Block SQLs of Specific Types
Tidak
Memblokir jenis tertentu dari pernyataan SQL. Nilai yang valid:
-
Enable: Memblokir jenis tertentu dari pernyataan SQL. Jika Anda mengaktifkan Block SQLs of Specific Types, Anda harus memilih minimal satu jenis. Jenis yang didukung:
-
CREATE -
DROP -
ALTER -
TRUNCATE -
RENAME -
INSERT -
UPDATE -
SELECT -
DELETE
-
-
Close: Tidak memblokir jenis tertentu dari pernyataan SQL.
Block SQLs Without WHERE
Tidak
Memblokir pernyataan SQL yang tidak memiliki klausa WHERE. Nilai yang valid:
-
Enable: Memblokir jenis tertentu dari pernyataan SQL yang tidak memiliki klausa WHERE. Jika Anda mengaktifkan Block SQLs Without WHERE, Anda harus memilih minimal satu jenis. Jenis yang didukung:
-
UPDATE -
SELECT -
DELETE
-
-
Close: Tidak memblokir pernyataan SQL yang tidak memiliki klausa WHERE.
CatatanParameter ini hanya berlaku untuk pernyataan
SELECT,UPDATE, danDELETEyang berisi minimal satu nama tabel. Proxy tidak memblokir pernyataan sepertiSELECT 1;.Block SQLs With Specific Columns
Tidak
Memblokir pernyataan SQL yang berisi nama kolom tertentu. Nilai yang valid:
-
Enable: Memblokir pernyataan SQL yang berisi nama kolom tertentu. Jika Anda mengaktifkan Block SQLs With Specific Columns, opsi berikut tersedia:
-
All: Menerapkan aturan ke semua nama kolom dalam kluster. Anda tidak perlu memasukkan apa pun di kotak teks.
-
Include: Menerapkan aturan hanya pada nama kolom tertentu. Anda harus memasukkan satu atau beberapa nama kolom, dipisahkan koma (,).
-
Exclude: Menerapkan aturan ke semua nama kolom dalam kluster kecuali yang Anda tentukan. Anda harus memasukkan satu atau beberapa nama kolom, dipisahkan koma (,).
-
-
Close: Tidak memblokir pernyataan SQL yang berisi nama kolom tertentu.
Block SQLs With Specific Functions
Tidak
Memblokir pernyataan SQL yang menggunakan fungsi tertentu. Nilai yang valid:
-
Enable: Memblokir pernyataan SQL yang menggunakan fungsi tertentu. Jika Anda mengaktifkan Block SQLs With Specific Functions, opsi berikut tersedia:
-
All: Menerapkan aturan ke semua fungsi yang dieksekusi di database kluster. Anda tidak perlu memasukkan apa pun di kotak teks.
-
Include: Menerapkan aturan hanya pada fungsi tertentu. Anda harus memasukkan satu atau beberapa nama fungsi, dipisahkan koma (,).
-
Exclude: Menerapkan aturan ke semua fungsi kecuali yang Anda tentukan. Anda harus memasukkan satu atau beberapa nama fungsi, dipisahkan koma (,).
-
-
Close: Tidak memblokir pernyataan SQL yang menggunakan fungsi tertentu.
Block SQLs With Specific Columns and Specific Functions
Tidak
Memblokir pernyataan SQL yang berisi fungsi tertentu dan mereferensikan nama kolom tertentu. Nilai yang valid:
-
Enable: Memblokir pernyataan SQL yang berisi fungsi tertentu dan mereferensikan nama kolom tertentu. Jika Anda mengaktifkan Block SQLs With Specific Columns and Specific Functions, Anda harus memasukkan satu atau beberapa nilai Function Name dan Column Name. Secara spesifik:
-
Jika Function Name diatur ke Include dan Column Name juga diatur ke Include, aturan berlaku untuk pernyataan SQL dalam kluster yang menggunakan fungsi tertentu dan mereferensikan nama kolom tertentu.
-
Jika Function Name diatur ke Include dan Column Name diatur ke Exclude, aturan berlaku untuk pernyataan yang menggunakan fungsi tertentu pada kolom apa pun kecuali yang ditentukan.
-
Jika Function Name diatur ke Exclude dan Column Name diatur ke Include, aturan berlaku untuk pernyataan yang menggunakan fungsi apa pun kecuali yang ditentukan pada kolom tertentu.
-
Jika Anda memilih Exclude untuk Function Name dan juga memilih Exclude untuk Column Name, ini berarti aturan berlaku untuk pernyataan SQL dalam kluster yang menggunakan fungsi selain yang ditentukan dan mereferensikan kolom selain yang ditentukan.
-
-
Close: Tidak memblokir pernyataan SQL yang berisi fungsi tertentu dan mereferensikan nama kolom tertentu.
-
-
Setelah mengonfigurasi aturan, klik OK.
-
-
custom parameterized SQL mode
-
Jika Anda memilih custom parameterized SQL mode, konfigurasi parameter yang diperlukan. Untuk informasi lebih lanjut, lihat Parameter untuk aturan SQL Firewall.
CatatanSaat menggunakan custom parameterized SQL mode, Anda tidak perlu mengaktifkan aturan pemblokiran apa pun di bawah Configurations.
-
Setelah mengonfigurasi aturan, klik OK.
-
Gunakan Database Account Name dari langkah sebelumnya untuk terhubung ke titik akhir database yang ditentukan. Untuk memblokir pernyataan SQL, tambahkan perintah
hint/* store_to_blacklist */sebelum pernyataan tersebut. Misalnya, untuk memblokir pernyataan SQLselect id from sqlblack_test where id = 1;, jalankan perintah berikut:/* store_to_blacklist */ select id from sqlblack_test where id = 1;Templat yang diparameterisasi adalah sebagai berikut:
select id from sqlblack_test where id = ?Dalam templat ini,
?mewakili nilai apa pun.Sekitar 5 detik kemudian, proxy akan memblokir setiap pernyataan SQL dari akun ini yang sesuai dengan templat tersebut. Error berikut akan dikembalikan:
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 on blacklist bl_test.Dalam pesan ini,
bl_testadalah nama aturan blacklist.
Catatan-
Jika Anda menggunakan client command-line MySQL, Anda harus menambahkan opsi
-c. Jika tidak, perintahhinttidak akan berlaku. -
Aturan mulai berlaku setelah sekitar 5 detik.
-
-
custom SQL mode
-
Jika Anda memilih custom SQL mode, konfigurasi parameter yang diperlukan. Untuk informasi lebih lanjut, lihat Parameter untuk aturan SQL Firewall.
CatatanSaat menggunakan custom SQL mode, Anda tidak perlu mengaktifkan aturan pemblokiran apa pun di bawah Configurations.
-
Setelah mengonfigurasi aturan, klik OK.
-
Gunakan Database Account Name dari langkah sebelumnya untuk terhubung ke titik akhir database yang ditentukan. Untuk memblokir pernyataan SQL, tambahkan perintah
hint/* orginal_store_to_blacklist */sebelum pernyataan tersebut. Misalnya, 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;Sekitar 5 detik kemudian, saat Anda menggunakan akun ini untuk menjalankan pernyataan SQL yang persis sama
update t set k = 2 where id = 2;, proxy akan memblokir pernyataan tersebut. Pernyataan SQL lain tidak terpengaruh. Error berikut akan dikembalikan: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 on blacklist bl_test.Dalam pesan ini,
bl_testadalah nama aturan blacklist.
Catatan-
Jika Anda menggunakan client command-line MySQL, Anda harus menambahkan opsi
-c. Jika tidak, perintahhinttidak akan berlaku. -
Aturan mulai berlaku setelah sekitar 5 detik.
-
-
Aktifkan atau nonaktifkan aturan blacklist
- Masuk ke Konsol PolarDB.
-
Di pojok kiri atas, pilih wilayah tempat kluster dideploy.
-
Temukan kluster target dan klik ID-nya.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada tab SQL Firewall, temukan aturan yang ingin Anda aktifkan atau nonaktifkan, lalu klik sakelar Enable/Disable.
CatatanAnda juga dapat memilih beberapa aturan dalam daftar dan klik Enable atau Disable di bagian bawah daftar untuk mengaktifkan atau menonaktifkan secara massal.
-
Pada kotak dialog Enable atau Disable yang muncul, klik OK.
Modifikasi aturan blacklist
- Masuk ke Konsol PolarDB.
-
Di pojok kiri atas, pilih wilayah tempat kluster dideploy.
-
Temukan kluster target dan klik ID-nya.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada tab SQL Firewall, temukan aturan yang ingin Anda modifikasi, lalu klik Modify di kolom Operation. Di kotak dialog Modify A Rule, modifikasi parameter tersebut. Untuk detail parameter, lihat Parameter untuk aturan SQL Firewall.
CatatanAnda tidak dapat memodifikasi Rule Name suatu aturan.
-
Setelah memodifikasi aturan, klik OK.
Dari konsol, Anda tidak dapat memodifikasi pernyataan SQL berparameter dalam aturan yang dibuat menggunakan custom parameterized SQL mode, maupun memodifikasi pernyataan SQL spesifik dalam aturan yang dibuat menggunakan custom SQL mode. Untuk mengubah pernyataan-pernyataan ini, Anda harus menghapusnya dari tabel database dan menambahkannya kembali.
Hapus aturan blacklist
- Masuk ke Konsol PolarDB.
-
Di pojok kiri atas, pilih wilayah tempat kluster dideploy.
-
Temukan kluster target dan klik ID-nya.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada tab SQL Firewall, temukan aturan yang ingin Anda hapus dan klik Delete di kolom Operation.
CatatanAnda juga dapat memilih beberapa aturan dalam daftar dan klik Delete di bagian bawah daftar untuk menghapus secara massal.
-
Pada kotak dialog Delete yang muncul, klik OK.
Hapus aturan untuk mode kustom
-
Aturan blacklist custom parameterized SQL mode
Anda dapat menghapus aturan blacklist custom parameterized SQL mode dengan salah satu cara berikut:
-
Anda dapat menghapus aturan blacklist untuk custom parameterized SQL mode dengan mengaktifkan atau menonaktifkan aturan blacklist atau menghapus aturan blacklist.
CatatanJika Anda hanya menonaktifkan aturan blacklist di konsol tanpa menghapus pernyataan SQL berparameter yang sesuai dari tabel
proxy_auditing.sql_list, aturan tersebut akan kembali berlaku jika Anda mengaktifkannya kembali untuk akun yang sama. -
Terhubung ke primary node titik akhir menggunakan akun super administrator, lalu hapus pernyataan SQL yang sesuai dari tabel
proxy_auditing.sql_list. Sekitar 5 detik kemudian, proxy tidak akan lagi memblokir pernyataan tersebut.CatatanJangan gunakan perintah
DROPuntuk menghapus tabel.
-
-
Aturan blacklist custom SQL mode
Anda dapat menghapus aturan blacklist custom SQL mode dengan salah satu cara berikut:
-
Untuk mengelola aturan blacklist custom SQL mode, Anda dapat mengaktifkan atau menonaktifkan aturan blacklist atau menghapus aturan blacklist.
CatatanJika Anda hanya menonaktifkan aturan blacklist di konsol tanpa menghapus pernyataan SQL yang sesuai dari tabel
proxy_auditing.org_sql_list, aturan tersebut akan kembali berlaku jika Anda mengaktifkannya kembali untuk akun yang sama. -
Terhubung ke primary node titik akhir menggunakan akun super administrator, lalu hapus pernyataan SQL yang sesuai dari tabel
proxy_auditing.org_sql_list. Sekitar 5 detik kemudian, proxy tidak akan lagi memblokir pernyataan tersebut.CatatanJangan gunakan perintah
DROPuntuk menghapus tabel.
-