La colección system.users en la base de datos admin almacena datos de usuario.
Información deautenticación y autorización.Para gestionar los datos de esta colección, MongoDB proporciona comandos de gestión de usuarios.
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.userIdUn identificador único para el usuario asignado al usuario al momento de su creación.
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 al usuario. Los privilegios del usuario no se limitan necesariamente a esta base de datos. El usuario puede tener privilegios en bases de datos adicionales mediante la
rolesmatriz.
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 mediante los comandos de administración de roles o de administración de usuarios, puede especificar solo el nombre del rol (por
"readWrite"ejemplo,) si el rol 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.