sql >> Databáze >  >> RDS >> Database

Maskování dat v reálném čase pomocí spouštěčů

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í.


  1. Sledování databáze – Odstraňování problémů Prometheus s řídicími panely SCUMM

  2. Jak zajistit, aby MySQL správně zvládalo UTF-8

  3. Produkt Microsoft Office, který odmítá zemřít

  4. Úvod do SQL