sql >> Databasteknik >  >> NoSQL >> MongoDB

Bästa praxis för MongoDB Security

När det gäller att hantera databassystem är en avgörande aspekt databassäkerhet. Misslyckandet med att lägga en bra grund för säkerheten för något databassystem kan resultera i ett dataintrång där en tredje parts inkräktare kommer att få obehörig åtkomst till det. Följaktligen kan händelser som detta leda till skada på varumärkets rykte, böter och straff för bristande efterlevnad, äventyrad immateriell egendom eller till och med leda till att verksamheten stängs.

MongoDB – den mest populära NoSQL-databasen – tillhandahåller en rad verktyg, kontroller och åtgärder som är formulerade för att ge en grund för informationssäkerhetens tre pelare – konfidentialitet, integritet och tillgänglighet. Datasäkerheten äventyras oftast på konfidentialitetsnivån på grund av större användbarhet och åtkomst.

Vilka typer av data bör du skydda

Precis som andra databaser involverar MongoDB två typer av data:

  1. Data i vila — Detta är data som lagras på filsystemsdisken.
  2. Data i överföring — Detta innebär att data flyttas genom ett nätverk, till exempel mellan databasen och en applikation.

För att skydda dina data i en databas måste dina säkerhetsåtgärder adressera:

  • Data i databasfilerna.
  • Applikationer kopplade till databasen.
  • Den dator- och nätverksinfrastruktur som används för att komma åt databasen.
  • Den fysiska databasservern och den underliggande hårdvaran.

MongoDB säkerhetschecklista

Innan du ställer in din MongoDB-produktionsdistribution finns det en minimistandard för säkerhet att överväga för att säkerställa att din distribution kommer att vara säker. Kolla in följande MongoDB säkerhetschecklista för att

  1. Ange autentiseringsmekanismen genom att aktivera åtkomstkontrollen . Innan du tillåter åtkomst till databasen är det viktigt att verifiera användarens identitet. MongoDB stöder två mekanismer i det här fallet:den första är Salted Challenge Response Authentication Mechanism (SCRAM) som är standardautentiseringsmekanismen i MongoDB. Den verifierar angivna autentiseringsuppgifter (användarnamn och lösenord) mot autentiseringsdatabasen, och X.509 Certificate Authentication används för både klientautentisering och intern autentisering av replikuppsättningsmedlemmar och fragmenterade kluster.

  2. Etablera rollbaserad åtkomstkontroll . Varje applikation eller person som har tillgång till databasen bör ha en unik identitet skapad av användaradministratören. Definiera roller med exakta åtkomsträttigheter och tilldela dem till användare som behöver utföra operationerna.

  3. Kommunikation mellan mongod, mongos, applikationer och MongoDB bör vara krypterad . Krypteringen uppnås genom TLS/SSL-konfiguration.

  4. Dataskydd . Om du använder WiredTiger-lagringsmotorn för data i vila, kan du kryptera data med kryptering i vila. Om du använder en annan lagringsmotor, kryptera data med filsystemet, fysisk kryptering eller enhetskryptering, och lägg till filsystembehörigheterna. Vidare kan du kryptera fält i dokument med fältnivåkryptering på klientsidan innan du skickar data från servern.

  5. Säkert driftnätverk . MongoDB bör köras i en betrodd nätverksmiljö så att endast betrodda klienter kan ha åtkomst till nätverksgränssnittet och portarna. Du kan uppnå detta genom att inaktivera direkt SSH-rotåtkomst och konfigurera inställningarna med säkerhetsgrupper för inkommande och utgående trafik till MongoDB-instanserna.

  6. Revisionssystemaktiviteter . Att hålla reda på användaråtkomstaktiviteter till databasen är mycket viktigt. Revisionen tillåter administratörer att utöva korrekta kontroller och tillåta korrekt kriminalteknisk analys. Vissa revisionsanläggningar som MongoDB Enterprise tillhandahåller filter för specifika händelser som autentiseringshändelser för att minska data som behöver analyseras.

  7. Aktivera säkra konfigurationsalternativ när du kör MongoDB . Det är tillrådligt att begränsa användningen av JavaScript-kod som stöds av MongoDB som mapReduce, $where och  $function. Du kan inaktivera dessa alternativ helt med alternativet --noscripting. Validera inmatningsfält med hjälp av moduler som mongoose. Dessutom kan du använda net.writeObjectCheck för att säkerställa att alla dokument som lagras av mongod-instansen är giltiga BSON.

  8. Kör MongoDB med en dedikerad användare . Det är inte värt besväret att köra MongoDB på ett operativsystem som kan nås av flera användare. För att vara på den säkra sidan bör MongoDB drivas av ett dedikerat systemanvändarkonto som har behörighet att komma åt data men inte onödiga behörigheter som kan äventyra dataintegriteten.

Dåliga MongoDB-säkerhetsmetoder att undvika

Nyligen har det skett en ökning av databashackincidenter, särskilt MongoDB. Detta beror inte på att MongoDB inte uppfyller standarderna för att ta itu med säkerhetsproblem utan snarare på att utvecklarna inte följer säkerhetspraxis.

MongoDB är ett DBMS med öppen källkod vilket innebär att vissa utvecklare kanske känner till detaljerna mer än andra. Detta betyder inte alltid att din databas löper risk för externa intrång om du inte hamnar i något av följande misstag:

  1. Använda standardportarna . Det är inget fel med att använda standardportarna (27017 och 27018), men du kan ibland glömma att ställa in säkerhetsgrupperna som ansvarar för att hantera trafiken till ditt system. Hackare kommer alltid att försöka komma åt databasen med standardportar först innan de försöker något annat. Du kan köra MongoDB på en annan port med portalternativet, dvs $mongo –port 23456. Det rekommenderade sättet är dock att ändra konfigurationen i filen /etc/mongod.conf genom att redigera raden nedan med ditt föredragna portnummer:

    net:
    	port:27017


    MongoDB, som standard, körs utan autentisering, vilket ofta har varit ett problem för nya distributioner som sätts i produktion. Underlåtenhet att aktivera autentisering innebär att vem som helst kan komma åt databasen med lätthet. Skapa alltid en användare med rollbaserade åtkomstbehörigheter för att interagera med MongoDB-databasen.

  2. Felaktig lagring av användaruppgifter . Vissa utvecklare hårdkodar användarnamnet och lösenordet i projektet, och när de gör dem offentliga kan vem som helst ha tillgång till dem, vilket gör databasen sårbar.

  3. Det gick inte att begränsa databasåtkomst till kända nätverksenheter . I det här fallet bör man alltid begränsa databasåtkomst till att endast känna till applikationer och lastbalanserare genom en vitlista. Detta begränsar databasens tillgänglighet till okända nätverk som kan utgöra ett säkerhetshot.

  4. Undviker SSL-användning . SSL-autentisering är mycket avgörande för att säkerställa att endast pålitliga anslutningar når databasen.

  5. Underlåtenhet att använda LDAP för lösenordsrotation . LDAP knyter användare till en företagskatalog så att när deras roll ändras eller de lämnar företaget, gäller ändringarna automatiskt för databasgruppen. Detta säkerställer att deras åtkomst till data kommer att begränsas till den roll de har omfördelats till eller helt begränsad om de lämnar företaget.

Härdar nätverksinfrastruktur

Många gånger börjar säkerhetshot på nätverksexponeringsnivå eftersom detta är den mest lättillgängliga delen för de flesta hackare. Förutom att säkerställa att endast betrodda värdar har tillgång till MongoDB, kan du förbättra säkerheten genom nätverkshärdning. Nätverkshärdning innebär två procedurer när det gäller MongoDB:

  1. Brandväggar . Brandväggar används för att begränsa inkommande trafik från opålitliga värdar som annars skulle exponera MongoDB-databasen för externt intrång. För Windows-operativsystem ger netsh kommandoradsgränssnitt åtkomst till Windows-brandväggen. På Linux-system ger iptables-gränssnittet åtkomst till den underliggande netfilterbrandväggen. Brandväggen kommer att filtrera bort opålitliga värdar och säkerställa att endast trafik från betrodda källor kan nå mongod &mongos förutom att skapa en anslutning till de betrodda utgångarna.

  2. Virtuella privata nätverk (VPN) . VPN gör det möjligt för två nätverk att länka över ett krypterat och betrodd nätverk med begränsad åtkomst. De gör det genom att tillhandahålla certifikatvalidering och ett urval av krypteringsprotokoll som kan kräva en rigorös nivå av autentisering och alla klienters identifiering. VPN ger en säker tunnel; därför kan anslutningar som skapats till MongoDB-instansen med VPN:er förhindra manipulering och man-in-the-middle-attacker.

Avsluta

Som med alla databaser med öppen källkod, bör säkerhet vara en högsta prioritet för din MongoDB-infrastruktur. Att distribuera din MongoDB-databas med standardinställningar är en tydlig väg mot en säkerhetskatastrof. Därför är det avgörande att till fullo förstå hur säkerheten inom MongoDB fungerar och följa alla bästa praxis för att säkerställa maximal säkerhet. Det viktigaste är att granskning av användaraktiviteter, såsom autentisering, ger ett fönster för att identifiera kryphål och planera för framtiden innan katastrofen inträffar.

Verktyg som ClusterControl hjälper dig att ta bort gissningarna från databassäkerheten och säkerställa att dina MongoDB-distributioner alltid följer respektive säkerhetsmodell. Med ClusterControl kan du enkelt konfigurera dina databaser, åtkomstkontroller och kryptering för data i vila och under transport. Om du inte redan har gjort det, ladda ner ClusterControl idag och starta din kostnadsfria 30-dagars provperiod för att se hur ClusterControl kan hjälpa dig att hantera och förbättra säkerheten för din MongoDB-databas.


  1. Hur MongoDB Databas Automation förbättrar säkerheten

  2. Hur hanterar man tidszonsproblemet när man lagrar datum i utc med mongod?

  3. MongoDB på en Windows 7-maskin:Ingen anslutning kunde göras

  4. Den snabbare metoden att flytta redis-data till MySQL