sql >> Databasteknik >  >> NoSQL >> MongoDB

Architecting for Security:En guide för MongoDB

Förekomsten av dataintrång är inte längre förvånande. Baserat på FBI:s nyss släppta cyberbrottsrapport har offer för cyberbrott kumulativt förlorat hela 4,2 miljarder dollar 2020, vilket är 700 miljoner dollar mer än de rapporterade förlusterna 2019. I synnerhet har osäkra MongoDB-databaser varit en del av problemet som lett till betydande dataintrång . I februari 2019 fick ett företag för e-postverifieringstjänster sin MongoDB-databas brutet och det avslöjade 763 miljoner poster inklusive e-postadresser, telefonnummer, IP-adresser och födelsedatum. Anledningen är en offentlig MongoDB-instans utan lösenord.

Bristen på autentisering, ingen begränsning av portar på brandväggen eller underlåtenhet att säkra data under överföring kan leda till dataintrång. I den här bloggen kommer vi att diskutera hur du förbereder och säkrar din MongoDB-databas i en produktionsmiljö.

Autentisering och auktorisering

Autentisering och auktorisering är två olika saker, men de är korrelerade. Autentisering innebär att användaren har tillgång till MongoDB-databasen medan auktorisering tillåter användaren att komma åt resursen i databasen.

Standardinstallationen för autentisering i MongoDB är inaktiverad. MongoDB stöder flera autentiseringar t.ex.:SCRAM, x.509 Certificate Authentication. Standardinställningen i MongoDB är SCRAM (Salted Challenge Response Authentication Mechanism), som verifierar de medföljande autentiseringsuppgifterna med användarnamn, lösenord och autentiseringsdatabasen.

Innan du aktiverar autentisering, skapa en superanvändare i MongoDB med rollen userAdminAnyDatabase. När den är klar behöver vi bara öppna filen /etc/mongod.conf och hitta avsnittet om säkerhet. Standardinställningen är inaktiverad, vi behöver bara aktivera.

security:
    authorization: "disabled"

Starta om MongoDB-tjänsten för att tillämpa konfigurationsändringarna. Vi kan även konfigurera RBAC (Role Based Access Control) i MongoDB-databasen för bättre säkerhet relaterad till användaren. Så vi segregerar åtkomsten till databasen baserat på användaren och privilegier.

Nätverkssegmentering

Nätverkssegmentering är en viktig aspekt när vi designar databasarkitektur, den gäller för alla databaser, inte bara för MongoDB. Det är en bästa praxis att vi segregerar nätverket för databasen. Vi sätter upp databasservern i ett privat nätverk, där den inte kan nås från internet.

Kommunikationen till databasen sker på det privata nätverket, och när användaren vill komma åt databasen kan de använda VPN eller en jumphost. Förutom nätverkssegmentering spelar begränsning av porten också en nyckelroll, vi öppnar databasporten som är specifik för det segmenterade nätverket för att kontrollera inkommande och utgående nätverkstrafik. Så vi vet att den inkommande trafiken kommer från den betrodda källadressen.

Datakryptering

Ett annat område vi måste ta en titt på är datakryptering. Datakryptering är en metod där informationen kodas till en annan form under överföringen och lagras i databasen.

Datakryptering omfattar:

  • Data under överföring:data i överföringstillstånd 

  • Data i vila:data lagrad på disk. Det finns olika typer av datakryptering i vila, vi kan använda kryptering på databasnivå, eller så kan vi använda kryptering i lagringslagret.

Att aktivera SSL/TLS från klienterna och MongoDB-servern och mellan MongoDB-noderna (i replicaset och sharded cluster-arkitektur), kommer att säkra data under överföring. Dataöverföringen sker inte i vanlig text.

Det finns olika krypteringsverktyg och funktioner för kryptering av data i vila, till exempel; AWS tillhandahåller EBS-diskkryptering i kombination med KMS (Key Management Service) på lagringen, medan Enterprise-utgåvan av MongoDB tillhandahåller databaskrypteringen i vila på databaslagret.

Databasrevision

Implementering av en revisionsdatabas för MongoDB ger synlighet över vad som körs inuti databasen; t.ex.:från vilken användare och vilket kommando som utfördes, och källan till ip-adressen. Vi kan kombinera dessa loggar och skapa regler baserat på behörighetsåtkomsten. Vi kan upptäcka om det finns någon oavsiktlig användare som kör något skript i MongoDB. Vi kan se avsnittet auditLog.

auditLog:
   destination: syslog

Vi kan skicka MongoDB-revisionsloggen till syslog-filerna och skjuta in loggarna till Log Management. Vill du ha fler tips om hur du säkrar MongoDB? Titta på den här videon för att få en bättre förståelse för de bästa metoderna för att säkra din MongoDB-databas

Slutsats

Att implementera säkerhetsstandarder för MongoDB är ett måste, speciellt för en produktionsmiljö. Vi kan inte acceptera varje förlust och intrång i data som lagras i databasen.


  1. HBase-uppgradering ovanpå Event Sourcing och CQRS-arkitektur på 3 veckor

  2. 6 användbara verktyg för att övervaka MongoDB-prestanda

  3. Hur utfärdar jag HGET/GET-kommandot för Redis Database via Node.js?

  4. Ringer Redis zuunionstore från Lua med variabla NYCKLAR