sql >> Database >  >> NoSQL >> MongoDB

Tips voor het op afstand beheren van MongoDB

Op afstand werken vanwege de Covid-19-pandemie betekent een toename van het belang van geïsoleerde infrastructuren; meer specifiek degene die alleen toegankelijk zijn via een intern netwerk, maar op een manier dat geautoriseerde mensen van de buitenwereld altijd en overal toegang hebben tot het systeem.

In dit artikel zullen we enkele basisstappen delen die u met MongoDB moet implementeren om veilige toegang te garanderen tijdens het beheer van de database.

MongoDB beveiligen

Voordat u op afstand toegang krijgt tot de MongoDB-database, moet u een "verharding" van de omgeving uitvoeren. Stel het volgende in aan de infrastructuurkant:

MongoDB-verificatie inschakelen 

Deze functie is verplicht om in te schakelen, ongeacht of we toegang willen krijgen tot de MongoDB-database vanaf het interne netwerk of vanaf een extern netwerk. Voordat u de autorisatie inschakelt, moet u eerst een admin-gebruiker maken in MongoDB. U kunt het onderstaande commando uitvoeren om een ​​admin-gebruiker aan te maken op uw MongoDB-server:

$ mongo

> use admin

> db.createUser(

      {

          user: "admin",

          pwd: "youdontknowmyp4ssw0rd",

          roles: [ "root" ]

      }

  );

Bovenstaande opdracht zal een nieuwe gebruiker aanmaken met de naam admin met root-rechten. U kunt de MongoDB Auth-functie inschakelen door het bestand /etc/mongod.conf te openen en vervolgens de volgende regel toe te voegen:

  security:

   authorization: 'enabled'

Vergeet niet je mongoDB-service opnieuw te starten om de wijzigingen toe te passen. Bovenstaande opdracht beperkt de toegang tot de database, alleen degene met toegangsgegevens die in aanmerking komen om in te loggen.

Rollen en rechten instellen

Om misbruik van toegang tot MongoDB te voorkomen, kunnen we op rollen gebaseerde toegang implementeren door verschillende rollen en bijbehorende privileges te creëren.

Zorg ervoor dat je een lijst hebt met gebruikers die toegang moeten krijgen tot de database en begrijp de behoeften en verantwoordelijkheden van elk individu. Maak rollen aan en wijs de privileges toe aan deze aangemaakte rollen. Daarna kunt u uw gebruiker een rol toewijzen op basis van de verantwoordelijkheden.

Deze aanpak helpt ons om misbruik van autoriteit te minimaliseren en de rol en gebruiker onmiddellijk te identificeren wanneer er iets ongewensts gebeurde.

Configureer een SSL/TLS-verbinding

MongoDB ondersteunt SSL/TLS-verbindingen voor het beveiligen van gegevens tijdens het transport. Om dit te implementeren, moet u uw eigen SSL-sleutel genereren, u kunt deze genereren met openssl. Om SSL / TLS-ondersteuning in te schakelen, kunt u het bestand /etc/mongod.conf bewerken en de volgende parameter toevoegen:

  net:

      tls:

         mode: requireTLS

         certificateKeyFile: /etc/mongo/ssl/mongodb.pem

Na het toevoegen van deze parameters, moet je de MongoDB-service opnieuw starten. Als u MongoDB-replicaset-architectuur hebt, moet u deze op elk knooppunt toepassen. SSL is ook nodig wanneer de client toegang krijgt tot MongoDB, of dit nu vanaf de applicatiezijde is of rechtstreeks vanaf de client.

Voor productiegebruik moet u geldige certificaten gebruiken die zijn gegenereerd en ondertekend door één enkele certificeringsinstantie. U of uw organisatie kan certificaten genereren en onderhouden als een onafhankelijke certificeringsinstantie, of certificaten gebruiken die zijn gegenereerd door externe TLS/SSL-leveranciers. Voorkom het gebruik van een zelfondertekend certificaat, tenzij het een vertrouwd netwerk is.

Beperk de databasepoort

Je moet ervoor zorgen dat alleen de MongoDB-poort is geopend op de firewall-server of het firewall-apparaat, zorg ervoor dat er geen andere poorten open zijn.

De MongoDB-verbinding beveiligen

Verbinding op afstand via openbaar internet brengt het risico met zich mee dat gegevens worden verzonden van lokale gebruikers naar de databaseserver en vice versa. Aanvallers kunnen de interconnectie onderbreken, in dit geval de MITM-aanval (Min-in-The-Middle). Het beveiligen van de verbinding is zeer noodzakelijk wanneer we de database op afstand beheren / beheren, enkele dingen die we kunnen toepassen om onze toegang tot de database te beschermen zijn als volgt:

Privé netwerktoegang

VPN (Virtual Private Network) is een van de fundamentele dingen als we veilig van buitenaf toegang willen krijgen tot onze infrastructuur. VPN is een particulier netwerk dat openbare netwerken gebruikt om toegang te krijgen tot de externe sites. VPN-installatie vereist hardware die moet worden voorbereid aan de kant van het privénetwerk, daarnaast heeft de klant ook VPN-software nodig die toegang tot het privénetwerk ondersteunt.

Naast het gebruik van VPN, is een andere manier om toegang te krijgen tot de MongoDB-server door de databasepoort door te sturen via SSH, of beter bekend als SSH Tunneling.

Gebruik SSL / TLS van de client naar de databaseserver

Naast het implementeren van beveiligde toegang met behulp van VPN of SSH Tunneling, kunnen we SSL / TLS gebruiken die eerder was geconfigureerd aan de MongoDB-kant. Je hebt alleen de SSL-sleutel nodig die je hebt en probeer verbinding te maken met de database met behulp van de SSL-sleutel.

Databasecontrole inschakelen

Het is essentieel om de monitoringservice in staat te stellen de huidige status van de databases te begrijpen. De monitoringserver kan worden geïnstalleerd onder het publieke domein waarop SSL / TLS is ingeschakeld, dus automatische toegang tot de browser kan HTTP's gebruiken.

Conclusie

Het is echt leuk om vanuit huis te werken, je kunt communiceren met je kinderen en tegelijkertijd je database in de gaten houden. U moet de bovenstaande richtlijnen volgen om ervoor te zorgen dat u niet wordt aangevallen of dat gegevens worden gestolen wanneer u op afstand toegang krijgt tot uw database.


  1. Redis-transacties en langlopende Lua-scripts

  2. Kan ik een ruby ​​Digest::SHA1-instantieobject serialiseren?

  3. Verbinding maken met Redis in Docker Container vanaf hostcomputer

  4. MongoDB SSL met zelfondertekende certificaten in C#