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);; pre>
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.