MongoDB to wieloplatformowa baza danych zorientowana na dokumenty, która umożliwia szybkie i łatwe przechowywanie i wyszukiwanie danych. Baza danych wykorzystuje dla dokumentów strukturę podobną do JSON, znaną głównie z nowoczesnych aplikacji.
MongoDB wykorzystuje kolekcje i rękopisy, w których dokumenty składają się z par klucz-wartość, podstawowej jednostki danych w MongoDB. W przeciwieństwie do tego, kolekcje zawierają funkcje i dokumenty równoważne tabelom relacyjnych baz danych.
Utwórz nowego użytkownika w MongoDB
Aby dodać nowych użytkowników do systemu, MongoDB udostępnia wewnętrzną technikę znaną jako db.createUser(). W przeciwieństwie do tradycyjnych systemów bazodanowych, użytkownicy MongoDB są przywiązani do lokalnej bazy danych zwanej bazą danych uwierzytelniania. W związku z tym nie są one powiązane globalnie, jak konwencjonalne bazy danych SQL.
Ponadto baza danych uwierzytelniających oraz nazwa użytkownika pełnią rolę unikalnego identyfikatora. W związku z tym, jeśli dwóch użytkowników jest utworzonych w różnych bazach danych, ale mają te same nazwy, są oni identyfikowani jako dwaj osobni użytkownicy. Dlatego, jeśli ktoś chce utworzyć jednego użytkownika z uprawnieniami do wielu baz danych, powinien pozwolić jednemu użytkownikowi na posiadanie praw/roli do odpowiedniej bazy danych, zamiast tworzyć użytkownika wiele razy w różnych bazach danych.
Przykład:
db.createUser( { user: "Foss", pwd: "password", roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Polecenia zarządzania użytkownikami
Nazwiska | Opis |
---|---|
createUser | Ta metoda tworzy nowego użytkownika. |
dropAllUsersFromDatabase | Usuwa wszystkich użytkowników z bazy danych. |
dropUser | Przyznaje zadanie i jego uprawnienia użytkownikowi. |
przyznajRoleUżytkownikowi | Rola i związane z nią uprawnienia są przypisywane użytkownikowi. |
revokeRolesFromUser | Usuwa rolę użytkownika. |
updateUser | Ta metoda służy do aktualizacji danych użytkownika. |
usersInfo | Ta metoda zwraca informacje o dostarczonych użytkownikach. |
Dodawanie użytkownika
Podczas dodawania użytkownika do określonej bazy danych użyj metody „db.createUser()”. Należy zauważyć, że dodawanie użytkowników z opcjami jest znacznie prostsze niż wstawianie dokumentu użytkownika do nierelacyjnej bazy danych.
Przykład:
use foss // specify the DB db.createUser( { user: "fosslinux", pwd: passwordPrompt(), // or cleartext password if you wish roles: [ { role: "read", db: "foss" }, { role: "read", db: "articles" }, { role: "read", db: "tutorials" }, { role: "readWrite", db: "tutorialguides" } ] } )
Po podłączeniu instancji MongoDB w powyższym przykładzie możesz dołączyć ją do bazy danych foss, aby wykonać polecenie db.createUser(). Użyta baza danych będzie działać jako baza danych uwierzytelniania użytkownika.
Hasło i nazwa użytkownika są podane w dokumencie zawierającym wywołanie naszej metody jako pary klucz-wartość. Korzystanie z ról kontroluje dostęp do baz danych. Użytkownik musi mieć rolę, aby uzyskać dostęp do dowolnej bazy danych, nawet własnej bazy danych uwierzytelniania. Ponadto użytkownik uzyskuje dostęp do innych baz danych w systemie za pomocą ról. W ten sposób uprawnienia użytkownika nie ograniczają się do jego bazy danych uwierzytelniania. Dzięki temu użytkownicy mogą w razie potrzeby mieć różne uprawnienia w wielu bazach danych. Zasada najmniejszych uprawnień pozwala użytkownikom na utrzymanie jak najmniejszego zakresu dostępu do bazy danych.
Jak utworzyć użytkownika administratora w MongoDB
Tworzenie użytkownika admin w MongoDB odbywa się za pomocą metody db.createUser(), która umożliwia utworzenie użytkownika. Jednak po utworzeniu użytkownika należy przypisać role administratora. Te role dają użytkownikowi uprawnienia administratora.
Utwórz użytkownika dla pojedynczej bazy danych w MongoDB
Jeśli chcemy utworzyć użytkownika, który może pracować tylko z jedną bazą danych, możemy użyć podobnego polecenia jak powyżej, ale musimy użyć opcji „userAdmin” tylko raz.
Przykład:
db.createUser( { user: "Fosslinux", pwd: "password", roles:[{role: "userAdmin" , db:"Foss"}]})
Podział kodu:
- Przede wszystkim należy określić „nazwę użytkownika” i „hasło”, które mają zostać utworzone.
- Przypisz rolę temu Użytkownikowi, który jest administratorem bazy danych; jest to przypisane do roli „administrator użytkownika”, ponieważ rola ta pozwala użytkownikowi mieć uprawnienia administracyjne tylko do bazy danych określonej w DB
- Na koniec parametr DB ustawia bazę danych, w której użytkownik powinien mieć uprawnienia administracyjne.
Zarządzanie użytkownikami
Aby zarządzać użytkownikami, należy zrozumieć role, które należy zdefiniować, ponieważ MongoDB ma całą listę funkcji, takich jak rola odczytu i odczytu-zapisu. Polecenie „odczyt roli” umożliwia dostęp tylko do odczytu do baz danych. „Rola odczytu i zapisu” zapewnia dostęp do odczytu i zapisu do bazy danych; oznacza to, że użytkownik może wydawać polecenia aktualizacji, wstawiania i usuwania kolekcji w tej bazie danych.
Przykład:
db.createUser( { user: "Foss", pwd: "password", roles:[ { role: "read" , db:"Tutorials"}, { role: "readWrite" , db:"Guides"} } ] })
Powyższy przykład pokazuje, że użytkownik znany jako Foss został utworzony i przypisany do kilku ról w wielu bazach danych. W tym samym modelu Foss otrzymuje uprawnienia tylko do odczytu w bazie danych „Samouczki” oraz uprawnienia do odczytu i zapisu w bazie danych „Przewodniki”.
Dodawanie ról do MongoDB
Role zapewniają użytkownikom dostęp do zasobów MongoDB. Ponadto MongoDB udostępnia kilka wbudowanych ról, które umożliwiają administratorom kontrolowanie dostępu do systemu MongoDB. Jednak gdy te role nie mogą opisywać pożądanego zestawu uprawnień, można utworzyć nowe role w określonej bazie danych. Z wyjątkiem funkcji utworzonych w bazie danych administratora, rola może zawierać tylko prawa mające zastosowanie do jej bazy danych oraz prawa odziedziczone z innych ról.
Rola zdefiniowana w bazie danych administratora może zawierać uprawnienia mające zastosowanie do bazy danych administratora, innych baz danych lub zasobu klastra i może dziedziczyć role z innych baz danych. Aby ustanowić nową rolę, użyj „db.createRole()” i określ tablicę praw oraz tablicę ról dziedziczonych.
MongoDB definiuje role jednoznacznie, łącząc nazwę bazy danych z nazwą roli. Każda rola obejmuje zakres tworzonej bazy danych, ale MongoDB przechowuje wszystkie informacje o rolach w kolekcji adminSystemRoles w bazie danych administratora. Na przykład akcje kreatywnej roli i przyznania ról w zasobie bazy danych muszą zapewniać, że role są tworzone i nadawane w bazie danych. GrantRole określa uprawnienia dla nowych ról oraz role do dziedziczenia. User AdminAnyDatabase i wbudowane role user admin udostępniają akcje CreateRole i przydzielanie ról w odpowiednich zasobach.
Aby utworzyć rolę z określonymi ograniczeniami uwierzytelniania, należy ustawić akcję AuthenticationRetrictions na zasobie bazy danych, z której następnie zostanie utworzona funkcja.
Metoda db.grantRole to User() przyjmuje następujące argumenty;
Parametr | Typ | Opis |
---|---|---|
Użytkownik | Ciąg | Zawiera nazwę Użytkownika, któremu przypisać role. |
Role | Tablica | Zawiera szereg dodatkowych ról, które można przypisać Użytkownikowi. |
Zgłoś problem | Dokument | Opcjonalne i mające na celu modyfikację polecenia. Zajmuje również te same pola z poleceniem get last error. |
Parametr roles może określać zarówno funkcje zdefiniowane przez użytkownika, jak i funkcje wbudowane, co można osiągnąć wybierając rolę wraz z jej nazwą. Odbywa się to poprzez połączenie z mongod (podstawowy proces demona dla systemu MongoDB, który obsługuje żądania danych, wykonuje operacje zarządzania w tle i zarządza dostępem do danych). Alternatywnie, mongos (który jest odpowiedzialny za nawiązanie połączenia między aplikacjami klienckimi a sharded cluster ) z prawami podanymi w sekcji wymagań. Na przykład mój administrator użytkownika utworzony w ramach kontroli dostępu może tworzyć role w administratorze i innych bazach danych.
Polecenia zarządzania rolami
Nazwiska | Opis |
---|---|
createRole | Tworzy rolę i mówi, co może zrobić. |
dropRole | Usuwa rolę ustawioną przez użytkownika. |
dropAllRolesFromDatabase | Usuwa wszystkie role skonfigurowane przez użytkowników z bazy danych. |
przyznajPrivilegesToRole | przypisuje uprawnienia do roli wybranej przez użytkownika. |
grantRolesToRole | określa, z których ról rola zdefiniowana przez użytkownika może dziedziczyć uprawnienia. |
unieważnij pamięć podręczną użytkownika | Gdy używasz invalidateUserCache, pamięć podręczna zawierająca informacje o użytkownikach, takie jak poświadczenia i role, jest opróżniana. |
cofnijUprawnieniaFromRole | usuwa uprawnienia z roli zdefiniowanej przez użytkownika, która je posiada. |
revokeRolesFromRole | usuwa odziedziczone role z roli zdefiniowanej przez użytkownika, której nie chcesz. |
rolesInfo | zwraca informacje o roli lub rolach, które chcesz. |
updateRole | Aktualizuje rolę ustawioną przez użytkownika. |
Wniosek
Baza danych MongoDB, która umożliwia łatwe i szybkie przechowywanie i pobieranie danych, umożliwia utworzenie użytkownika za pomocą polecenia „db.createUser()”. Z drugiej strony polecenie „AdminAnyDatabase” zapewnia użytkownikom wszystkie uprawnienia dostępu do bazy danych w roli administratora. Ten artykuł poszedł o krok dalej i zilustrował, jak przyznawać role i prawa. Mamy nadzieję, że jest to dla ciebie pomocne. Jeśli tak, nie zapomnij zostawić komentarza w sekcji komentarzy poniżej.