Database
 sql >> Base de Dados >  >> RDS >> Database

Como classificar, localizar e mascarar PII em bancos de dados…


Depois de fazer as conexões com o banco de dados, os usuários do IRI FieldShield e do IRI DarkShield têm uma ampla variedade de opções para classificar, localizar e desidentificar dados confidenciais em um ou mais esquemas. Eles agora podem efetuar todos esses objetivos de uma vez por meio de recursos baseados em regras no IRI Workbench.

Este artigo demonstra passo a passo o uso de classes de dados para localizar e mascarar PII em um pequeno esquema de banco de dados relacional usando FieldShield, embora você possa estender essas etapas para esquemas maiores ou mais. Se o seu banco de dados contiver colunas semi ou não estruturadas, consulte este artigo sobre procedimentos de máscara de pesquisa do DarkShield para RDBs ou este artigo para bancos de dados NoSQL.

Nas operações RDB de coluna estruturada do FieldShield, os dados geralmente são classificados em um esquema por vez, mas são mascarados globalmente usando suas regras salvas, ad hoc ou no agendamento para atualizações.



As regras de mascaramento de dados que você define permitem selecionar a função mais adequada para cada classe de dados e aplicá-la de forma consistente. Produzir o mesmo resultado de texto cifrado exclusivo para cada valor de texto simples original exclusivo — em qualquer tabela ou arquivo — também preserva a integridade referencial; por exemplo, as junções ainda funcionarão depois que os dados forem mascarados.

Este exemplo usa uma amostra das tabelas Oracle no esquema SCOTT fornecido em nosso sandbox de VM. Para se conectar a outro banco de dados, você precisaria configurar:
  • O perfil de conexão DTP para seu banco de dados no IRI Workbench usando JDBC
  • O DSN ODBC para esse banco de dados de origem

Para obter informações sobre como conectar seus bancos de dados para uso com FieldShield, consulte Configuração de banco de dados aqui.

Os passos que vou descrever são:
  1. Configuração – Definir classes de dados e regras de mascaramento
  2. Verificar – Executar o Assistente de pesquisa de classe de dados de esquema
  3. Revisar e ajustar – Editor de biblioteca de classes de dados
  4. Máscara – Executar o assistente de mascaramento de banco de dados de classe de dados

Há também uma série de vídeos vinculada aqui com instruções passo a passo semelhantes.
Configuração – Definir classes de dados e regras de mascaramento

Para usar classes de dados com regras e assistentes, as classes de dados devem primeiro ser definidas e salvas. Isso pode ser feito através de Janela> Preferências> IRI> Classes e grupos de dados . Consulte este artigo sobre Classificação de dados no IRI Workbench para um mergulho mais profundo. Há também tutoriais em vídeo para configuração de classificação de dados e regras de mascaramento.


As classes de dados podem corresponder às colunas pelo nome da coluna (a classe EMAIL corresponde a uma coluna denominada EMAIL) ou correspondendo aos dados contidos na coluna. Este exemplo tem classes que possuem uma expressão regular ou um arquivo de conjunto. Um arquivo de conjunto contém entradas que servem como pesquisa de dicionário.

Nessa página de preferência, confirme se essas classes de dados existem:
  • Classe CREDIT_CARD que usa \b((4\d{12}(\d{3})?))|(?:5[1-5][0-9]{2}|222[1-9] |22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|( 3[47]\d{13})|(3(0[0-5]|[68]\d)\d{11})|(6(011|5\d{2})\d{12 })|((2131|1800|35\d{3})\d{11})|(8\d{15})\b como um combinador.
  • Classe EMAIL que usa \b[\w._%+-]+@[\w.-]+\.[A-Za-z]{2,4}\b
  • Classe PHONE_US que usa ^(\+?(1)([ .-]?)?)?(\(?([2-9]\d{2})\)?([ .-]?)? )([2-9]\d{2})([ .-]?)(\d{4})([ #eExXtT]*)(\d{2,6})?&
  • Classe PIN_US que usa \b([0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4})\b
  • Classe LAST_NAME que usa o arquivo de conjunto C:/IRI/cosort100/sets/names/names_last.set



Caso contrário, clique em Restaurar padrões .

No topo da página de preferências, há uma entrada Limiar de correspondência . Isso representa a porcentagem de correspondências necessárias para que uma coluna seja atribuída a uma classe de dados. A pesquisa de esquema verificará blocos de dados de 4K até que as correspondências atinjam esse limite. Se ele nunca atingir esse limite, nenhuma classe de dados será atribuída.

Como sei que tenho colunas que contêm sobrenomes que podem não ser chamados de “LAST_NAME” ou podem nem ter dados correspondentes no arquivo definido, posso usar uma expressão regular para corresponder minha classe de dados para gostar de nomes de coluna. Por exemplo, pode haver uma coluna chamada LNAME ou LASTNAME.

Para editar a classe de dados LAST_NAME, clique na entrada LAST_NAME na visualização Classes de dados e clique em Editar . Alterar o nome para L(AST)?[_-]?NAME (sublinhado e traço entre parênteses). Clique em OK . Clique em Aplicar e Fechar .

Você deve predeterminar como deseja que os valores em cada classe de dados sejam mascarados (ou seja, seu formato de coluna de destino), para que você possa definir essas regras a seguir. Em nosso exemplo, haverá redação, criptografia com preservação de formato e regras de pseudonimização. Cada um precisa ser definido apenas uma vez, no menu IRI.

Para definir essa regra neste exemplo, siga estas etapas:

Regra 1 – Redação (para números de segurança social)
  1. Selecione menu IRI> Nova regra .
  2. Selecione Regras de campo e clique em Avançar .
  3. Selecione Função de redação , use SSN para o início do nome da regra para que leia SSNRedactionRule e clique em Avançar .
  4. Selecione Definir máscara botao de radio. Digite 1 na posição inicial e 5 em Comprimento . Clique em Adicionar à tabela e Concluir .

Regra 2 – Criptografia (para números de contas de cartão de crédito, endereços de e-mail e números de telefone)
  1. Selecione menu IRI> Nova regra .
  2. Selecione Regras de campo e clique em Avançar .
  3. Selecione Funções de criptografia e descriptografia e clique em Avançar . Não renomeie a regra.
  4. Selecione o enc_fp_aes256_alphanum opção à esquerda. Digite segredo para a Senha . Consulte esta página sobre as opções de gerenciamento de chaves de criptografia.
  5. Clique em Concluir .

Regra 3 – Pseudonimização (para sobrenomes)
  1. Selecione menu IRI> Nova regra .
  2. Selecione Regras de campo e clique em Avançar .
  3. Selecione Substituição de pseudônimo , renomeie-o como LNamePseudonymRule e clique em Avançar .
  4. Clique em Usar sua própria lista de pseudônimos , e Navegar para o arquivo de pesquisa, C:/git/workbench-demos/Database_Classification_Masking/sets/lnames.set
  5. Selecione Usar sorteio aleatório da lista de pseudônimos . Observe que a pseudonimização recuperável também é possível, mas é mais complicada devido a prováveis ​​alterações nos dados de origem.
  6. Clique em Concluir .

Agora que nossas regras de mascaramento de classe de dados estão definidas, podemos realizar operações de pesquisa e mascaramento para localizar e corrigir os dados globalmente em um ou mais esquemas de banco de dados.
Verificar – Executar o Assistente de pesquisa de classe de dados de esquema

Para localizar todos os dados em conformidade com nossas definições de classe em todas as tabelas de um esquema, use o Assistente de pesquisa de classe de dados de esquema. Isso produz um relatório de cada tabela e coluna com o PII pré-classificado dentro, cria um arquivo de classe de dados específico para seu projeto e abre um editor de formulário para esse arquivo. Nessa caixa de diálogo de edição (nossa próxima etapa depois desta), você pode revisar e modificar sua classe de dados e definições de regras de mascaramento antes de passar para o mascaramento de dados globais na etapa final.

Você pode executar o assistente no grupo de menus Data Discovery na barra de ferramentas do IRI Workbench. Você também pode executar o assistente de pesquisa diretamente do Data Source Explorer, para preencher previamente o assistente com um esquema selecionado. Clique com o botão direito do mouse no esquema SCOTT no Data Source Explorer (DSE) e selecione IRI> Schema Data Class Search .

Na página de configuração do assistente de pesquisa, insira o local para salvar o arquivo de classe de dados. Só pode haver um desse tipo de arquivo em cada projeto, daí o status somente leitura do campo de nome. Deixe os padrões como estão. Clique em Avançar .



A página de entrada mostra que um esquema está selecionado. Clique em Avançar . A próxima página permite limitar as colunas pesquisadas por tipos de dados. Incluir NUMERIC e clique em Avançar .

A página Excluir itens permite excluir tabelas ou colunas durante a verificação. Clique em Avançar .

A página de classe de dados permite filtrar as classes de dados que serão usadas durante a varredura. Selecione apenas CREDIT_CARD , E-MAIL , L(AST)?[_-]?NAME, PHONE_US e PIN_US . Clique em Concluir .

Junto com os relatórios, isso cria (ou anexa) uma biblioteca de classes de dados com mapeamentos entre colunas de origem e classes de dados. O editor de formulários que é aberto permite atribuir regras aos resultados.

Essa pesquisa em 46 tabelas resultou em 18 correspondências de coluna, que eu sei que são a maioria, mas não totalmente completas:



Eu sei que algumas colunas não foram correspondidas devido às tabelas estarem vazias ou nomes não encontrarem correspondências nos arquivos definidos. Na próxima etapa, posso resolver essas falhas e confirmar minhas regras de mascaramento por tabela.
Revisar e ajustar – Editor de biblioteca de classes de dados

Agora que os resultados da pesquisa estão abertos na janela de edição do formulário da biblioteca de classes de dados, você pode examinar e modificar as regras de coluna no nível da tabela e eliminar tabelas vazias no esquema com nomes de coluna correspondentes aos seus nomes de classe de dados. Tudo isso ajuda a confirmar que você está configurado corretamente para o trabalho de mascaramento em massa a seguir.

Observe que essa exibição também oferece suporte a resultados de pesquisa de arquivo simples (classe de dados de diretório) junto com seus resultados de pesquisa de banco de dados. Ao juntar esses resultados à sua biblioteca de classes de dados, é mais fácil manter suas funções de mascaramento (regras) iguais em diferentes fontes de dados. Isso ajuda a manter a integridade referencial e testar a consistência dos dados em ambientes de aplicativos mais distribuídos.

Clique em uma fonte de dados (tabela) para exibir detalhes sobre essa fonte e uma visualização dos dados nela. Se foi feita uma correspondência com uma classe de dados, essa coluna mostra essa classe e como ela foi correspondida.

No caso da minha tabela PERSONS abaixo, você pode ver que:todos os valores da coluna SSN corresponderam ao padrão RegEx da minha classe de dados PIN_US, e as colunas LASTNAME e CREDIT_CARD corresponderam aos nomes das classes de dados, evitando a necessidade dessas verificações de coluna.



As edições nos mapeamentos de classe de dados podem ser feitas alterando a classe de dados por meio da lista suspensa ou desmarcando a coluna para remover o mapeamento completamente. Se uma tabela estiver vazia, ela pode não atribuir todos os mapeamentos desejados. Existem três maneiras de lidar com isso:
  1. Você pode adicionar as tabelas à página de exclusão no assistente de classificação acima para que ela não seja adicionada à biblioteca de classes de dados
  2. Se a tabela tiver dados no futuro, atribua as classes de dados manualmente aqui. Então também
    • Desmarque-os no assistente de mascaramento
    • Deixe-os e o assistente de mascaramento criará scripts de trabalho que são executados, mas não mascaram
  3. ou remova a fonte de dados da biblioteca de classes de dados

Neste exemplo, selecione as seguintes fontes de dados e clique em Remover já que estão vazios ou não precisam ser mascarados:


   SCOTT.DEMO_ROWGEN
   SCOTT.DM_EMPLOYEES
   SCOTT.PATIENT_RECORD_ENCRYPTED

Deve-se tomar cuidado para verificar os resultados na biblioteca de classes de dados antes de mascarar. Às vezes, as correspondências são perdidas porque os dados não são válidos ou o correspondente da classe de dados precisa ser modificado. Também é possível que falsos positivos possam ocorrer.

Neste exemplo, uma classe de dados precisa ser atribuída manualmente porque há formatos de endereço de e-mail e número de telefone dos EUA inválidos, mas queremos mascarar essas colunas de qualquer maneira. Podemos selecionar e classificar esta coluna para:

   SCOTT.EMPLOYEES.PHONE_NUMBER> PHONE_US

Depois que os resultados forem revisados ​​e modificados conforme necessário, clique nas classes de dados na biblioteca à esquerda para atribuir regras padrão. Isso permitirá que você atribua as regras a todas as fontes apenas atribuindo uma regra padrão a uma classe.

Neste exemplo, atribuí minhas regras de mascaramento às classes de dados na biblioteca da seguinte forma:

   CREDIT_CARD> FieldEncryptionRule
   EMAIL> FieldEncryptionRule
   L(AST)?[_-]?NAME> LNamePseudonymRule
   PHONE_US> FieldEncryptionRule
   PIN_US> SSNRedactionRule



Você pode verificar se suas atribuições de regras globais foram propagadas completa e corretamente nas fontes de dados revisando as regras de mascaramento em cada uma. Por exemplo, na tabela SCOTT.PERSONS mostrada primeiro acima com regras, agora temos:



Se uma coluna em uma tabela específica não tiver uma regra ou precisar de uma regra diferente, essa regra poderá ser adicionada ou modificada depois que as regras padrão forem aplicadas, endereçando-as em cada fonte de dados.
Máscara – Execute o assistente de mascaramento de banco de dados de classe de dados

Depois de verificar se as regras de mascaramento corretas foram atribuídas às suas classes de dados, você estará pronto para aplicá-las globalmente.

Clique com o botão direito do mouse na iriLibrary.dataclass objeto em sua pasta de projeto em sua árvore do IRI Workbench Project Explorer e selecione IRI> Novo trabalho de mascaramento de banco de dados de classe de dados . Na primeira página do assistente, verifique se a pasta do projeto é onde sua classe de dados e biblioteca de regras foram salvas e nomeie o trabalho. Selecione a Mostrar página de resumo para ver os detalhes do trabalho.

O assistente permite atualizar os resultados mascarados no Mesmo tabelas de origem (para mascará-las estaticamente), para Diferentes tabelas de destino ou para arquivos simples (recomendado) para que você possa primeiro validar os resultados e carregá-los nos destinos. Altere a Saída para Arquivos simples e clique em Avançar .

Na página Filtro de Classe de Dados, deixe todas as classes de dados selecionadas. Clique em Avançar . Na página Fontes de Dados, deixe todos os itens selecionados. Se houvesse tabelas nas quais você não desejasse executar o trabalho, você as desmarcaria aqui.

Como optei por mostrar a tela de resumo, posso verificar o trabalho:



antes de clicar em Concluir .

Os scripts são então criados e um diagrama de fluxo é aberto para ilustrar todo o trabalho, que também é serializado como um arquivo de lote do Windows (ou Unix). Cada tabela que terá uma coluna mascarada é representada por um bloco de mapeamento de transformação marrom, que é serializado em um script de tarefa.



Revise as operações de mascaramento clicando duas vezes nos blocos de mapeamento de transformação e examinando as linhas laranja para os destinos. Isso denota colunas sendo alteradas da entrada.

Clique nos campos à direita da linha laranja e veja a visualização de propriedades na parte inferior da tela. A instrução Campo Avançado mostra a transformação (função de mascaramento) aplicada.



Quando estiver confortável com o trabalho de mascaramento que foi criado, execute-o. Na new_classProtection pasta, clique com o botão direito do mouse em new_classProtection.bat arquivo e selecione Executar como> Programa em lote .

O trabalho é executado na linha de comando e os arquivos de saída mascarados podem ser abertos para revisão na pasta do projeto ou no sistema de arquivos. De fato, após a execução da operação em lote, todos os scripts de tarefa de mascaramento e saídas de arquivo simples são mostrados na minha nova pasta de trabalho.

A captura de tela abaixo mostra as da esquerda, o estado antes e depois de uma das minhas tabelas, PERSONS, no centro, e as instruções de tarefa específicas no script e na forma de estrutura de tópicos à direita. Veja como as três colunas classificadas e atribuídas por regras nesta tabela foram mascaradas conforme planejado:



Depois que o trabalho de mascaramento em lote for executado, você poderá verificar novamente os resultados antes de:
  1. carregue-os em tabelas no IRI Workbench (que pode criar arquivos de carregador automaticamente);
  2. modifique o trabalho para fazer alterações; e/ou, 
  3. execute novamente o assistente para direcionar a saída para as tabelas.

Esses trabalhos de mascaramento são executados na linha de comando e podem ser acionados ou agendados para atualizações de dados e arquivamento automático. Entre em contato se tiver dúvidas ou precisar de ajuda com qualquer aspecto desse processo de configuração de ponta a ponta ou de sua implantação.
  1. Para evitar a possibilidade de resultados de pesquisa falsos positivos em cartões de crédito e números de identificação nacional, você pode executar automaticamente uma verificação de validade computacional durante as pesquisas por meio de valores de correspondência de padrões. Selecione ou crie um script de validação de classe de dados para associar à definição de classe de dados.
  2. Se você usar o FieldShield no Voracity, poderá classificar esses arquivos simultaneamente ou posteriormente na chave de índice primária da tabela de destino para acelerar carregamentos em massa e consultas comuns.