用户、权限和角色
本主题概述了 Milvus 中基于角色的访问控制(RBAC),详细介绍了用户、角色、对象和权限之间的定义和关系。
下图说明了对象、权限、角色和用户之间的关系。
用户和角色
关键概念
要管理对 Milvus 资源的访问控制,必须了解 RBAC 的关键组成部分:对象类型、对象名称、用户、角色和权限。
对象类型:分配权限的对象类别。对象类型可以是
Global
:全系统对象,允许用户执行影响所有 Collections、用户或全系统设置的操作。Collection
:特定于 Collections 的对象,允许用户执行创建索引、加载数据、插入或删除数据以及查询特定 Collections 中的数据等操作。User
:与用户管理相关的对象,允许用户管理数据库用户的凭证和角色,如更新用户凭证或查看用户详细信息。
对象名称:要控制访问的对象的具体名称。例如
- 如果对象类型为
Global
,则必须将对象名称设置为通配符 (*
),表示指定类型的所有对象。 - 如果对象类型是
Collection
,对象名称就是一个 Collection 的名称。 - 如果对象类型为
User
,对象名称就是数据库用户的名称。
- 如果对象类型为
用户:与 Milvus 交互的人或应用程序,由用户名和相应的密码组成。
权限:定义可执行的操作和可访问的资源。权限不直接授予用户,而是分配给角色。
角色:定义用户对某些对象所拥有的一系列权限。角色一旦与用户绑定,用户就会继承授予该角色的所有权限。
举例说明:授予权限
下面的代码片段展示了如何在特定 Collections 上向角色授予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.
)
GrantPrivilegeReq grantPrivilegeReq = GrantPrivilegeReq.builder()
.roleName("roleName")
.objectName("CollectionName") // The name of the collection to grant access to. Use "*" to grant access to all collections.
.objectType("Collection") // Valid value: Global, Collection or User.
.privilege("CreateIndex") // See the table below for valid privilege names and relevant API descriptions.
.build();
client.grantPrivilege(grantPrivilegeReq);
milvusClient.grantPrivilege({
roleName: 'roleName',
object: 'Collection', // Valid value: Global, Collection or User.
objectName: 'CollectionName', // The name of the collection to grant access to. Use "*" to grant access to all collections.
privilegeName: 'CreateIndex' // See the table below for valid privilege names and relevant API descriptions.
})
要获取权限相关 API 的更多信息,请参阅grant_privilege和revoke _ privilege。
要获取权限相关 API 的更多信息,请参阅grantPrivilege和revokePrivilege。
要获取权限相关 API 的更多信息,请参阅grantPrivilege和revokePrivilege。
默认用户和角色
Milvus 默认创建一个root
用户,默认密码为Milvus
。root
用户被授予admin
权限,这意味着该root
用户可以访问所有资源并执行所有操作。
如果用户与public
角色相关联,则有权获得以下权限:
DescribeCollection
ShowCollections
IndexDetail
对象类型和权限列表
下表列出了启用 RBAC 时可以选择的值。
对象类型 | 权限名称 | 客户端相关 API 说明 |
---|---|---|
Collections | 创建索引 | 创建索引 |
Collections | 下拉索引 | 下拉索引 |
Collections | 索引详情 | DescribeIndex/GetIndexState/GetIndexBuildProgress |
Collections | 加载 | 载入集合/获取载入进度/获取载入状态 |
Collections | 获取加载进度 | 获取加载进度 |
Collections | 获取加载状态 | 获取加载状态 |
Collections | 释放 | 释放集合 |
Collection | 插入 | 插入 |
Collections | 删除 | 删除 |
Collections | 插入 | 插入 |
Collections | 搜索 | 搜索 |
Collections | 冲洗 | 冲洗/获取冲洗状态 |
Collections | 获取冲洗状态 | 获取冲洗状态 |
Collections | 查询 | 查询 |
Collections | 获取统计信息 | 获取收藏统计信息 |
Collections | 压缩 | 压缩 |
Collections | 导入 | 批量输入/导入 |
Collections | 负载平衡 | 负载平衡 |
Collections | 创建分区 | 创建分区 |
Collections | 删除分区 | 删除分区 |
Collections | 显示分区 | 显示分区 |
Collections | 具有分区 | 有分区 |
全局 | 全局 | 该表中的所有 API 操作符权限 |
全局 | 创建数据集 | 创建集合 |
全局 | 删除收藏 | 下拉菜单 |
全局 | 描述收藏集 | 描述集合 |
全局 | 显示收藏集 | 显示收藏集 |
全局 | 重命名收藏集 | 重命名收藏集 |
全局 | 全部清除 | 全部清除 |
全局 | 创建所有者 | 创建用户 创建角色 |
全局 | 删除所有权 | 删除凭证 删除角色 |
全局 | 选择所有权 | 选择角色/选择授权 |
全局 | 管理所有权 | 操作用户角色 操作权限 |
全局 | 创建资源组 | 创建资源组 |
全局 | 删除资源组 | 下拉资源组 |
全局 | 描述资源组 | 描述资源组 |
全局 | 列出资源组 | 列出资源组 |
全局 | 传输节点 | 传输节点 |
全局 | 传输复制 | 传输复制 |
全局 | 创建数据库 | 创建数据库 |
全局 | 删除数据库 | 删除数据库 |
全局 | 列出数据库 | 列表数据库 |
全局 | 创建别名 | 创建别名 |
全局 | 删除别名 | 删除别名 |
全局 | 描述别名 | 描述别名 |
全局 | 列出别名 | 列出参数 |
用户 | 更新用户 | 更新证书 |
用户 | 选择用户 | 选择用户 |
下一步
- 了解如何启用 RBAC。