DBAtlas · Atlas d'exploitation des bases de données

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.

Ouvrir dans DBAtlas →