sql >> Databasteknik >  >> RDS >> Database

Hur man klassificerar, hittar och maskerar PII i databaser...

När de väl har gjort sina databasanslutningar har IRI FieldShield- och IRI DarkShield-användare båda ett brett utbud av alternativ för att klassificera, hitta och avidentifiera känslig data över ett eller flera scheman. De kan nu uppnå alla dessa mål på en gång genom regelbaserade faciliteter i IRI Workbench.

Den här artikeln visar steg-för-steg användningen av dataklasser för att hitta och maskera PII över ett litet relationsdatabasschema med FieldShield, även om du kan utöka dessa steg till större eller fler scheman. Om din databas innehåller semi- eller ostrukturerade kolumner, se den här artikeln om DarkShield klassificera-sök-mask-procedurer för RDB:er, eller den här artikeln för NoSQL DB:er.

I FieldShield-strukturerad kolumn RDB-operationer klassificeras data vanligtvis ett schema i taget, men maskeras globalt med hjälp av dina sparade regler, ad hoc eller enligt schema för uppdateringar.

De datamaskeringsregler som du definierar låter dig välja den funktion som är bäst lämpad för varje dataklass och att tillämpa den konsekvent. Att producera samma unika chiffertextresultat för varje unikt ursprungliga klartextvärde – i vilken tabell eller fil som helst – bevarar också referensintegriteten; t.ex. anslutningar fungerar fortfarande efter att data har maskerats.

Det här exemplet använder exempel på Oracle-tabellerna i SCOTT-schemat som finns i vår virtuella datorsandlåda. För att ansluta till en annan databas måste du konfigurera:

  • DTP-anslutningsprofilen för din DB i IRI Workbench med JDBC
  • ODBC DSN för den källdatabasen

För information om hur du ansluter dina databaser för användning med FieldShield, se DB-installation här.

Stegen jag kommer att beskriva är:

  1. Inställning – Definiera dataklasser och maskeringsregler
  2. Skanna – Kör guiden Schema Data Class Search
  3. Granska och justera – Redaktör för dataklassbibliotek
  4. Mask – kör guiden Data Class Database Masking

Det finns också en videoserie länkad här med liknande steg-för-steg-instruktioner.

Inställningar – Definiera dataklasser och maskeringsregler

För att använda dataklasser med regler och guider måste dataklasserna först definieras och sparas. Detta kan göras genom Fönster> Inställningar> IRI> Dataklasser och grupper . Se den här artikeln om dataklassificering i IRI Workbench för ett djupare dyk. Det finns också självstudievideor för dataklassificeringsinställning och maskeringsregler.

Dataklasserna kan matcha till kolumner antingen genom kolumnnamn (klassen EMAIL matchar en kolumn som heter EMAIL) eller genom att matcha data som finns i kolumnen. Det här exemplet har klasser som antingen har ett reguljärt uttryck eller en set-fil. En uppsättningsfil innehåller poster som fungerar som en ordboksuppslagning.

På den inställningssidan, bekräfta att dessa dataklasser finns:

  • Klass CREDIT_CARD som använder \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 som matchare.
  • Klass EMAIL som använder \b[\w._%+-]+@[\w.-]+\.[A-Za-z]{2,4}\b
  • Klass PHONE_US som använder ^(\+?(1)([ .-]?)?)?(\(?([2-9]\d{2})\)?([ .-]?)? )([2-9]\d{2})([ .-]?)(\d{4})([ #eExXtT]*)(\d{2,6})?&
  • Klass PIN_US som använder \b([0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4})\b
  • Klass LAST_NAME som använder setfil C:/IRI/cosort100/sets/names/names_last.set

Om de inte gör det klickar du på Återställ standardinställningar .

Överst på inställningssidan finns en post Matchande tröskel . Detta representerar procentandelen matchningar som krävs för att en kolumn ska tilldelas en dataklass. Schemasökningen kommer att skanna 4K-block med data tills matchningar når denna tröskel. Om den aldrig når denna tröskel tilldelas ingen dataklass.

Eftersom jag vet att jag har kolumner som innehåller efternamn som kanske inte heter "LAST_NAME" eller kanske inte ens har matchande data i uppsättningsfilen, kan jag använda ett reguljärt uttryck för att matcha min dataklass med kolumnnamn. Det kan till exempel finnas en kolumn som heter LNAME eller LASTNAME.

För att redigera LAST_NAME-dataklassen klickar du på LAST_NAME-posten i dataklassvyn och klickar på Redigera . Ändra dess namn till L(AST)?[_-]?NAME (understreck och streck inom parentes). Klicka på OK . Klicka på Använd och stäng .

Du bör förbestämma hur du vill att värdena i varje dataklass ska maskeras (dvs. deras målkolumnsformat), så att du kan definiera dessa regler härnäst. I vårt exempel kommer det att finnas regler för redigering, formatbevarande kryptering och pseudonymisering. Var och en behöver bara definieras en gång, från IRI-menyn.

Följ dessa steg för att definiera dessa regler i det här exemplet:

Regel 1 – Redigera (för personnummer)

  1. Välj IRI-menyn> Ny regel .
  2. Välj Fältregler och klicka på Nästa .
  3. Välj Redaktionsfunktion , använd SSN för början av regelnamnet så att det läser SSNRedactionRule och klicka på Nästa .
  4. Välj Definiera mask Radio knapp. Skriv 1 i Startposition och 5 i Längd . Klicka på Lägg till i tabell och Slutför .

Regel 2 – Kryptering (för kreditkortskontonummer, e-postadresser och telefonnummer)

  1. Välj IRI-menyn> Ny regel .
  2. Välj Fältregler och klicka på Nästa .
  3. Välj Krypterings- och dekrypteringsfunktioner och klicka på Nästa . Byt inte namn på regeln.
  4. Välj enc_fp_aes256_alphanum alternativet till vänster. Ange hemlig för Lösenfrasen . Se den här sidan om alternativ för krypteringsnyckelhantering.
  5. Klicka på Slutför .

Regel 3 – Pseudonymisering (för efternamn)

  1. Välj IRI-menyn> Ny regel .
  2. Välj Fältregler och klicka på Nästa .
  3. Välj Pseudonymersättning , döp om den till LNamePseudonymRule och klicka på Nästa .
  4. Klicka på Använd din egen pseudonymlista och Bläddra till uppslagsfilen, C:/git/workbench-demos/Database_Classification_Masking/sets/lnames.set
  5. Välj Använd slumpmässig ritning från pseudonymlistan . Observera att återställningsbar pseudonymisering också är möjlig, men är mer komplicerad på grund av sannolika ändringar av dina källdata.
  6. Klicka på Slutför .

Nu när våra dataklassmaskeringsregler är definierade kan vi utföra sökningar och maskeringsoperationer för att hitta och fixa data globalt över ett eller flera databasscheman.

Skanna – Kör guiden Schema Data Class Search

För att hitta all data som överensstämmer med våra klassdefinitioner i alla tabeller i ett schema, använd guiden Schema Data Class Search. Detta producerar en rapport för varje tabell och kolumn med den förklassificerade PII inuti, skapar en dataklassfil som är specifik för ditt projekt och öppnar en formulärredigerare för den filen. I den redigeringsdialogrutan (vårt nästa steg efter detta) kan du granska och ändra dina dataklass- och maskeringsregeldefinitioner innan du går vidare till global datamaskering i det sista steget.

Du kan köra guiden från menygruppen Data Discovery i IRI Workbench-verktygsfältet. Du kan också köra sökguiden direkt från Data Source Explorer istället för att fylla i guiden med ett valt schema. Högerklicka på SCOTT-schemat i Data Source Explorer (DSE) och välj IRI> Schema Data Class Search .

På inställningssidan för sökguiden anger du platsen för att spara dataklassfilen. Det kan bara finnas en av denna filtyp i varje projekt, därav namnfältets skrivskyddade status. Lämna standardinställningarna som de är. Klicka på Nästa .

Inmatningssidan visar att ett schema är valt. Klicka på Nästa . På nästa sida kan du begränsa antalet kolumner som söks efter datatyper. Inkludera NUMERIC och klicka på Nästa .

På sidan Exclude Items kan du utesluta tabeller eller kolumner under skanningen. Klicka på Nästa .

Dataklasssidan låter dig filtrera de dataklasser som kommer att användas under skanningen. Välj endast CREDIT_CARD , EMAIL , L(AST)?[_-]?NAME, PHONE_US och PIN_US . Klicka på Slutför .

Tillsammans med rapporter skapar (eller lägger till) ett dataklassbibliotek med mappningar mellan källkolumner och dataklasser. Formulärredigeraren som öppnas låter dig tilldela regler till resultaten.

Denna sökning genom 46 tabeller gav 18 kolumnmatchningar, som jag vet är de flesta, men inte helt kompletta:

Jag vet att ett par kolumner inte matchades på grund av att tabellerna var tomma eller att namn inte hittade matchningar i uppsättningsfilerna. I nästa steg kan jag ta itu med dessa missar och bekräfta mina maskeringsregler per tabell.

Granska och justera – Data Class Library Editor

Nu när sökresultaten är öppna i redigeringsfönstret för dataklassbibliotekets formulär kan du undersöka och ändra kolumnregler på tabellnivå och eliminera tomma tabeller i schemat med kolumnnamn som matchar dina dataklassnamn. Allt detta hjälper till att bekräfta att du är korrekt inställd för massmaskningsjobbet som följer.

Observera att den här vyn också stöder sökresultat för platta filer (katalogdataklass) tillsammans med dina databassökresultat. Genom att koppla dessa resultat till ditt dataklassbibliotek är det lättare att hålla dina maskeringsfunktioner (regler) desamma över olika datakällor. Det hjälper till att upprätthålla referensintegritet och testdatakonsistens i mer distribuerade applikationsmiljöer.

Klicka på en datakälla (tabell) för att visa detaljer om den källan och en förhandsvisning av data i den. Om en matchning till en dataklass gjordes visar den kolumnen den klassen och hur den matchades.

När det gäller min PERSONS-tabell nedan kan du se att:alla SSN-kolumnvärden matchade RegEx-mönstret för min PIN_US-dataklass, och LASTNAME och CREDIT_CARD-kolumnerna matchade deras dataklassnamn, vilket utesluter behovet av dessa kolumnskanningar.

Redigering av dataklassmappningarna kan göras genom att antingen ändra dataklassen via rullgardinsmenyn eller avmarkera kolumnen för att ta bort mappningen helt. Om en tabell är tom kanske den inte tilldelar alla önskade mappningar. Det finns tre sätt att hantera detta:

  1. Du kan lägga till tabellerna på exkluderingssidan i klassificeringsguiden ovan så att den inte läggs till i dataklassbiblioteket
  2. Om tabellen kan ha data i framtiden, tilldela dataklasserna manuellt här. Sedan antingen
    • Avmarkera dem i maskeringsguiden
    • Lämna dem så skapar maskeringsguiden jobbskript som körs men inte maskerar
  3. eller ta bort datakällan från dataklassbiblioteket

I det här exemplet väljer du följande datakällor och klickar på Ta bort eftersom de är tomma eller inte behöver maskeras:

   SCOTT.DEMO_ROWGEN
   SCOTT.DM_EMPLOYEES
   SCOTT.PATIENT_RECORD_ENCRYPTED

Försiktighet måste iakttas för att verifiera resultaten i dataklassbiblioteket innan maskering. Ibland missas matchningar på grund av att data inte är giltiga eller att dataklassmatcharen måste ändras. Det är också möjligt att falska positiva resultat kan uppstå.

I det här exemplet måste en dataklass tilldelas manuellt eftersom det finns ogiltiga e-postadresser och amerikanska telefonnummerformat, men vi vill maskera dessa kolumner ändå. Vi kan välja och klassificera den här kolumnen till:

   SCOTT.EMPLOYEES.PHONE_NUMBER> PHONE_US

När resultaten har granskats och modifierats efter behov, klicka på dataklasserna i biblioteket till vänster för att tilldela standardregler. Detta gör att du kan tilldela reglerna till alla källor genom att bara tilldela en standardregel till en klass.

I det här exemplet tilldelade jag mina maskeringsregler till dataklasserna i biblioteket enligt följande:

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

Du kan verifiera att dina globala regeltilldelningar har spridits fullständigt och korrekt i datakällorna genom att granska maskeringsreglerna i varje. Till exempel, i SCOTT.PERSONS-tabellen som först visades ovan med regler, har vi nu:

Om en kolumn i en viss tabell saknar en regel, eller behöver en annan regel, kan den regeln läggas till eller ändras efter att standardreglerna har tillämpats genom att adressera dem i varje datakälla.

Mask – Kör guiden Data Class Database Masking

När du har verifierat att rätt maskeringsregler är tilldelade dina dataklasser är du redo att tillämpa dem globalt.

Högerklicka på iriLibrary.dataclass objekt i din projektmapp i ditt IRI Workbench Project Explorer-träd och välj IRI> New Data Class Database Masking Job . På första sidan i guiden, verifiera att projektmappen är där din dataklass och regelbibliotek sparades, och namnge jobbet. Välj Visa sammanfattningssida för att se detaljerna om jobbet.

Guiden låter dig uppdatera de maskerade resultaten i Samma källtabeller (för att statiskt maskera dem), till Olika måltabeller eller till Platta filer (rekommenderas) så att du först kan validera resultaten och ladda dem till mål. Ändra Utdata till Platta filer och klicka på Nästa .

Lämna alla dataklasser markerade på sidan Dataklassfilter. Klicka på Nästa . Lämna alla objekt markerade på sidan Datakällor. Om det fanns tabeller som du inte ville köra jobbet på, skulle du avmarkera dem här.

Eftersom jag valde att visa sammanfattningsskärmen kan jag verifiera jobbet:

innan du klickar på Slutför .

Skripten skapas sedan och ett flödesdiagram öppnas för att illustrera hela jobbet, som också serialiseras som en Windows (eller Unix) batchfil. Varje tabell som kommer att ha en kolumn maskerad representeras av ett brunt transformmappningsblock, som serialiseras i ett uppgiftsskript.

Granska maskeringsoperationerna genom att dubbelklicka på transformmappningsblocken och undersöka de orangea linjerna till målen. Dessa anger kolumner som ändras från indata.

Klicka i fälten till höger om den orange linjen och se egenskapsvyn längst ner på skärmen. Uttrycket Advanced Field visar transformationen (maskeringsfunktionen) som tillämpats.

När du är bekväm med maskeringsjobbet som byggdes, kör det. I new_classProtection högerklicka på mappen new_classProtection.bat fil och välj Kör som> Batchprogram .

Jobbet körs på kommandoraden och de maskerade utdatafilerna kan öppnas för granskning från din projektmapp eller ditt filsystem. Faktum är att efter att batch-operationen körts, visas alla maskeringsuppdragsskript och platta filer i min nya jobbmapp.

Skärmdumpen nedan visar de till vänster, före- och eftertillståndet för en av mina tabeller, PERSONER, i mitten, och de specifika uppgiftssatserna i skript och konturer till höger. Se hur de tre kolumnerna klassificerade och regeltilldelade i den här tabellen maskerades som planerat:

När batchmaskeringsjobbet körs kan du dubbelkolla resultaten innan du:

  1. ladda in dem i tabeller i IRI Workbench (som kan automatiskt skapa loader-filer);
  2. ändra jobbet för att göra ändringar; och/eller 
  3. kör guiden igen för att dirigera utdata till tabeller istället.

Dessa maskeringsjobb körs på kommandoraden och kan utlösas eller schemaläggas för datauppdateringar och automatisk arkivering. Kontakta om du har några frågor eller behöver hjälp med någon aspekt av denna kompletta konfigurationsprocess, eller dess implementering.

  1. För att utesluta möjligheten av falskt positiva sökresultat på kreditkorts- och nationella ID-nummer kan du automatiskt utföra en beräkningsvaliditetskontroll under sökningar genom mönstermatchande värden. Välj eller skapa ett dataklassvalideringsskript som ska associeras med dataklassdefinitionen.
  2. Om du använder FieldShield i Voracity kan du samtidigt eller efterföljande sortera dessa filer på den primära indexnyckeln i måltabellen för att påskynda massladdningar och vanliga frågor.

  1. 3 sätt att hitta positionen för en delsträng i en sträng i MySQL

  2. Köra ett MariaDB Galera Cluster utan Orchestration Tools - DB Container Management:Del två

  3. SQL Server:Isolationsnivå läcker över poolade anslutningar

  4. Sammanfoga en kolumn med en grupp i R