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

Sådan klassificeres, finde og maskere PII i databaser...

Når de har oprettet deres databaseforbindelser, har IRI FieldShield- og IRI DarkShield-brugere begge en lang række muligheder for at klassificere, finde og afidentificere følsomme data på tværs af et eller flere skemaer. De kan nu opnå alle disse mål på én gang gennem regelbaserede faciliteter i IRI Workbench.

Denne artikel demonstrerer trin-for-trin brugen af ​​dataklasser til at finde og maskere PII på tværs af et lille relationsdatabaseskema ved hjælp af FieldShield, selvom du kan udvide disse trin til større eller flere skemaer. Hvis din database indeholder semi- eller ustrukturerede kolonner, se denne artikel om DarkShield klassificere-søge-maske-procedurer for RDB'er eller denne artikel for NoSQL DB'er.

I FieldShield-strukturerede kolonne RDB-operationer klassificeres data typisk et skema ad gangen, men maskeres globalt ved hjælp af dine gemte regler, ad hoc eller efter tidsplan for opdateringer.

De datamaskeringsregler, du definerer, giver dig mulighed for at vælge den funktion, der passer bedst til hver dataklasse, og anvende den konsekvent. At producere det samme unikke chiffertekstresultat for hver unik original almindelig tekstværdi - i enhver tabel eller fil - bevarer også referentiel integritet; f.eks. vil joinforbindelser stadig fungere, efter at dataene er maskeret.

Dette eksempel bruger eksempler på Oracle-tabellerne i SCOTT-skemaet, der findes i vores VM-sandbox. For at oprette forbindelse til en anden database skal du konfigurere:

  • DTP-forbindelsesprofilen for din DB i IRI Workbench ved hjælp af JDBC
  • ODBC DSN for den pågældende kilde-DB

For information om tilslutning af dine databaser til brug med FieldShield, se DB-opsætning her.

De trin, jeg vil beskrive, er:

  1. Opsætning – Definer dataklasser og maskeringsregler
  2. Scan – Kør guiden Schema Data Class Search
  3. Gennemse og juster – Editor for dataklassebibliotek
  4. Maske – Kør guiden Data Class Database Masking

Der er også en videoserie forbundet her med lignende trinvise instruktioner.

Opsætning – Definer dataklasser og maskeringsregler

For at bruge dataklasser med regler og guider skal dataklasserne først defineres og gemmes. Dette kan gøres gennem Window> Preferences> IRI> Data Classes and Groups . Se denne artikel om dataklassificering i IRI Workbench for et dybere dyk. Der er også videovejledninger til opsætning af dataklassificering og maskeringsregler.

Dataklasserne kan matche til kolonner enten ved kolonnenavn (klasse EMAIL matcher en kolonne ved navn EMAIL) eller ved at matche dataene i kolonnen. Dette eksempel har klasser, der enten har et regulært udtryk eller en set-fil. En sæt-fil indeholder poster, der fungerer som et ordbogsopslag.

På den præferenceside skal du bekræfte, at disse dataklasser findes:

  • Klasse CREDIT_CARD der bruger \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 matcher.
  • Klasse EMAIL der bruger \b[\w._%+-]+@[\w.-]+\.[A-Za-z]{2,4}\b
  • Klasse PHONE_US der bruger ^(\+?(1)([ .-]?)?)?(\(?([2-9]\d{2})\)?([ .-]?)? )([2-9]\d{2})([ .-]?)(\d{4})([ #eExXtT]*)(\d{2,6})?&
  • Klasse PIN_US der bruger \b([0-9]{3}[-]?[0-9]{2}[-]?[0-9]{4})\b
  • Klasse LAST_NAME, der bruger sætfil C:/IRI/cosort100/sets/names/names_last.set

Hvis de ikke gør det, skal du klikke på Gendan standarder .

Øverst på præferencesiden er en post Matching Threshold . Dette repræsenterer procentdelen af ​​matches, der kræves for, at en kolonne kan tildeles en dataklasse. Skemasøgningen scanner 4K-blokke af data, indtil matches når denne tærskel. Hvis den aldrig når denne tærskel, er der ingen dataklasse tildelt.

Fordi jeg ved, at jeg har kolonner, der indeholder efternavne, der måske ikke hedder "LAST_NAME" eller måske ikke engang har matchende data i sætfilen, kan jeg bruge et regulært udtryk til at matche min dataklasse til at lide kolonnenavne. For eksempel kan der være en kolonne med navnet LNAME eller LASTNAME.

For at redigere LAST_NAME-dataklassen skal du klikke på LAST_NAME-indgangen i visningen Dataklasser og klikke på Rediger . Skift dens navn til L(AST)?[_-]?NAME (understregning og streg i parentes). Klik på OK . Klik på Anvend og luk .

Du bør forudbestemme, hvordan du ønsker, at værdierne i hver dataklasse skal maskeres (dvs. deres målkolonneformat), så du kan definere disse regler derefter. I vores eksempel vil der være redaktion, formatbevarende kryptering og pseudonymiseringsregler. Hver enkelt skal kun defineres én gang fra IRI-menuen.

Følg disse trin for at definere disse regler i dette eksempel:

Regel 1 – Redaktion (for CPR-numre)

  1. Vælg IRI-menu> Ny regel .
  2. Vælg Feltregler og klik på Næste .
  3. Vælg Redaktionsfunktion , brug SSN til starten af ​​regelnavnet, så det læser SSNRedactionRule, og klik på Næste .
  4. Vælg Definer maske Radio knap. Skriv 1 i Startposition og 5 i længde . Klik på Tilføj til tabel og Afslut .

Regel 2 – Kryptering (for kreditkortkontonumre, e-mailadresser og telefonnumre)

  1. Vælg IRI-menu> Ny regel .
  2. Vælg Feltregler og klik på Næste .
  3. Vælg Krypterings- og dekrypteringsfunktioner og klik på Næste . Omdøb ikke reglen.
  4. Vælg enc_fp_aes256_alphanum mulighed til venstre. Indtast hemmeligt for adgangssætningen . Se denne side om muligheder for administration af krypteringsnøgler.
  5. Klik på Udfør .

Regel 3 – Pseudonymisering (til efternavne)

  1. Vælg IRI-menu> Ny regel .
  2. Vælg Feltregler og klik på Næste .
  3. Vælg Erstatning af pseudonym , omdøb den til LNamePseudonymRule, og klik på Næste .
  4. Klik på Brug din egen pseudonymliste , og Gennemse til opslagsfilen, C:/git/workbench-demos/Database_Classification_Masking/sets/lnames.set
  5. Vælg Brug tilfældig trækning fra pseudonymlisten . Bemærk, at genskabelig pseudonymisering også er mulig, men er mere kompliceret på grund af sandsynlige ændringer i dine kildedata.
  6. Klik på Udfør .

Nu hvor vores dataklassemaskeringsregler er defineret, kan vi udføre søge- og maskeringsoperationer for at finde og rette data globalt på tværs af et eller flere databaseskemaer.

Scan – Kør guiden Schema Data Class Search

For at finde alle data, der er i overensstemmelse med vores klassedefinitioner i alle tabellerne i et skema, skal du bruge guiden Schema Data Class Search. Dette producerer en rapport for hver tabel og kolonne med den præklassificerede PII indeni, opretter en dataklassefil, der er specifik for dit projekt, og åbner en formulareditor for den fil. I den redigeringsdialog (vores næste trin efter dette) kan du gennemgå og ændre dine dataklasse- og maskeringsregeldefinitioner, før du går videre til global datamaskering i det sidste trin.

Du kan køre guiden fra menugruppen Data Discovery på IRI Workbench-værktøjslinjen. Du kan også køre søgeguiden direkte fra Data Source Explorer i stedet for at udfylde guiden med et valgt skema. Højreklik på SCOTT-skemaet i Data Source Explorer (DSE), og vælg IRI> Schema Data Class Search .

Indtast placeringen for at gemme dataklassefilen på søgeguidens opsætningsside. Der kan kun være én af denne filtype i hvert projekt, deraf skrivebeskyttet status for navnefeltet. Lad standardindstillingerne være som de er. Klik på Næste .

Indtastningssiden viser, at ét skema er valgt. Klik på Næste . Den næste side giver dig mulighed for at begrænse kolonnerne, der søges efter datatyper. Inkluder NUMERIC , og klik på Næste .

Siden Ekskluder elementer giver dig mulighed for at ekskludere tabeller eller kolonner under scanningen. Klik på Næste .

Dataklassesiden giver dig mulighed for at filtrere de dataklasser, der vil blive brugt under scanningen. Vælg kun CREDIT_CARD , EMAIL , L(AST)?[_-]?NAME, PHONE_US og PIN_US . Klik på Udfør .

Sammen med rapporter opretter (eller tilføjer) dette et dataklassebibliotek med tilknytninger mellem kildekolonner og dataklasser. Formeditoren, der åbnes, giver dig mulighed for at tildele regler til resultaterne.

Denne søgning gennem 46 tabeller gav 18 kolonnematches, som jeg ved er for det meste, men ikke helt fuldstændige:

Jeg ved, at et par kolonner ikke blev matchet på grund af, at tabellerne var tomme, eller at navne ikke fandt match i sætfilerne. I det næste trin kan jeg tage fat på disse mangler og bekræfte mine maskeringsregler på en bordbasis.

Gennemse og juster – Editor for dataklassebibliotek

Nu hvor søgeresultaterne er åbne i vinduet til redigering af dataklassebibliotekets formular, kan du undersøge og ændre kolonneregler på tabelniveau og fjerne tomme tabeller i skemaet med kolonnenavne, der matcher dine dataklassenavne. Alt dette er med til at bekræfte, at du er konfigureret korrekt til det bulkmaskeringsarbejde, der følger.

Bemærk, at denne visning også understøtter søgeresultater for flad fil (katalogdataklasse) sammen med dine databasesøgeresultater. Ved at forbinde disse resultater med dit dataklassebibliotek er det nemmere at holde dine maskeringsfunktioner (regler) ens på tværs af forskellige datakilder. Det hjælper med at bevare  referenceintegritet og testdatakonsistens i mere distribuerede applikationsmiljøer.

Klik på en datakilde (tabel) for at få vist detaljer om den kilde og en forhåndsvisning af dataene i den. Hvis der blev foretaget et match til en dataklasse, viser den kolonne denne klasse og hvordan den blev matchet.

I tilfældet med min PERSONS-tabel nedenfor kan du se, at:alle SSN-kolonneværdierne matchede RegEx-mønsteret for min PIN_US-dataklasse, og LASTNAME- og CREDIT_CARD-kolonnerne matchede deres dataklassenavne, hvilket udelukker behovet for disse kolonnescanninger.

Redigeringer af dataklassetilknytningerne kan foretages ved enten at ændre dataklassen via rullemenuen eller ved at fravælge kolonnen for at fjerne tilknytningen fuldstændigt. Hvis en tabel er tom, tildeler den muligvis ikke alle de ønskede tilknytninger. Der er tre måder at håndtere dette på:

  1. Du kan tilføje tabellerne til ekskluderingssiden i klassificeringsguiden ovenfor, så den ikke føjes til dataklassebiblioteket
  2. Hvis tabellen kan have data i fremtiden, tildel dataklasserne manuelt her. Så enten
    • Fjern markeringen af ​​dem i maskeringsguiden
    • Lad dem ligge, og maskeringsguiden vil oprette jobscripts, der kører, men ikke maskerer
  3. eller fjern datakilden fra dataklassebiblioteket

I dette eksempel skal du vælge følgende datakilder og klikke på Fjern da de er tomme eller ikke behøver at være maskeret:

   SCOTT.DEMO_ROWGEN
   SCOTT.DM_EMPLOYEES
   SCOTT.PATIENT_RECORD_ENCRYPTED

Man skal sørge for at verificere resultaterne i dataklassebiblioteket før maskering. Nogle gange savnes matches, fordi dataene ikke er gyldige, eller dataklassematcheren skal ændres. Det er også muligt, at falske positiver kan forekomme.

I dette eksempel skal en dataklasse tildeles manuelt, fordi der er ugyldige e-mailadresser og amerikanske telefonnummerformater, men vi vil alligevel maskere disse kolonner. Vi kan vælge og klassificere denne kolonne til:

   SCOTT.EMPLOYEES.PHONE_NUMBER> PHONE_US

Når resultaterne er gennemgået og ændret efter behov, skal du klikke på dataklasserne i biblioteket til venstre for at tildele standardregler. Dette giver dig mulighed for at tildele reglerne til alle kilderne ved blot at tildele en standardregel til en klasse.

I dette eksempel tildelte jeg mine maskeringsregler til dataklasserne i biblioteket som følger:

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

Du kan verificere, at dine globale regeltildelinger forplantede sig fuldt ud og korrekt i datakilderne ved at gennemgå maskeringsreglerne i hver. For eksempel, i SCOTT.PERSONS-tabellen, der først blev vist ovenfor med regler, har vi nu:

Hvis en kolonne i en bestemt tabel mangler en regel eller har brug for en anden regel, kan denne regel tilføjes eller ændres, efter at standardreglerne er blevet anvendt, ved at adressere dem i hver datakilde.

Maske – Kør guiden Data Class Database Masking

Når du har bekræftet, at de rigtige maskeringsregler er tildelt dine dataklasser, er du klar til at anvende dem globalt.

Højreklik på iriLibrary.dataclass objekt i din projektmappe i dit IRI Workbench Project Explorer-træ, og vælg IRI> New Data Class Database Masking Job . På den første side af guiden skal du kontrollere, at projektmappen er det sted, hvor din dataklasse og regelbibliotek blev gemt, og navngive jobbet. Vælg Vis oversigtsside for at se detaljerne om jobbet.

Guiden giver dig mulighed for at opdatere de maskerede resultater i Samme kildetabeller (for statisk at maskere dem) til Forskellige måltabeller eller til Flade filer (anbefales), så du først kan validere resultaterne og indlæse dem til mål. Skift Output til Flade filer og klik på Næste .

Lad alle dataklasser være markeret på siden Dataklassefilter. Klik på Næste . Lad alle elementer være markeret på siden Datakilder. Hvis der var tabeller, som du ikke ønskede at køre jobbet på, ville du fravælge dem her.

Fordi jeg valgte at vise oversigtsskærmen, kan jeg bekræfte jobbet:

før du klikker på Udfør .

Scripts oprettes derefter, og et flowdiagram åbnes for at illustrere hele jobbet, som også er serialiseret som en Windows (eller Unix) batchfil. Hver tabel, der vil have en kolonne maskeret, er repræsenteret af en brun transformations-mapping-blok, som er serialiseret i et opgavescript.

Gennemgå maskeringsoperationerne ved at dobbeltklikke på transformerkortlægningsblokkene og undersøge de orange linjer til målene. Disse angiver kolonner, der ændres fra input.

Klik i felterne til højre for den orange linje og se egenskabsvisningen nederst på skærmen. Udsagnet Avanceret felt viser den anvendte transformation (maskeringsfunktion).

Når du er fortrolig med maskeringsjobbet, der blev bygget, skal du køre det. I new_classProtection højreklik på mappen new_classProtection.bat fil, og vælg Kør som> Batchprogram .

Jobbet kører på kommandolinjen, og de maskerede outputfiler kan åbnes til gennemsyn fra din projektmappe eller dit filsystem. Faktisk, efter at batch-operationen er kørt, vises alle maskeringsopgavescripts og fladfil-output i min nye jobmappe.

Skærmbilledet nedenfor viser dem til venstre, før- og eftertilstanden for en af ​​mine tabeller, PERSONER, i midten og de specifikke opgavesætninger i script- og dispositionsform til højre. Se, hvordan de tre kolonner, der er klassificeret og regeltildelt i denne tabel, blev maskeret som planlagt:

Når batchmaskeringsjobbet kører, kan du dobbelttjekke resultaterne, før du:

  1. indlæs dem i tabeller i IRI Workbench (som kan automatisk oprette loader-filer);
  2. ændre jobbet for at foretage ændringer; og/eller 
  3. kør guiden igen for at dirigere outputtet til tabeller i stedet for.

Disse maskeringsjob kører på kommandolinjen og kan udløses eller planlægges til dataopdateringer og automatisk arkivering. Kontakt, hvis du har spørgsmål eller har brug for hjælp til et hvilket som helst aspekt af denne ende-til-ende konfigurationsproces, eller dens implementering.

  1. For at udelukke muligheden for falske positive søgeresultater på kreditkort- og nationale ID-numre kan du automatisk udføre en beregningsmæssig gyldighedskontrol under søgninger gennem mønstermatchende værdier. Vælg eller opret et dataklassevalideringsscript, der skal knyttes til dataklassedefinitionen.
  2. Hvis du bruger FieldShield i Voracity, kan du samtidigt eller efterfølgende sortere disse filer på den primære indeksnøgle i måltabellen for at fremskynde masseindlæsninger og almindelige forespørgsler.

  1. Hvordan TO_BASE64() virker i MariaDB

  2. Sådan bruger du analytiske funktioner i Oracle (Overpartition efter søgeord)

  3. Hvad betyder det, når MySQL er i tilstanden Sender data?

  4. Sådan installeres MySQL Workbench på Ubuntu