Usuarios y roles

Crea usuarios con los roles integrados de MongoDB o con roles propios.

Los comandos de usuarios y roles son los de MongoDB. Cada comando se autoriza antes de ejecutarse. Si te falta el privilegio, el comando responde Unauthorized (13).

Requisitos

  • Un usuario con el rol userAdmin en la base o userAdminAnyDatabase.

Un usuario por aplicación

JavaScript
db.getSiblingDB("admin").createUser({
  user: "tienda-api",
  pwd: passwordPrompt(),
  roles: [{ role: "readWrite", db: "tienda" }],
});

Roles integrados

read, readWrite, dbAdmin, dbOwner, userAdmin, clusterAdmin, clusterManager, clusterMonitor, enableSharding, hostManager, backup, restore, readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase y root, con los mismos privilegios que en MongoDB.

Roles propios

JavaScript
db.getSiblingDB("admin").createRole({
  role: "informes",
  privileges: [{ resource: { db: "tienda", collection: "pedidos" }, actions: ["find"] }],
  roles: [],
});

Revocar

Cuando revocas un rol o borras un usuario, el comando responde solo cuando ningún nodo puede ya autorizar con el estado anterior. No hay una ventana en la que otro nodo siga dejando pasar al usuario revocado.

Comprobar

JavaScript
db.getSiblingDB("admin").runCommand({ usersInfo: "tienda-api" });

usersInfo responde con el usuario que acabas de crear y los roles que tiene, así que puedes confirmar que tienda-api recibió los roles que le diste antes de que tu aplicación empiece a conectarse con él.

Problemas frecuentes

  • Un comando responde Unauthorized (13) porque el usuario no tiene el privilegio que pide. Mira sus roles con usersInfo y concédele el que falta con grantRolesToUser.

Ver también