Jak utworzyć użytkownika i dodać rolę w MongoDB

⚡ Inteligentne podsumowanie

Tworzenie użytkownika i dodawanie roli w MongoDB opiera się na metodzie db.createUser() w celu definiowania poświadczeń, przypisywania wbudowanych ról i zakresu uprawnień do określonych baz danych, wzmacniając kontrolę dostępu do kont administracyjnych i kont pojedynczej bazy danych.

  • 🔑 Metoda podstawowa: Polecenie db.createUser() tworzy konto, określając użytkownika, hasło i tablicę ról w jednym poleceniu.
  • 🛡️ Zakres administratora: Rola userAdminAnyDatabase przyznaje uprawnienia zarządzania wszystkimi bazami danych, podczas gdy rola userAdmin ogranicza kontrolę do jednej nazwanej bazy danych.
  • 🎯 Przypisanie roli: Wbudowane role, takie jak read i readWrite, są dokładnie odzwierciedleniem działań, jakie użytkownik może wykonać na zbiorze.
  • 🠄¥ Wiele baz danych: Pojedyncze konto może mieć różne role w kilku bazach danych w ramach jednej tablicy ról.
  • Weryfikacja: Metoda db.getUsers() i zwrócone dane wyjściowe potwierdzają, że konta i uprawnienia zostały poprawnie skonfigurowane.

Jak utworzyć użytkownika i dodać rolę w MongoDB

Czym są wbudowane role w MongoDB?

Przed utworzeniem konta warto zapoznać się z wbudowanymi rolami, które MongoDB zapewnia. Rola to nazwany zbiór uprawnień, a każdy z nich łączy zasób (bazę danych lub zbiór) z akcjami, które są na nim dozwolone. Przypisanie roli podczas tworzenia użytkownika decyduje zatem, co dokładnie może robić dane konto.

MongoDB Grupuje wbudowane role na role użytkowników bazy danych, role administratorów baz danych, role administratorów klastrów, role tworzenia kopii zapasowych i przywracania oraz role superużytkowników. Poniższa tabela podsumowuje role najczęściej używane podczas zarządzania użytkownikami:

Rola Kategoria Przyznane przywileje
czytać Użytkownik bazy danych Dostęp tylko do odczytu do wszystkich kolekcji w bazie danych, które nie są elementami systemowymi.
czytajZapisz Użytkownik bazy danych Dostęp do odczytu oraz dodawanie, aktualizowanie i usuwanie kolekcji.
dbAdmin Administrator bazy danych Zarządzanie schematem, indeksowaniem i statystykami bazy danych.
użytkownikAdmin Administrator bazy danych Twórz i modyfikuj użytkowników i role w jednej bazie danych.
użytkownikAdminAnyDatabase Superuser Administrowanie użytkownikami w każdej bazie danych w danej instancji.
korzeń Superuser Pełny dostęp do wszystkich zasobów i operacji.

MongoDB Utwórz użytkownika administratora

Tworzenie administratora użytkownika w MongoDB odbywa się za pomocą metody createUser. Poniższy przykład pokazuje, jak to zrobić.

db.createUser(
{	user: "Guru99",
	pwd: "password",

	roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

MongoDB Utwórz użytkownika administratora

Code Wyjaśnienie:

  1. Pierwszym krokiem jest określenie „nazwy użytkownika” i „hasła”, które należy utworzyć.
  2. Drugim krokiem jest przypisanie użytkownikowi roli. Ponieważ musi to być administrator bazy danych, w takim przypadku przypisaliśmy rolę „userAdminAnyDatabase”. Rola ta umożliwia użytkownikowi posiadanie uprawnień administracyjnych do wszystkich baz danych w systemie. MongoDB.
  3. Parametr db określa bazę danych administratora, która jest specjalną bazą danych Meta w ramach MongoDB który przechowuje informacje o tym użytkowniku.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

MongoDB Utwórz użytkownika administratora

Wynik pokazuje, że użytkownik o nazwie „Guru99” został utworzony i ten użytkownik ma uprawnienia do wszystkich baz danych w MongoDB.

MongoDB Utwórz użytkownika dla pojedynczej bazy danych

Aby utworzyć użytkownika, który będzie zarządzał pojedynczą bazą danych, możemy użyć tego samego polecenia, o którym wspomniano powyżej, jednak musimy użyć tylko opcji „userAdmin”.

Poniższy przykład pokazuje, jak to zrobić:

MongoDB Utwórz użytkownika dla pojedynczej bazy danych

db.createUser(
{
	user: "Employeeadmin",

	pwd: "password",

	roles:[{role: "userAdmin" , db:"Employee"}]})

Code Wyjaśnienie:

  1. Pierwszym krokiem jest określenie „nazwy użytkownika” i „hasła”, które należy utworzyć.
  2. Drugim krokiem jest przypisanie użytkownikowi roli, która w tym przypadku, ponieważ musi być administratorem bazy danych, jest przypisywana do roli „userAdmin”. Rola ta pozwala użytkownikowi na posiadanie uprawnień administracyjnych tylko do bazy danych określonej w opcji db.
  3. Parametr db określa bazę danych, do której użytkownik powinien mieć uprawnienia administracyjne.

Jeśli polecenie zostanie wykonane pomyślnie, wyświetlony zostanie następujący komunikat:

Wyjście:

MongoDB Utwórz użytkownika dla pojedynczej bazy danych

Dane wyjściowe pokazują, że utworzono użytkownika o nazwie „Employeeadmin” i ma on uprawnienia tylko w bazie danych „Employee”.

Zarządzanie użytkownikami

Najpierw zrozum role, które musisz zdefiniować. Dostępna jest cała lista ról w MongoDBNa przykład istnieje rola „read”, która zezwala wyłącznie na dostęp do baz danych w trybie odczytu, oraz rola „readWrite”, która zapewnia dostęp do bazy danych w trybie odczytu i zapisu. Oznacza to, że użytkownik może wydawać polecenia wstawiania, usuwania i aktualizowania kolekcji w tej bazie danych.

Zarządzanie użytkownikami

db.createUser(
{
	user: "Mohan",

	pwd: "password",

	roles:[
	{ role: "read" , db:"Marketing" },
	{ role: "readWrite" , db:"Sales" }
	]
})

Powyższy fragment kodu pokazuje, że tworzony jest użytkownik o imieniu Mohan, któremu przypisano wiele ról w wielu bazach danych. W powyższym przykładzie otrzymuje on uprawnienia tylko do odczytu bazy danych „Marketing” oraz uprawnienia do odczytu i zapisu bazy danych „Sprzedaż”.

Jak przeglądać i zarządzać MongoDB użytkownicy

Po utworzeniu kont MongoDB zapewnia zestaw poleceń umożliwiających ich inspekcję, aktualizację i usuwanie bez konieczności usuwaniaping i ponowne utworzenie każdego użytkownika. Te polecenia działają w bazie danych, w której utworzono użytkownika, dlatego przed ich wykonaniem należy przełączyć się na właściwą bazę danych za pomocą instrukcji use.

Do najpopularniejszych poleceń zarządzania użytkownikami należą:

  • db.getUsers() — wyświetla listę wszystkich użytkowników zdefiniowanych w bieżącej bazie danych wraz z rolami, jakie każdy z nich pełni.
  • db.getUser(“nazwa użytkownika”) — zwraca szczegóły pojedynczego konta, co jest przydatne przy kontroli uprawnień.
  • db.grantRolesToUser() — dodaje jedną lub więcej ról do istniejącego użytkownika bez wpływu na bieżące role.
  • db.revokeRolesFromUser() — usuwa określone role, ograniczając dostęp w przypadku zmiany obowiązków.
  • db.changeUserPassword() — resetuje hasło do konta, podczas gdyping jego role pozostają nienaruszone.
  • db.dropUser() — trwale usuwa użytkownika z bazy danych.

Poniższy przykład przyznaje dodatkową rolę, odbiera inną, resetuje hasło i na koniec usuwa konto:

// List all users in the current database
db.getUsers()

// Grant an additional role to an existing user
db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }])

// Remove a role from a user
db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }])

// Change a user's password
db.changeUserPassword("Employeeadmin", "newPassword")

// Delete a user
db.dropUser("Employeeadmin")

Ponowne uruchomienie db.getUsers() po tych operacjach potwierdzi, że zmiany zostały zastosowane i że pozostały tylko właściwe konta i role.

Najlepsze praktyki dla MongoDB Zarządzanie użytkownikami

Dobrze zaplanowane konta użytkowników zapewniają MongoDB Wdrożenie jest bezpieczne i łatwe do audytu. Poniższe praktyki zmniejszają ryzyko przypadkowego ujawnienia danych i nadużycia uprawnień:

  • Zastosuj najmniejsze uprawnienia: Przyznawaj tylko te role, których dane konto rzeczywiście potrzebuje, faworyzując uprawnienia readWrite dla pojedynczej bazy danych kosztem szerokich ról administracyjnych.
  • Unikaj rootowania w środowisku produkcyjnym: Role root i userAdminAnyDatabase należy zarezerwować na potrzeby zadań konfiguracyjnych i awaryjnych, a nie na potrzeby codziennych operacji.
  • Włącz uwierzytelnianie: Uruchom serwer z opcją –auth, aby dane uwierzytelniające były faktycznie wymuszane.
  • Używaj silnych haseł: Połącz długość i złożoność oraz zmieniaj hasła według harmonogramu za pomocą db.changeUserPassword().
  • Regularnie przeprowadzaj audyty: Revokresowo sprawdzaj dane wyjściowe db.getUsers() i usuwaj konta, które nie są już potrzebne.

Razem te nawyki zapewniają, że każde konto odpowiada rzeczywistej potrzebie i że dostęp do niego jest możliwy traced za każdym razem, gdy przeprowadzany jest przegląd bezpieczeństwa.

FAQ

Tak. Asystenci AI mogą przekształcić prosty opis w prawidłowe polecenie db.createUser(), przypisać odpowiednią tablicę ról i określić zakres dla bazy danych. Zawsze testuj wygenerowane polecenie w bazie danych nieprodukcyjnej przed jego uruchomieniem.

Tak. Narzędzia audytowe oparte na sztucznej inteligencji potrafią odczytywać dane wyjściowe db.getUsers(), oznaczać konta z uprawnieniami root lub userAdminAnyDatabase i sugerować role o najniższych uprawnieniach. Administratorzy powinni jednak zapoznać się z każdą rekomendacją przed cofnięciem dostępu w systemie produkcyjnym.

Rola userAdmin zarządza użytkownikami i rolami w jednej, konkretnej bazie danych, natomiast userAdminAnyDatabase przyznaje uprawnienia administracyjne użytkownikom we wszystkich bazach danych w danej instancji. Rola userAdmin zapewnia kontrolę zakresową, a userAdminAnyDatabase tylko w przypadku zaufanych administratorów.

Przejdź do bazy danych, w której znajduje się użytkownik, za pomocą polecenia use, a następnie uruchom db.dropUser(“username”). MongoDB Usuwa konto i jego role z tej bazy danych. Potwierdź usunięcie, uruchamiając db.getUsers().

Podsumuj ten post następująco: