MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Przegląd zarządzania użytkownikami MongoDB

Zarządzanie użytkownikami bazy danych jest szczególnie ważną częścią bezpieczeństwa danych, ponieważ musimy zrozumieć, kto ma dostęp do bazy danych i ustawić prawa dostępu dla każdego użytkownika. Jeśli baza danych nie ma odpowiedniego zarządzania użytkownikami, dostęp użytkowników będzie bardzo nieuporządkowany i trudny w utrzymaniu w miarę upływu czasu.

MongoDB to baza danych i magazyn dokumentów NoSQL. Zastosowanie koncepcji RBAC (Kontrola dostępu oparta na rolach) jest kluczem do wdrożenia odpowiedniego zarządzania użytkownikami w celu zarządzania danymi uwierzytelniającymi użytkownika.

Co to jest kontrola dostępu oparta na rolach (RBAC)?

RBAC to podejście, które ogranicza system tylko do autoryzowanych użytkowników. W organizacji tworzone są role dla różnych funkcji zawodowych, w bazie danych tworzymy następnie prawa dostępu do wykonywania niektórych operacji przypisanych do określonej roli.

Członkom personelu (lub innym użytkownikom systemu) przypisuje się określone role, a za ich pośrednictwem przypisuje się uprawnienia do wykonywania funkcji systemu komputerowego. Użytkownicy nie otrzymują uprawnień bezpośrednio, a jedynie uzyskują je poprzez swoją rolę (lub role). Zarządzanie indywidualnymi uprawnieniami użytkownika sprowadza się do prostego umieszczenia odpowiedniej roli na koncie użytkownika; upraszcza to ogólne operacje (takie jak dodawanie użytkowników lub zmiana działów użytkowników).

Trzy główne zasady są ustawione dla RBAC:

  • Przypisanie ról :Podmiot może wykonywać uprawnienia tylko wtedy, gdy podmiot został wybrany lub ma przypisaną rolę.
  • Rola autoryzacji :aktywna rola podmiotu musi być autoryzowana dla podmiotu. Zgodnie z regułą 1 powyżej, ta reguła zapewnia, że ​​użytkownicy mogą pełnić role tylko dla tych, którzy są upoważnieni.
  • Autoryzacja uprawnień :Podmiot może wykonywać zezwolenia tylko wtedy, gdy zezwolenie na aktywną rolę podmiotu jest autoryzowane. W przypadku reguł 1 i 2 ta reguła zapewnia, że ​​użytkownicy mogą korzystać z uprawnień tylko dla tych, którzy są upoważnieni.

Ten blog zawiera krótki przegląd kontroli dostępu opartej na rolach w bazie danych MongoDB.

Role użytkownika MongoDB

MongoDB ma kilka rodzajów ról w bazie danych, są to...

Wbudowane role

Zapewnia dostęp do danych i działań do MongoDB poprzez autoryzację opartą na rolach i ma wbudowane role, które zapewniają kilka poziomów dostępu do bazy danych.

Rola daje kilka uprawnień do zrobienia czegoś na utworzonym zasobie. Wbudowane role MongoDB mają kilka kategorii:

  • Baza danych użytkowników :Role Użytkownicy bazy danych mają rolę do manipulowania danymi w kolekcji niesystemowej. Przykłady ról bazy danych użytkowników to:odczyt, odczyt, zapis.
  • Administracja bazą danych :Roles Database Administration zajmuje się administracyjnym zarządzaniem bazami danych, takimi jak administracja użytkownikami, schematem i zawartymi w nim obiektami.
  • Przykłady ról administratora bazy danych to:dbAdmin, userAdmin, dbWner.
  • Administracja klastra :Rolą administracji klastra jest administrowanie całym systemem MongoDB, w tym jego replikami i fragmentami. Przykładami ról administracyjnych klastra są:clusterAdmin, clusterManager.
  • Kopia zapasowa i przywracanie :Ta rola jest specyficzna dla funkcji związanych z tworzeniem kopii zapasowych bazy danych w MongoDB. Przykładami ról są:kopia zapasowa, przywracanie.
  • Role we wszystkich bazach danych :Role znajdują się w administratorze bazy danych i mają dostęp do wszystkich baz danych z wyjątkiem lokalnych i konfiguracyjnych. Przykładami są:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase.
  • Superużytkownik :Roles mają możliwość przyznania dostępu każdemu użytkownikowi, każdemu przywilejowi, we wszystkich bazach danych. Przykład tej roli:root

Role zdefiniowane przez użytkownika

Oprócz wbudowanych ról możemy tworzyć własne role zgodnie z naszymi potrzebami, jakie uprawnienia nadajemy tym rolom. Aby utworzyć role, możesz użyć polecenia funkcji db.createRole(). Oprócz możliwości tworzenia ról, istnieje kilka innych funkcji do zarządzania istniejącymi rolami, takich jak:db.dropRole(), która jest przydatna do usuwania istniejących ról w bazie danych, funkcje db.getRole(), aby uzyskać wszystkie informacje z określonych ról.

Działania uprawnień w MongoDB

Akcje związane z uprawnieniami w MongoDB to akcje, które użytkownik może wykonać na zasobie. MongoDB ma kilka kategorii działań, a mianowicie:

  • Akcje zarządzania bazą danych, akcje związane z poleceniami związanymi z administrowaniem bazą danych, takie jak changePassword, createCollection, createIndex.
  • Akcje zapytań i zapisu, czynności związane z wykonywaniem manipulacji danymi w kolekcji. Na przykład w akcji wstawiania poleceniem, które można wykonać w tej akcji, jest polecenie wstawiania, które można wstawić do dokumentów.
  • Akcje zarządzania wdrażaniem, akcje związane ze zmianami w konfiguracji bazy danych. Niektóre akcje należące do kategorii Deployment Management to cpuProfiler, storageDetails, killOp.
  • Akcje replikacji, akcje związane z wykonywaniem zasobów replikacji bazy danych, takich jak replSetConfigure, replSetHeartbeat.
  • Akcje administrowania serwerem, akcje związane z poleceniami z zasobów administracyjnych serwera w mongoDB, takie jak akcje logrotate, które są używane do obracania baz danych dzienników na poziomie systemu operacyjnego.
  • Akcje shardingu, akcje związane z poleceniami z baz danych shardingu, takich jak addShard, aby dodać nowe węzły shard.
  • Akcje sesji, akcje związane z sesjami zasobów w bazie danych, takie jak listSessions, killAnySession.
  • Akcje diagnostyczne, akcje związane z diagnozą zasobów, takich jak dbStats, aby znaleźć najnowsze warunki w bazie danych.
  • Bezpłatne akcje monitorowania, akcje związane z monitorowaniem w bazie danych.

Zarządzanie użytkownikami i rolami MongoDB

Możesz utworzyć użytkownika, a następnie przypisać go do wbudowanych ról, na przykład w następujący sposób:

db.createUser( {

user: "admin",

pwd: "thisIspasswordforAdmin",

roles: [ { role: "root", db: "admin" } ]

} );

W powyższym skrypcie, co oznacza, że ​​administrator zostanie utworzony z hasłem, które zostało zdefiniowane za pomocą wbudowanych ról root, gdzie rola jest zawarta w kategorii Superuser.

Poza tym możesz przypisać użytkownikowi więcej niż jedną rolę, oto przykład:

db.createUser(

{user:'businessintelligence', 

pwd:'BIpassw0rd', 

roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]

});

Użytkownicy Business Intelligence mają 2 role, najpierw role odczytu w bazie danych oltp i role readWrite w bazie danych olapdb.

Do tworzenia ról zdefiniowanych przez użytkownika można użyć polecenia db.createRole(). Musisz określić cel tworzenia roli, aby móc określić, jakie działania będą w tej roli. Poniżej znajduje się przykład tworzenia roli do monitorowania bazy danych Mongodb:

use admin

db.createRole(

   {

     role: "RoleMonitoring",

     privileges: [

       { resource: { cluster: true }, actions: [ "serverStatus" ] }

     ],

     roles: []

   }

)

Następnie możemy przypisać zdefiniowaną przez użytkownika rolę do użytkownika, którego utworzymy, możemy użyć następującego polecenia:

db.createUser( {

user: "monuser",

pwd: "thisIspasswordforMonitoring",

roles: [ { role: "RoleMonitoring", db: "admin" } ]

} );

Tymczasem, aby przypisać rolę do istniejącego użytkownika, możesz użyć następującego polecenia:

db.grantRolesToUser(

    "existingmonuser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Aby odwołać istniejącego użytkownika roli, możesz użyć następującego polecenia:

db.revokeRolesFromUser(

    "oldmonguser",

    [

      { role: "RoleMonitoring", db: "admin" }

    ]

)

Korzystając z ról zdefiniowanych przez użytkownika, możemy tworzyć role według własnego uznania, zgodnie z działaniami, które podejmiemy na tych rolach, na przykład role ograniczające użytkowników mogą usuwać wiersze tylko z niektórych baz danych.

Wnioski

Stosowanie praw dostępu może poprawić bezpieczeństwo. Mapowanie ról i użytkowników w bazie danych ułatwia zarządzanie dostępem użytkowników.

Upewnij się, że wszystkie te informacje dotyczące ról i praw są odpowiednio udokumentowane przy ograniczonym dostępie do dokumentu. Ułatwia to udostępnianie informacji innym administratorom baz danych lub personelowi pomocy technicznej i jest przydatne podczas audytów i rozwiązywania problemów.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaka jest różnica między MongoTemplate i MongoRepository firmy Spring Data?

  2. Instalacja MongoDB

  3. MongoDB findOneAndReplace()

  4. Agregacje MongoDB przy użyciu języka Java

  5. MongoDB z Mongoid w Rails — indeksowanie geoprzestrzenne