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
userAdminen la base ouserAdminAnyDatabase.
Un usuario por aplicación
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
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
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 conusersInfoy concédele el que falta congrantRolesToUser.
Ver también
- API REST, con las claves de API de un usuario.
- Autenticación.