Předchozí články na blogu IRI podrobně popsaly maskování statických dat nových databázových dat pomocí logiky /INCLUDE nebo syntaxe /QUERY v naplánovaných skriptech úloh IRI FieldShield, které vyžadovaly změny hodnot sloupců pro detekci aktualizací. Tento článek popisuje pasivnější, ale integrovaný způsob spouštění funkcí maskování FieldShield na základě událostí SQL; jinými slovy, maskovat data tak, jak jsou vytvářena v reálném čase.
Konkrétněji tento článek popisuje instalaci a použití uložených procedur, které volají funkce knihovny maskování dat FieldShield k maskování PII v Oracle 12c na Windows. Může také sloužit jako ‚model procedur‘ pro jiné databáze a operační systémy.
Minimální požadavky
- Verze databáze Oracle, která podporuje prostředí JVM
- Oracle server /bin musí být v systémové PATH
- Licencovaná kopie IRI FieldShield a jeho sady pro vývoj softwaru Sandkey
- Oracle Java JRE 8
- Microsoft .NET v4.8 Framework
Instalace
Jakmile budete mít složku sandkey.zip, extrahujte sandkey.jar a sandkeyFunctions.jar soubory a libsandkey.dll soubor, který odpovídá vašemu operačnímu systému. Soubor libsandkey.dll soubor je v kořenové složce souboru .zip
Jakmile budete mít soubory, postupujte takto:
- Otevřete příkazový řádek, přejděte na umístění souborů a zadejte tyto příkazy ve formátu:
loadjava -r -u /@
Pokud se při provádění tohoto postupu zobrazí chyba související s CREATE$java$LOB$TABLE, pravděpodobně nemáte dostatečná oprávnění a možná budete muset příkaz spustit jednou jako SYSTEM.
- Umístěte soubor libsandkey.dll soubor v přihrádce složku serveru Oracle. Případně přidejte umístění souboru do systémové cesty.
- Připojte se k databázi jako SYSTEM pomocí SQL*Plus nebo podobného programu a zadejte následující dotaz:
vyberte seq, kind, grantee, name, enabled from dba_java_policy kde název jako ‚%java.lang.RuntimePermission%‘;
Najděte zásadu označenou „java.lang.RuntimePermission#loadLibrary.*“. V tomto případě je to číslo 99. Tuto zásadu je třeba dočasně deaktivovat, aby bylo možné udělit oprávnění uživateli Sandkey v databázi.
- Nyní, když je známo číslo zásady, zadejte následující příkazy k deaktivaci zásady, udělení oprávnění uživateli a poté k opětovné aktivaci zásady:
exec dbms_java.disable_permission(99);exec dbms_java.grant_permission( 'IRIDEMO', 'SYS:java.lang.RuntimePermission', 'loadLibrary.libsandkey', '' );exec dbms_java.enable_permission(99); před>
Ujistěte se, že uživatelské jméno je celé napsáno velkými písmeny, jak je uvedeno, jinak jej systém nerozpozná.
- Vytvořte následující funkce v SQL*Plus spuštěním skriptu nebo ručním zadáním těchto příkazů:
CREATE FUNCTION enc_aes256 (zadejte VARCHAR2, předejte VARCHAR2) RETURN VARCHAR2AS JAZYK JAVANAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.lang.String_FUNCc (putc_String';putp VARCHAR2, předat VARCHAR2) RETURN VARCHAR2AS JAZYK JAVANAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) vrátit java.lang.String';/CREATE FUNCTION enc_VARCHARCHAR2CH, vstup ARAS2 pass ARAS JAVANAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_aes256 (zadání VARCHAR2, předání VARCHAR2) RETURN VARCHAR2AS LANGUAGE. JavaScript lang.String) return java.lang.String';/CREAT E FUNKCE dec_fp_alphanum (zadejte VARCHAR2, předejte VARCHAR2) RETURN VARCHAR2AS JAZYK JAVANAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/
- Nyní můžete vytvářet uložené procedury nebo spouštěče pomocí funkcí šifrování a dešifrování Sandkey, které jsou kompatibilní se stejnými funkcemi šifrování statických dat v obslužných verzích IRI FieldShield, IRI DarkShield a IRI CellShield.
Případ použití:PL/SQL Trigger
Zde je příklad, který používá funkci šifrování Sandkey k automatickému šifrování dat při jejich vkládání do tabulky ZAMĚSTNANCI:
Tento spouštěč používá funkci enc_fp_ascii (kódování zachovává formát ASCII) k zašifrování LAST_NAME nového zaměstnance a funkci enc_fp_alphanum k zašifrování PHONE_NUMBER nového zaměstnance v každém vloženém řádku.
Před vložením dat předá spouštěč nová data jako vstup a heslo (hodnota šifrovacího klíče) jako pass , do funkcí šifrování Sandkey. Funkce vrací výsledek zašifrovaného textu každé hodnoty jako výstup do nového řádku.
V tomto příkladu, když bylo do tabulky vloženo pět nových řádků, si všimněte, jak byly sloupce LAST_NAME a PHONE_NUMBER zašifrovány pomocí funkcí popsaných výše.
Po instalaci lze ve skutečnosti maskovací funkce Sandkey použít libovolným způsobem v rámci možností PL/SQL pro podporu „dynamičtějších“ požadavků na maskování dat jednotky událostí.
Obraťte se na pomoc s tímto přístupem ve vašem databázovém prostředí.
Případ použití:Dešifrované zobrazení
Tento příklad ukazuje vytvoření dešifrovaného pohledu založeného na tabulce EMPLOYEES.
Dešifrovaný pohled se vytvoří podobně, jako by se vytvořil jakýkoli pohled, s výjimkou toho, jak se nazývají datové sloupce. Jednotlivé sloupce jsou dešifrovány pomocí jejich odpovídajících funkcí ve formátu:
( , ‘ ’)
Vytvoření dešifrovaného pohledu umožňuje určeným uživatelům dotazovat se na data z pohledu a zároveň umožňuje, aby skutečná data v tabulce ZAMĚSTNANCI zůstala zašifrována. Níže je obrázek, jak by zobrazení vypadalo při dotazu.
Integrace Sandkey a Oracle umožňuje větší kontrolu nad zabezpečením vašich dat prostřednictvím automatických spouštěčů šifrování, dešifrovaných pohledů nebo vlastních uložených procedur. Obecněji řečeno, pomocí maskovacích rutin a procedur FieldShield, jako je PL/SQL, nyní můžete maskovat citlivá data na základě databázových událostí v reálném čase pro různé případy použití.