MongoDB使用基于角色的访问控制(RBAC)来确定用户的访问权限。用户被赋予一个或多个角色决定了用户的访问或特权MongoDB的资源和操作 用户可以执行。用户应仅具有确保系统具有最低特权所需的最小特权集。
MongoDB系统的每个应用程序和用户都应映射到不同的用户。这种访问隔离有助于访问撤销和持续的用户维护。
如果您为部署启用了访问控制,则可以使用localhost异常在系统中创建第一个用户。该第一个用户必须具有创建其他用户的特权。从MongoDB 3.0开始,除了localhost之外,您只能在admin
数据库上创建用户。创建第一个用户后,您必须验证为该用户才能添加后续用户。
启用访问控制提供有关在为部署启用访问控制时添加用户的更多详细信息。
对于常规用户创建,您必须拥有以下权限:
createUser
grantRole
在userAdmin
和
userAdminAnyDatabase
内置的角色,提供createUser
与
grantRole
它们各自的行动资源。
要在MongoDB部署中创建用户,请连接到部署,然后使用db.createUser()
方法或createUser
命令添加用户。
以下操作在reporting
数据库中创建具有指定名称,密码和角色的用户。
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
启用访问控制提供了有关对MongoDB部署强制执行身份验证的更多详细信息。
必须在$external
数据库中创建将使用诸如Kerberos之类的外部身份验证机制向MongoDB进行身份验证的用户,该数据库允许mongos
或mongod
咨询外部源进行身份验证。
在版本3.6.3中更改:要与$external
身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
对于Kerberos身份验证,必须添加Kerberos主体作为用户名。您不需要指定密码。
以下操作将添加reportingapp@EXAMPLE.NET
对records
数据库具有只读访问权限的Kerberos主体。
MongoDB的配置与Kerberos身份验证在Linux 和配置MongoDB的Kerberos身份验证的Windows上 提供了有关设置Kerberos身份验证您的MongoDB部署的更多细节。
必须在$external
数据库中创建将使用外部身份验证机制(例如LDAP)向MongoDB进行身份验证的用户,该数据库允许mongos
或mongod
咨询外部源进行身份验证。
在版本3.6.3中更改:要与$external
身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
对于LDAP身份验证,必须指定用户名。您不需要指定密码,因为该密码由LDAP服务处理。
以下操作为reporting
用户添加了对records
数据库的只读访问权限。
身份验证使用SASL和LDAP用的ActiveDirectory和 身份验证使用SASL和LDAP与OpenLDAP的提供有关使用使用LDAP身份验证的详细细节。
必须在$external
数据库中创建将使用外部身份验证机制(例如x.509客户端证书身份验证)向MongoDB进行身份验证的用户,该数据库允许mongos
或mongod
咨询外部源进行身份验证。
在版本3.6.3中更改:要与$external
身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
对于x.509客户端证书认证,您必须将客户端证书中的的值添加subject
为MongoDB用户。每个唯一的x.509客户端证书都对应一个MongoDB用户。您不需要指定密码。
以下操作将对客户端证书主题CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry
用户添加
对records
数据库的只读访问权限。
使用x.509证书对客户端进行身份验证提供了有关为MongoDB部署设置x.509客户端证书身份验证的详细信息。