sql >> Databasteknik >  >> RDS >> Database

Datamaskering i realtid med utlösare

Tidigare artiklar i IRI-bloggen beskrev den statiska datamaskeringen av nya databasdata med hjälp av /INCLUDE-logik eller /QUERY-syntax i schemalagda IRI FieldShield-jobbskript som krävde ändringar i kolumnvärden för att upptäcka uppdateringar. Den här artikeln beskriver ett mer passivt men integrerat sätt att utlösa FieldShield-maskeringsfunktioner på basis av SQL-händelser; med andra ord att maskera data när den produceras i realtid.

Mer specifikt dokumenterar den här artikeln installationen och användningen av lagrade procedurer som anropar FieldShield-datamaskeringsbiblioteksfunktioner för att maskera PII i Oracle 12c på Windows. Den kan också fungera som en "procedurmodell" för andra databaser och operativsystem.

Minimikrav
  • En version av Oracle-databasen som är JVM-aktiverad
  • Oracle-servern /bin måste finnas i systemets PATH
  • En licensierad kopia av IRI FieldShield och dess Sandkey-programutvecklingskit
  • Oracle Java JRE 8
  • Microsoft .NET v4.8 Framework
Installation

När du har mappen sandkey.zip, extraherar du sandkey.jar och sandkeyFunctions.jar filer och libsandkey.dll fil som motsvarar ditt operativsystem. libsandkey.dll filen finns i .zip-filens rotmapp

Följ dessa steg när du har filerna:

  • Öppna en kommandotolk, navigera till var filerna finns och ange dessa kommandon i formatet:
loadjava -r -u /@ 

Om du får ett felmeddelande relaterat till CREATE$java$LOB$TABLE medan du gör detta, har du sannolikt otillräckliga privilegier och kan behöva köra kommandot en gång som SYSTEM.

  • Placera libsandkey.dll fil i bin mapp för Oracle-servern. Alternativt kan du lägga till platsen för filen i systemsökvägen.
  • Anslut till databasen som SYSTEM med SQL*Plus, eller ett liknande program, och skriv in följande fråga:
välj seq, kind, grantee, name, aktiverad från dba_java_policy där namn som '%java.lang.RuntimePermission%';

Hitta policyn märkt "java.lang.RuntimePermission#loadLibrary.*". I det här fallet är det nummer 99. Denna policy måste inaktiveras tillfälligt för att ge Sandkey-användaren tillstånd i databasen.

  • Nu när policynumret är känt, utfärda följande kommandon för att inaktivera policyn, ge behörighet till en användare och sedan återaktivera policyn:
exec dbms_java.disable_permission(99);exec dbms_java.grant_permission( 'IRIDEMO', 'SYS:java.lang.RuntimePermission', 'loadLibrary.libsandkey', '' );exec dbms_java.enable_permission(99);

före>

Se till att användarnamnet är fullt med versaler som visas, annars kommer systemet inte att känna igen det.

  • Skapa följande funktioner inom SQL*Plus genom att köra ett skript eller manuellt mata in dessa kommandon:
CREATE FUNCTION enc_aes256 (ingång VARCHAR2, passera VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.langCREATE_String' (ipCTION_String'; VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION enc_fp_alphanum (2,2 input VARGUARAGE) JAVANAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_aes256 (inmatning VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS LANGUAGE LANGUAGE.caFunctions java.lang.String, java.lang.String) returnera java.lang.String';/CREATE FUNCTION dec_fp_ascii (ingång VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decflang.String,javapascii, lang.String) returnera java.lang.String';/CREAT E FUNCTION dec_fp_alphanum (ingång VARCHAR2, pass VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/
  • Du kan nu skapa lagrade procedurer eller utlösare med hjälp av Sandkey-krypterings- och dekrypteringsfunktionerna, som är kompatibla med samma statiska datakrypteringsfunktioner i verktygsversionerna av IRI FieldShield, IRI DarkShield och IRI CellShield.
Användningsfall:PL/SQL-utlösare

Här är ett exempel som använder en Sandkey-krypteringsfunktion för att automatiskt kryptera data när den infogas i ANSTÄLLDA-tabellen:

Den här utlösaren använder funktionen enc_fp_ascii (ASCII-format som bevarar kryptering) för att kryptera LAST_NAME för den nya medarbetaren, och funktionen enc_fp_alphanum för att kryptera PHONE_NUMBER för den nya medarbetaren i varje infogat rad.

Innan data infogas skickar utlösaren den nya datan som indata , och lösenord (krypteringsnyckelvärde) som pass , till Sandkey-krypteringsfunktionerna. Funktionen returnerar chiffertextresultatet för varje värde som output till den nya raden.

I det här exemplet, eftersom fem nya rader infogades i tabellen, notera hur kolumnerna LAST_NAME och PHONE_NUMBER krypterades med de funktioner som beskrivs ovan.

När de väl har installerats kan Sandkey-maskeringsfunktioner användas på vilket sätt som helst inom PL/SQL-kapaciteten för att stödja mer "dynamiska" datamaskeringskrav för händelsediskar.

Kontakta för hjälp med detta tillvägagångssätt i din databasmiljö.

Användningsfall:Dekrypterad vy

Det här exemplet visar skapandet av en dekrypterad vy baserat på tabellen ANSTÄLLDA.

Den dekrypterade vyn skapas på samma sätt som vilken vy som helst, med undantag för hur datakolumnerna anropas. Enskilda kolumner dekrypteras med deras motsvarande funktioner, i formatet:

(, '') 

Skapandet av en dekrypterad vy gör det möjligt för utsedda användare att fråga efter data från vyn, samtidigt som de faktiska uppgifterna i tabellen ANSTÄLLDA förblir krypterade. Nedan är en bild av hur vyn skulle se ut när den frågas.

Integrationen av Sandkey och Oracle möjliggör större kontroll över säkerheten för dina data genom automatiska krypteringsutlösare, dekrypterade vyer eller anpassade lagrade procedurer. Mer generellt, med hjälp av FieldShield-maskeringsrutiner och -procedurer som PL/SQL, kan du nu maskera känslig data på basis av databashändelser i realtid för en mängd olika användningsfall.


  1. Måste deklarera den skalära variabeln

  2. NVL() Funktion i Oracle

  3. Datum/tidsstämpel för att spela in när en post lades till i tabellen?

  4. Hur man fixar den nya datatypen som orsakar problem för MS Access