基于角色的访问控制

在本页面

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

启用访问控制

MongoDB 默认情况下不启用访问控制。您可以使用--authsecurity.authorization设置启用授权。启用internal authentication也会启用 Client 端授权。

启用访问控制后,用户必须自己authenticate

Roles

角色授予在resource上执行指定的actions的特权。每个特权或者是在角色中明确指定的,或者是从另一个角色继承的,或者两者都继承。

Privileges

特权由指定的资源和对该资源允许的操作组成。

resource是数据库,集合,集合集或集群。如果资源是群集,则附属操作会影响系统状态,而不是特定数据库或集合。有关资源文档的信息,请参见Resource Document

action指定对资源允许的操作。有关可用操作,请参见Privilege Actions

Inherited Privileges

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

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

查看角色的特权

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

用户和角色

您可以在用户创建期间将角色分配给用户。您还可以更新现有用户以授予或撤消角色。有关用户 Management 方法的完整列表,请参见User Management

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

Note

在数据库中创建的第一个用户应该是具有 Management 其他用户权限的用户 Management 员。参见Enable Auth

内置角色和用户定义的角色

MongoDB 提供built-in roles,它们提供数据库系统中通常需要的一组特权。

如果这些内置角色无法提供所需的特权集,则 MongoDB 提供创建和修改user-defined roles的方法。