DBAtlas · Atlas de operaciones de bases de datos

Definir un rol personalizado, crear un usuario, otorgar/revocar roles y cambiar la contraseña

MongoDBSeguridad

Comando

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 } })

Qué hace

Define un rol personalizado con acciones concretas de base de datos y de clúster, crea un usuario con ese rol y roles integrados, otorga y revoca roles, cambia la contraseña y lista los usuarios de todas las bases de datos.

Cuándo usarlo

Al crear cuentas de aplicación y de monitoreo con mínimo privilegio, durante revisiones de accesos o en la rotación de contraseñas.

Precaución

La base de datos donde se define el usuario (aquí admin) se usa como authSource; debe coincidir con la cadena de conexión de la aplicación. No otorgue roles amplios como root/dbOwner a las cuentas de aplicación. Los cambios de roles se aplican de inmediato a las sesiones existentes; un cambio de contraseña no corta las conexiones abiertas y se aplica a las nuevas.

Abrir en DBAtlas →