全部产品
Search
文档中心

:Konfigurasikan Aturan Enkripsi Kolom dengan Menggunakan Pernyataan SQL

更新时间:Dec 04, 2025

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.

    Catatan

    Untuk 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"]}}]');
    Catatan

    Jika aturan yang ditentukan oleh parameter name sudah ada, aturan tersebut akan diperbarui. Jika tidak ada, aturan baru akan dibuat. Dalam hal ini, operasi UPDATE setara dengan operasi ADD.

  • 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"]');
    Catatan

    Nilai parameter params harus dalam format JSON. Saat menghapus aturan, nama aturan harus dalam format "xxx", bukan xxx. Sebagai contoh, nilainya harus '"delrule"', bukan 'delrule'.

  • GRANT: memberikan atau mencabut izin.

    Catatan

    Anda 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"]}'); 
    Catatan

    Pengguna 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 fullAccess kepada 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 expired harus berada dalam rentang 1970-01-02 00:00:01 hingga 2038-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"}');