La colección system.users en la base de datos admin almacena
autenticación and authorization information. Para gestionar los datos en esta colección, MongoDB proporciona comandos de gestión de usuario.
system.users Esquema
Los documentos en la colección system.users tienen el siguiente esquema:
{ _id: <system defined id>, userId : <system assigned UUID>, user: "<name>", db: "<database>", credentials: { <authentication credentials> }, roles: [ { role: "<role name>", db: "<database>" }, ... ], customData: <custom information>, authenticationRestrictions : [ <documents> ] }
Cada documento system.users tiene los siguientes campos:
admin.system.users.userEl nombre de usuario. Un usuario existe en el contexto de una sola base de datos lógica (ver
admin.system.users.db) pero puede tener acceso en otras bases de datos a través de los roles especificados en el arregloroles.
admin.system.users.dbLa base de datos de autenticación asociada con el usuario. Las privilegios del usuario no necesariamente se limitan a esta base de datos. El usuario puede tener privilegios en bases de datos adicionales a través del
rolesarreglo.
admin.system.users.credentialsInformación de autenticación del usuario. Para los usuarios con credenciales de autenticación almacenadas externamente, como los usuarios que usan Kerberos o certificados X.509 para autenticación, el documento
system.userspara ese usuario no contiene el campocredentials. Para las credenciales de usuario SCRAM, la información incluye el mecanismo, el recuento de iteraciones y los parámetros de autenticación.
admin.system.users.rolesUn arreglo de roles otorgados al usuario. El arreglo contiene tanto roles integrados como rol definido por el usuario.
Un documento de rol tiene la siguiente sintaxis:
{ role: "<role name>", db: "<database>" } Un documento de rol contiene los siguientes campos:
admin.system.users.roles[n].roleEl nombre de un rol. Un rol puede ser un rol integrado proporcionado por MongoDB o un rol personalizado definido por el usuario.
Al especificar un rol utilizando los comandos de gestión de roles o gestión de usuarios, puedes especificar solo el nombre del rol (por ejemplo,
"readWrite") si el rol que existe en la base de datos en la que se ejecuta el comando.
Ejemplo
Considera el siguiente documento en la colección system.users:
{ "_id" : "home.Kari", "userId" : UUID("ec1eced7-055a-4ca8-8737-60dd02c52793"), "user" : "Kari", "db" : "home", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "S/xM2yXFosynbCu4GzFDgQ==", "storedKey" : "Ist4cgpEd1vTbnRnQLdobgmOsBA=", "serverKey" : "e/0DyzS6GPboAA2YNBkGYm87+cg=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "p1G+fZadAeYAbECN8F/6TMzXGYWBaZ3DtWM0ig==", "storedKey" : "LEgLOqZQmkGhd0owm/+6V7VdJUYJcXBhPUvi9z+GBfk=", "serverKey" : "JKfnkVv9iXwxyc8JaapKVwLPy6SfnmB8gMb1Pr15T+s=" } }, "authenticationRestrictions" : [ { "clientSource" : [ "69.89.31.226" ], "serverAddress" : [ "172.16.254.1" ] } ], "customData" : { "zipCode" : "64157" }, "roles" : [ { "role" : "read", "db" : "home" }, { "role" : "readWrite", "db" : "test" } ] }
El documento muestra que la base de datos de autenticación de un usuario Kari es la base de datos home. Kari tiene el rol read en la base de datos home, el rol readWrite en la base de datos test.