OPTIONS
翻译或纠错本页面

授权

MongoDB支持基于角色的访问控制(RBAC)来管理对MongoDB系统的访问。一个用户可以被授权一个或者多个:ref:角色 <roles> 以决定该用户对数据库资源和操作的访问权限。在权限以外,用户是无法访问系统的。

MongoDB默认不开启授权。你可以通过设置 --auth 或者 --keyFile 选项开启授权,或者如果你使用配置文件的话,使用 security.authorizationsecurity.keyFile 设置。

MongoDB提供 自带角色, 每一个角色都为一种常见用例提供一个明确的作用。例如 read, readWrite, dbAdmin, 和 root 等角色。

管理员也可以建立新的角色和权限以满足作业需要。管理员分配的权限范围可以详细到集合层面。

在被授权一个角色后,一个用户可以接受所有该角色的权限。一个用户可以同时拥有多个角色,

角色

一个角色包括一系列联合资源和合法操作的权限。每个权限都是直接在角色或继承角色中定义的。

一个角色的权限适用于建立该角色时使用的数据库。一个在``admin``数据库里建立的角色能包括适用于所有数据库或:ref:`cluster <resource-cluster>`的权限。

一给被指定角色的用户拥有所有该角色的权限。用户可以有多个角色,也可以在不同数据库中有不同角色。

角色永远赋予权限而从不会限制权限。例如,如果一个用户在一个数据库中拥有:authrole:read :authrole:`readWriteAnyDatabase`两个角色。后者更广泛的访问权会被保留。

权限

每个权限包括一些 *操作*以及这些操作所适用的资源。

一个权限的 资源 可以是一个数据库、集合、多个集合、或者一个集群。如果是集群,相关的操作会影响整个系统的状态,而不仅仅是某个数据库或集合。

一个:doc:操作 </reference/privilege-actions>`是一个命令或者适用于某资源的方法。一个资源可以有多个被适用的操作。参见 :doc:/reference/privilege-actions` 了解所有可用的操作。

例如,一个包括 update 操作的权限允许一个用户改变指定资源上的现有文档。如果要想让该用户在此基础之上拥有建立文档的权限,管理员会在权限中添加 insert 操作。

了解权限语法,参见 admin.system.roles.privileges

继承的权限

一个角色的定义中可以包含一个或者多个角色,这种情况下这个角色会继承所有其包含的角色的所有权限。

一个角色可以继承其数据库中其他角色的权限。一个在``admin``数据库中建立的角色可以继承任意数据库角色中的权限。

用户自定义角色

2.6 新版功能.

用户管理员可以建立

MongoDB将每个用户定义的角色局限于其所生成的数据库中,并且用角色的名称和其所在的数据库来准确指定这个角色。MongoDB将角色储存于 ``admin``数据库 system.roles 中。请务必不要直接访问该集合,而使用 角色管理命令 查看和编辑角色。

集合层访问控制

通过建立应用于仅适用于某数据库中某集合的拥有:ref:`privileges <privileges>`的角色,管理员可以实施集合层访问控制。

参见 集合层访问控制 了解详情。

用户

MongoDB将用户信息储存在受保护的 admin.system.users 集合。使用 用户管理方法 查看或编辑用户认证信息。

为用户制定的角色

用户管理员

MongoDB将每个用户局限于其所生成的数据库中。MongoDB讲所有用户的定义都储存在 admin 数据库中,无论该用户适用于哪个数据库。所有MongoDB将用户储存于 ``admin``数据库 system.users 集合 中。请务必不要直接访问该集合,而使用 角色管理命令 查看和编辑角色。

数据库中第一个被指定的用户应当是:authrole:userAdmin 或者 userAdminAnyDatabase。这个用户之后可以用来建立系统中所有其他用户。参见 Create a User Administrator

保护用户和角色集合

MongoDB将用户和角色信息储存在受保护的 admin.system.rolesadmin.system.users 集合。使用 用户管理方法 查看或编辑这些信息。

如果你关闭访问控制,**请勿**使用 insert()update() 等常规操作手段编辑 admin.system.rolesadmin.system.users 集合

附加信息

参见安全参考文献了解所有 自带角色 and all available 需要权限的操作。同时考虑参考文献中的 资源文档 的格式。

建立用户请参见 Create a User AdministratorAdd a User to a Database 教程。