跳到主要内容

权限

Open WebUI 提供了一个灵活的权限系统,允许管理员为用户配置访问控制和功能可用性。这实现了对用户在应用程序中可以访问和修改的内容的细粒度控制。

管理员可以通过两种主要方式管理权限:

  1. 默认权限: 通过管理面板 > 用户 > 用户组 > 默认权限设置适用于所有用户(包括管理员)的基础权限。
  2. 用户组权限: 通过管理面板 > 用户 > 用户组创建具有特定权限覆盖的用户组(例如,拥有图像生成访问权限的"高级用户"组)。

拥有 Pending 角色的用户在获得批准之前没有访问权限,Admin 用户拥有完整的管理员访问权限,而 User 账户受下面描述的权限系统约束。

RBAC 范围边界

RBAC 权限控制用户在 Open WebUI 内部能做什么。

RBAC 不替代提供商端的最小权限设计。对于 OpenAI 兼容的提供商/代理(包括 LiteLLM),请使用部署所需最小范围的凭据进行配置。

权限逻辑

Open WebUI 中的权限是累加的。

  • 用户的有效权限是全局默认值和其所有用户组成员资格的组合。
  • True 优先于 False:如果任何来源(全局默认值或任何单个用户组)授予了某个权限,用户拥有该权限。
  • 不存在"拒绝"功能:您不能使用特定用户组来"取消"另一个用户组或全局默认值授予的权限。要限制某个功能,必须在全局默认值用户所属的所有用户组中将其禁用。
最佳实践:最小权限原则

由于权限是累加的,推荐的安全策略是从限制开始:

  1. 最小化全局默认权限:将默认权限(管理面板 > 用户 > 用户组 > 默认权限)配置为仅包含所有用户绝对必须拥有的内容。
  2. 通过用户组授权:创建特定用户组(例如"创作者"、"高级用户")来明确授予高级功能,如图像生成或文件上传。

这种方式确保新用户不会意外获得敏感功能的访问权限,同时允许您通过简单地将用户添加到相关用户组来轻松提升权限。

权限类别

权限分为五个主要类别:工作区共享对话功能设置

1. 工作区权限

控制对"工作区"部分的访问,用户在此创建和管理资源。 某些权限依赖于其他权限(例如,如果无法访问模型工作区,就无法导入模型)。

权限说明
模型访问(父级) 访问模型工作区以创建或编辑自定义模型。
模型导入(需要模型访问) 从 JSON/文件导入模型的能力。
模型导出(需要模型访问) 将模型导出到文件的能力。
知识库访问访问知识库工作区以管理知识库。
提示词访问(父级) 访问提示词工作区以管理自定义系统提示词。
提示词导入(需要提示词访问) 导入提示词的能力。
提示词导出(需要提示词访问) 导出提示词的能力。
工具访问(父级) 访问工具工作区以管理函数/工具。
工具导入(需要工具访问) 导入工具的能力。
工具导出(需要工具访问) 导出工具的能力。
⚠️ 工具访问 = 等同 Root 级别的访问权限

将工具访问权限视为等同 root 的访问权限。 授予用户创建或导入工具的访问权限等同于给予其服务器的 shell 访问权限,因为工具和函数会执行任意 Python 代码。只将此权限授予您信任能直接访问服务器的用户。如果您为不受信任的用户启用此权限,则是在接受在主机上任意执行代码的风险。有关完整详情,请参阅插件安全警告

| 技能访问 | 访问技能工作区以创建和管理可复用指令集。 |

2. 共享权限

控制用户可以与社区共享或公开的内容。

权限说明
共享模型(父级) 共享模型(使其他人可访问)的能力。
公开模型(需要共享模型) 使模型可公开发现的能力。
共享知识库(父级) 共享知识库的能力。
公开知识库(需要共享知识库) 使知识库公开的能力。
共享提示词(父级) 共享提示词的能力。
公开提示词(需要共享提示词) 使提示词公开的能力。
共享工具(父级) 共享工具的能力。
公开工具(需要共享工具) 使工具公开的能力。
共享技能(父级) 共享技能的能力。
公开技能(需要共享技能) 使技能公开的能力。
共享笔记(父级) 共享笔记的能力。
公开笔记(需要共享笔记) 使笔记公开的能力。
对话公开共享(需要共享对话) 生成任何人都可访问(含未认证访客)的对话分享链接的能力。禁用时,用户仍可通过访问控制选择器与特定用户或用户组共享对话,但非管理员的"公开"选项将被隐藏。管理员始终豁免。
日历公开共享(需要功能 > 日历) 让任何具备日历功能的用户对日历进行公开读取或写入的能力。禁用时,通配符访问授权会从日历的创建/更新请求负载中剥离——所有者仍可与特定用户或用户组共享。管理员始终豁免。

3. 对话权限

控制对话界面中用户可用的功能。

权限说明
对话控制(父级) 访问高级对话设置。Valves、系统提示词和参数所必需。
模型 Valves(需要对话控制) 访问模型特定的配置"valves"。
系统提示词(需要对话控制) 编辑对话系统提示词的能力。
参数(需要对话控制) 调整 LLM 参数(如温度、top_k)的能力。
文件上传向对话上传文件的能力。
删除对话删除整个对话的能力。
删除消息删除单条消息的能力。
编辑消息编辑消息的能力。
继续响应对截断的响应使用"继续"功能的能力。
重新生成响应重新生成 AI 响应的能力。
评价响应为响应点赞/踩的能力。
分享对话生成对话分享链接的能力。
导出对话导出对话历史的能力。
语音转文字(STT)使用语音输入的能力。
文字转语音(TTS)使用语音输出的能力。
音频通话使用实时音频通话功能的能力。
多模型选择多个模型进行同步响应的能力。
临时对话(父级) 切换"临时对话"(隐身模式/关闭历史记录)的能力。注意: 为保护隐私,此模式下后端文档解析被禁用。
强制临时(需要临时对话) 限制用户始终使用临时对话(禁用历史记录)。

4. 功能权限

控制对广泛平台能力的访问。

权限说明
API Keys非管理员用户在用户设置中生成个人访问令牌(API Keys)的能力。
笔记访问"笔记"功能。
频道访问"频道"功能。
文件夹使用文件夹整理对话的能力。
网络搜索使用网络搜索集成的能力。
图像生成使用图像生成工具的能力。
代码解释器使用 Python 代码解释器的能力。
直连工具服务器在设置中连接自定义工具服务器的能力。
记忆访问用于持久用户上下文的记忆功能。
自动化非管理员用户访问自动化页面并创建、编辑、运行、暂停或删除自己的定时自动化的能力。
日历访问日历功能,用于创建日历、管理事件和查看共享日历。
自动化权限范围

对于自动化访问:

  1. 非管理员的权限检查:拥有 user 角色的用户需要 功能 > 自动化features.automations)权限。
  2. 管理员免于 features.automations:拥有 admin 角色的用户无需该特定权限即可访问自动化。

默认权限可通过 USER_PERMISSIONS_FEATURES_AUTOMATIONS 进行配置。

日历权限范围

对于日历访问:

  1. 非管理员的权限检查:拥有 user 角色的用户需要 功能 > 日历features.calendar)权限。
  2. 管理员免于 features.calendar:拥有 admin 角色的用户无需该特定权限即可访问日历。

默认权限可通过 USER_PERMISSIONS_FEATURES_CALENDAR 进行配置。

5. 设置权限

控制对用户设置区域的访问。

权限说明
界面设置访问在用户设置中访问和修改界面设置的能力。
API Keys 权限范围

对于 API Key 创建:

  1. 需要全局开关:必须在管理设置 > 通用 > 启用 API Keys 中全局启用该功能。如果此项关闭,任何人都无法生成密钥。
  2. 非管理员的权限检查:拥有 user 角色的用户必须具有 features.api_keys 权限。
  3. 管理员免于 features.api_keys:当 API Keys 全局启用时,拥有 admin 角色的用户可以生成 API Keys,无需该特定权限。
最佳实践:创建管理员用户组

为应对未来的权限变更,请为管理员创建专用用户组:

  1. 通过管理面板 > 用户 > 用户组****创建"管理员"用户组
  2. 将所有管理员用户添加到此用户组
  3. 根据需要向该用户组授予用户可见功能权限(例如,为非管理员组成员授予 API Keys 权限)

这种方式确保当新增的权限适用于管理员时,您可以通过用户组轻松授予所有管理员,而无需修改各个用户设置。它还提供了对哪些管理员可以访问哪些功能的细粒度控制。

环境变量

虽然推荐通过 UI 管理权限,但初始默认值可以通过环境变量设置。这些变量通常以 USER_PERMISSIONS_ 为前缀。

  • ENABLE_IMAGE_GENERATION=True
  • ENABLE_WEB_SEARCH=True
  • USER_PERMISSIONS_CHAT_FILE_UPLOAD=True

有关有效变量的完整列表,请参阅环境配置指南。

本内容仅供参考,不构成任何保证、担保或合同承诺。Open WebUI 按“现状”提供。请参阅您的许可协议 以了解适用条款。