Add Users

在本页面

Overview

MongoDB 使用基于角色的访问控制(RBAC)来确定用户的访问权限。授予用户一个或多个roles,这些roles确定用户对 MongoDB resources和用户可执行的actions的访问或特权。用户应该只具有确保least privilege系统所需的最小特权集。

MongoDB 系统的每个应用程序和用户都应 Map 到不同的用户。这种“访问隔离”便于访问撤销和持续的用户维护。

Prerequisites

如果您为部署启用了访问控制,则可以使用localhost exception在系统中创建第一个用户。该第一个用户必须具有创建其他用户的特权。从 MongoDB 3.0 开始,除了 localhost 之外,您只能在admin数据库上创建用户。创建第一个用户后,您必须验证为该用户才能添加后续用户。 Enable Auth提供了有关在为部署启用访问控制时添加用户的更多详细信息。

对于常规用户创建,您必须拥有以下权限:

userAdminuserAdminAnyDatabase内置角色在其各自的resources上提供createUsergrantRole动作。

Examples

要在 MongoDB 部署中创建用户,请连接到该部署,然后使用db.createUser()方法或createUser命令添加用户。

Username/Password Authentication

以下操作在reporting数据库中创建具有指定名称,密码和角色的用户。

use reporting
db.createUser(
  {
    user: "reportsUser",
    pwd: "12345678",
    roles: [
       { role: "read", db: "reporting" },
       { role: "read", db: "products" },
       { role: "read", db: "sales" },
       { role: "readWrite", db: "accounts" }
    ]
  }
)

Enable Auth提供了有关对 MongoDB 部署强制执行身份验证的更多详细信息。

Kerberos Authentication

必须在$external数据库中创建将使用外部身份验证机制(例如 Kerberos)向 MongoDB 进行身份验证的用户,该数据库允许mongosmongod查询外部身份验证源。

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

对于 Kerberos 身份验证,必须添加 Kerberos 主体作为用户名。您不需要指定密码。

以下操作将 Kerberos 主体reportingapp@EXAMPLE.NET添加为对records数据库具有只读访问权限。

use $external
db.createUser(
    {
      user: "reportingapp@EXAMPLE.NET",
      roles: [
         { role: "read", db: "records" }
      ]
    }
)

在 Linux 上使用 Kerberos 身份验证配置 MongoDB在 Windows 上使用 Kerberos 身份验证配置 MongoDB提供了有关为 MongoDB 部署设置 Kerberos 身份验证的更多详细信息。

LDAP Authentication

必须在$external数据库中创建将使用外部身份验证机制(例如 LDAP)向 MongoDB 进行身份验证的用户,该数据库允许mongosmongod咨询外部源以进行身份验证。

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

对于 LDAP 身份验证,必须指定用户名。您不需要指定密码,因为该密码由 LDAP 服务处理。

以下操作将对reporting用户具有对records数据库的只读访问权限。

use $external
db.createUser(
    {
      user: "reporting",
      roles: [
         { role: "read", db: "records" }
      ]
    }
)

通过 ActiveDirectory 使用 SASL 和 LDAP 进行身份验证使用 SASL 和 LDAP 与 OpenLDAP 进行身份验证提供了有关使用 LDAP 进行身份验证的更多详细信息。

x.509Client 端证书身份验证

必须在$external数据库中创建将使用外部身份验证机制(例如 x.509Client 端证书身份验证)向 MongoDB 进行身份验证的用户,该数据库允许mongosmongod咨询外部源以进行身份验证。

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

对于 x.509Client 端证书身份验证,您必须作为 MongoDB 用户添加 Client 端证书中的subject的值。每个唯一的 x.509Client 端证书都对应一个 MongoDB 用户。您不需要指定密码。

以下操作将对records数据库具有只读访问权限的 Client 端证书主题CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry用户添加。

use $external
db.createUser(
    {
      user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry",
      roles: [
         { role: "read", db: "records" }
      ]
    }
)

使用 x.509 证书对 Client 端进行身份验证提供有关为 MongoDB 部署设置 x.509Client 端证书身份验证的详细信息。