🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI
首页

为角色授予权限或权限组

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

向角色授予权限或权限组

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

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

  • 资源:权限的目标资源,可以是特定实例、数据库或 Collections。下表解释了如何在client.grantV2() 方法中指定资源。

级别

资源

授予方法

注释

Collections

特定的 Collections

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

输入目标 Collections 的名称和目标 Collections 所属数据库的名称。

特定数据库下的所有 Collections

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="*")

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

**实例**

当前实例

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

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

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

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

**类型 **

**权限**

**描述

**客户端的相关应用程序接口描述**

数据库权限

列出数据库

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

[ListDatabases](https://milvus.io/docs/manage_databases.md)

描述数据库

查看数据库的详细信息

[DescribeDatabase](https://milvus.io/docs/manage_databases.md)

创建数据库

创建数据库

[CreateDatabase](https://milvus.io/docs/manage_databases.md)

删除数据库

删除数据库

[DropDatabase](https://milvus.io/docs/manage_databases.md)

更改数据库

修改数据库属性

[AlterDatabase](https://milvus.io/docs/manage_databases.md)

Collections 权限

获取刷新状态

检查 Collections 冲洗操作符的状态

[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

获取加载状态

检查 Collections 的加载状态

[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

获取加载进度

检查 Collections 的加载进度

[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)

显示收藏集

查看所有具有收藏权限的 Collections

[ShowCollections](https://milvus.io/docs/view-collections.md)

列出别名

查看某个 Collection 的所有别名

[ListAliases](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/list_aliases.md)

描述收藏集

查看 Collections 的详细信息

[DescribeCollection](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_collection.md)

描述别名

查看别名的详细信息

[DescribeAlias](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_alias.md)

获取统计数据

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

[GetCollectionStatistics](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/get_collection_stats.md)

创建集合

创建一个 Collections

[CreateCollection](https://milvus.io/docs/create-collection.md)

删除集合

删除一个 Collections

[DropCollection](https://milvus.io/docs/drop-collection.md)

加载

加载一个 Collections

[LoadCollection](https://milvus.io/docs/load-and-release.md)/[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)/[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

发布

释放 Collections

[ReleaseCollection](https://milvus.io/docs/load-and-release.md)

刷新

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

[Flush](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)/[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

压缩

手动触发压缩

[Compact](https://milvus.io/docs/v2.0.x/compact_data.md)

重命名集合

重命名 Collections

[RenameCollection](https://milvus.io/docs/modify-collection.md)

创建别名

为 Collections 创建别名

[创建别名](https://milvus.io/docs/manage-aliases.md)

删除别名

删除 Collections 的别名

[DropAlias](https://milvus.io/docs/manage-aliases.md)

全部清除

清除数据库中的所有 Collections

[FlushAll](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/flush_all.md)

分区权限

有分区

检查是否存在分区

[HasPartition](https://milvus.io/docs/manage-partitions.md)

显示分区

查看 Collections 中的所有分区

[ShowPartitions](https://milvus.io/docs/manage-partitions.md)

创建分区

创建分区

[CreatePartition](https://milvus.io/docs/manage-partitions.md)

删除分区

删除分区

[DropPartition](https://milvus.io/docs/manage-partitions.md)

索引权限

索引详情

查看索引详情

[DescribeIndex/GetIndexState/GetIndexBuildProgress](https://milvus.io/docs/index-vector-fields.md?tab=floating)

创建索引

创建索引

[CreateIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

删除索引

删除索引

[DropIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

资源管理权限

负载平衡

实现负载平衡

[LoadBalance](https://milvus.io/docs/resource_group.md)

创建资源组

创建资源组

[CreateResourceGroup](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/create_resource_group.md)

删除资源组

删除一个资源组

[DropResourceGroup](https://milvus.io/docs/resource_group.md)

更新资源组

更新资源组

[UpdateResourceGroups](https://milvus.io/docs/resource_group.md)

描述资源组

查看资源组的详细信息

[DescribeResourceGroup](https://milvus.io/docs/resource_group.md)

列出资源组

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

[ListResourceGroups](https://milvus.io/docs/resource_group.md)

传输节点

在资源组之间传输节点

[TransferNode](https://milvus.io/docs/resource_group.md)

传输副本

在资源组之间传输副本

[TransferReplica](https://milvus.io/docs/resource_group.md)

备份 RBAC

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

备份 RBAC

还原 RBAC

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

还原 RBAC

实体权限

查询

进行查询

[查询](https://milvus.io/docs/get-and-scalar-query.md)

搜索

进行搜索

[Search](https://milvus.io/docs/single-vector-search.md)

插入

插入实体

[Insert](https://milvus.io/docs/insert-update-delete.md)

删除

删除实体

[删除](https://milvus.io/docs/delete-entities.md)

插入

插入实体

[Upsert](https://milvus.io/docs/upsert-entities.md)

导入

批量插入或导入实体

[批量插入/导入](https://milvus.io/docs/import-data.md)

RBAC 权限

创建所有权

创建用户或角色

[创建用户/创建角色](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

更新用户

更新用户密码

[UpdateCredential](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

删除所有权

删除用户密码或角色

删除用户密码或角色[DeleteCredential/DropRole](https://zilliverse.feishu.cn/wiki/OqZnwJHrJilLPukfvp5cSgnmnTh)

选择所有权

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

[选择角色/选择授权](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

管理所有权

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

[OperateUserRole/OperatePrivilege/OperatePrivilegeV2](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

选择用户

查看授予用户的所有角色

[SelectUser](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

创建权限组

创建权限组

[创建权限组](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

删除权限组

删除权限组

[DropPrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

列出特权组

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

[ListPrivilegeGroups](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

操作权限组

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

[OperatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

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

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='*',
)
import io.milvus.v2.service.rbac.request.GrantPrivilegeReqV2

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("Search")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("privilege_group_1")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("ClusterReadOnly")
        .collectionName("*")
        .dbName("*")
        .build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.GrantV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))

client.GrantV2(context.Background(), "role_a", "collection_01", "privilege_group_1", entity.WithOperatePrivilegeDatabase("default"))

client.GrantV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});

await milvusClient.grantPrivilege({
   roleName: 'role_a',
   object: 'Collection', 
   objectName: 'collection_01',
   privilegeName: 'Search'
 });
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "privilege_group_1",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "ClusterReadOnly",
    "collectionName": "*",
    "dbName":"*"
}'

描述角色

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

from pymilvus import MilvusClient

client.describe_role(role_name="role_a")
import io.milvus.v2.service.rbac.response.DescribeRoleResp;
import io.milvus.v2.service.rbac.request.DescribeRoleReq

DescribeRoleReq describeRoleReq = DescribeRoleReq.builder()
        .roleName("role_a")
        .build();
DescribeRoleResp resp = client.describeRole(describeRoleReq);
List<DescribeRoleResp.GrantInfo> infos = resp.getGrantInfos();
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.ListRoles(context.Background())
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

await milvusClient.describeRole({roleName: 'role_a'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a"
}'

下面是一个输出示例。

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

撤销角色的权限或权限组

下面的示例演示了如何撤销默认数据库下collection_01 上的PrivilegeSearch 权限以及授予角色role_aprivilege_group_1 权限组。

from pymilvus import MilvusClient

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

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='*',
)
import io.milvus.v2.service.rbac.request.RevokePrivilegeReqV2

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("Search")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("privilege_group_1")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("ClusterReadOnly")
        .collectionName("*")
        .dbName("*")
        .build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.RevokeV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))

client.RevokeV2(context.Background(), "role_a", "collection_01", "privielge_group_1", entity.WithOperatePrivilegeDatabase("default"))

client.RevokeV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "ClusterReadOnly",
    "collectionName": "*",
    "dbName":"*"
}'

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?