MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wskazówki dotyczące zdalnego zarządzania MongoDB

Praca zdalna w związku z pandemią Covid-19 oznacza wzrost znaczenia izolowanych infrastruktur; a dokładniej takie, do których można uzyskać dostęp tylko za pośrednictwem sieci wewnętrznej, ale w taki sposób, aby upoważnione osoby ze świata zewnętrznego mogły uzyskać dostęp do systemu w dowolnym miejscu i czasie.

W tym artykule przedstawimy kilka podstawowych kroków, które należy wdrożyć w MongoDB, aby zapewnić bezpieczny dostęp podczas administrowania bazą danych.

Zabezpieczanie MongoDB

Przed zdalnym dostępem do bazy danych MongoDB należy wykonać „utwardzanie” środowiska. Ustaw następujące elementy po stronie infrastruktury:

Włącz uwierzytelnianie MongoDB

Ta funkcja jest obowiązkowa do włączenia, niezależnie od tego, czy chcemy uzyskać dostęp do bazy danych MongoDB z sieci wewnętrznej, czy z sieci zewnętrznej. Przed włączeniem autoryzacji musisz najpierw utworzyć administratora w MongoDB. Możesz uruchomić poniższe polecenie, aby utworzyć administratora na jednym z serwerów mongoDB:

$ mongo

> use admin

> db.createUser(

      {

          user: "admin",

          pwd: "youdontknowmyp4ssw0rd",

          roles: [ "root" ]

      }

  );

Powyższe polecenie utworzy nowego użytkownika o nazwie admin z uprawnieniami roota. Funkcję MongoDB Auth można włączyć, otwierając plik /etc/mongod.conf, a następnie dodając następujący wiersz:

  security:

   authorization: 'enabled'

Nie zapomnij ponownie uruchomić usługi mongoDB, aby zastosować zmiany. Powyższe polecenie ograniczy dostęp do bazy danych tylko temu, kto ma poświadczenia dostępu, które mogą się zalogować.

Konfiguruj role i uprawnienia

Aby zapobiec niewłaściwemu wykorzystaniu dostępu do MongoDB, możemy wdrożyć dostęp oparty na rolach, tworząc kilka ról i ich uprawnienia.

Upewnij się, że masz listę użytkowników, którzy potrzebują dostępu do bazy danych i rozumieją potrzeby i obowiązki każdej osoby. Utwórz role i przypisz uprawnienia do tych utworzonych ról. Następnie możesz przypisać swojego użytkownika do roli w oparciu o obowiązki.

To podejście pomaga nam zminimalizować nadużywanie uprawnień i natychmiast zidentyfikować rolę i użytkownika, gdy wydarzy się coś niepożądanego.

Skonfiguruj połączenie SSL/TLS

MongoDB obsługuje połączenia SSL/TLS w celu zabezpieczenia przesyłanych danych. Aby to zaimplementować, musisz wygenerować własny klucz SSL, który możesz wygenerować za pomocą openssl. Aby włączyć obsługę SSL / TLS, możesz edytować plik /etc/mongod.conf i dodać następujący parametr:

  net:

      tls:

         mode: requireTLS

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

Po dodaniu tych parametrów należy ponownie uruchomić usługę MongoDB. Jeśli masz architekturę zestawu replik MongoDB, musisz je zastosować na każdym węźle. SSL jest również potrzebny, gdy klient uzyskuje dostęp do MongoDB, niezależnie od tego, czy jest to po stronie aplikacji, czy bezpośrednio z klienta.

Do użytku produkcyjnego należy używać ważnych certyfikatów wygenerowanych i podpisanych przez jeden urząd certyfikacji. Ty lub Twoja organizacja możecie generować i utrzymywać certyfikaty jako niezależny urząd certyfikacji lub używać certyfikatów generowanych przez zewnętrznych dostawców TLS/SSL. Zapobiegaj używaniu samopodpisanego certyfikatu, chyba że jest to zaufana sieć.

Ogranicz port bazy danych

Musisz się upewnić, że tylko port MongoDB jest otwarty na serwerze zapory lub urządzeniu zapory, upewnij się, że żadne inne porty nie są otwarte.

Zabezpieczanie połączenia MongoDB

Zdalne połączenie przez publiczny Internet stwarza ryzyko przesyłania danych od lokalnych użytkowników do serwera bazy danych i odwrotnie. Atakujący mogą przerwać połączenie, które w tym przypadku jest znane jako atak MITM (Min-in-The-Middle). Zabezpieczenie połączenia jest bardzo potrzebne, gdy zdalnie zarządzamy / administrujemy bazą danych, niektóre rzeczy, które możemy zastosować, aby chronić nasz dostęp do bazy danych, to:

Dostęp do sieci prywatnej

VPN (wirtualna sieć prywatna) to jedna z podstawowych rzeczy, gdy chcemy uzyskać bezpieczny dostęp do naszej infrastruktury z zewnątrz. VPN to prywatna sieć, która wykorzystuje sieci publiczne do uzyskiwania dostępu do zdalnych witryn. Konfiguracja VPN wymaga sprzętu, który musi być przygotowany po stronie sieci prywatnej, poza tym klient potrzebuje również oprogramowania VPN, które obsługuje dostęp do sieci prywatnej.

Oprócz korzystania z VPN, innym sposobem uzyskania dostępu do serwera MongoDB jest przekierowanie portu bazy danych przez SSH lub lepiej znane jako tunelowanie SSH.

Użyj SSL / TLS od klienta do serwera bazy danych

Oprócz implementacji bezpiecznego dostępu za pomocą tunelowania VPN lub SSH, możemy skorzystać z SSL/TLS, który został wcześniej skonfigurowany po stronie MongoDB. Potrzebujesz tylko posiadanego klucza SSL i spróbuj połączyć się z bazą danych za pomocą klucza SSL.

Włącz monitorowanie bazy danych

Konieczne jest umożliwienie usłudze monitorowania zrozumienia aktualnego stanu baz danych. Serwer monitorujący może być zainstalowany w domenie publicznej, która ma włączoną obsługę SSL / TLS, więc automatyczny dostęp do przeglądarki może korzystać z HTTPs.

Wnioski

Praca w domu jest naprawdę fajna, możesz komunikować się z dziećmi i jednocześnie monitorować swoją bazę danych. Musisz postępować zgodnie z powyższymi wytycznymi, aby upewnić się, że nie zostaniesz zaatakowany lub nie zostaniesz skradziony podczas zdalnego dostępu do bazy danych.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przewodnik programisty dotyczący shardingu MongoDB

  2. MongoDB $ostatni operator potoku agregacji

  3. Sprawdzanie, czy pole zawiera ciąg

  4. Jak usunąć bazę danych MongoDB z wiersza poleceń?

  5. Jak w NodeJS wyprowadzić wyniki z mongodb z różnymi nazwami pól?