用户、权限和角色
本主题概述了 Milvus 中基于角色的访问控制(RBAC),详细介绍了用户、角色、对象和权限之间的定义和关系。
下图说明了对象、权限、角色和用户之间的关系。
用户和角色
关键概念
要管理对 Milvus 资源的访问控制,必须了解 RBAC 的关键组成部分:对象类型、对象名称、用户、角色和权限。
-
对象类型:分配权限的对象类别。对象类型可以是
Global:全系统对象,允许用户执行影响所有 Collection、用户或全系统设置的操作。Collection:特定于 Collection 的对象,允许用户执行创建索引、加载数据、插入或删除数据以及查询特定 Collection 中的数据等操作。User:与用户管理相关的对象,允许用户管理数据库用户的凭证和角色,如更新用户凭证或查看用户详细信息。
-
对象名称:要控制访问的对象的具体名称。例如
- 如果对象类型为
Global,则必须将对象名称设置为通配符 (*),表示指定类型的所有对象。 - 如果对象类型是
Collection,对象名称就是一个 Collection 的名称。 - 如果对象类型为
User,对象名称就是数据库用户的名称。
- 如果对象类型为
-
用户:与 Milvus 交互的人或应用程序,由用户名和相应的密码组成。
-
权限:定义可执行的操作和可访问的资源。权限不直接授予用户,而是分配给角色。
-
角色:定义用户对某些对象所拥有的一系列权限。角色一旦与用户绑定,用户就会继承授予该角色的所有权限。
举例说明:授予权限
下面的代码片段展示了如何在特定 Collection 上向角色授予CreateIndex 权限:
- Python
- Java
- Node.js
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 角色相关联,则有权获得以下权限:
DescribeCollectionShowCollectionsIndexDetail
对象类型和权限列表
下表列出了启用 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 和用户对象。
下一步
- 了解如何启用 RBAC。