Database
 sql >> Database >  >> RDS >> Database

Mascheratura dei dati in tempo reale tramite trigger

Articoli precedenti nel blog IRI hanno descritto in dettaglio il mascheramento dei dati statici dei nuovi dati del database utilizzando la logica /INCLUDE o la sintassi /QUERY negli script di lavoro FieldShield IRI pianificati che richiedevano modifiche ai valori delle colonne per rilevare gli aggiornamenti. Questo articolo descrive un modo più passivo ma integrato per attivare le funzioni di mascheramento FieldShield sulla base di eventi SQL; in altre parole, per mascherare i dati così come vengono prodotti in tempo reale.

Più specificamente, questo articolo documenta l'installazione e l'uso di stored procedure che chiamano le funzioni della libreria di mascheramento dei dati FieldShield per mascherare le PII in Oracle 12c su Windows. Può anche fungere da "modello di procedura" per altri database e sistemi operativi.

Requisiti minimi
  • Una versione del database Oracle abilitata per JVM
  • Il server Oracle /bin deve trovarsi nel PERCORSO del sistema
  • Una copia con licenza di IRI FieldShield e del relativo kit di sviluppo software Sandkey
  • Oracle Java JRE 8
  • Microsoft .NET v4.8 Framework
Installazione

Una volta che hai la cartella sandkey.zip, estrai il sandkey.jar e sandkeyFunctions.jar file e libsandkey.dll file che corrisponde al tuo sistema operativo. Il libsandkey.dll il file si trova nella cartella principale del file .zip

Segui questi passaggi dopo aver ottenuto i file:

  • Apri un prompt dei comandi, vai alla posizione in cui si trovano i file e inserisci questi comandi nel formato di:
loadjava -r -u <username>/<password>@<database> <filename>

Se ricevi un errore relativo a CREATE$java$LOB$TABLE mentre esegui questa operazione, probabilmente non hai privilegi sufficienti e potrebbe essere necessario eseguire il comando una volta come SYSTEM.

  • Inserisci libsandkey.dll file nel bin cartella del server Oracle. In alternativa, aggiungi la posizione del file al percorso di sistema.
  • Connettiti al database come SYSTEM usando SQL*Plus, o un programma simile, e inserisci la seguente query:
select seq, kind, grantee, name, enabled from dba_java_policy where name like ‘%java.lang.RuntimePermission%’;

Trova la policy denominata "java.lang.RuntimePermission#loadLibrary.*". In questo caso, è il numero 99. Questa politica deve essere temporaneamente disabilitata per concedere il permesso all'utente Sandkey nel database.

  • Ora che il numero del criterio è noto, emetti i seguenti comandi per disabilitare il criterio, concedere l'autorizzazione a un utente e quindi riattivare il criterio:
exec dbms_java.disable_permission(99);

exec dbms_java.grant_permission( ‘IRIDEMO’, ‘SYS:java.lang.RuntimePermission’, ‘loadLibrary.libsandkey’, ‘’ );

exec dbms_java.enable_permission(99);

Assicurati che il nome utente sia completamente in maiuscolo come mostrato, altrimenti il ​​sistema non lo riconoscerà.

  • Crea le seguenti funzioni all'interno di SQL*Plus eseguendo uno script o inserendo manualmente questi comandi:
CREATE FUNCTION enc_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2

AS LANGUAGE JAVA

NAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.lang.String';

/

CREATE FUNCTION enc_fp_ascii (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2

AS LANGUAGE JAVA

NAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String';

/

CREATE FUNCTION enc_fp_alphanum (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2

AS LANGUAGE JAVA

NAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String';

/

CREATE FUNCTION dec_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2

AS LANGUAGE JAVA

NAME 'sandkeyFunctions.Functions.decaes256(java.lang.String, java.lang.String) return java.lang.String';

/

CREATE FUNCTION dec_fp_ascii (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2

AS LANGUAGE JAVA

NAME 'sandkeyFunctions.Functions.decfpascii(java.lang.String, java.lang.String) return java.lang.String';

/

CREATE FUNCTION dec_fp_alphanum (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2

AS LANGUAGE JAVA

NAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';

/
  • Ora puoi creare stored procedure o trigger utilizzando le funzioni di crittografia e decrittografia Sandkey, che sono compatibili con le stesse funzioni di crittografia dei dati statici nelle versioni di utilità di IRI FieldShield, IRI DarkShield e IRI CellShield.
Caso d'uso:trigger PL/SQL

Ecco un esempio che utilizza una funzione di crittografia Sandkey per crittografare automaticamente i dati inseriti nella tabella EMPLOYEES:

Questo trigger utilizza la funzione enc_fp_ascii (formato ASCII che preserva la crittografia) per crittografare il COGNOME del nuovo dipendente e la funzione enc_fp_alphanum per crittografare il PHONE_NUMBER del nuovo dipendente in ogni riga inserita.

Prima che i dati vengano inseriti, il trigger passa i nuovi dati come input e password (valore della chiave di crittografia) come pass , nelle funzioni di crittografia Sandkey. La funzione restituisce il risultato del testo cifrato di ciascun valore come output alla nuova riga.

In questo esempio, quando nella tabella sono state inserite cinque nuove righe, nota come le colonne LAST_NAME e PHONE_NUMBER sono state crittografate con le funzioni sopra descritte.

Infatti, una volta installate, le funzioni di mascheramento Sandkey possono essere utilizzate in qualsiasi modo all'interno delle capacità di PL/SQL per supportare requisiti di mascheramento dei dati di unità di eventi più "dinamici".

Contatta per assistenza con questo approccio nel tuo ambiente di database.

Caso d'uso:visualizzazione decrittografata

Questo esempio mostra la creazione di una vista decrittografata basata sulla tabella EMPLOYEES.

La vista decrittografata viene creata in modo simile a come verrebbe creata qualsiasi vista, ad eccezione del modo in cui vengono chiamate le colonne di dati. Le singole colonne vengono decrittografate utilizzando le funzioni corrispondenti, nel formato di:

<functionName>(<columnName>, ‘<password/key>’) <displayName>

La creazione di una vista decrittografata consente agli utenti designati di interrogare i dati dalla vista, consentendo al contempo di mantenere crittografati i dati effettivi nella tabella EMPLOYEES. Di seguito è riportata un'immagine di come apparirà la vista quando richiesta.

L'integrazione di Sandkey e Oracle consente un maggiore controllo sulla sicurezza dei dati tramite trigger di crittografia automatici, viste decrittografate o procedure archiviate personalizzate. Più in generale, utilizzando le routine e le procedure di mascheramento FieldShield come PL/SQL, ora puoi mascherare i dati sensibili sulla base di eventi di database in tempo reale per una varietà di casi d'uso.