Предишни статии в блога на IRI описваха подробно статичното маскиране на данни на нови данни от базата данни с помощта на /INCLUDE логика или /QUERY синтаксис в планирани скриптове за задание на IRI FieldShield, които изискват промени в стойностите на колоните за откриване на актуализации. Тази статия описва по-пасивен, но интегриран начин за задействане на маскиращи функции на FieldShield на базата на SQL събития; с други думи, за маскиране на данните, както се произвеждат в реално време.
По-конкретно, тази статия документира инсталирането и използването на съхранени процедури, които извикват функциите на библиотеката за маскиране на данни на FieldShield за маскиране на PII в Oracle 12c на Windows. Може също да служи като „модел на процедурата“ за други бази данни и операционни системи.
Минимални изисквания
- Версия на базата данни на Oracle, която е с активирана JVM
- Oracle сървърът /bin трябва да е в системния PATH
- Лицензирано копие на IRI FieldShield и неговия комплект за разработка на софтуер Sandkey
- Oracle Java JRE 8
- Microsoft .NET v4.8 Framework
Инсталиране
След като имате папката sandkey.zip, извлечете sandkey.jar и sandkeyFunctions.jar файлове и libsandkey.dll файл, който съответства на вашата операционна система. libsandkey.dll файлът е в основната папка на .zip файла
Следвайте тези стъпки, след като имате файловете:
- Отворете командния ред, придвижете се до къде се намират файловете и въведете тези команди във формата на:
loadjava -r -u <потребителско име>/<парола>@<база данни> <име на файл>
Ако получите грешка, свързана с CREATE$java$LOB$TABLE, докато правите това, вероятно имате недостатъчни привилегии и може да се наложи да изпълните командата веднъж като SYSTEM.
- Поставете libsandkey.dll файл в bin папка на сървъра на Oracle. Като алтернатива добавете местоположението на файла към системния път.
- Свържете се с базата данни като СИСТЕМА с помощта на SQL*Plus или подобна програма и въведете следната заявка:
изберете seq, kind, грантополучател, име, активирано от dba_java_policy, където име като „%java.lang.RuntimePermission%“;
Намерете правилото с надпис „java.lang.RuntimePermission#loadLibrary.*“. В този случай това е номер 99. Тази политика трябва временно да бъде деактивирана, за да се даде разрешение на потребителя на Sandkey в базата данни.
- Сега, когато номерът на политиката е известен, издайте следните команди, за да деактивирате правилото, да предоставите разрешение на потребител и след това да го активирате отново:
exec dbms_java.disable_permission(99);exec dbms_java.grant_permission( 'IRIDEMO', 'SYS:java.lang.RuntimePermission', 'loadLibrary.libsandkey', '' );exec dbms_java.enable_permission(99);предварително>
Уверете се, че потребителското име е с главни букви, както е показано, или системата няма да го разпознае.
- Създайте следните функции в SQL*Plus, като изпълните скрипт или като въведете ръчно тези команди:
СЪЗДАВАНЕ НА ФУНКЦИЯ enc_aes256 (вход VARCHAR2, преминаване VARCHAR2) ВРЪЩАНЕ VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.lang.String';/ VARCHAR2, пас VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION enc_fp_alphanum (input ARGUCHASVARCHANUM) JAVANAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS LANGUAGE. java.lang.String, java.lang.String) връщане java.lang.String';/CREATE FUNCTION dec_fp_ascii (въвеждане VARCHAR2, преминаване на VARCHAR2) ВРЪЩАНЕ VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpascii(java.lang.lang,java.lang. lang.String) върне java.lang.String';/CREAT E ФУНКЦИЯ dec_fp_alphanum (вход VARCHAR2, подаване на VARCHAR2) ВРЪЩАНЕ VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/
- Вече можете да създавате съхранени процедури или тригери, като използвате функциите за криптиране и декриптиране на Sandkey, които са съвместими със същите функции за статично криптиране на данни в помощните версии на IRI FieldShield, IRI DarkShield и IRI CellShield.
Случай на употреба:PL/SQL Trigger
Ето пример, който използва функция за криптиране на Sandkey за автоматично криптиране на данни, когато се вмъкват в таблицата EMPLOYEES:
Този тригер използва функцията enc_fp_ascii (ASCII формат, запазващ криптиране) за криптиране на LAST_NAME на новия служител и функцията enc_fp_alphanum за криптиране на PHONE_NUMBER на новия служител във всеки вмъкнат ред.
Преди да се вмъкнат данните, тригерът предава новите данни като вход и парола (стойност на ключа за криптиране) като пропуск , във функциите за криптиране на Sandkey. Функцията връща резултата от шифрования текст на всяка стойност като изход към новия ред.
В този пример, тъй като пет нови реда бяха вмъкнати в таблицата, обърнете внимание как колоните LAST_NAME и PHONE_NUMBER бяха криптирани с функциите, описани по-горе.
Всъщност, веднъж инсталирани, функциите за маскиране на Sandkey могат да се използват по какъвто и да е начин в рамките на възможностите на PL/SQL, за да поддържат по-„динамични“ изисквания за маскиране на данни на устройството за събития.
Свържете се за помощ с този подход във вашата среда на база данни.
Случай на употреба:Дешифриран изглед
Този пример показва създаването на дешифриран изглед въз основа на таблицата EMPLOYEES.
Дешифрираният изглед се създава подобно на начина, по който би бил създаден всеки изглед, с изключение на начина, по който се извикват колоните с данни. Отделните колони се дешифрират с помощта на съответните им функции във формат:
( , ‘ ’)
Създаването на дешифриран изглед позволява на определени потребители да заявяват данни от изгледа, като същевременно позволяват действителните данни в таблицата EMPLOYEES да останат криптирани. По-долу е изображение на това как ще изглежда изгледът при запитване.
Интеграцията на Sandkey и Oracle позволява по-голям контрол върху сигурността на вашите данни чрез автоматични тригери за криптиране, декриптирани изгледи или персонализирани съхранени процедури. По-общо казано, използвайки рутинни процедури и процедури за маскиране на FieldShield като PL/SQL, вече можете да маскирате чувствителни данни на базата на събития в базата данни в реално време за различни случаи на употреба.