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

用户、权限和角色

本主题概述了 Milvus 中基于角色的访问控制(RBAC),详细介绍了用户、角色、对象和权限之间的定义和关系。

下图说明了对象、权限、角色和用户之间的关系。

users_and_roles用户和角色

关键概念

要管理对 Milvus 资源的访问控制,必须了解 RBAC 的关键组成部分:对象类型、对象名称、用户、角色和权限。

  • 对象类型:分配权限的对象类别。对象类型可以是

    • Global:全系统对象,允许用户执行影响所有 Collection、用户或全系统设置的操作。
    • Collection:特定于 Collection 的对象,允许用户执行创建索引、加载数据、插入或删除数据以及查询特定 Collection 中的数据等操作。
    • User:与用户管理相关的对象,允许用户管理数据库用户的凭证和角色,如更新用户凭证或查看用户详细信息。
  • 对象名称:要控制访问的对象的具体名称。例如

    • 如果对象类型为Global ,则必须将对象名称设置为通配符 (*),表示指定类型的所有对象。
    • 如果对象类型是Collection ,对象名称就是一个 Collection 的名称。
    • 如果对象类型为User ,对象名称就是数据库用户的名称。
  • 用户:与 Milvus 交互的人或应用程序,由用户名和相应的密码组成。

  • 权限:定义可执行的操作和可访问的资源。权限不直接授予用户,而是分配给角色。

  • 角色:定义用户对某些对象所拥有的一系列权限。角色一旦与用户绑定,用户就会继承授予该角色的所有权限。

举例说明:授予权限

下面的代码片段展示了如何在特定 Collection 上向角色授予CreateIndex 权限:

milvusClient.grant_privilege(
role_name="CUSTOM_ROLE_NAME",
object_type="Collection", # Valid value: Global, Collection or User.
privilege="CreateIndex", # See the table below for valid privilege names and relevant API descriptions.
object_name="YOUR_COLLECTION_NAME" # The name of the collection to grant access to. Use "*" to grant access to all collections.
)

要获取权限相关 API 的更多信息,请参阅grant_privilegerevoke _ privilege

要获取权限相关 API 的更多信息,请参阅grantPrivilegerevokePrivilege

要获取权限相关 API 的更多信息,请参阅grantPrivilegerevokePrivilege

默认用户和角色

Milvus 默认创建一个root 用户,默认密码为Milvusroot 用户被授予admin 权限,这意味着该root 用户可以访问所有资源并执行所有操作。

如果用户与public 角色相关联,则有权获得以下权限:

  • DescribeCollection
  • ShowCollections
  • IndexDetail

对象类型和权限列表

下表列出了启用 RBAC 时可以选择的值。

对象类型权限名称客户端相关 API 说明
Collection创建索引创建索引
Collection下拉索引下拉索引
Collection索引详情DescribeIndex/GetIndexState/GetIndexBuildProgress
Collection加载载入 Collection/获取载入进度/获取载入状态
Collection获取加载进度获取加载进度
Collection获取加载状态获取加载状态
Collection释放释放 Collection
Collection插入插入
Collection删除删除
Collection插入插入
Collection搜索搜索
Collection冲洗冲洗/获取冲洗状态
Collection获取冲洗状态获取冲洗状态
Collection查询查询
Collection获取统计信息获取 Collection 统计信息
Collection压缩压缩
Collection导入批量输入/导入
Collection负载平衡负载平衡
Collection创建 Partition创建 Partition
Collection删除 Partition删除 Partition
Collection显示 Partition显示 Partition
Collection具有 Partition有 Partition
全局全局该表中的所有 API 操作符权限
全局创建数据集创建 Collection
全局删除 Collection下拉菜单
全局描述 Collection描述 Collection
全局显示 Collection显示 Collection
全局重命名 Collection重命名 Collection
全局全部清除全部清除
全局创建所有者创建用户 创建角色
全局删除所有权删除凭证 删除角色
全局选择所有权选择角色/选择授权
全局管理所有权操作用户角色 操作权限
全局创建资源组创建资源组
全局删除资源组下拉资源组
全局描述资源组描述资源组
全局列出资源组列出资源组
全局传输节点传输节点
全局传输复制传输复制
全局创建数据库创建数据库
全局删除数据库删除数据库
全局列出数据库列表数据库
全局创建别名创建别名
全局删除别名删除别名
全局描述别名描述别名
全局列出别名列出参数
用户更新用户更新证书
用户选择用户选择用户
说明
  • 对象和权限名称区分大小写。
  • 要向某类对象(如 Collection、Global、User)授予所有权限,请使用 "*"作为权限名称。
  • 全局对象的权限名称 "*"不包括 All 权限,因为 All 权限包括所有权限,包括任何 Collection 和用户对象。

下一步