Database
 sql >> база данни >  >> RDS >> Database

Маскиране на данни в реално време с помощта на тригери

Предишни статии в блога на 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, вече можете да маскирате чувствителни данни на базата на събития в базата данни в реално време за различни случаи на употреба.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обявяване на общата наличност на SQL Safe Backup 8.7.2

  2. Често срещани грешки в диаграмата на ER

  3. Разбиране на транзакциите в SQL

  4. Специални острови

  5. Топ блогове за база данни, които да следвате