Database
 sql >> Baza danych >  >> RDS >> Database

Maskowanie danych w czasie rzeczywistym za pomocą wyzwalaczy

W poprzednich artykułach na blogu IRI szczegółowo opisano maskowanie danych statycznych nowych danych bazy danych przy użyciu logiki /INCLUDE lub składni /QUERY w zaplanowanych skryptach zadań IRI FieldShield, które wymagały zmian w wartościach kolumn w celu wykrycia aktualizacji. W tym artykule opisano bardziej pasywny, ale zintegrowany sposób wyzwalania funkcji maskujących FieldShield na podstawie zdarzeń SQL; innymi słowy, aby zamaskować dane, które są tworzone w czasie rzeczywistym.

Dokładniej, ten artykuł opisuje instalację i używanie procedur składowanych, które wywołują funkcje biblioteki maskowania danych FieldShield w celu zamaskowania danych osobowych w Oracle 12c w systemie Windows. Może również służyć jako „model postępowania” dla innych baz danych i systemów operacyjnych.

Minimalne wymagania
  • Wersja bazy danych Oracle obsługująca JVM
  • Serwer Oracle /bin musi znajdować się w systemowej PATH
  • Licencjonowana kopia IRI FieldShield i jej zestawu programistycznego Sandkey
  • Oracle Java JRE 8
  • Microsoft .NET v4.8 Framework
Instalacja

Po utworzeniu folderu sandkey.zip wyodrębnij plik sandkey.jar i sandkeyFunctions.jar i plik libsandkey.dll plik, który odpowiada Twojemu systemowi operacyjnemu. libsandkey.dll plik znajduje się w głównym folderze pliku .zip

Po uzyskaniu plików wykonaj następujące czynności:

  • Otwórz wiersz poleceń, przejdź do lokalizacji plików i wprowadź te polecenia w formacie:
loadjava -r -u /@ 

Jeśli podczas wykonywania tej czynności pojawi się błąd związany z CREATE$java$LOB$TABLE, prawdopodobnie masz niewystarczające uprawnienia i może być konieczne jednokrotne uruchomienie polecenia jako SYSTEM.

  • Umieść libsandkey.dll plik w koszy folder serwera Oracle. Alternatywnie dodaj lokalizację pliku do ścieżki systemowej.
  • Połącz się z bazą danych jako SYSTEM przy użyciu SQL*Plus lub podobnego programu i wprowadź następujące zapytanie:
wybierz seq, rodzaj, stypendysta, nazwę, włączone z dba_java_policy, gdzie nazwa taka jak „%java.lang.RuntimePermission%”;

Znajdź zasady oznaczone jako „java.lang.RuntimePermission#loadLibrary.*”. W tym przypadku jest to numer 99. Ta zasada musi zostać tymczasowo wyłączona, aby nadać uprawnienia użytkownikowi Sandkey w bazie danych.

  • Teraz, gdy numer zasady jest znany, wydaj następujące polecenia, aby wyłączyć zasadę, przyznać uprawnienia użytkownikowi, a następnie ponownie włączyć zasadę:
exec dbms_java.disable_permission(99);exec dbms_java.grant_permission('IRIDEMO', 'SYS:java.lang.RuntimePermission', 'loadLibrary.libsandkey', '');exec dbms_java.enable_permission(99); 

Upewnij się, że nazwa użytkownika jest pisana wielkimi literami, jak pokazano, w przeciwnym razie system jej nie rozpozna.

  • Utwórz następujące funkcje w SQL*Plus, uruchamiając skrypt lub ręcznie wprowadzając te polecenia:
UTWÓRZ FUNKCJĘ enc_aes256 (wejście VARCHAR2, przekaż VARCHAR2) POWRÓT VARCHAR2AS JĘZYK JAVANAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION_ascii_f VARCHAR2, przekaż VARCHAR2) RETURN VARCHAR2AS JĘZYK JAVANAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION enc_fp_alphanum (wejście VARCHAR2, TURN GUARCHAR2AS RE JAVANAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_aes256 (wejście VARCHAR2, przekaż VARCHAR2) RETURN VARCHAR2AS JĘZYK JAVANAME 'sandkey56.decaesFunctions. java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_fp_ascii (wejście VARCHAR2, podanie VARCHAR2) POWRÓT VARCHAR2AS JĘZYK JAVANAME 'sandkeyFunctions.Functions.decfpascii(java.lang.String, java. lang.String) return java.lang.String';/CREAT E FUNKCJA dec_fp_alphanum (wejście VARCHAR2, podanie VARCHAR2) POWRÓT VARCHAR2AS JĘZYK JAVANAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/
  • Możesz teraz tworzyć procedury składowane lub wyzwalacze za pomocą funkcji szyfrowania i deszyfrowania Sandkey, które są kompatybilne z tymi samymi funkcjami szyfrowania danych statycznych w wersjach narzędziowych IRI FieldShield, IRI DarkShield i IRI CellShield.
Przypadek użycia:Wyzwalacz PL/SQL

Oto przykład, który używa funkcji szyfrowania Sandkey do automatycznego szyfrowania danych, gdy są one wstawiane do tabeli EMPLOYEES:

Ten wyzwalacz używa funkcji enc_fp_ascii (z zachowaniem szyfrowania formatu ASCII) do zaszyfrowania LAST_NAME nowego pracownika oraz funkcji enc_fp_alphanum do zaszyfrowania PHONE_NUMBER nowego pracownika w każdym wstawionym wierszu.

Przed wstawieniem danych wyzwalacz przekazuje nowe dane jako dane wejściowe , a hasło (wartość klucza szyfrowania) jako pass , do funkcji szyfrowania Sandkey. Funkcja zwraca zaszyfrowany wynik każdej wartości jako wyjście do nowego rzędu.

W tym przykładzie po wstawieniu do tabeli pięciu nowych wierszy zwróć uwagę, jak kolumny LAST_NAME i PHONE_NUMBER zostały zaszyfrowane za pomocą funkcji opisanych powyżej.

W rzeczywistości, po zainstalowaniu, funkcje maskowania Sandkey mogą być używane w dowolny sposób w ramach możliwości PL/SQL w celu obsługi bardziej „dynamicznych” wymagań maskowania danych na dyskach zdarzeń.

Skontaktuj się z nami, aby uzyskać pomoc dotyczącą tego podejścia w środowisku bazy danych.

Przypadek użycia:widok odszyfrowany

Ten przykład pokazuje tworzenie odszyfrowanego widoku na podstawie tabeli EMPLOYEES.

Odszyfrowany widok jest tworzony podobnie jak każdy widok, z wyjątkiem tego, jak wywoływane są kolumny danych. Poszczególne kolumny są odszyfrowywane przy użyciu odpowiednich funkcji w formacie:

(, „”) 

Utworzenie odszyfrowanego widoku umożliwia wyznaczonym użytkownikom wysyłanie zapytań do danych z widoku, jednocześnie pozwalając na zachowanie zaszyfrowanych danych w tabeli PRACOWNICY. Poniżej znajduje się obraz przedstawiający widok po zapytaniu.

Integracja Sandkey i Oracle pozwala na większą kontrolę nad bezpieczeństwem danych dzięki automatycznym wyzwalaczom szyfrowania, widokom odszyfrowanym lub niestandardowym procedurom składowanym. Mówiąc bardziej ogólnie, używając procedur i procedur maskowania FieldShield, takich jak PL/SQL, możesz teraz maskować poufne dane na podstawie zdarzeń bazy danych w czasie rzeczywistym dla różnych przypadków użycia.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Szybsze ładowanie Big Data

  2. Wdrażanie aplikacji Django na AWS Elastic Beanstalk

  3. Oglądanie wakacji oczami projektanta danych

  4. Podłączanie aplikacji 64-bitowej do Acomba

  5. Tworzenie środowiska testowego z repozytorium produkcyjnego