跳到主要内容
版本:v2.5.x

创建 Privilege Group

为简化授予权限的流程,建议将多个权限合并为一个权限组。

Privilege Group 与 Privilege

特权组由多个特权组成。

Privilege Group Illustrated

如上图所示,假设需要向一个角色授予三种不同的权限。

  • 如果不使用特权组,则需要授予三次权限。

  • 如果使用特权组,则只需创建一个特权组并将三种特权添加到该特权组中,然后将该特权组授予角色 A。

通过使用特权组,可以向角色批量授予多项特权。

内置 Privilege Group

为方便使用,Milvus 在 Collection、数据库和实例级别上提供了共 9 个内置特权:COLL_RO、COLL_RW、COLL_ADMIN、DB_RO、DB_RW、DB_Admin、Cluster_RO、Cluster_RW 和 Cluster_Admin。

说明

内置特权组的三个级别没有级联关系。在实例级别设置特权组不会自动为该实例下的所有数据库和 Collection 设置权限。数据库和 Collection 级别的权限需要手动设置。

下表解释了每个内置权限组所包含的权限。

Collection 级别

  • CollectionReadOnly (COLL_RO):包括读取 Collection 数据的权限

  • CollectionReadWrite (COLL_RW):包括读取和写入 Collection 数据的权限

  • CollectionAdmin (COLL_ADMIN):包括读写 Collection 数据和管理 Collection 的权限。

下表列出了 Collection 级三个内置权限组所包含的具体权限:

权限

CollectionReadOnly

CollectionReadWrite

CollectionAdmin

Query

✔️

✔️

✔️

Search

✔️

✔️

✔️

IndexDetail

✔️

✔️

✔️

GetFlushState

✔️

✔️

✔️

GetLoadState

✔️

✔️

✔️

GetLoadingProgress

✔️

✔️

✔️

HasPartition

✔️

✔️

✔️

ShowPartitions

✔️

✔️

✔️

ListAliases

✔️

✔️

✔️

DescribeCollection

✔️

✔️

✔️

DescribeAlias

✔️

✔️

✔️

GetStatistics

✔️

✔️

✔️

CreateIndex

✔️

✔️

DropIndex

✔️

✔️

CreatePartition

✔️

✔️

DropPartition

✔️

✔️

Load

✔️

✔️

Release

✔️

✔️

Insert

✔️

✔️

Delete

✔️

✔️

Upsert

✔️

✔️

Import

✔️

✔️

Flush

✔️

✔️

Compaction

✔️

✔️

LoadBalance

✔️

✔️

CreateAlias

✔️

DropAlias

✔️

Database 级别

  • 只读数据库 (DB_RO):包括读取数据库数据的权限

  • 数据库读写 (DB_RW):包括读取和写入数据库数据的权限

  • 数据库管理 (DB_Admin):包括读写数据库数据和管理数据库的权限。

下表列出了数据库级三个内置权限组所包含的具体权限:

权限

DatabaseReadOnly

DatabaseReadWrite

DatabaseAdmin

ShowCollections

✔️

✔️

✔️

DescribeDatabase

✔️

✔️

✔️

CreateCollection

✔️

DropCollection

✔️

AlterDatabase

✔️

✔️

集群级别

  • 只读集群 (Cluster_RO):包括读取实例数据的权限

  • 集群读写 (Cluster_RW):包括读取和写入实例数据的权限

  • ClusterAdmin (Cluster_Admin):包括读写实例数据和管理实例的权限。

下表列出了实例级三个内置权限组所包含的具体权限:

权限

ClusterReadOnly

ClusterReadWrite

ClusterAdmin

ListDatabases

✔️

✔️

✔️

RenameCollection

✔️

CreateOwnership

✔️

UpdateUser

✔️

DropOwnership

✔️

SelectOwnership

✔️

✔️

✔️

ManageOwnership

✔️

SelectUser

✔️

✔️

✔️

BackupRBAC

✔️

RestoreRBAC

✔️

CreateResourceGroup

✔️

DropResourceGroup

✔️

UpdateResourceGroups

✔️

✔️

DescribeResourceGroup

✔️

✔️

✔️

ListResourceGroups

✔️

✔️

✔️

TransferNode

✔️

✔️

TransferReplica

✔️

✔️

CreateDatabase

✔️

DropDatabase

✔️

FlushAll

✔️

✔️

CreatePrivilegeGroup

✔️

DropPrivilegeGroup

✔️

ListPrivilegeGroups

✔️

OperatePrivilegeGroup

✔️

操作步骤

可以创建特权组,然后向特权组添加特权。

创建 Privilege Group

下面的示例演示了如何创建名为 privilege_group_1 的特权组。

Python
from pymilvus import MilvusClient
client.create_privilege_group(group_name='privilege_group_1')

向 Privilege Group 添加 Privilege

下面的示例演示了如何将 PrivilegeBackupRBACPrivilegeRestoreRBAC 添加到刚刚创建的特权组 privilege_group_1 中。

Python
from pymilvus import MilvusClient
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])

从 Privilege Group 中删除 Privilege

下面的示例演示了如何从权限组 privilege_group_1 中移除权限 PrivilegeRestoreRBAC

Python
from pymilvus import MilvusClient
client.remove_privileges_from_group(group_name='privilege_group_1', privileges='Search')

列出 Privilege Group

下面的示例演示了如何列出所有现有特权组。

Python
from pymilvus import MilvusClient
client.list_privilege_groups()

下面是一个输出示例。

Shell
PrivilegeGroupItem: <privilege_group:privilege_group_1>, <privileges:('Search', 'Query')>

删除 Privilege Group

下面的示例演示了如何删除 privilege_group_1 特权组。

Python
from pymilvus import MilvusClient
client.drop_privilege_group(group_name='privilege_group_1')