Définir un rôle personnalisé, créer un utilisateur, accorder/révoquer des rôles et changer le mot de passe
MongoDBSécuritéCommande
use admin
db.createRole({
role: "opsRead",
privileges: [
{ resource: { db: "shop", collection: "" }, actions: ["find", "listCollections", "listIndexes", "collStats", "dbStats"] },
{ resource: { cluster: true }, actions: ["serverStatus", "inprog"] }
],
roles: []
})
db.createUser({ user: "shop_app", pwd: passwordPrompt(), roles: [{ role: "readWrite", db: "shop" }, { role: "opsRead", db: "admin" }] })
db.grantRolesToUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.revokeRolesFromUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.changeUserPassword("shop_app", passwordPrompt())
db.getUser("shop_app", { showPrivileges: true })
db.runCommand({ usersInfo: { forAllDBs: true } })Ce que fait la commande
Définit un rôle personnalisé avec des actions précises sur la base et le cluster, crée un utilisateur avec ce rôle et des rôles intégrés, accorde et révoque des rôles, change le mot de passe et liste les utilisateurs de toutes les bases.
Quand l'utiliser
Lors de la création de comptes d'application et de supervision selon le moindre privilège, pendant les revues d'accès ou la rotation des mots de passe.
Attention
La base où l'utilisateur est défini (ici admin) sert d'authSource ; elle doit correspondre à la chaîne de connexion de l'application. N'accordez pas de rôles larges comme root/dbOwner aux comptes d'application. Les changements de rôles s'appliquent immédiatement aux sessions existantes ; un changement de mot de passe ne coupe pas les connexions ouvertes et s'applique aux nouvelles.