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

为 Role 授予 Privilege 或 Privilege Group

创建角色后,就可以向角色授予权限。本指南将介绍如何向角色授予权限或权限组。

向 Role 授予 Privilege 或 Privilege Group

Milvus 2.5 引入了新版本的 API,简化了授予操作。向角色授予权限时,不再需要查找对象类型。以下是参数和相应的解释。

  • role_name:需要授予权限或权限组的目标角色名称。

  • 资源:特权的目标资源,可以是特定实例、数据库或 Collection。

下表解释了如何在 client.grantV2() 方法中指定资源。

级别

资源

授予方法

注释

Collection

特定 Collection

 client.grant_privilege_v2(
role_name="roleA",
privilege="CollectionAdmin",
collection_name="col1",
db_name="db1"
)

输入目标 Collection 的名称以及目标 Collection 所属数据库的名称。

特定数据库下的所有 Collection

 client.grant_privilege_v2(
role_name="roleA",
privilege="CollectionAdmin",
collection_name="*",
db_name="db1"
)

输入目标数据库名称和通配符 * 作为 Collection 名称。

数据库

特定数据库

 client.grant_privilege_v2(
role_name="roleA",
privilege="DatabaseAdmin",
collection_name="*",
db_name="db1"
)

输入目标数据库的名称和通配符 * 作为 Collection 名称。

当前实例下的所有数据库

 client.grant_privilege_v2(
role_name="roleA",
privilege="DatabaseAdmin",
collection_name="*",
db_name="*"
)

输入 * 作为数据库名称,输入 * 作为 Collection 名称。

实例

当前实例

 client.grant_privilege_v2(
role_name="roleA",
privilege="ClusterAdmin",
collection_name="*",
db_name="*"
)

输入 * 作为数据库名称,输入 * 作为 Collection 名称。

  • 权限:需要授予角色的特定权限或 权限组。目前,Milvus 提供了 56 种可授予的特权。下表列出了 Milvus 中的特权。
说明

下表中的类型列是用户为方便快速查找特权而设置的,仅用于分类目的。授予权限时,不需要了解类型。只需输入相应的权限即可。

类型

权限

说明

客户端的相关 API 说明

数据库权限

ListDatabases

查看当前实例中的所有数据库

ListDatabases

DescribeDatabase

查看数据库的详细信息

DescribeDatabase

CreateDatabase

创建数据库

CreateDatabase

DropDatabase

删除数据库

DropDatabase

AlterDatabase

修改数据库属性

AlterDatabase

Collection 权限

GetFlushState

检查 Collection Flush 操作的状态

GetFlushState

GetLoadState

检查 Collection 的加载状态

GetLoadState

GetLoadingProgress

检查 Collection 的加载进度

GetLoadingProgress

ShowCollections

查看具有 Collection 权限的所有 Collection

ShowCollections

ListAliases

查看某个 Collection 的所有别名

ListAliases

DescribeCollection

查看 Collection 的详细信息

DescribeCollection

DescribeAlias

查看别名的详细信息

DescribeAlias

GetStatistics

获取 Collection 的统计数据(如 Collection 中实体的数量)

GetCollectionStatistics

CreateCollection

创建 Collection

CreateCollection

DropCollection

删除 Collection

DropCollection

Load

加载 Collection

加载 Collection/获取加载进度/获取加载状态

Release

释放一个 Collection

ReleaseCollection

Flush

将 Collection 中的所有实体持久化到一个密封段中。任何在 Flush 操作后插入的实体都将存储在新的段中。

Flush / GetFlushState

Compaction

手动触发压缩

压缩

RenameCollection

重命名 Collection

RenameCollection

CreateAlias

为 Collection 创建别名

CreateAlias

DropAlias

删除 Collection 的别名

DropAlias

FlushAll

清除数据库中的所有 Collection

FlushAll

Partition 权限

HasPartition

检查是否存在 Partition

HasPartition

ShowPartitions

查看 Collection 中的所有 Partition

ShowPartitions

CreatePartition

创建 Partition

CreatePartition

DropPartition

删除 Partition

DropPartition

索引权限

IndexDetail

查看索引的详细信息

DescribeIndex/GetIndexState/GetIndexBuildProgress

CreateIndex

创建索引

CreateIndex

DropIndex

删除索引

DropIndex

资源管理权限

LoadBalance

实现负载平衡

LoadBalance

CreateResourceGroup

创建资源组

CreateResourceGroup

DropResourceGroup

删除资源组

DropResourceGroup

UpdateResourceGroups

更新资源组

UpdateResourceGroups

DescribeResourceGroup

查看资源组的详细信息

DescribeResourceGroup

ListResourceGroups

查看当前实例的所有资源组

ListResourceGroups

TransferNode

在资源组之间转移节点

TransferNode

TransferReplica

在资源组之间传输副本

TransferReplica

BackupRBAC

为当前实例中所有与 RBAC 相关的操作创建备份

BackupRBAC

RestoreRBAC

恢复当前实例中所有 RBAC 相关操作的备份

RestoreRBAC

实体权限

Query

进行查询

Query

Search

进行搜索

Search

Insert

插入实体

Insert

Delete

删除实体

Delete

Upsert

插入实体

Upsert

Import

批量插入或导入实体

BulkInsert/Import

RBAC 权限

CreateOwnership

创建用户或角色

CreateUser/CreateRole

UpdateUser

更新用户密码

UpdateCredential

DropOwnership

删除用户密码或角色

DeleteCredential/DropRole

SelectOwnership

查看被授予特定角色的所有用户

SelectRole/SelectGrant

ManageOwnership

管理用户或角色,或向用户授予角色

OperateUserRole/OperatePrivilege/OperatePrivilegeV2

SelectUser

查看授予用户的所有角色

SelectUser

CreatePrivilegeGroup

创建权限组

CreatePrivilegeGroup

DropPrivilegeGroup

删除权限组

DropPrivilegeGroup

ListPrivilegeGroups

查看当前实例中的所有特权组

ListPrivilegeGroups

OperatePrivilegeGroup

向特权组添加特权或从特权组移除特权

OperatePrivilegeGroup

下面的示例演示了如何在 default 数据库下的 collection_01 上授予 PrivilegeSearch 权限,以及如何将名为 privilege_group_1 的特权组授予角色 role_a

Python
from pymilvus import MilvusClient

client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)

client.grant_privilege_v2(
role_name="role_a",
privilege="Search",
collection_name='collection_01',
db_name='default',
)

client.grant_privilege_v2(
role_name="role_a",
privilege="privilege_group_1",
collection_name='collection_01',
db_name='default',
)

client.grant_privilege_v2(
role_name="role_a",
privilege="ClusterReadOnly",
collection_name='*',
db_name='*',
)

描述 Role

下面的示例演示了如何使用 describe_role 方法查看授予角色 role_a 的权限。

Python
from pymilvus import MilvusClient

client.describe_role(role_name="role_a")

下面是一个输出示例。

Python
{
"role": "role_a",
"privileges": [
{
"collection_name": "collection_01",
"db_name": "default",
"role_name": "role_a",
"privilege": "Search",
"grantor_name": "root"
},
"privilege_group_1"
]
}

撤销 Role 的 Privilege 或 Privilege Group

下面的示例演示了如何撤销 default 数据库下 collection_01 的特权 PrivilegeSearch 以及授予角色 role_a 的特权组 privilege_group_1

Python
client.revoke_privilege_v2(
role_name="role_a",
privilege="Search",
collection_name='collection_01',
db_name='default',
)

client.revoke_privilege_v2(
role_name="role_a",
privilege="privilege_group_1",
collection_name='collection_01',
db_name='default',
)

client.revoke_privilege_v2(
role_name="role_a",
privilege="ClusterReadOnly",
collection_name='*',
db_name='*',
)