管理用户和角色

更新时间:

Milvus通过支持基于角色的访问控制(Role-Based Access Control, RBAC)实现数据库的精细化权限管理。管理员可以创建多种角色并分配相应的权限,然后将这些角色授予不同的用户。当权限需要调整时,管理员只需修改角色权限而无需单独配置每个用户,确保了权限管理的高效性和安全性。

前提条件

  • 已在本地客户端成功安装了PyMilvus库,并将其更新至当前最新版本。

    如果您尚未在本地客户端安装PyMilvus库,或者需要将其更新至当前最新版本,您可以执行以下命令。

    pip install --upgrade pymilvus
  • 已创建Milvus实例,请参见详情快速创建Milvus实例

  • 已连接Milvus实例。详细代码如下所示。

    from pymilvus import MilvusClient, Role
    
    client = MilvusClient(
        uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus实例的公网地址。
        token="<yourUsername>:<yourPassword>",  # 登录Milvus实例的用户名和密码。
        db_name="default"  # 待连接的数据库名称,本文示例为默认的default。
    )

创建用户

# 定义新用户的名称和密码。本示例用户名为user_milvus。
client.create_user(user_name="user_milvus", password="<yourPassword>")

您还进行以下操作:

  • 更新用户密码

    client.update_password(
        user_name="user_milvus",
        old_password="<yourPassword>",
        new_password="<yourNewPassword>"
    )
  • 查看所有用户

    client.list_users()
  • 查看用户角色

    client.describe_user(user_name="user_milvus")
  • 查看所有用户角色

    client.list_roles()

创建角色

client.create_role(role_name="role_milvus")  # 定义新角色的名称。本示例为role_milvus。

角色授权

read_only_privileges = [
  {"object_type": "Global", "object_name": "*", "privilege": "DescribeCollection"},
  {"object_type": "Global", "object_name": "*", "privilege": "ShowCollections"},
  {"object_type": "Collection", "object_name": "*", "privilege": "Search"},
  {"object_type": "Collection", "object_name": "*", "privilege": "Query"},
] 

for item in read_only_privileges:
    client.grant_privilege(
        role_name="role_milvus",
        object_type=item["object_type"],
        privilege=item["privilege"],
        object_name=item["object_name"]
    )

为用户绑定角色

client.grant_role(user_name="user_milvus", role_name="role_milvus")

回收用户角色

client.revoke_role(user_name="user_milvus", role_name="role_milvus")