Når det kommer til styring af databasesystemer, er et afgørende aspekt databasesikkerhed. Undladelse af at lægge et godt grundlag for sikkerhed for ethvert databasesystem kan resultere i et databrud, hvorved en tredjeparts uvedkommende vil få uautoriseret adgang til det. Som følge heraf kan begivenheder som dette føre til skader på brandets omdømme, bøder og bøder for manglende overholdelse, kompromitteret intellektuel ejendomsret eller endda føre til, at virksomheden lukker.
MongoDB – den mest populære NoSQL-database – indeholder en række værktøjer, kontroller og foranstaltninger, der er formuleret til at danne grundlag for informationssikkerhedens tre søjler – fortrolighed, integritet og tilgængelighed. Datasikkerheden kompromitteres oftest på fortrolighedsniveauet på grund af større brugervenlighed og adgang.
Hvilke typer data skal du beskytte
Ligesom andre databaser involverer MongoDB to typer data:
- Data i hvile — Dette er data, der er gemt på filsystemets disk.
- Data i transit — Dette involverer data, der flyttes gennem et netværk, for eksempel mellem databasen og en applikation.
For at beskytte dine data i enhver database skal dine sikkerhedsforanstaltninger omhandle:
- Data i databasefilerne.
- Applikationer tilknyttet databasen.
- Den computer- og netværksinfrastruktur, der bruges til at få adgang til databasen.
- Den fysiske databaseserver og den underliggende hardware.
MongoDB sikkerhedstjekliste
Før du opsætter din MongoDB-produktionsimplementering, er der en minimumsstandard for sikkerhed at overveje for at sikre, at din implementering er sikker. Tjek følgende MongoDB sikkerhedstjekliste for at
-
Angiv godkendelsesmekanismen ved at aktivere adgangskontrol . Før du giver adgang til databasen, er det vigtigt at verificere brugerens identitet. MongoDB understøtter to mekanismer i dette tilfælde:den første er Salted Challenge Response Authentication Mechanism (SCRAM), som er standardgodkendelsesmekanismen i MongoDB. Den verificerer de leverede legitimationsoplysninger (brugernavn og adgangskode) mod godkendelsesdatabasen, og X.509 Certificate Authentication bruges til både klientgodkendelse og intern godkendelse af replikasætmedlemmer og sharded clusters.
-
Etabler rollebaseret adgangskontrol . Hver applikation eller person, der har adgang til databasen, skal have en unik identitet, som er oprettet af brugeradministratoren. Definer roller med nøjagtige adgangsrettigheder og tildel dem til brugere, der skal udføre handlingerne.
-
Kommunikation mellem mongod, mongos, applikationer og MongoDB skal være krypteret . Krypteringen opnås gennem TLS/SSL-konfiguration.
-
Databeskyttelse . Hvis du bruger WiredTiger-lagringsmotoren til hvilende data, kan du kryptere dataene ved at bruge kryptering i hvile. Hvis du bruger en anden lagermotor, skal du kryptere dataene ved hjælp af filsystemet, fysisk kryptering eller enhedskryptering og tilføje filsystemtilladelserne. Yderligere kan du kryptere felter i dokumenter med kryptering på klientsidefeltniveau, før du sender data fra serveren.
-
Sikkert netværk for drift . MongoDB bør køre på et betroet netværksmiljø, således at kun betroede klienter kan have adgang til netværksgrænsefladen og portene. Du kan opnå dette ved at deaktivere direkte SSH-rodadgang og konfigurere opsætningen med sikkerhedsgrupper for indgående og udgående trafik til MongoDB-instanserne.
-
Revisionssystemaktiviteter . Det er meget vigtigt at holde styr på brugeradgangsaktiviteter til databasen. Revisionen giver administratorer mulighed for at udøve ordentlig kontrol og tillade korrekt retsmedicinsk analyse. Nogle revisionsfaciliteter såsom MongoDB Enterprise leverer filtre til specifikke hændelser såsom godkendelseshændelser for at reducere data, der skal analyseres.
-
Aktiver sikre konfigurationsmuligheder, når du kører MongoDB . Det er tilrådeligt at begrænse brugen af JavaScript-kode, der understøttes af MongoDB, såsom mapReduce, $where og $function. Du kan deaktivere disse muligheder fuldstændigt ved at bruge --noscripting-indstillingen. Valider inputfelter ved hjælp af moduler såsom mongoose. Derudover kan du bruge net.writeObjectCheck til at sikre, at alle dokumenter gemt af mongod-instansen er gyldige BSON.
-
Kør MongoDB med en dedikeret bruger . Det kan ikke betale sig at køre MongoDB på et operativsystem, der kan tilgås af flere brugere. For at være på den sikre side bør MongoDB køres af en dedikeret systembrugerkonto, der har tilladelser til at få adgang til data, men ikke unødvendige tilladelser, der kan kompromittere dataintegriteten.
Dårlige MongoDB-sikkerhedspraksis at undgå
For nylig har der været en stigning i database hacking-hændelser, især MongoDB. Dette skyldes ikke, at MongoDB ikke opfylder standarderne for at løse sikkerhedsproblemer, men snarere på grund af, at udviklere ikke har fulgt bedste sikkerhedspraksis.
MongoDB er et open source DBMS, hvilket betyder, at nogle udviklere måske kender ins og outs mere end andre. Dette betyder ikke altid, at din database er i fare for ekstern indtrængen, medmindre du falder i en af følgende fejl:
-
Brug af standardportene . Der er ikke noget galt med at bruge standardportene (27017 og 27018), men du glemmer nogle gange at indstille de sikkerhedsgrupper, der er ansvarlige for at styre trafikken ind i dit system. Hackere vil altid prøve at få adgang til databasen med standardporte først, før de prøver noget andet. Du kan køre MongoDB på en anden port med portmuligheden, dvs. $mongo –port 23456. Den anbefalede måde er dog at ændre konfigurationen i filen /etc/mongod.conf ved at redigere linjen nedenfor med dit foretrukne portnummer:
net: port:27017
MongoDB kører som standard uden godkendelse, hvilket ofte har været et problem for nye implementeringer, der går i produktion. Manglende aktivering af godkendelse betyder, at alle kan få adgang til databasen med lethed. Opret altid en bruger med rollebaserede adgangstilladelser til at interagere med MongoDB-databasen. -
Ukorrekt opbevaring af brugerlegitimationsoplysninger . Nogle udviklere koder brugernavnet og adgangskoden ind i projektet, og når de offentliggør dem, kan alle få adgang til dem, hvilket gør databasen sårbar.
-
Manglende begrænsning af databaseadgang til kendte netværksenheder . I dette tilfælde bør man altid begrænse databaseadgang til kun at kende applikationer og belastningsbalancere gennem en hvidliste. Dette begrænser tilgængeligheden af databasen til ukendte netværk, der kan udgøre en sikkerhedstrussel.
-
Undgå SSL-brug . SSL-godkendelse er meget afgørende for at sikre, at kun betroede forbindelser når databasen.
-
Manglende brug af LDAP til adgangskoderotationer . LDAP knytter brugere til en virksomhedskatalog, således at når deres rolle ændres, eller de forlader virksomheden, gælder ændringerne automatisk for databasegruppen. Dette sikrer, at deres adgang til data vil være begrænset til den rolle, de er blevet overført til, eller fuldstændig begrænset, hvis de forlader virksomheden.
Hærdning af netværksinfrastruktur
Mange gange starter sikkerhedstrusler på netværkseksponeringsniveauet, fordi dette er den lettest tilgængelige del for de fleste hackere. Udover at sikre, at kun betroede værter har adgang til MongoDB, kan du forbedre sikkerheden gennem netværkshærdning. Netværkshærdning involverer to procedurer i forhold til MongoDB:
-
Firewalls . Firewalls bruges til at begrænse indgående trafik fra upålidelige værter, der ellers ville udsætte MongoDB-databasen for ekstern indtrængen. For Windows-operativsystemer giver netsh kommandolinjegrænseflade adgang til Windows Firewall. På Linux-systemer giver iptables-grænsefladen adgang til den underliggende netfilter-firewall. Firewallen vil bortfiltrere upålidelige værter og sikre, at kun trafik fra betroede kilder kan nå mongod &mongos udover at skabe en forbindelse med de betroede output.
-
Virtuelle private netværk (VPN'er) . VPN'er gør det muligt for to netværk at forbinde over et krypteret og betroet netværk med begrænset adgang. De gør det ved at sørge for certifikatvalidering og et udvalg af krypteringsprotokoller, der kan kræve et strengt niveau af autentificering og alle klienters identifikation. VPN'er giver en sikker tunnel; Derfor kan forbindelser oprettet til MongoDB-instansen ved hjælp af VPN'er forhindre manipulation og man-in-the-middle-angreb.
Afslutning
Som med alle open source-databaser bør sikkerhed være en topprioritet for din MongoDB-infrastruktur. At implementere din MongoDB-database med standardindstillinger er en klar vej mod en sikkerhedskatastrofe. Derfor er det afgørende fuldt ud at forstå, hvordan sikkerheden i MongoDB fungerer og følge alle bedste praksis for at sikre maksimal sikkerhed. Vigtigst er det, at revision af brugeraktiviteter, såsom autentificering, giver et vindue til at identificere smuthuller og planlægge fremtiden, før katastrofen rammer.
Værktøjer som ClusterControl hjælper dig med at tage gætværket ud af databasesikkerheden og sikre, at dine MongoDB-implementeringer altid følger den respektive sikkerhedsmodel. Med ClusterControl kan du nemt konfigurere dine databaser, adgangskontroller og kryptering til data i hvile og under transport. Hvis du ikke allerede har gjort det, skal du downloade ClusterControl i dag og starte din gratis 30-dages prøveperiode for at se, hvordan ClusterControl kan hjælpe dig med at administrere og forbedre sikkerheden i din MongoDB-database.