Artikel sebelumnya di blog IRI merinci penyembunyian data statis dari data database baru menggunakan logika /INCLUDE atau sintaks /QUERY dalam skrip pekerjaan FieldShield IRI terjadwal yang memerlukan perubahan nilai kolom untuk mendeteksi pembaruan. Artikel ini menjelaskan cara yang lebih pasif namun terintegrasi untuk memicu fungsi penyembunyian FieldShield berdasarkan peristiwa SQL; dengan kata lain, untuk menutupi data saat diproduksi secara real-time.
Lebih khusus lagi, artikel ini mendokumentasikan penginstalan dan penggunaan prosedur tersimpan yang memanggil fungsi perpustakaan penyamaran data FieldShield untuk menutupi PII di Oracle 12c pada Windows. Ini juga dapat berfungsi sebagai 'model prosedur' untuk database dan sistem operasi lain.
Persyaratan Minimum
- Versi database Oracle yang mendukung JVM
- Server Oracle /bin harus dalam PATH sistem
- Salinan berlisensi IRI FieldShield dan kit pengembangan perangkat lunak Sandkey-nya
- Oracle Java JRE 8
- Microsoft .NET v4.8 Framework
Pemasangan
Setelah Anda memiliki folder sandkey.zip, ekstrak sandkey.jar dan sandkeyFunctions.jar file, dan libsandkey.dll file yang sesuai dengan sistem operasi Anda. libsandkey.dll file ada di folder root file .zip
Ikuti langkah-langkah ini setelah Anda memiliki file:
- Buka prompt perintah, navigasikan ke tempat file berada, dan masukkan perintah ini dalam format:
loadjava -r -u/ @
Jika Anda mendapatkan kesalahan terkait dengan CREATE$java$LOB$TABLE saat melakukan ini, Anda mungkin tidak memiliki hak istimewa yang cukup dan mungkin perlu menjalankan perintah sekali sebagai SISTEM.
- Tempatkan libsandkey.dll file di bin folder dari server Oracle. Atau, tambahkan lokasi file ke jalur sistem.
- Hubungkan ke database sebagai SISTEM menggunakan SQL*Plus, atau program serupa, dan masukkan kueri berikut:
pilih seq, kind, grantee, name, diaktifkan dari dba_java_policy dengan nama seperti '%java.lang.RuntimePermission%';
Temukan kebijakan berlabel “java.lang.RuntimePermission#loadLibrary.*”. Dalam hal ini, ini adalah nomor 99. Kebijakan ini perlu dinonaktifkan sementara untuk memberikan izin kepada pengguna Sandkey di database.
- Sekarang setelah nomor kebijakan diketahui, jalankan perintah berikut untuk menonaktifkan kebijakan, memberikan izin kepada pengguna, lalu mengaktifkan kembali kebijakan:
exec dbms_java.disable_permission(99);exec dbms_java.grant_permission( 'IRIDEMO', 'SYS:java.lang.RuntimePermission', 'loadLibrary.libsandkey', '' );exec dbms_java.enable_permission(99);
Pastikan nama pengguna menggunakan huruf kapital penuh seperti yang ditunjukkan, atau sistem tidak akan mengenalinya.
- Buat fungsi berikut dalam SQL*Plus dengan menjalankan skrip, atau dengan memasukkan perintah berikut secara manual:
CREATE FUNCTION enc_aes256 (masukkan VARCHAR2, teruskan VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) kembalikan java.lang.String';/CREc_inpputasciATE_FUNC';/CRE VARCHAR2, berikan VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION encVA_fp_alphanum (masukkan VARCHAR2 VARCHAR2) JAVANAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) mengembalikan java.lang.String';/CREATE FUNCTION dec_aes256 (masukkan VARCHAR2, teruskan VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sdeca. java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_fp_ascii (masukkan VARCHAR2, berikan VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpascii(java.lang.String, java.lang. lang.String) mengembalikan java.lang.String';/CREAT E FUNCTION dec_fp_alphanum (masukkan VARCHAR2, berikan VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/
- Sekarang Anda dapat membuat prosedur atau pemicu tersimpan menggunakan fungsi enkripsi dan dekripsi Sandkey, yang kompatibel dengan fungsi enkripsi data statis yang sama di versi utilitas IRI FieldShield, IRI DarkShield, dan IRI CellShield.
Kasus Penggunaan:Pemicu PL/SQL
Berikut adalah contoh yang menggunakan fungsi enkripsi Sandkey untuk mengenkripsi data secara otomatis saat dimasukkan ke dalam tabel EMPLOYEES:
Pemicu ini menggunakan fungsi enc_fp_ascii (enkripsi pelestarian format ASCII) untuk mengenkripsi LAST_NAME karyawan baru, dan fungsi enc_fp_alphanum untuk mengenkripsi PHONE_NUMBER karyawan baru di setiap baris yang disisipkan.
Sebelum data dimasukkan, pemicu melewatkan data baru sebagai input , dan sandi (nilai kunci enkripsi) sebagai pass , ke dalam fungsi enkripsi Sandkey. Fungsi mengembalikan hasil ciphertext dari setiap nilai sebagai keluaran ke baris baru.
Dalam contoh ini, saat lima baris baru dimasukkan ke dalam tabel, perhatikan bagaimana kolom LAST_NAME dan PHONE_NUMBER dienkripsi dengan fungsi yang dijelaskan di atas.
Bahkan, setelah diinstal, fungsi penyamaran Sandkey dapat digunakan dengan cara apa pun yang diinginkan dalam kemampuan PL/SQL untuk mendukung persyaratan penyamaran data drive peristiwa yang lebih “dinamis”.
Hubungi untuk bantuan dengan pendekatan ini di lingkungan database Anda.
Kasus Penggunaan:Tampilan Terdekripsi
Contoh ini menunjukkan pembuatan tampilan yang didekripsi berdasarkan tabel EMPLOYEES.
Tampilan yang didekripsi dibuat mirip dengan bagaimana tampilan apa pun akan dibuat, dengan pengecualian bagaimana kolom data dipanggil. Masing-masing kolom didekripsi menggunakan fungsinya yang sesuai, dalam format:
( , ‘ ’)
Pembuatan tampilan yang didekripsi memungkinkan pengguna yang ditunjuk untuk menanyakan data dari tampilan, sementara memungkinkan data aktual dalam tabel EMPLOYEES tetap terenkripsi. Di bawah ini adalah gambar bagaimana tampilan akan muncul saat ditanya.
Integrasi Sandkey dan Oracle memungkinkan kontrol yang lebih besar atas keamanan data Anda melalui pemicu enkripsi otomatis, tampilan yang didekripsi, atau prosedur tersimpan khusus. Secara umum, dengan menggunakan rutinitas dan prosedur penyembunyian FieldShield seperti PL/SQL, kini Anda dapat menutupi data sensitif berdasarkan kejadian database waktu nyata untuk berbagai kasus penggunaan.