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.
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"}]})
Code Wyjaśnienie:
- Pierwszym krokiem jest określenie „nazwy użytkownika” i „hasła”, które należy utworzyć.
- 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.
- 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:
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ć:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Wyjaśnienie:
- Pierwszym krokiem jest określenie „nazwy użytkownika” i „hasła”, które należy utworzyć.
- 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.
- 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:
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.
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.






