MongoDB Säkerhet, övervakning och säkerhetskopiering (Mongodump)
Ett av nyckelbegreppen i MongoDB är hantering av databaser. Viktiga aspekter som säkerhet, backup, tillgång till databaser är alla viktiga begrepp när det kommer till databasadministration.
MongoDB Säkerhetsöversikt
MongoDB har förmågan att definiera säkerhetsmekanismer till databaser. Som standard vill man inte att alla ska ha öppen åtkomst till varje databas i MongoDB, därav kravet på att ha någon form av säkerhetsmekanism i MongoDB är viktigt.
Följande är de bästa metoderna när du implementerar säkerhet i databaser
- Aktivera åtkomstkontroll – Skapa användare så att alla applikationer och användare tvingas ha någon form av autentiseringsmekanism när de kommer åt databaser på MongoDB.
- Konfigurera rollbaserad åtkomstkontroll – Ibland kan det finnas en logisk gruppering av behörigheter som kan krävas, som kan klubbas in i roller. Användare kan sedan tilldelas dessa roller.
- Försök att konfigurera MongoDB att använda något slags krypteringsprotokoll som TLS eller SSL. Dessa protokoll kan användas för att kryptera trafiken som flyter mellan klienten och mongo DB-miljön.
- Konfigurera revision – Administratörer behöver normalt veta vem som gör vad, vilket hjälper till att analysera problem senare. Det bästa sättet är att aktivera revision MongoDB.
- Kör MongDB-serverinstans med ett separat användar-id som har tillgång till de nödvändiga resurserna i servermiljön.
Mongodb Backup-procedurer – mongodump
När du arbetar med MongDB är det viktigt att alltid se till att en säkerhetskopieringsprocedur finns på plats om data finns inom MongoDB blir skadad av någon anledning.
Nedan finns säkerhetskopieringsmekanismerna som är tillgängliga inifrån MongoDB
- Säkerhetskopiera genom att kopiera underliggande datafiler – Detta är förmodligen den enklaste mekanismen, allt som behöver göras är att kopiera de datafiler som MongoDB finns och kopiera den till en annan plats som helst borde vara en annan server.
- Säkerhetskopiera en databas med mongodump – Mongodump-verktyget läser data från en MongoDB databas och skapar BSON-filer med hög kvalitet. Vad som måste tas i beaktande är att om datamängden är stor i volym, så kan mongodump vara mycket resurskrävande, så för att mildra detta problem bör verktyget köras på en sekundär server.
- MongoDB Cloud Manager Backup - MongoDB Cloud Manager säkerhetskopierar kontinuerligt MongoDB replikuppsättningar och fragmenterade kluster genom att läsa oplogdata från MongoDB miljö. MongoDB Cloud Manager kan skapa en återställningstidpunkt genom att lagra oplogdata så att den kan skapa en återställning när som helst i tiden för en viss replikuppsättning eller ett fragmenterat kluster.
Mongodb Övervakning
Övervakning är en av de mest kritiska administrativa aktiviteterna inom MongoDB. Detta beror på att du kan vara mer proaktiv genom att övervaka miljön för eventuella problem som kan dyka upp.
Nedan följer några av exemplen för implementering av övervakning
- mongostat kommer att berätta hur många gånger databasoperationer såsom infoga, fråga, uppdatera, ta bort, etc. faktiskt inträffar på servern. Detta kommer att ge en god uppfattning om hur mycket belastningen servern hanterar och kommer att indikera om du behöver ytterligare resurser på servern eller kanske ytterligare servrar för att fördela belastningen.
- Mongotop spårar och rapporterar den aktuella läs- och skrivaktiviteten för en MongoDB och rapporterar denna statistik per insamling.
- MongoDB tillhandahåller ett webbgränssnitt som exponerar diagnostik och övervakningsinformation på en enkel webbsida. Man kan bläddra till nedanstående url på din lokala server för att öppna webbadministrationsverktyget
http://localhost:28017
- Kommandot serverStatus, eller db.serverStatus() från skalet, returnerar en översikt över databasens status, med detaljer om diskanvändning, minnesanvändning, anslutningar som upprättats till MongoDB miljö osv.
MongoDB Indexering och prestationsöverväganden
- Index är mycket viktiga i alla databaser och kan användas för att förbättra effektiviteten av sökfrågor i MongoDB. Om du ständigt söker i ditt dokument, är det bättre att lägga till index på de fält i dokumentet som används i sökkriterierna.
- Försök att alltid begränsa antalet sökresultat som returneras. Anta att du har 2 fältnamn i ett dokument, men du vill bara se 2 fält från dokumentet. Se sedan till att din fråga endast är inriktad på att visa de två fälten du behöver och inte alla fälten.
- Om du vill se vissa fältvärden, använd bara dessa fält i frågan. Fråga inte efter alla fält i samlingen om de inte är obligatoriska.
Inställd MongoDB med Kerberos-autentisering
Medan auktorisering ser till att säkerställa klientens åtkomst till systemet, kontrollerar autentiseringen vilken typ av åtkomst klienten har i MongoDB, när de har auktoriserats i systemet.
Det finns olika autentiseringsmekanismer, nedan är bara några av dem.
MongoDB Autentisering med x.509-certifikat
Använd x.509-certifikat för att autentisera klienten – Ett certifikat är i grunden en pålitlig signatur mellan klienten och MongoDB Server.
Så istället för att ange ett användarnamn och lösenord för att ansluta till servern skickas ett certifikat mellan klienten och MongoDB Server. Klienten kommer i princip att ha ett klientcertifikat som kommer att skickas till servern för att autentisera sig till servern. Varje klientcertifikat motsvarar singel MongoDB användare. Så varje användare från MongoDB måste ha ett eget certifikat för att kunna autentiseras till MongoDB servern.
För att säkerställa att detta fungerar måste följande steg följas;
- Ett giltigt certifikat måste köpas från en giltig tredjepartsmyndighet och installera det på MongoDB Server.
- Klientcertifikatet måste ha följande egenskaper (En enda certifikatutfärdare (CA) måste utfärda certifikaten för både klienten och servern. Klientcertifikaten måste innehålla följande fält – keyUsage och extendedKeyUsage.
- Varje användare som ansluter till MongDB Server måste ha ett separat certifikat.
Hur man konfigurerar MongoDB med Kerberos-autentisering
Nedan följer stegen för att konfigurera MongoDB med Kerberos-autentisering på Windows:
Steg 1) Inställd MongoDB med Kerberos-autentisering på Windows
Kerberos är en autentiseringsmekanism som används i stora klient-servermiljöer.
Det är en mycket säker mekanism där lösenordet endast är tillåtet om det är krypterat. Väl, MongoDB har möjlighet att autentisera mot ett befintligt Kerberos-baserat system.
Steg 2) mongod.exe serverprocess
Starta sedan mongod.exe-serverprocessen.
Steg 3) mongo.exe-klientprocessen och anslut
Starta sedan mongo.exe-klientprocessen och anslut till MongoDB servern.
Steg 4) Lägg till en användare i MongoDB
Vilket i grund och botten är ett Kerberos-huvudnamn för databasen $external. $external databasen är en speciell databas som berättar MongoDB för att autentisera denna användare mot ett Kerberos-system istället för sitt eget interna system.
use $external db.createUser( { user: "user1@example.NET", roles:[ { role: "read" , db:"Marketing"} } ] }
Steg 5) Börja använda kommandot
Starta mongod.exe med Kerberos-stöd genom att använda följande kommando
mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI
Och sedan kan du nu ansluta med Kerberos-användaren och Kerberos-autentisering till databasen.
Sammanfattning
- Det är mycket viktigt att implementera säkerhet i databaser för att säkerställa att data i databasen förvaras säkert.
- Användare kan skapas i databasen med kommandot createUser. Specifika roller kan tilldelas användarna för att ge dem specifika behörigheter på själva databasen.
- Administratörer kan läggas till för alla databaser är endast för specifika databaser. Detta uppnås genom att ge antingen rollen userAdmin eller userAdminAnyDatabase.
- Säkerhetskopiera alltid din MongoDB miljö så att uppgifterna lätt kan återställas i händelse av en katastrof.
- Övervaka alltid din MongoDB miljö för att vara mer proaktiv och se problem innan de uppstår.
- Det finns olika autentiseringsmekanismer för att ge bättre säkerhet i databaser. Ett exempel är användningen av certifikat för att autentisera användare istället för att använda användarnamn och lösenord.