sql >> Databáze >  >> NoSQL >> MongoDB

Jak vytvořit uživatele a přidat roli v MongoDB

MongoDB je databáze orientovaná na dokumenty napříč platformami, díky které je ukládání a vyhledávání dat rychlé a snadné. Databáze používá pro dokumenty strukturu podobnou JSON, kterou znají především moderní aplikace.

MongoDB používá sbírky a rukopisy, přičemž dokumenty se skládají z párů klíč-hodnota, což je základní jednotka dat v MongoDB. Naproti tomu kolekce obsahují funkce a dokumenty ekvivalentní tabulkám relačních databází.

Vytvořte nového uživatele v MongoDB

Pro přidání nových uživatelů do systému poskytuje MongoDB interní techniku ​​známou jako db.createUser(). Na rozdíl od tradičních databázových systémů jsou uživatelé MongoDB vázáni na lokální databázi nazvanou Authentication Database. Nejsou tedy globálně svázány, jako běžné databáze SQL.

Navíc autentizační databáze a jméno uživatele slouží jako jedinečný identifikátor. Pokud jsou tedy dva uživatelé vytvořeni v různých databázích, ale sdílejí stejná jména, jsou identifikováni jako dva samostatní uživatelé. Pokud tedy chcete vytvořit jednoho uživatele s oprávněními k více databázím, měli byste umožnit jednomu uživateli mít práva/role k příslušné databázi místo toho, abyste uživatele mnohokrát budovali v různých databázích.

Příklad:

db.createUser({       user:"Foss",        pwd:"password",         role:[{role:"userAdminAnyDatabase" , db:"admin"}]})

Příkazy správy uživatelů

Jméno/názvy Popis
createUser Tato metoda vytvoří nového uživatele.
dropAllUsersFromDatabase Odstraní všechny uživatele z databáze.
dropUser Uděluje uživateli úkol a jeho oprávnění.
grantRolesToUser Role a související oprávnění jsou přiřazeny uživateli.
revokeRolesFromUser Odebere roli uživatele.
updateUser Tato metoda se používá k aktualizaci dat uživatele.
usersInfo Tato metoda vrací informace o dodaných uživatelích.

Přidání uživatele

Při přidávání uživatele do zadané databáze použijte metodu „db.createUser()“. Je důležité poznamenat, že přidávání uživatelů pomocí voleb je mnohem jednodušší než vkládání uživatelského dokumentu do nerelační databáze.

Příklad:

použijte foss               // zadejte DBdb.createUser(  {    user:"fosslinux",    pwd:passwordPrompt(),  // nebo heslo čistého textu, chcete-li    role:[       { role:"read", db:"foss" ,       { role:"číst", db:"články" },       { role:"číst", db:"návody" },       { role:"čístWrite", db:"příručky výukových programů" }    ]  })

Jakmile připojíte instanci MongoDB ve výše uvedeném příkladu, můžete ji připojit k foss DB a spustit příkaz db.createUser(). Použitá databáze bude fungovat jako Uživatelská autentizační databáze.

Heslo a uživatelské jméno jsou uvedeny v dokumentu, který obsahuje volání naší metody, jako páry klíč–hodnota. Použití rolí řídí přístup k databázím. Uživatel musí mít roli pro přístup k jakékoli databázi, dokonce i k vlastní ověřovací databázi. Uživateli je také umožněn přístup k dalším databázím v systému pomocí rolí. Práva uživatele tedy nejsou omezena na jeho autentizační databázi. To umožňuje uživatelům mít různá oprávnění napříč mnoha databázemi podle potřeby. Princip nejmenšího oprávnění umožňuje uživatelům udržovat rozsah přístupu k databázi co nejmenší.‍

Jak vytvořit administrátora v MongoDB

Vytvoření uživatele admin v MongoDB se provádí pomocí metody db.createUser(), která umožňuje vytvořit uživatele. Po vytvoření uživatele však musíte přiřadit role správce. Tyto role dávají uživateli oprávnění správce.

Vytvořte uživatele pro jednu databázi v MongoDB

Pokud chceme vytvořit uživatele, který může pracovat pouze s jednou databází, můžeme použít podobný příkaz jako výše, ale musíme použít volbu „userAdmin“ jen jednou.

Příklad:

db.createUser({        user:"Fosslinux",         pwd:"password",         role:[{role:"userAdmin" , db:"Foss"}]})

Rozdělení kódu:

  1. V první řadě je třeba zadat „uživatelské jméno“ a „heslo“, které mají být vytvořeny.
  2. Přidělte roli tomuto uživateli, což je správce databáze; toto je přiřazeno roli „user admin“, protože tato role umožňuje uživateli mít administrátorská oprávnění pouze k databázi specifikované v DB
  3. Parametr DB nakonec nastaví databázi, ke které by měl mít uživatel práva správce.

Správa uživatelů

Ke správě uživatelů je třeba porozumět rolím, které je třeba definovat, protože MongoDB má celý seznam funkcí, jako je role pro čtení a role pro čtení a zápis. Příkaz „read role“ umožňuje přístup k databázím pouze pro čtení. „Role čtení a zápisu“ poskytuje přístup pro čtení a zápis do databáze; to znamená, že uživatel může vydávat příkazy pro aktualizaci, vkládání a odstraňování pro kolekce v dané databázi.

Příklad:

db.createuser ({user:"foss", pwd:"heslo", role:[{role:"read", db:"tutoriály"}, {role:"readwrite", "Guides"} }                          ]})

Výše uvedený příklad ukazuje, že uživatel známý jako Foss je vytvořen a má přiřazeno několik rolí ve více databázích. Ve stejném modelu má Foss oprávnění pouze ke čtení v databázi „Výukové programy“ a oprávnění ke čtení a zápisu v databázi „Průvodci“.

Přidávání rolí do MongoDB

Role udělují uživatelům přístup ke zdrojům MongoDB. MongoDB navíc poskytuje několik vestavěných rolí, které umožňují správcům řídit přístup k systému MongoDB. Pokud však tyto role nemohou popsat požadovanou sadu oprávnění, lze vytvořit nové role v konkrétní databázi. S výjimkou funkcí vytvořených v databázi správce může role zahrnovat pouze práva, která se vztahují k její databázi, a práva zděděná od jiných rolí.

Role definovaná v databázi správce může obsahovat práva platná pro databázi správce, jiné databáze nebo prostředek clusteru a může dědit role z jiných databází. Chcete-li vytvořit novou roli, použijte „db.createRole()“ a zadejte pole práv a pole zděděných rolí.

MongoDB definuje role jedinečně kombinací názvu databáze s názvem role. Každá role je omezena na databázi, kterou vytvoříte, ale MongoDB ukládá všechny informace o roli v kolekci adminSystemRoles v databázi správce. Například akce kreativní role a role udělení na zdroji databáze musí zajistit vytvoření a udělení rolí v databázi. GrantRole určuje oprávnění pro nové role a role, které se mají zdědit. User AdminAnyDatabase a Built-in role user admin poskytují akce CreateRole a udělování rolí na jejich příslušných zdrojích.

Chcete-li vytvořit roli se zadanými omezeními autentizace, je nutné nastavit akci AuthenticationRetrictions na zdroj databáze, který je následně vytvořen.

Metoda db.grantRole to User () přebírá následující argumenty;

Parametr Zadejte Popis
Uživatel Řetězec Obsahuje jméno uživatele, kterému mají být přiděleny role.
Role Pole Obsahuje řadu dalších rolí, které je možné udělit uživateli.
Napište znepokojení Dokument Je volitelný a zaměřený na úpravu příkazu. Také trvá stejná pole s příkazem get last error.

Parametr roles může specifikovat uživatelem definované i vestavěné funkce, čehož lze dosáhnout výběrem role s jejím názvem. Toho je dosaženo připojením k mongodu (primární proces démona pro systém MongoDB, který zpracovává požadavky na data, provádí operace správy na pozadí a spravuje přístup k datům). Případně mongos (který je zodpovědný za navázání spojení mezi klientskými aplikacemi a sdíleným clusterem) s právy uvedenými v části požadavků. Například můj uživatelský admin vytvořený v povolení řízení přístupu může vytvářet role v admin a dalších databázích.

Příkazy pro správu rolí

Jméno Popis
createRole Vytvoří roli a řekne, co může dělat.
dropRole Odebere roli, která byla nastavena uživatelem.
dropAllRolesFromDatabase Odebere všechny role, které uživatelé nastavili z databáze.
grantPrivilegesToRole přiděluje oprávnění roli, kterou si uživatel vybere.
grantRolesToRole říká, od kterých rolí může uživatelsky definovaná role zdědit oprávnění.
invalidateUserCache Když použijete invalidateUserCache, dojde k vyprázdnění mezipaměti uživatelských informací, jako jsou přihlašovací údaje a role.
revokePrivilegesFromRole odebere oprávnění z uživatelsky definované role, která je má.
revokeRolesFromRole odstraní zděděné role z uživatelem definované role, kterou nechcete.
rolesInfo vrací informace o roli nebo rolích, které chcete.
updateRole Aktualizuje roli, která byla nastavena uživatelem.

Závěr

Databáze MongoDB, která umožňuje snadné a rychlé ukládání a získávání dat, umožňuje vytvořit uživatele pomocí příkazu „db.createUser()“. Na druhou stranu příkaz „AdminAnyDatabase“ poskytuje uživatelům všechna oprávnění pro přístup k DB v roli správce. Tento článek šel o krok navíc a ilustroval, jak udělovat role a práva. Doufáme, že vám to pomůže. Pokud ano, nezapomeňte zanechat poznámku v sekci komentářů níže.


  1. Dotaz MongoDB pro vrácení pouze vloženého dokumentu

  2. Vyprázdnit/smazat sadu v Redis?

  3. PyMongo upsert vyvolá upsert musí být instancí bool error

  4. MongoDB vrátí True, pokud dokument existuje