sql >> Base de Datos >  >> RDS >> Database

Enmascaramiento de datos en tiempo real mediante disparadores

Los artículos anteriores en el blog de IRI detallaron el enmascaramiento de datos estáticos de los nuevos datos de la base de datos utilizando la lógica /INCLUDE o la sintaxis /QUERY en los scripts de trabajo programados de IRI FieldShield que requerían cambios en los valores de las columnas para detectar actualizaciones. Este artículo describe una forma más pasiva pero integrada de activar las funciones de enmascaramiento de FieldShield sobre la base de eventos SQL; en otras palabras, enmascarar los datos a medida que se producen en tiempo real.

Más específicamente, este artículo documenta la instalación y el uso de procedimientos almacenados que llaman a las funciones de biblioteca de enmascaramiento de datos de FieldShield para enmascarar PII en Oracle 12c en Windows. También puede servir como un "modelo de procedimiento" para otras bases de datos y sistemas operativos.

Requisitos mínimos
  • Una versión de la base de datos de Oracle que esté habilitada para JVM
  • El servidor Oracle /bin debe estar en la RUTA del sistema
  • Una copia con licencia de IRI FieldShield y su kit de desarrollo de software Sandkey
  • Oracle Java JRE 8
  • Microsoft .NET v4.8 Framework
Instalación

Una vez que tenga la carpeta sandkey.zip, extraiga el sandkey.jar y sandkeyFunctions.jar y el libsandkey.dll archivo que corresponde a su sistema operativo. El libsandkey.dll el archivo está en la carpeta raíz del archivo .zip

Siga estos pasos después de tener los archivos:

  • Abra un símbolo del sistema, navegue hasta donde se encuentran los archivos e ingrese estos comandos en el formato de:
loadjava -r -u <username>/<password>@<database> <filename>

Si recibe un error relacionado con CREATE$java$LOB$TABLE mientras hace esto, es probable que no tenga privilegios suficientes y que deba ejecutar el comando una vez como SISTEMA.

  • Coloque el libsandkey.dll archivo en el bin carpeta del servidor de Oracle. Alternativamente, agregue la ubicación del archivo a la ruta del sistema.
  • Conéctese a la base de datos como SISTEMA usando SQL*Plus, o un programa similar, e ingrese la siguiente consulta:
select seq, kind, grantee, name, enabled from dba_java_policy where name like ‘%java.lang.RuntimePermission%’;

Busque la política etiquetada como "java.lang.RuntimePermission#loadLibrary.*". En este caso, es el número 99. Esta política debe desactivarse temporalmente para otorgar permiso al usuario de Sandkey en la base de datos.

  • Ahora que conoce el número de política, emita los siguientes comandos para deshabilitar la política, otorgar permiso a un usuario y luego volver a habilitar la política:
exec dbms_java.disable_permission(99);

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

exec dbms_java.enable_permission(99);

Asegúrese de que el nombre de usuario esté en mayúsculas como se muestra, o el sistema no lo reconocerá.

  • Cree las siguientes funciones dentro de SQL*Plus ejecutando un script o ingresando manualmente estos comandos:
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';

/
  • Ahora puede crear procedimientos almacenados o disparadores utilizando las funciones de cifrado y descifrado de Sandkey, que son compatibles con las mismas funciones de cifrado de datos estáticos en las versiones de utilidad de IRI FieldShield, IRI DarkShield e IRI CellShield.
Caso de uso:activador PL/SQL

Este es un ejemplo que utiliza una función de cifrado Sandkey para cifrar automáticamente los datos a medida que se insertan en la tabla EMPLOYEES:

Este activador utiliza la función enc_fp_ascii (formato ASCII que preserva el cifrado) para cifrar el APELLIDO del nuevo empleado y la función enc_fp_alphanum para cifrar el NÚMERO_TELÉFONO del nuevo empleado en cada fila insertada.

Antes de que se inserten los datos, el disparador pasa los nuevos datos como entrada y contraseña (valor de clave de cifrado) como contraseña , en las funciones de cifrado Sandkey. La función devuelve el resultado del texto cifrado de cada valor como salida a la nueva fila.

En este ejemplo, cuando se insertaron cinco filas nuevas en la tabla, observe cómo las columnas LAST_NAME y PHONE_NUMBER se cifraron con las funciones descritas anteriormente.

De hecho, una vez instaladas, las funciones de enmascaramiento de Sandkey se pueden usar de la forma deseada dentro de las capacidades de PL/SQL para admitir requisitos de enmascaramiento de datos de la unidad de eventos más "dinámicos".

Póngase en contacto para obtener ayuda con este enfoque en su entorno de base de datos.

Caso de uso:vista descifrada

Este ejemplo muestra la creación de una vista descifrada basada en la tabla EMPLOYEES.

La vista descifrada se crea de forma similar a como se crearía cualquier vista, con la excepción de cómo se llaman las columnas de datos. Las columnas individuales se descifran usando sus funciones correspondientes, en el formato de:

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

La creación de una vista descifrada permite que los usuarios designados consulten los datos de la vista, al tiempo que permite que los datos reales de la tabla EMPLOYEES permanezcan cifrados. A continuación se muestra una imagen de cómo aparecería la vista cuando se consulta.

La integración de Sandkey y Oracle permite un mayor control sobre la seguridad de sus datos a través de activadores de cifrado automáticos, vistas descifradas o procedimientos almacenados personalizados. En términos más generales, al usar las rutinas y procedimientos de enmascaramiento de FieldShield como PL/SQL, ahora puede enmascarar datos confidenciales sobre la base de eventos de bases de datos en tiempo real para una variedad de casos de uso.