跳到主要内容

管理集群角色(SDK)

集群角色定义了用户在集群内的权限。具体而言,集群角色控制集群用户在集群、Database 和 Collection 层级的权限。

本文将介绍如何创建角色、将内置权限组授予角色、撤销授予角色的权限组,以及删除角色。有关内置权限组的详细信息,请参考权限

📘说明

此功能仅限 Dedicated 集群使用。

创建角色

以下示例展示了如何创建一个角色 role_a

角色名称需要遵循以下规则:

  • 必须以字母开头且只可以包含大写或小写字母、数字和下划线
from pymilvus import MilvusClient

client.create_role(role_name="role_a")
import io.milvus.v2.service.rbac.request.CreateRoleReq;

查看所有角色

在创建了多个角色后,您可以查看所有已创建的角色列表。

from pymilvus import MilvusClient

client.list_roles()

示例结果如下,role_a 为新创建的角色。

['role_a']

为角色分配内置权限组

📘说明

目前 Zilliz Cloud 仅支持为自定义角色分配内置权限组。有关内置权限组的详细信息,请参考权限

如需为自定义角色分配特定权限或自定义权限组,请联系我们

以下示例展示了如何为角色 role_a 分配内置权限组 COLL_ADMIN

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

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

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

查看角色权限

以下示例展示如何查看角色 role_a 的权限。

from pymilvus import MilvusClient

client.describe_role(role_name="role_a")

示例结果如下:

{
"role": "role_a",
"privileges": [
"COLL_ADMIN"
]
}

撤销为角色分配的内置权限组

以下示例展示了如何撤销已分配给角色 role_a 的内置权限组 COLL_ADMIN

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

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

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

删除角色

以下示例展示了如何删除角色 role_a

📘说明

内置的 admin 角色无法删除。

from pymilvus import MilvusClient

client.drop_role(role_name="role_a")

删除后,您可以通过查看所有角色操作检查是否删除成功。如果列表中未展示此前删除的角色则视为删除成功。

from pymilvus import MilvusClient

client.list_roles()

示例结果如下,列表中无角色 role_a,删除操作成功。

['admin']