sql >> Databasteknik >  >> NoSQL >> MongoDB

En säkerhetschecklista för MongoDB-produktionsinstallationer

När en applikation kräver ett stort geografiskt område för att fungera tvingas en organisation ofta att lagra sin data i molnet. Applikationer byggda på MongoDB är inte ett undantag från detta koncept. Underlåtenhet att skydda känslig data kan orsaka några allvarliga bakslag, inklusive ett förstört rykte, datainkonsekvenser, ekonomiska förluster och ibland fullständig dataförlust.

Data som lagras i molnet är benäget att intressera sig från kriminella element. Personer med uppsåt kan lättare få åtkomst när inga standardprocedurer har fastställts för att säkerställa databassäkerhet. Några av dessa undermåliga procedurer inkluderar...

  • Dålig lösenordshantering:vissa utvecklare hårdkodar lösenorden i projektets källfiler, så om en hackare dekompilerar programmet kan de enkelt hämta innehållet.
  • Ovilja eller misslyckande att uppdatera databasen och gratis plugins. Nyare databasversioner har nya funktioner kan vara i termer av säkerhet eller snarare har vissa funktioner fixade från föregångarna.
  • Undermåliga databaskonfigurationer som till exempel inte använder krypterade dekrypteringsnycklar eller snarare inte använder något säkerhetsprotokoll  alls.

Databasattacker ökar dag in, dag in (och trenden förväntas fortsätta), men du kanske inte faller offer om du inte använder lämpliga säkerhetsöverväganden. I den här artikeln kommer vi att diskutera några av procedurerna man kan kontrollera med MongoDB-installation i molnet. Du behöver inte tillämpa dem alla, men försök åtminstone att välja de som om de undviks kan försätta dina data i en katastrofal situation.

MongoDB Pre-Production Säkerhetsöverväganden

Detta är överväganden man bör se till att de är välkonfigurerade när man ska distribuera MongoDB i produktionsmiljön. De inkluderar: 

  1. Aktivera och tillämpa autentisering för åtkomstkontroll
  2. Konfigurera rollbaserad åtkomstkontroll
  3. Begränsa nätverksexponering
  4. Kryptera kommunikation
  5. Kryptera data
  6. Revisionssystemaktiviteter 
  7. Använd dedikerad användare för att köra MongoDB
  8. Använd officiella och uppdaterade MongoDB-paket
  9. Inaktivera Javascript-körningar om det inte behövs
  10. Bli uppdaterad med MongoDB-säkerhetsfixar

1. Aktivera och upprätthålla autentisering för åtkomstkontroll

Åtkomstkontroll är inte aktiverat i MongoDB som standard, men det betyder inte att du också distribuerar din databas utan att det här alternativet är aktiverat. Faktum är att vissa databaspaket som Bitnami kräver att du ställer in viss åtkomstkontroll innan du använder din databas. Underlåtenhet att göra det kan vem som helst få tillgång till databasen och därmed exponering för till och med mycket känslig data. Ange någon autentiseringsmekanism såsom SCRAM så att klienter som ska anslutas måste tillhandahålla några giltiga referenser innan de kan ansluta till databasen.

Anslutningssträngen ska se ut ungefär så här:

mongodb://[username:[email protected]]host[:port1][/[defaultauthdb]and not just

mongodb://host[:port1]/[defaultauthdb]

2. Konfigurera rollbaserad åtkomstkontroll

När du har lagt till användare med administrativa behörigheter, begränsa roller som tilldelats dessa användare med hjälp av rollbaserad åtkomstkontroll (RBAC). De roller en användare kan ha inkluderar:läsa, skriva eller båda till specifika eller alla samlingar. Därför kan en användare inte utföra en roll som inte har tilldelats dem eller kan utföra åtgärder endast för tilldelade samlingar.

Användaradministratör skapas först och sedan ytterligare användare. Om en användare har privilegier över olika databaser kan du skapa en enskild användare med roller som ger tillämpliga databasbehörigheter istället för att skapa användaren flera gånger i olika databaser.

Det är tillrådligt att ha ett litet antal användare som kommer åt databasen där användarna kan vara personer eller klientapplikationer.

För att skapa och ge användarbehörigheter för vissa roller i MongoDB kan du använda det här exemplet i mongo-skalet

use finance

db.createUser(

  {

    user: "manager",

    pwd: passwordPrompt(),  // or cleartext password

    roles: [

       { role: "read", db: "loans" },

       { role: "read", db: "interests" },

       { role: "read", db: "useraccounts" },

       { role: "readWrite", db: "wages" }

    ]

  }

)

 Välj även externa autentiseringsalternativ som LDAP och Kerberos.

3. Begränsa nätverksexponeringen

Nätverkstopologi som är värd för databasen måste säkras omfattande och viktigast av allt bara lyssna på det lokala värdgränssnittet. Detta för att undvika exponering från externa anslutningar som det var fallet för äldre versioner av MongoDB. Se till att MongoDB körs i en pålitlig nätverksmiljö med säkerhetsbrandvägg aktiverad. Kontrollera inkommande och utgående trafik med säkerhetsgrupper som inte får användas med andra instanser. Använd IP-vitlista för att tillåta åtkomst från betrodda IP-adresser och tillåt därför anslutningar till MongoDB-instanser med nätverksgränssnitt och portar endast från betrodda klienter.

Inaktivera dessutom den direkta SSH-rotåtkomsten.

4. Kryptera kommunikation

MongoDB-konfiguration bör begränsa inkommande och utgående anslutningar till endast TLS/SSL. TLS/SSL krypterar kommunikation mellan mongod och mongos komponenter i en MongoDB-distribution och alla applikationer som är anslutna till den.

I produktionsmiljön bör MongoDB-distribution använda giltiga certifikat som genereras och signeras av en enda certifikatutfärdare.

5. Kryptera data

Databasdata har två former:data i vila och under transport. Data under överföring kan säkras genom att använda fältnivåkryptering på klientsidan men är endast tillgänglig i version 4.2. TLS/SSL-krypteringen tar också hand om data under överföring.

WiredTiger-lagringsmotorn från version 3.2 Enterprise tillhandahåller data i lagringslagerkryptering. Detta bekräftar att endast autentiserade användare med dekrypteringsnycklar kan komma åt data. Om du inte använder WiredTigers kryptering i vila, använd filsystemskryptering. Data i vila kryptering avskräcker en från att komma åt innehållet i din databas om de får åtkomst till den fysiska servern, vilket är en avgörande del för att säkra MongoDB.

6. Granska systemaktiviteter 

Detta är ett företagsalternativ som tillåter spårning av alla ändringar av data och databaskonfigurationer. Händelserna skrivs till en syslog-anslutning eller någon loggfil. Loggarna kan innehålla DB-autentiseringsförsök inklusive käll-IP-adresser och informationen kan hjälpa till att avgöra vilka värdar som ska blockeras av brandväggen från att komma åt databasen. Dessutom kan man bestämma vilka händelser som ska loggas.

Dessa granskningsloggar i allmänhet kommer att hjälpa administratören att göra vissa kriminaltekniska analyser och därmed ställa in standardsäkerhetskontroller.

7. Använd dedikerad användare för att köra MongoDB

MongoDB-processer bör köras med ett dedikerat användarkonto för operativsystemet som bör ha åtkomstbehörigheter aktiverade.

8. Använd officiella och uppdaterade MongoDB-paket

Passera äkthetskontroller av dina paket för att säkerställa att de är de officiella MongoDB-paketen. Att använda de senaste MongoDB-drivrutinerna och den senaste versionen av själva databasen erbjuder mer säkerhetsstabilitet än föregångarna. Till exempel erbjuder version 4.2 fältnivåkryptering på klientsidan. Se därför till att du migrerar till den senaste versionen av MongoDB.

 9. Inaktivera Javascript-körningar om det inte behövs

mapReduce och  $var finns några av de körbara JavaScript-koderna inom MongoDB och om de inte hanteras väl kan de resultera i oönskad datainkonsekvens eller tillåta en att komma åt data indirekt och tillämpa vissa ändringar om de vill .

I allmänhet kommer denna JavaScript-kod att tillåta externa injektioner och därför kommer ovaliderad data in i din databas. Du kan också välja att använda paket som mongoose för att validera och ansluta till din databas. Använd MongoDB-operatorer istället för JavaScript-uttryck.

10. Bli uppdaterad med MongoDB-säkerhetsfixar

Säkerhetsprotokoll kan brytas av angripare med tiden och behöver därför en för att involvera avancerade procedurer. Att hålla sig uppdaterad med de bästa säkerhetsuppdateringarna och buggfixarna från MongoDB-utgåvan är mycket viktigt. MongoDB-varningssidan skapades i princip för detta ändamål.

Begär om en säkerhetsteknisk implementeringsguide om möjligt och se till att din implementering är i linje med säkerhetsstandarderna.

Slutsats

Databaser i produktion är benägna för säkerhetsattacker, därför måste man investera mycket i att skydda känslig data. Säkerhetsprocedurerna sträcker sig från data-in-transit, data-at-rest och de anslutna klientapplikationerna. Förutom de ovan nämnda metoderna kommer serverhärdande företag att tillhandahålla ytterligare ett lager av dataskydd.

Det är viktigt att använda de senaste versionerna av MongoDB och plugins förutom att hålla sig uppdaterad med den senaste säkerheten och buggfixar relaterade till din version.


  1. Introduktion av uppslagsdiagram i MongoDB

  2. Vad är ett rent sätt att stoppa mongod på Mac OS X?

  3. Fel 99 vid anslutning till localhost:6379. Kan inte tilldela begärd adress

  4. Hur kör man mongo-kommandon genom skalskript?