system.users集合

在本页

system.users 集合在 admin 数据库中,保存了用户身份验证授权的信息。为了管理这个集合的数据,MongoDB 提供了用户管理指令。

system.users 集合的Schema

system.users 集合中的文档具有以下的 schema:

复制

{
  _id: <system defined id>,
  userId : <system assigned UUID>,  // Starting in MongoDB 4.0.9
  user: "<name>",
  db: "<database>",
  credentials: { <authentication credentials> },
  roles: [
           { role: "<role name>", db: "<database>" },
           ...
         ],
  customData: <custom information>,
  authenticationRestrictions : [ <documents> ] // Starting in MongoDB 4.0
 }

每个 system.users 文档都有以下字段:

  • admin.system.users.``userId

创建时分配给用户的唯一标识符。userId 适用于在MongoDB 4.0.9 及更高的版本创建的用户

  • admin.system.users.``user

用户名。用户位于单个逻辑数据库的上下文中(请参考资料admin.system.users.db),但可以通过roles组中指定的角色访问其他数据库。

  • admin.system.users.``db

与用户关联的身份验证数据库。用户的权限不一定限于此数据库。用户可以通过该roles组在其他数据库中拥有特权。

  • admin.system.users.``credentials

用户的身份验证信息。对于具有外部存储的身份验证凭据的用户,例如使用 Kerberos 或x.509证书进行身份验证的system.users 用户,该用户的文档不包含该 credentials字段。对于 SCRAM用户凭据,该信息包括机制,迭代计数和身份验证参数。

也可以看看

授予用户的一系列角色。该组包含 内置角色用户定义角色

角色文档具有以下语法:

复制

  { role: "<role name>", db: "<database>" }

角色文档有以下字段

`admin.system.users.roles[n].``role

​ 角色名称。角色可以是 MongoDB 提供的内置角色,也可以是用户自定义角色

admin.system.users.roles[n].``db

​ 定义角色的数据库的名称。

使用角色管理用户管理命令指定"readWrite"角色时,如果运行命令的数据库中存在该角色,则可以单独指定角色名称(例如“ readWrite”)。

  • admin.system.users.``customData

有关用户的可选自定义信息。

  • admin.system.users.``authenticationRestrictions

服务器为用户强制执行的一系列身份验证限制。该数组包含 IP 地址和 CIDR 范围的列表,允许用户从中连接到服务器或服务器可以从中接受用户。

版本4.0中的新功能。

Example

考虑system.users集合中的以下文档:

复制

{
   "_id" : "home.Kari",
   "userId" : UUID("ec1eced7-055a-4ca8-8737-60dd02c52793"),  // Available starting in MongoDB 4.0.9
   "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" : [                           // Available starting in MongoDB 4.0
      { "clientSource" : [ "69.89.31.226" ], "serverAddress" : [ "172.16.254.1" ] }
   ],
   "customData" : {
      "zipCode" : "64157"
   },
   "roles" : [
      {
         "role" : "read",
         "db" : "home"
      },
      {
         "role" : "readWrite",
         "db" : "test"
      }
   ]
}

该文档显示用户Kari的身份验证数据库是 home数据库。在数据库中Kari 具有 read 角色,在 test 数据库中具有readWrite角色 。

原文链接:https://docs.mongodb.com/manual/reference/system-users-collection/

译者:谢伟成

最后更新于