Bezpieczeństwo i kopia zapasowa w MongoDB

Spisie treści
Ustanawiając naszą usługę w środowisku produkcyjnym lub być może w środowisku programistycznym z kilkoma użytkownikami, pierwszą rzeczą, którą musimy zrobić, jest stworzenie schematu bezpieczeństwa, który pozwala nam zapobiec Bazy danych są niepoprawnie dostępne dla ludzi.
Główną cechą MongoDB jest to, że podczas instalowania instancji, która działa bez stworzenia jakiegokolwiek środka uwierzytelniającego, ułatwia to rozpoczęcie rozwoju, ale przychodzi moment, w którym musimy zabezpieczyć naszą infrastrukturę.
Kolejnym ważnym punktem, który wiąże się z kwestią bezpieczeństwa i backupu naszych danych, jest sytuacja, w której musimy wykonać kopię zapasową danego momentu, ale nie chcemy, aby nastąpiło przesunięcie danych, ponieważ w ten sposób gwarantujemy integralność naszych danych. Zbiory baz danych i dokumentów. W tym aspekcie istnieje również narzędzie w MongoDB co pozwala nam tymczasowo go zablokować, aby upewnić się, że to, co kopiujemy, jest odpowiednie.
WymaganiaWymagania, których potrzebujemy przy tej okazji są bardzo proste, po prostu musimy mieć instancję MongoDB zainstalowany i uruchomiony w naszym systemie, będziemy również potrzebować dostępu do usługi za pośrednictwem konsoli. Ten samouczek został opracowany w Okna, więc niektóre polecenia mogą ulec zmianie w innych systemach operacyjnych, ale wszystko ma związek z tym, co jest robione poza konsolą MongoDBoraz sposób, w jaki wyrażamy trasy.
Ustawianie parametrów uwierzytelniania użytkownika nie jest czymś, co jest niezbędne do działania MongoDB w produkcji, ponieważ możemy zainstalować usługę tak, aby sprzęt, na którym działa, miał filtr połączeń, więc jeśli spróbujemy uzyskać dostęp do tego sprzętu poza siecią, nie będziemy mieć dostępu.
To uproszczone podejście do bezpieczeństwa jest bardzo skuteczne, ale tylko w przypadku projektów, w których usługa nie jest współdzielona z innymi zespołami, ponieważ jeśli mamy różne zespoły programistyczne pracujące na tym samym serwerze, potrzebujemy czegoś innego. To tutaj uwierzytelnianie, dzięki niemu dbamy o żądanie użytkownika i hasła dla kolekcji, jeśli chcemy, dzięki czemu mamy możliwość odpowiedniego oddzielenia różnych instancji dla każdego komputera.
Oba środki bezpieczeństwa nie wykluczają się i jeśli chcemy z nich korzystać jednocześnie, tworzymy znacznie bezpieczniejszą usługę dla naszego środowiska, czy to produkcyjnego, przedprodukcyjnego, czy też wielozespołowego.
ten uwierzytelnianie w swojej najbardziej podstawowej formie osiąga się to za pomocą polecenia Stwórz użytkownika Musi to zostać wykonane, gdy wybraliśmy Baza danych Admin czyli tam, gdzie powinni być nasi użytkownicy.
Ważne jest, aby pamiętać, że od wersji 2.6 z MongoDB jest to, że metoda zaczęła być stosowana Stwórz użytkownika, w przeszłości wszystko rozwiązywało się metodą Dodaj użytkownikaJednak zmiana została wprowadzona, aby umożliwić większą wszechstronność podczas wprowadzania zmian.
Zobaczmy, jak możemy ustawić administratora, a następnie użytkownika, który może tylko czytać Bazę danych test.
Struktura dokumentu, który otrzymuje metodę Stwórz użytkownika jest następny:
 {"User": "username", "pwd": "password", "roles": [{"role": "", "db": ""},]}
Jak zauważyliśmy, musimy ustalić nazwę i hasło dla tworzonego użytkownika, ale oprócz tego musimy również stworzyć role, czyli strukturę uprawnień, która pozwoli nam zdefiniować uprawnienia, które nadajemy użytkownikowi .
W poniższym przykładzie utworzymy użytkownika administratora, który ma dostęp do wszystkich Bazy danych i które mogą kontrolować usługę, do tego użyjemy role:
  • Administrator klastra
  • przeczytaj dowolną bazę danych
  • przeczytajZapisz

Dzięki tym trzem parametrom możemy już mieć naszego pierwszego użytkownika do zarządzania. Zobaczmy, jak to wygląda na konsoli:

Dzięki temu pomyślnie utworzyliśmy już naszego administratora, teraz musimy poprawnie zapamiętać nazwę użytkownika i hasło, ponieważ następnym krokiem, który zrobimy, jest włączenie zabezpieczeń, w tym celu musimy uruchomić usługę z parametrem -auth.
Po ponownym uruchomieniu usługi możemy następnie umieścić naszego nowo utworzonego użytkownika administratora i aby go przetestować, utworzymy użytkownika, który może tylko czytać Baza danych. Zobaczmy, jak ponownie uruchomimy usługę w kolejnych krokach.
Po prostu musimy to najpierw zatrzymać, na przykład w Okna ustawiamy się na konsoli, w której jest uruchomiony i naciskamy klawisze CTRL + C. Następnie normalnie uruchamiamy naszą usługę, ale w końcu przekazujemy parametr autoryzować, jak widzimy w następującej konsoli:

Gdy to zrobisz, wrócimy do konsoli sterowania MongoDB, ale w tym przypadku jeśli zamierzamy użyć naszego nowo utworzonego użytkownika:
 mongo.exe --username = root --password = 123456 admin
Dzięki tej poprzedniej linii możemy bezpiecznie uzyskać dostęp do naszej usługi, widzimy to na poniższym obrazku:

Należy pamiętać, że musimy użyć bezpieczniejszego hasła niż „123456”, w tym przykładzie jest ono używane tylko w celach demonstracyjnych, jednak w środowisku produkcyjnym nie jest odpowiednie.
Ponieważ zweryfikowaliśmy, jak uzyskać dostęp za pomocą uwierzytelniania, utworzymy użytkownika, który będzie mógł czytać tylko w Baza danych test, w tym celu powtórzymy tworzenie użytkownika, ale określimy rolę:
 czytać
W ten sposób ograniczymy użytkownika do niemożności pisania w kolekcjach. Zobaczmy odpowiedź w naszej konsoli:

Teraz przy próbie napisania dokumentu otrzymamy błąd:

Widzieliśmy wtedy, jak odpowiednio zabezpieczyliśmy już naszych użytkowników, jasne jest, że ta administracja użytkownikami jest nieco skomplikowana, ale gdy to zrobimy, możemy mieć dużą pewność, że nie będziemy mieli nieautoryzowanego dostępu do Bazy danych którą chronimy.
Jednym z najbardziej złożonych działań, które należy zapewnić podczas tworzenia kopii zapasowej, jest zagwarantowanie integralności danych, co prowadzi nas do dylematu, zlokalizować czas, w którym pracuje mniej użytkowników i wykonać kopię zapasową, lub zrobić to niezależnie od danych .
fsync i blokadaNie powinno tak być, oczywiście wykonanie kopii zapasowej w momencie, gdy wiemy, że jest najmniejsza liczba użytkowników, jest zawsze zalecane, ponieważ unikamy problemów z aplikacją, gwarantując, że dane są zawsze możliwe, jeśli użyjemy tego, co w MongoDB wiemy jak fsync Tak Zamek.
Dzięki tym dwóm parametrom możemy sprawić, że nasza Baza Danych odrzuci zapisy iw odpowiednim momencie możemy wykonać kopie zapasowe.
Aby utworzyć tę blokadę, musimy uruchomić następującą komendę w naszej Bazie Danych:
 db.runCommand ({"fsync": "1", "lock": "1"});
Dzięki temu będziemy mieli nasze Baza danych skutecznie zabezpieczone przed zapisem:

Jak widać jest to dość proste i skuteczne, teraz jeśli chcemy złamać blokadę, wystarczy ponownie uruchomić polecenie:
 db.fsyncOdblokuj ();
Z tym ostatnim znów będziemy mieli nasze Baza danych zdolny do przyjmowania pisma:

Chociaż powyższe zapewnia większą elastyczność i daje nam znacznie większe bezpieczeństwo przed uszkodzeniem danych i sprzyja integralności, tak naprawdę nie jest to praktyka, którą powinniśmy stosować w rzeczywistych środowiskach produkcyjnych.
Idealnym rozwiązaniem jest stworzenie środowiska z replikacją, w którym możemy uzyskać dostęp do kopii danych, a tym samym manipulować dowolną z opcji, które mamy niezbędne kopie zapasowe. Będąc w replice Baza danych produkcji możemy go zablokować, lub wyłączyć i wykonać kopię zapasową w taki sposób, aby użytkownik nigdy nie napotkał błędu w aplikacji, ponieważ nie może napisać rekordu.
Jeśli chodzi o kopie zapasowe, sprawy się komplikują, ponieważ wskazane jest korzystanie z replik serwerowych, jednak ze względu na sposób, w jaki został pomyślany MongoDB, tego typu konstrukcje mistrz - niewolnik Są bardzo łatwe do wdrożenia, więc zrozumienie koncepcji jest najtrudniejsze, ale ich zastosowanie jest niezwykle przyjazne dla użytkownika. DBA.
Na tym kończymy ten samouczek, ponieważ widzimy administrację MongoDB Jest dość zaawansowana, jeśli mamy średniej wielkości strukturę, być może myśleliśmy już o kwestii bezpieczeństwa użytkowników, chociaż tworzenie użytkowników nie jest skomplikowane, jeśli dobrze jest usiąść i zdefiniować dobrą strukturę do tworzenia tego typu pozwolenia.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave