sql >> Databasteknik >  >> NoSQL >> MongoDB

PII-maskering i MongoDB och andra NoSQL-DB:er via...

Redaktörer Notera:Det här exemplet visar vår tidigaste, minst direkta (men fortfarande tillgänglig) metod för att använda IRI FieldShield för att skydda data som finns i MongoDB-tabeller. Som du kommer att läsa extraherar MongoDB Export Utility i det här fallet data och skapar en CSV-fil som FieldShield maskerar externt innan den nyligen säkrade datan laddas tillbaka till MongoDB. Du kan använda samma tillvägagångssätt för data i andra NoSQL-databaser som Cassandra och ElasticSearch.

IRI erbjuder också mer direkta metoder för att flytta data mellan MongoDB-samlingar och IRI-datamaskeringsmotorer som FieldShield eller Voracity. En artikel om direkt datamaskering av strukturerad MongoDB-data genom ODBC från2016 finns här och genom MongoDB:s inbyggda drivrutin som stöds i CoSort v10 (driven FieldShield och Voracity) i2018 är här. Den senaste (fjärde metoden) metoden – som kan hitta och maskera PII i både strukturerade och ostrukturerade MongoDB-samlingar med IRI DarkShield — i GUI sedan 2019 är här och i API:t sedan 2021 är här.

MongoDB är en kraftfull NoSQL-databas som kan lagra stora mängder data i paket som kallas samlingar (liknar tabeller i relationsdatabaser). Även om den skalas horisontellt (lägg till kraft till databasen genom att lägga till maskiner), har MongoDB inget internt sätt att maskera data när den väl har matats in, annat än att manuellt uppdatera varje post.

Exemplet nedan skyddar MongoDB-värden externt. Jag förklarar hur man exporterar en samling till en CSV-fil, använder IRI FieldShield för att maskera ett fält i den filen och importerar den filen till Mongo så att samlingen skyddas på lämpligt sätt. Observera att du kan maskera valfritt antal fält på 14 olika sätt med FieldShield.

Det är också möjligt att automatiskt upptäcka och maskera data i flera strukturerade, semi-strukturerade, ostrukturerade källor på grundval av centralt definierade dataklasser, som andra artiklar i den här bloggen (som den här) beskriver. Detta exempel visar dock bara maskeringsaspekterna, baserat på exporterade val.

Data före maskering

Här är posterna i källtabellen, som visas med MongoVUE.


Exportera tabelldata

Använd MongoDB Export-verktyget (mongoexport) för att köra kommandot:

--db <Database Name> --collection <Collection Name> --csv --fields <field1,field2,...> --out <Output Path>


Använda FieldShield GUI för att skapa datamaskeringsjobbet

  • Öppna IRI Workbench och starta guiden Skapa nytt skydd (maskering) för FieldShield.
  • Välj vilket namn du vill ge jobbet och klicka på Nästa.
  • Klicka på Lägg till datakälla på skärmen Datakällor och leta reda på CSV-filen du skapade.
  • Klicka på Redigera källalternativ och under Alternativ, ändra formattypen till CSV och klicka på OK.
  • Klicka på Upptäck metadata och följ guiden. Den bör upptäcka separatorn som ',' och kunna generera fältdata. Det kommer troligen att välja ASCII för datatypen. För att ändra detta, klicka på den fältdatatyp du vill ändra och välj sedan den datatyp du vill använda. När du är nöjd med dina datatyper klickar du på Slutför .

  • Klicka Nästa för att komma till skärmen Datamål och klicka på Lägg till datamål . Namnge sedan en CSV-fil som du vill skapa och klicka på OK .
  • Klicka på Target Field Layout för att visa skärmen där du ska applicera masken:

  • Den nedre tabellen visar dig alla fält som kommer att finnas i din målfil. Välj det fältnamn du vill maskera, klicka på menypilen Fältskydd och välj önskad maskeringsfunktion från rullgardinsmenyn.
  • Slutför dialogrutans parametrar, klicka på OK (två gånger) och Slutför   för att slutföra jobbguiden.
  • Ditt FieldShield-jobb bör sedan genereras åt dig:

Granska, och vid behov, ändra och spara ditt datamaskeringsjobb igen. Kör det från det grafiska användargränssnittet, kommandoraden eller inifrån en applikation för att generera filen som du laddar upp till MongoDB igen.


Importera det maskerade bordet

Använd MongoDB Import-verktyget (mongoimport) för att köra kommandona:

--db <Database Name> --collection <Collection Name> --type csv --fields <field1,field2,...> --upsert --upsertFields <Field to match to old database*> --file <File Path of the file to import (The file created by the Mask Script)>

*För att importera tillbaka allt till den gamla samlingen måste du tala om för det vilket av fälten du anger för att fråga mot de befintliga posterna. Ett exempel skulle vara e-post; det skulle matcha alla importposter mot deras befintliga e-post och uppdatera posten.


Data efter maskering

Nedan är posterna i måltabellen; visas med MongoVUE. Observera att endast kreditkortsnumren redigerades i FieldShield-processen; andra fält kunde ha skyddats med liknande eller olika funktioner samtidigt.

Förutom den relativt enkla definitionen och utförandet av FieldShield-jobb, finns det andra fördelar med att använda det med Mongo, inklusive:

  • hastighet i volym – både IRI och Mongos prestandaarkitekturer är designade för att skala linjärt
  • plattformsöverskridande kompatibilitet — välj bland dessa källor som stöds
  • samtidig dataintegration, migrering, replikering, federation och rapportering i samma CoSort (SortCL-program, FieldShields överordnade) jobbskript och I/O-pass

Kontakta  om du har några frågor om den här processen eller kommentera nedan.


  1. MongoDB $trim

  2. Redis Store (eller någon databas?) Låsmekanism (NodeJS)

  3. Laravel - Cacha vältalig med frekventa uppdateringar

  4. Hur visar man dokumentfält i mongo shell?