MongoDB使用基于角色的访问控制(RBAC)来管理对MongoDB系统的访问。授予用户一个或多个角色,这些角色确定用户对数据库资源和操作的访问权限。在角色分配之外,用户无权访问系统。
角色
角色授予特权以对资源执行指定的操作。每个特权要么在角色中明确指定,要么从另一个角色继承,或者两者都继承。
特权
特权包括指定的资源和对该资源允许的操作。
一个资源是一个数据库,收集,集收藏,或群集。如果资源是群集,则关联操作会影响系统状态,而不是特定的数据库或集合。有关资源文档的信息,请参见资源文档。
一个动作指定了对资源允许的操作。有关可用的操作,请参阅
特权操作。
继承权限
角色可以在其定义中包括一个或多个现有角色,在这种情况下,角色继承所包含角色的所有特权。
角色可以从其数据库中的其他角色继承特权。在admin
数据库上创建的角色可以从任何数据库中的角色继承特权。
查看角色的权限
您可以通过发出和字段都设置为
的rolesInfo
命令来查看角色的特权。showPrivileges
showBuiltinRoles
true
用户和角色
您可以在用户创建期间为用户分配角色。您还可以更新现有用户以授予或撤消角色。有关用户管理方法的完整列表,请参阅用户管理。
分配了角色的用户将获得该角色的所有特权。一个用户可以具有多个角色。通过在各种数据库中分配用户角色,在一个数据库中创建的用户可以具有对其他数据库执行操作的权限。
注意
在数据库中创建的第一个用户应该是具有管理其他用户权限的用户管理员。请参阅
启用访问控制。
内置角色和用户定义角色
MongoDB提供了内置角色,这些角色提供了数据库系统中通常需要的一组特权。
如果这些内置角色无法提供所需的特权集,则MongoDB将提供创建和修改用户定义角色的方法。