Sebelum menggunakan fitur database always-confidential pada instans ApsaraDB RDS for MySQL, Anda harus mengonfigurasi aturan perlindungan data. ApsaraDB RDS for MySQL memungkinkan pengelolaan aturan perlindungan data melalui file konfigurasi. Topik ini menjelaskan cara mengonfigurasi aturan perlindungan data menggunakan Pernyataan SQL serta cara menggunakan Operasi API terkait.
Fitur database always-confidential menyimpan aturan perlindungan data yang telah Anda konfigurasi di tabel sistem instans RDS. Hanya Akun istimewa atau pengguna yang berwenang yang dapat menulis data ke tabel sistem tersebut, yaitu mysql.encdb_sensitive_rules dan mysql.encdb_auth_users.
Prasyarat
Instans RDS for MySQL menjalankan MySQL 5.7 dengan versi mesin minor 20231031 atau lebih baru, atau MySQL 8.0 dengan versi mesin minor 20240430 atau lebih baru. Untuk informasi selengkapnya, lihat Perbarui versi mesin minor.
Fitur database always-confidential telah diaktifkan. Untuk informasi selengkapnya, lihat Gunakan fitur database always-confidential.
Akun istimewa digunakan untuk mengonfigurasi aturan perlindungan data.
Catatan penggunaan
Setelah dikonfigurasi dan diaktifkan, aturan perlindungan data berlaku untuk semua database pada instans RDS sehingga tidak perlu dikonfigurasi ulang.
Disarankan agar Anda menggunakan akun database terpisah untuk mengelola aturan perlindungan data dan aplikasi online. Jangan memberikan izin manajemen kepada aplikasi online kecuali benar-benar diperlukan.
Berhati-hatilah saat memberikan izin baca dan tulis pada tabel mysql.encdb_sensitive_rules dan mysql.encdb_auth_users. Modifikasi pada tabel-tabel tersebut dapat memungkinkan penyerang melewati perlindungan always-confidential.
Operasi dalam SQL UDFs
ADD: menambahkan aturan.
SELECT encdb_rule_op('add',<rule object json string> or <rules list json string>);Contoh 1: Tambahkan aturan bernama newrule.
SELECT encdb_rule_op('add','{"name":"newrule","enabled":true,"meta":{"databases":["test"],"tables":["test"],"columns":["a","b"]}}');Contoh 2: Tambahkan aturan bernama newrule1 dan newrule2.
SELECT encdb_rule_op('add','[{"name":"newrule1","enabled":true,"meta":{"databases":["test"],"tables":["test"],"columns":["a","b"]}},{"name":"newrule2","enabled":true,"meta":{"databases":["test2"],"tables":["test2"],"columns":["a","b"]}}]');UPDATE: memperbarui aturan.
SELECT encdb_rule_op('update',<rule object json string> or <rules list json string>);Contoh 1: Perbarui aturan bernama newrule.
SELECT encdb_rule_op('update','{"name":"newrule","enabled":true,"meta":{"databases":["test"],"tables":["test"],"columns":["a","b"]}}');Contoh 2: Perbarui aturan bernama newrule1 dan newrule2.
SELECT encdb_rule_op('update','[{"name":"newrule1","enabled":true,"meta":{"databases":["test"],"tables":["test"],"columns":["a","b"]}},{"name":"newrule2","enabled":true,"meta":{"databases":["test2"],"tables":["test2"],"columns":["a","b"]}}]');CatatanJika aturan yang ditentukan oleh
namesudah ada, aturan tersebut akan diperbarui. Jika tidak, aturan baru untuknameakan ditambahkan. Dalam kasus ini, operasiupdateidentik dengan operasiadd.DELETE: menghapus aturan.
SELECT encdb_rule_op('delete',<rule name json string> or <rule name list json string>);Contoh 1: Hapus aturan bernama delrule.
SELECT encdb_rule_op('delete','"delrule"');Contoh 2: Hapus aturan bernama delrule1 dan delrule1.
SELECT encdb_rule_op('delete','["delrule1","delrule2"]');CatatanNilai parameter
paramsharus dalam format JSON. Oleh karena itu, saat menghapus satu aturan, Anda harus menentukan nama aturan dalam format"xxx"dan bukan dalam formatxxx. Misalnya, tentukan'"delrule"'dan bukan'delrule'.GRANT: memberikan atau mencabut izin.
CatatanAnda harus memberikan izin yang diperlukan kepada pengguna.
Berikan atau cabut izin.
SELECT encdb_rule_op('grant',<users object json string>);Contoh 1: Berikan izin kepada pengguna appuser dan test_user untuk mengakses sumber daya terbatas.
SELECT encdb_rule_op('grant','{"restrictedAccess": ["appuser","test_user"]}');Contoh 2: Cabut izin pengguna illegal.
SELECT encdb_rule_op('grant','{"noneAccess": ["illegal"]}');Contoh 3: Berikan izin kepada pengguna appuser dan test_user untuk mengakses sumber daya terbatas sekaligus mencabut izin pengguna illegal.
SELECT encdb_rule_op('grant','{"restrictedAccess": ["appuser","test_user"], "noneAccess": ["illegal"]}');CatatanPengguna yang disebutkan dalam bagian ini harus sudah ada di instans RDS.
Berikan izin akses penuh kepada pengguna untuk penggunaan sementara
Untuk kemudahan penggunaan dan memfasilitasi maintenance data teks biasa secara sementara, fitur database always-confidential memungkinkan Anda memberikan izin
fullAccesskepada pengguna. Pengguna dengan izin ini dapat mengakses database dalam bentuk teks biasa:Dalam hal ini, aturan perlindungan data yang dikonfigurasi tidak berlaku bagi pengguna tersebut, dan pengguna dapat langsung melakukan kueri terhadap data database teks biasa di instans RDS.
Untuk alasan keamanan, kami menyarankan agar Anda memberikan izin ini hanya untuk periode waktu singkat dan hanya jika benar-benar diperlukan. Sebelum memberikan izin fullAccess, Anda harus memahami kebutuhan bisnis Anda dan bertanggung jawab atas risiko terkait.
Nilai parameter
expiredharus berada dalam rentang yang didukung MySQL, yaitu dari1970-01-02 00:00:01hingga2038-01-18 03:14:07.
Contoh: Berikan izin akses penuh kepada pengguna dba untuk penggunaan sementara
SELECT encdb_rule_op('grant','{"fullAccess": ["dba"], "expired": "2023-08-21 14:21:30"}');