Docs 菜单

Docs 主页开发应用程序MongoDB Manual

基于角色的访问控制

在此页面上

  • 启用访问控制
  • 角色
  • 用户和角色
  • 内置角色和用户定义的角色
  • LDAP 授权

MongoDB 采用基于角色的访问控制 (RBAC) 来管理对 MongoDB 系统的访问。向用户授予一个或多个角色,这些角色决定了用户对数据库资源和操作的访问权限。在角色分配之外,用户无权访问系统。

MongoDB 默认不启用访问控制。您可以使用 --authsecurity.authorization 设置启用授权。启用内部身份验证还可以实现客户端授权。

启用访问控制后,用户必须验证自身。

角色授予在资源上执行指定操作的权限。每个权限要么在角色中明确指定,要么从另一个角色继承,或者两者兼而有之。

角色从不限制特权。如果用户有两个角色,则具有较高访问权限的角色优先。

例如,如果您将数据库的read角色授予已具有readWriteAnyDatabase角色的用户,则read授予不会撤消对数据库的写入访问权限。

要撤销用户的角色,请使用 revokeRolesFromUser 命令。

角色可对用户施加身份验证限制,从而要求他们从指定的源和目标 IP 地址范围进行连接。

有关详细信息,请参阅身份验证限制

特权由指定的资源以及允许对该资源执行的操作组成。

资源是指数据库、集合、集合集或集群。如果资源是集群,则关联的动作会影响系统的状态,而不是特定的数据库或集合。有关资源文档的信息,请参阅资源文档

动作指定允许对资源执行的操作。有关支持的动作,请参阅特权动作

角色可以在其定义中包含一个或多个现有角色,在这种情况下,该角色将继承所包含角色的所有特权。

一个角色可以从其数据库中的其他角色继承特权。在 admin 数据库上创建的角色可以从任何数据库中的角色继承特权。

可以通过发出 rolesInfo 命令并将 showPrivilegesshowBuiltinRoles 字段均设置为 true 来查看角色的特权。

您可以在创建用户时为用户分配角色。您还可以更新现有用户,以授予或撤销角色。有关用户管理方法的完整列表,请参阅用户管理

分配有角色的用户将获得该角色的所有特权。一个用户可以有多个角色。通过在各种数据库中为用户分配角色,在一个数据库中创建的用户可以拥有在其他数据库中操作的权限。

注意

在数据库中创建的第一个用户应为有特权管理其他用户的用户管理员。请参阅启用访问控制

MongoDB 具有内置角色,可提供数据库系统中常用的一系列权限。

如果这些内置角色无法提供所需的特权集,MongoDB 提供了创建和修改用户自定义角色的方法。

MongoDB Enterprise 支持在 LDAP 服务器中查询经过身份验证的用户所属的 LDAP 群组。 MongoDB 将每个返回群组的标识名 (DN) 映射到admin数据库上的角色。 MongoDB 根据映射的角色及其关联的权限对用户进行授权。有关更多信息,请参阅LDAP 授权

← 列出用户