Sebelum menggunakan fitur always-confidential database 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 always-confidential database menyimpan aturan perlindungan data yang Anda konfigurasikan 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 menjalankan MySQL 5.7 dengan versi mesin minor 20231031 atau yang lebih baru, atau MySQL 8.0 dengan versi mesin minor 20240430 atau yang lebih baru.
CatatanUntuk informasi selengkapnya, lihat Perbarui versi mesin minor.
Fitur always-confidential database telah diaktifkan. Untuk informasi selengkapnya, lihat Gunakan fitur always-confidential database.
Akun istimewa digunakan untuk mengonfigurasi aturan perlindungan data.
Catatan penggunaan
Setelah dikonfigurasi dan diaktifkan, aturan perlindungan data berlaku untuk semua database dalam instans RDS, sehingga tidak perlu dikonfigurasi ulang.
Disarankan untuk menggunakan akun database terpisah guna mengelola aturan perlindungan data dan aplikasi online. Jangan berikan 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 parameter
namesudah ada, aturan tersebut akan diperbarui. Jika tidak ada, aturan baru akan dibuat. Dalam hal ini, operasiUPDATEsetara 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. Saat menghapus aturan, nama aturan harus dalam format"xxx", bukanxxx. Sebagai contoh, nilainya harus'"delrule"', 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 cabut 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, fitur always-confidential database memungkinkan pemberian izin
fullAccesskepada pengguna guna melakukan pemeliharaan data teks biasa secara efisien untuk sementara waktu. Dengan izin ini, pengguna dapat mengakses data database teks biasa pada instans RDS Anda.Dalam hal ini, aturan perlindungan data yang dikonfigurasi tidak berlaku bagi pengguna tersebut, sehingga mereka dapat langsung melakukan kueri terhadap data database teks biasa di instans RDS.
Untuk alasan keamanan, disarankan agar izin ini hanya diberikan 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 yang terkait.
Nilai parameter
expiredharus berada dalam rentang1970-01-02 00:00:01hingga2038-01-18 03:14:07.
Contoh: Berikan izin akses penuh sementara kepada pengguna dba
SELECT encdb_rule_op('grant','{"fullAccess": ["dba"], "expired": "2023-08-21 14:21:30"}');