MongoDB est une base de données multiplateforme orientée documents qui rend le stockage et la récupération des données rapides et faciles. La base de données utilise une structure de type JSON pour les documents, principalement familière aux applications modernes.
MongoDB utilise des collections et des manuscrits dans lesquels les documents sont constitués de paires clé-valeur, l'unité de base des données dans MongoDB. En revanche, les collections contiennent des fonctions et des documents équivalents aux tables de bases de données relationnelles.
Créer un nouvel utilisateur dans MongoDB
Pour ajouter de nouveaux utilisateurs au système, MongoDB fournit une technique interne appelée db.createUser(). Contrairement aux systèmes de base de données traditionnels, les utilisateurs de MongoDB sont liés à une base de données locale appelée base de données d'authentification. Ainsi, ils ne sont pas globalement liés, comme les bases de données SQL conventionnelles.
De plus, la base de données d'authentification et le nom de l'utilisateur servent d'identifiant unique. Ainsi, si deux utilisateurs sont créés dans des bases de données différentes mais partagent les mêmes noms, ils sont identifiés comme deux utilisateurs distincts. Par conséquent, si l'on veut créer un seul utilisateur avec des autorisations sur plusieurs bases de données, il faut autoriser un seul utilisateur à avoir des droits/rôles sur la base de données applicable au lieu de créer l'utilisateur plusieurs fois dans différentes bases de données.
Exemple :
db.createUser( { user: "Foss", pwd: "password", roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Commandes de gestion des utilisateurs
Nom/s | Description |
---|---|
createUser | Cette méthode crée un nouvel utilisateur. |
dropAllUsersFromDatabase | Supprime tous les utilisateurs d'une base de données. |
dropUser | Accorde une tâche et ses privilèges à un utilisateur. |
grantRolesToUser | Un rôle et ses privilèges associés sont attribués à un utilisateur. |
revokeRolesFromUser | Supprime le rôle d'un utilisateur. |
updateUser | Cette méthode est utilisée pour mettre à jour les données d'un utilisateur. |
usersInfo | Cette méthode renvoie des informations sur les utilisateurs fournis. |
Ajouter un utilisateur
Lors de l'ajout de l'utilisateur à une base de données spécifiée, utilisez la méthode "db.createUser()". Il est important de noter que l'ajout d'utilisateurs avec des options est beaucoup plus simple que l'insertion d'un document utilisateur dans une base de données non relationnelle.
Exemple :
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" } ] } )
Une fois que vous avez connecté l'instance MongoDB dans l'exemple ci-dessus, vous pouvez l'attacher à la base de données foss pour exécuter la commande db.createUser(). La base de données utilisée servira de base de données d'authentification de l'utilisateur.
Le mot de passe et le nom d'utilisateur sont fournis dans le document qui contient notre appel de méthode sous forme de paires clé-valeur. L'utilisation de rôles contrôle l'accès aux bases de données. Un utilisateur doit avoir un rôle pour accéder à n'importe quelle base de données, même sa propre base de données d'authentification. En outre, un utilisateur a accès à d'autres bases de données du système à l'aide de rôles. Ainsi, les privilèges d'un utilisateur ne sont pas limités à sa base de données d'authentification. Par conséquent, cela permet aux utilisateurs de disposer de divers privilèges sur les nombreuses bases de données selon leurs besoins. Le principe du moindre privilège permet aux utilisateurs de limiter au maximum l'étendue de l'accès à la base de données.
Comment créer un utilisateur administrateur dans MongoDB
La création d'un utilisateur admin dans MongoDB se fait à l'aide de la méthode db.createUser(), qui vous permet de créer un utilisateur. Cependant, après avoir créé un utilisateur, vous devez attribuer des rôles d'administrateur. Ces rôles donnent à l'utilisateur des privilèges d'administrateur.
Créer un utilisateur pour une seule base de données dans MongoDB
Si nous voulons créer un utilisateur qui ne peut travailler qu'avec une seule base de données, nous pouvons utiliser une commande similaire à celle ci-dessus, mais nous ne devons utiliser l'option "userAdmin" qu'une seule fois.
Exemple :
db.createUser( { user: "Fosslinux", pwd: "password", roles:[{role: "userAdmin" , db:"Foss"}]})
Répartition du code :
- Tout d'abord, il faut spécifier le "nom d'utilisateur" et le "mot de passe" à créer.
- Attribuez le rôle à cet utilisateur, qui est l'administrateur de la base de données ; ceci est attribué au rôle "utilisateur admin" puisque le rôle permet à l'utilisateur d'avoir des privilèges administratifs uniquement sur la base de données spécifiée dans la base de données
- Enfin, le paramètre DB définit la base de données sur laquelle l'utilisateur doit avoir des droits d'administration.
Gestion des utilisateurs
Pour gérer les utilisateurs, il faut comprendre les rôles qui doivent être définis car MongoDB a toute une liste de fonctions comme le rôle de lecture et le rôle de lecture-écriture. La commande « read role » autorise uniquement l'accès en lecture seule aux bases de données. Le « rôle de lecture-écriture » fournit un accès en lecture et en écriture à la base de données ; cela signifie que l'utilisateur peut exécuter les commandes de mise à jour, d'insertion et de suppression sur les collections de cette base de données.
Exemple :
db.createUser( { user: "Foss", pwd: "password", roles:[ { role: "read" , db:"Tutorials"}, { role: "readWrite" , db:"Guides"} } ] })
L'exemple ci-dessus montre qu'un utilisateur connu sous le nom de Foss est créé et se voit attribuer plusieurs rôles dans plusieurs bases de données. Dans le même modèle, Foss reçoit une autorisation en lecture seule sur la base de données "Tutoriels" et des autorisations en lecture-écriture sur la base de données "Guides".
Ajouter des rôles à MongoDB
Les rôles accordent aux utilisateurs l'accès aux ressources MongoDB. De plus, MongoDB fournit plusieurs rôles intégrés qui permettent aux administrateurs de contrôler l'accès à un système MongoDB. Cependant, lorsque ces rôles ne peuvent pas décrire l'ensemble de privilèges souhaité, il est possible de créer de nouveaux rôles dans une base de données particulière. À l'exception des fonctions créées dans la base de données d'administration, un rôle ne peut inclure que des droits qui s'appliquent à sa base de données et ceux hérités d'autres rôles.
Un rôle défini dans la base de données d'administration peut contenir des droits applicables à la base de données d'administration, à d'autres bases de données ou à la ressource de cluster, et peut hériter des rôles d'autres bases de données. Pour établir un nouveau rôle, utilisez "db.createRole()" et spécifiez le tableau des droits et le tableau des rôles hérités.
MongoDB définit les rôles de manière unique en combinant le nom de la base de données avec le nom du rôle. Chaque rôle est limité à la base de données que vous créez, mais MongoDB stocke toutes les informations de rôle dans la collection adminSystemRoles de la base de données admin. Par exemple, les actions de rôle créatif et d'octroi de rôles sur la ressource de base de données doivent garantir que les rôles sont créés et accordés dans la base de données. Le grantRole spécifie les privilèges pour les nouveaux rôles et les rôles à hériter. L'administrateur utilisateurAnyDatabase et l'administrateur utilisateur des rôles intégrés fournissent les actions CreateRole et attribuer des rôles sur leurs ressources respectives.
Pour créer un rôle avec les restrictions d'authentification spécifiées, il faut définir l'action AuthenticationRetrictions sur la ressource de base de données, dont la fonction est ensuite créée.
La méthode db.grantRole to User() prend les arguments suivants ;
Paramètre | Saisir | Description |
---|---|---|
Utilisateur | Chaîne | Importe le nom de l'utilisateur à qui attribuer les rôles. |
Rôles | Tableau | Importe un tableau de rôles supplémentaires à accorder à l'utilisateur. |
Écrire le problème | Document | Il est facultatif et vise à modifier la commande. Il prend également les mêmes champs avec la commande get last error. |
Le paramètre rôles peut spécifier à la fois les fonctions définies par l'utilisateur et intégrées, qui peuvent être obtenues en sélectionnant le rôle avec son nom. Ceci est accompli en se connectant à mongod (un processus démon principal pour le système MongoDB qui gère les demandes de données, effectue des opérations de gestion en arrière-plan et gère l'accès aux données). Alternativement, le mongos (qui est chargé d'établir une connexion entre les applications clientes et le cluster partagé), avec les droits donnés dans la section des exigences. Par exemple, mon utilisateur administrateur créé dans un contrôle d'accès activé peut créer des rôles dans l'administrateur et d'autres bases de données.
Commandes de gestion des rôles
Nom\s | Description |
---|---|
createRole | Crée un rôle et indique ce qu'il peut faire. |
dropRole | Supprime le rôle défini par l'utilisateur. |
dropAllRolesFromDatabase | Supprime tous les rôles que les utilisateurs d'une base de données ont configurés. |
grantPrivilegesToRole | attribue des privilèges à un rôle que l'utilisateur choisit. |
grantRolesToRole | indique de quels rôles un rôle défini par l'utilisateur peut hériter des privilèges. |
invalidateUserCache | Lorsque vous utilisez invalidateUserCache, le cache en mémoire des informations utilisateur, telles que les informations d'identification et les rôles, est vidé. |
revokePrivilegesFromRole | supprime les privilèges d'un rôle défini par l'utilisateur qui les a. |
revokeRolesFromRole | supprime les rôles hérités d'un rôle défini par l'utilisateur dont vous ne voulez pas. |
rôlesInfo | renvoie des informations sur le ou les rôles souhaités. |
updateRole | Met à jour un rôle configuré par l'utilisateur. |
Conclusion
La base de données MongoDB, qui permet de stocker et de récupérer facilement et rapidement des données, peut permettre de créer un utilisateur à l'aide de la commande "db.createUser()". D'autre part, la commande "AdminAnyDatabase" fournit aux utilisateurs tous les privilèges pour accéder à la base de données sous le rôle d'administrateur. Cet article est allé plus loin et a illustré comment attribuer des rôles et des droits. Nous espérons que vous le trouverez utile. Si oui, n'oubliez pas de laisser une remarque dans la section des commentaires ci-dessous.