跳至主要内容
前往文档
⌘U
Weaviate 数据库

使用 Weaviate 的 APIs 和工具开发 AI 应用

部署

部署、配置和维护 Weaviate 数据库

Weaviate Agents

使用 Weaviate 构建和部署智能代理

Weaviate Cloud

在云端管理和扩展 Weaviate

更多资源

集成
贡献者指南
活动 & 工作坊
Weaviate Academy

需要帮助?

Weaviate Logo询问 AI 助手⌘K
社区论坛

RBAC 概述

v1.29 中添加

基于角色的访问控制 (RBAC) 在 Weaviate 中从 v1.29 版本开始可用。

Weaviate 通过基于 授权级别,根据 认证用户身份提供差异化访问权限。

如果启用了基于角色的访问控制 (RBAC),则可以根据用户的角色进一步限制访问权限。下图说明了 Weaviate 中的 RBAC 模型,其中访问权限由定义角色和向其分配特定权限来控制。这些权限决定了用户可以对指定资源类型执行哪些操作。

主要组件是

  • 用户:将各个用户(例如 user-auser-b)分配给特定角色。

  • 角色:每个角色封装一组权限。这种抽象化使您可以管理一组用户可以执行的操作。

  • 权限:权限由三个部分组成

    • 操作:诸如创建、读取、更新、删除和管理等操作。
    • 资源:这些操作的具体目标,例如集合和备份。
    • 可选约束:资源特定的约束,例如按集合名称过滤。

此 RBAC 系统可确保用户仅具有其角色所需的访问权限,从而提高 Weaviate 中的安全性和可管理性。可以通过 Weaviate REST API 直接或通过 客户端库 以编程方式管理角色和权限。

角色

预定义角色

Weaviate 附带一组预定义角色。这些角色是

  • root:root 角色对 Weaviate 中的所有资源具有完全访问权限
  • viewer:viewer 角色对 Weaviate 中的所有资源具有只读访问权限

可以通过 Weaviate 配置文件使用 AUTHORIZATION_RBAC_ROOT_USERS 环境变量将 root 角色分配给用户。无法修改预定义角色。但是,可以通过 Weaviate API 向用户分配其他角色。

也可以通过 Weaviate API 分配所有角色,包括预定义角色。预定义角色无法修改,但可以分配或撤销用户的权限。

有关如何将预定义角色分配给用户的更多信息,请参阅 RBAC:配置页面。

自定义角色

任何未分配预定义角色的已认证用户默认情况下都没有角色或权限。

可以通过具有适当权限来管理角色的 Weaviate 用户修改这些用户的权限。这允许创建自定义角色,并根据需要将其分配给用户。

可以使用 预定义的 root 角色或具有 manage_roles 权限的自定义角色来执行角色管理。

角色管理权限

在向管理角色的角色分配权限时请务必小心。这些权限可用于通过向用户分配其他角色来提升权限。仅将这些权限分配给受信任的用户。

权限

Weaviate 中的权限定义了用户可以对特定资源执行哪些操作。每个权限由以下组成

  • 资源类型(例如,集合、备份)
  • 访问级别(读取、写入、更新、删除、管理)
  • 可选的资源特定约束

可用权限

可以使用以下资源、访问级别和可选约束定义权限

资源类型访问级别可选的资源特定约束
角色管理
创建角色
读取角色信息
更新角色权限
删除角色

角色名称过滤器

  • 字符串或正则表达式:指定可以管理哪些角色

角色范围

  • all:允许使用所有权限进行角色管理

  • match:仅允许使用当前用户权限级别进行角色管理

用户管理
创建用户
读取用户信息
更新/轮换用户 API 密钥
删除用户

向用户分配和撤销角色

用户名过滤器

  • 字符串或正则表达式:指定可以管理哪些用户

集合

(仅集合定义,数据对象权限是单独的)

创建集合
读取集合定义
更新集合定义
删除集合

集合名称过滤器

  • 字符串或正则表达式:指定可以管理哪些集合

租户
创建租户
读取租户信息
更新租户
删除租户

集合名称过滤器

  • 字符串或正则表达式:指定可以管理哪些集合的租户

租户名称过滤器

  • 字符串或正则表达式:指定可以管理哪些租户

数据对象
创建对象
读取对象
更新对象
删除对象

集合名称过滤器

  • 字符串或正则表达式:指定可以管理哪些集合的对象

租户名称过滤器

  • 字符串或正则表达式:指定可以管理哪些租户的对象

备份管理备份

集合名称过滤器

  • 字符串或正则表达式:指定可以管理哪些集合的备份

集群数据访问读取集群元数据
节点数据访问以指定的详细程度读取节点元数据

详细程度

  • minimal:所有集合的最小读取权限。

  • verbose:指定集合的详细读取权限。

集合名称过滤器(仅适用于 verbose

  • 字符串或正则表达式:指定可以管理哪些集合

集合别名
创建别名
读取别名
更新别名
删除别名

别名名称过滤器

  • 字符串或正则表达式:指定可以管理哪些别名

复制
创建复制
读取复制
更新复制
删除复制

集合名称过滤器

  • 字符串或正则表达式:指定可以管理哪些集合的对象

分片名称过滤器

  • 字符串或正则表达式:指定可以管理哪些分片

读取组
分配和撤销组成员资格

组名称过滤器

  • 字符串或正则表达式:指定可以管理哪些组

组类型过滤器

  • oidc(目前仅支持 OIDC 用户组)

权限行为

在定义权限时,将权限设置为 False 表示权限未设置,而不是明确拒绝访问。这意味着如果用户具有多个角色,并且一个角色授予权限而另一个将其设置为 False,则用户仍然可以通过授予权限的角色获得该权限。

例如,如果用户具有两个角色

  • 角色 A 将 read 设置为 False,用于集合 X
  • 角色 B 将 read 设置为 True,用于集合 X

用户将具有对集合 X 的读取访问权限,因为角色 B 授予了权限,而角色 A 的 False 值仅仅表示未设置权限,而不是阻止访问。

权限中的名称过滤器

某些权限需要集合名称过滤器才能指定权限适用的集合。

在这种情况下,"*" 充当多字符通配符。例如,将权限设置为 "Test*" 作为集合名称过滤器将把该权限应用于所有以 Test 开头的集合。或者,将权限设置为 "*" 作为集合过滤器将把该权限应用于所有可用集合。

集合和租户权限

集合权限独立于租户权限。

要对属于集合的租户进行操作的权限,用户必须具有该集合的适当租户级别权限。集合级别权限,例如创建集合的权限,不会授予等效的租户级别权限,例如创建该集合的租户的权限。

例如,要在名为 TestCollection 的集合中创建租户,用户必须具有在该集合中“创建”租户的权限。这与创建名为 TestCollection 的集合的权限是分开的。

用户

可以使用 用户管理 API 来创建、删除和列出用户、轮换其 API 密钥以及管理其角色。

更多资源

问题和反馈

如果您有任何问题或反馈,请在 用户论坛 中告诉我们。