Artigos anteriores no blog IRI detalharam o mascaramento de dados estáticos de novos dados de banco de dados usando a lógica /INCLUDE ou a sintaxe /QUERY em scripts de trabalho IRI FieldShield agendados que exigiam alterações nos valores de coluna para detectar atualizações. Este artigo descreve uma maneira mais passiva, mas integrada, de acionar as funções de mascaramento do FieldShield com base em eventos SQL; em outras palavras, para mascarar os dados à medida que são produzidos em tempo real.
Mais especificamente, este artigo documenta a instalação e o uso de procedimentos armazenados que chamam as funções da biblioteca de mascaramento de dados FieldShield para mascarar PII no Oracle 12c no Windows. Também pode servir como um “modelo de procedimento” para outros bancos de dados e sistemas operacionais.
Requisitos mínimos
- Uma versão do banco de dados Oracle habilitada para JVM
- O servidor Oracle /bin deve estar no PATH do sistema
- Uma cópia licenciada do IRI FieldShield e seu kit de desenvolvimento de software Sandkey
- Oracle Java JRE 8
- Microsoft .NET v4.8 Framework
Instalação
Depois de ter a pasta sandkey.zip, extraia o sandkey.jar e sandkeyFunctions.jar arquivos e o libsandkey.dll arquivo que corresponde ao seu sistema operacional. O libsandkey.dll arquivo está na pasta raiz do arquivo .zip
Siga estas etapas depois de ter os arquivos:
- Abra um prompt de comando, navegue até onde os arquivos estão localizados e digite estes comandos no formato de:
loadjava -r -u/ @
Se você receber um erro relacionado a CREATE$java$LOB$TABLE ao fazer isso, provavelmente não tem privilégios suficientes e pode precisar executar o comando uma vez como SYSTEM.
- Coloque o libsandkey.dll arquivo no bin pasta do servidor Oracle. Como alternativa, adicione o local do arquivo ao caminho do sistema.
- Conecte-se ao banco de dados como SYSTEM usando SQL*Plus ou um programa semelhante e insira a seguinte consulta:
selecione seq, kind, grantee, name, enabled de dba_java_policy onde o nome é como ‘%java.lang.RuntimePermission%’;
Encontre a política rotulada “java.lang.RuntimePermission#loadLibrary.*”. Nesse caso, é o número 99. Essa política precisa ser desabilitada temporariamente para conceder permissão ao usuário Sandkey no banco de dados.
- Agora que o número da política é conhecido, emita os seguintes comandos para desativá-la, conceder permissão a um usuário e reativar a 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);
Certifique-se de que o nome de usuário esteja totalmente em letras maiúsculas, conforme mostrado, ou o sistema não o reconhecerá.
- Crie as seguintes funções no SQL*Plus executando um script ou inserindo manualmente estes comandos:
CREATE FUNCTION enc_aes256 (entrada VARCHAR2, passe VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION enc_fp_ascii (entrada VARCHAR2, passe VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION enc_fp_alphanum (entrada VARCHAR2, passe VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_aes256 (entrada VARCHAR2, passe VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decaes256( java.lang.String, java.lang.String) return java.lang.String';/CREATE FUNCTION dec_fp_ascii (entrada VARCHAR2, passe VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpascii(java.lang.String, java. lang.String) return java.lang.String';/CREAT E FUNCTION dec_fp_alphanum (entrada VARCHAR2, passe VARCHAR2) RETURN VARCHAR2AS LANGUAGE JAVANAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String';/
- Agora você pode criar procedimentos armazenados ou acionadores usando as funções de criptografia e descriptografia Sandkey, que são compatíveis com as mesmas funções de criptografia de dados estáticos nas versões de utilitário do IRI FieldShield, IRI DarkShield e IRI CellShield.
Caso de uso:gatilho PL/SQL
Aqui está um exemplo que usa uma função de criptografia Sandkey para criptografar automaticamente os dados conforme são inseridos na tabela EMPLOYEES:
Esse gatilho usa a função enc_fp_ascii (criptografia com preservação do formato ASCII) para criptografar o LAST_NAME do novo funcionário e a função enc_fp_alphanum para criptografar o PHONE_NUMBER do novo funcionário em cada linha inserida.
Antes que os dados sejam inseridos, o gatilho passa os novos dados como entrada e senha (valor da chave de criptografia) como pass , nas funções de criptografia Sandkey. A função retorna o resultado do texto cifrado de cada valor como saída para a nova linha.
Neste exemplo, como cinco novas linhas foram inseridas na tabela, observe como as colunas LAST_NAME e PHONE_NUMBER foram criptografadas com as funções descritas acima.
Na verdade, uma vez instaladas, as funções de mascaramento Sandkey podem ser usadas de qualquer maneira desejada dentro dos recursos do PL/SQL para suportar requisitos de mascaramento de dados de unidade de evento mais “dinâmicos”.
Entre em contato para obter ajuda com essa abordagem em seu ambiente de banco de dados.
Caso de uso:visualização descriptografada
Este exemplo mostra a criação de uma exibição descriptografada com base na tabela EMPLOYEES.
A exibição descriptografada é criada de forma semelhante a como qualquer exibição seria criada, com exceção de como as colunas de dados são chamadas. Colunas individuais são descriptografadas usando suas funções correspondentes, no formato de:
( , ‘ ’)
A criação de uma visualização descriptografada permite que usuários designados consultem dados da visualização, enquanto permite que os dados reais na tabela EMPLOYEES permaneçam criptografados. Abaixo está uma imagem de como a exibição apareceria quando consultada.
A integração de Sandkey e Oracle permite maior controle sobre a segurança de seus dados por meio de acionadores de criptografia automática, visualizações descriptografadas ou procedimentos armazenados personalizados. De maneira mais geral, usando rotinas e procedimentos de mascaramento do FieldShield, como PL/SQL, agora você pode mascarar dados confidenciais com base em eventos de banco de dados em tempo real para diversos casos de uso.