托管自定义角色
角色授予用户访问 MongoDB 资源的权限。 默认情况下,MongoDB 提供一些内置角色,但如果这些角色无法描述所需的权限集,您可以创建自定义角色。
创建角色时,请指定角色适用的数据库。 Ops Manager 将您的自定义角色存储在 Ops Manager 项目中的所有 MongoDB 实例上,但通过数据库名称和角色名称的组合来唯一标识角色。如果 Ops Manager 项目中的多个部署中存在具有该名称的数据库,则该角色适用于每个数据库。如果在 admin
数据库上创建角色,则该角色将应用于部署中的所有admin
数据库。
角色由授予对特定资源执行特定操作的访问权限的特权组成。 在大多数数据库上,资源是数据库或collection,但在admin
数据库上,资源可以是所有数据库、跨数据库具有给定名称的所有collection或所有部署。
角色可以从其数据库中的其他角色继承权限。admin
数据库上的角色可以继承其他数据库中角色的权限。
MongoDB角色与MongoDB Ops Manager 角色是分开的。
Considerations
托管用户和角色
您选择在 Ops Manager 项目中管理的任何用户或角色的 Synced值设置为Yes
,并同步到项目中的所有部署。
您未选择在 Ops Manager 项目中托管的任何用户或角色的Synced值设置为No
,并且仅存在于各自的 MongoDB 部署中。
注意
如果您在导入后将Synced切换为OFF
,您创建的任何用户或角色都将被删除。
一致的用户和角色
如果您在项目中实施一组一致的用户和角色,Ops Manager 将在该项目的所有部署中同步这些用户和角色。切换Enforce Consistent Set以选择是否托管一组用户和角色:
Enforce Consistent Set is YES
在一个托管的项目中,Ops Manager 会授予所有用户和角色对所有部署的访问权限。Ops Manager 项目托管的所有部署都具有相同的 MongoDB 用户和角色集。
Ops Manager 会限制将Synced设置为Yes
的用户和角色的访问权限。Ops Manager 会从项目的部署中删除 Ops Manager 项目未托管的所有用户和角色。
Enforce Consistent Set is NO
在托管项目中,Ops Manager 允许每个部署使用自己的一组 MongoDB 用户和角色。Ops Manager 不需要托管这些 MongoDB 用户和角色。要托管这些用户和角色,您必须直接连接到 MongoDB 部署。
Ops Manager 向您将Synced设置为Yes
的托管 MongoDB 用户和角色授予所有托管部署的访问权限。
Ops Manager 将非托管 MongoDB 用户和角色(您将Synced设置为No
)的访问权限限制为这些用户和角色的特定部署。
注意
Enforce Consistent Set 默认值为 NO
。
要了解导入 MongoDB 部署对用户和角色管理有何影响,请参阅导入时的自动化和更新的安全设置。
先决条件
必须启用MongoDB 访问控制才能应用角色。 您可以在启用访问控制之前或之后创建角色,但只有在启用访问控制后,角色才会生效。
创建自定义 MongoDB 角色
在Identifier 字段,输入要定义角色的数据库,然后输入角色的名称。
角色适用于定义它的数据库,并且可以授予collection级别的访问权限。角色名称及其数据库的组合唯一标识该角色。 填写Identifier字段,以满足您使用的身份验证和授权方法:
如果您既不使用 LDAP 身份验证,也不使用授权,请在database Identifier字段中键入数据库名称,并在name Identifier字段中键入您想要的角色名称。
如果您使用 LDAP 身份验证,但不使用 LDAP 授权,请在database Identifier字段中键入
$external
,并在name Identifier字段中键入您想要的角色名称。如果您使用任何具有 LDAP 授权的身份验证方法,请在database Identifier字段中键入
admin
,并在name Identifier字段中键入 LDAP Group DN。例子
在 LDAP 服务器中,您创建了一个标识名为
CN=DBA,CN=Users,DC=example,DC=com
的 LDAP 群组。 如果要在 Ops Manager 中创建链接到此 LDAP 群组的 DBA 角色,请在database Identifier字段中键入admin
,并在name Identifier字段中键入CN=DBA,CN=Users,DC=example,DC=com
。
选择要授予新角色的权限。
您可以通过两种方式授予权限:
为一个角色授予另一个角色的权限。
要向新角色授予一个或多个现有角色的所有特权,请在Inherits From字段中选择角色。 该字段提供一个下拉列表,其中包括MongoDB 内置角色和您已创建的任何自定义角色。
直接添加权限。
要向角色授予特定权限,请单击ADD PRIVILEGES FOR A RESOURCE 。
在Resource字段中,指定要应用角色的资源。 从下拉菜单中选择数据库。 要指定整个数据库,请将该字段留空。 要指定集合,请输入集合名称。 如果资源位于admin
数据库中,则可以单击ADMIN并在admin
数据库外应用角色。
在Available Privileges部分中,选择要应用的操作。 有关每个操作的说明,请参阅 MongoDB 手册中的“特权操作”。
编辑自定义角色
您可以更改自定义角色的权限。 您无法更改其名称或数据库。
添加或删除该角色的权限。
您可以通过两种方式授予权限:
为一个角色授予另一个角色的权限。
要向新角色授予一个或多个现有角色的所有特权,请在Inherits From字段中选择角色。 该字段提供一个下拉列表,其中包括MongoDB 内置角色和您已创建的任何自定义角色。
直接添加权限。
要向角色授予特定权限,请单击ADD PRIVILEGES FOR A RESOURCE 。
在Resource字段中,指定要应用角色的资源。 从下拉菜单中选择数据库。 要指定整个数据库,请将该字段留空。 要指定集合,请输入集合名称。 如果资源位于admin
数据库中,则可以单击ADMIN并在admin
数据库外应用角色。
在Available Privileges部分中,选择要应用的操作。 有关每个操作的说明,请参阅 MongoDB 手册中的“特权操作”。
要删除继承的角色,请单击该角色旁边的x 。 要删除权限,请单击权限旁边的垃圾桶图标。
查看角色的权限
要查看角色的权限,请单击Deployment ,然后单击Security 标签页,然后单击角色旁边的 和Roles view privileges。
每个权限将一个资源与一组权限操作配对。 所有角色都分配有一个数据库。 每个内置角色都分配给admin
数据库或每个数据库。