跳到主要内容

权限 (Permissions)

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

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

  1. 默认权限:通过 Admin Panel > Users > Groups > Default Permissions 设置适用于所有用户(包括管理员)的基线权限。
  2. 组权限:通过 Admin Panel > Users > Groups 创建具有特定权限覆盖的用户组(例如,允许访问图片生成的“高级用户”组)。

具有 Pending(挂起)角色的用户在获得批准之前没有任何访问权限,Admin(管理员)用户拥有完整的管理访问权限,而 User(普通用户)账户则受下文所述的权限系统约束。

RBAC 范围边界

RBAC 权限控制的是用户在 Open WebUI 内部可以执行的操作。

RBAC 不能取代服务商端的最小权限设计。对于 OpenAI 兼容的服务商/代理(包括 LiteLLM),请配置具有适合您部署的最小所需范围的凭证。

权限合并逻辑

Open WebUI 中的权限是累加式的。

  • 用户的实际权限是全局默认权限与他们所属的所有用户组成员身份的并集。
  • True 优先于 False:如果任何来源(全局默认权限或任何一个单独的用户组)授予了某项权限,该用户拥有该权限。
  • 没有“拒绝”的能力:您无法使用特定的用户组来“收回”由另一个用户组或全局默认值所授予的权限。要限制某项功能,必须在全局默认权限中将其禁用,并且在用户所属的所有用户组中将其禁用。
最佳实践:最小权限原则

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

  1. 最小化全局默认权限:配置默认权限(Admin Panel > Users > Groups > Default Permissions),仅包含绝对每位用户都应该拥有的权限。
  2. 通过组进行授予:创建特定的用户组(例如 "Creators"、"Power Users")来显式地授予高级功能,如图片生成或文件上传。

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

权限类别

权限被组织为五个主要类别:Workspace(工作区)Sharing(共享)Chat(聊天)Features(功能特性)Settings(设置)

1. 工作区权限 (Workspace Permissions)

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

权限名称描述
Models Access(父级) 访问 Models 工作区以创建或编辑自定义模型。
Models Import(需要 Models Access) 从 JSON/文件导入模型的能力。
Models Export(需要 Models Access) 将模型导出到文件的能力。
Knowledge Access访问 Knowledge 工作区以管理知识库。
Prompts Access(父级) 访问 Prompts 工作区以管理自定义系统 Prompt。
Prompts Import(需要 Prompts Access) 导入 Prompt 的能力。
Prompts Export(需要 Prompts Access) 导出 Prompt 的能力。
Tools Access(父级) 访问 Tools 工作区以管理 Function/Tool。
Tools Import(需要 Tools Access) 导入 Tool 的能力。
Tools Export(需要 Tools Access) 导出 Tool 的能力。
⚠️ Tools 访问权限 = 等同于 Root 的权限

请将 Tools 访问权限视为等同于 Root 的系统权限。 授予用户创建或导入 Tools 的权限相当于给予他们对您服务器的 Shell 访问权限,因为 Tools 和 Functions 可以执行任意 Python 代码。请仅将此权限授予您信任能够直接访问您服务器的用户。如果您为不可信的用户启用此权限,则您正在承担在您的主机上执行任意代码的风险。有关完整细节,请参阅 Plugin 安全警告

| Skills Access | 访问 Skills 工作区以创建和管理可复用的指令集。 |

2. 共享权限 (Sharing Permissions)

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

权限名称描述
Share Models(父级) 分享模型的能力(使他人可以访问它们)。
Public Models(需要 Share Models) 使模型可以公开被发现的能力。
Share Knowledge(父级) 分享知识库的能力。
Public Knowledge(需要 Share Knowledge) 公开知识库的能力。
Share Prompts(父级) 分享 Prompt 的能力。
Public Prompts(需要 Share Prompts) 公开 Prompt 的能力。
Share Tools(父级) 分享 Tool 的能力。
Public Tools(需要 Share Tools) 公开 Tool 的能力。
Share Skills(父级) 分享 Skill 的能力。
Public Skills(需要 Share Skills) 公开 Skill 的能力。
Share Notes(父级) 分享 Notes 的能力。
Public Notes(需要 Share Notes) 公开 Notes 的能力。
Chats Public Sharing(需要 Share Chat) 使聊天分享链接可以被任何人(包括未登录的访客)访问的能力。禁用时,用户仍然可以通过访问控制选择器与特定的用户或组分享聊天,但对非管理员隐藏“公开 (Public)”选项。管理员始终不受此限制。
Calendars Public Sharing(需要 Features > Calendar) 使日历对于每个拥有日历功能的用户公开可读或可写的能力。禁用时,通配符访问授权将从日历创建/更新负载中剥离 —— 所有者仍可以与特定的用户或组分享。管理员始终不受此限制。

3. 聊天权限 (Chat Permissions)

控制用户在聊天界面中可用的功能。

权限名称描述
Chat Controls(父级) 访问高级聊天设置。Valves、系统 Prompt (System Prompt) 和参数 (Parameters) 需要此权限。
Model Valves(需要 Chat Controls) 访问特定于模型的配置“阀门 (Valves)”。
System Prompt(需要 Chat Controls) 为对话编辑系统 Prompt 的能力。
Parameters(需要 Chat Controls) 调整 LLM 参数的能力(例如 temperature, top_k)。
File Upload向聊天上传文件的能力。
Delete Chat删除整个聊天对话的能力。
Delete Message删除单条消息的能力。
Edit Message编辑消息的能力。
Continue Response对被截断的响应使用“继续 (Continue)”功能的能力。
Regenerate Response重新生成 AI 响应的能力。
Rate Response对响应进行点赞/踩的能力。
Share Chat为聊天生成分享链接的能力。
Export Chat导出聊天历史记录的能力。
Speech-to-Text (STT)使用语音输入的能力。
Text-to-Speech (TTS)使用语音输出的能力.
Audio Call使用实时语音通话功能的能力。
Multiple Models选择多个模型以同时生成响应的能力。
Temporary Chat(父级) 切换“临时聊天 (Temporary Chat)”(无痕模式/关闭历史记录)的能力。注意: 出于隐私保护,在此模式下禁用了后端文档解析。
Enforced Temporary(需要 Temporary Chat) 限制用户始终使用临时聊天(禁用历史记录)。

4. 功能特性权限 (Features Permissions)

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

权限名称描述
API Keys非管理员用户在“用户设置”中生成个人访问 Token (API Keys) 的能力。
Notes访问“Notes(便签)”功能。
Channels访问“Channels(频道)”功能。
Folders使用文件夹整理聊天的能力。
Web Search使用网页搜索集成的能力。
Image Generation使用图片生成工具的能力。
Code Interpreter使用 Python 代码解释器 (Code Interpreter) 的能力。
Direct Tool Servers在设置中连接到自定义 Tool 服务器的能力。
Memories访问用于持久化用户上下文的 Memories(记忆)功能。
Automations非管理员用户访问“自动化 (Automations)”页面并创建、编辑、运行、暂停或删除其自己计划的自动化的能力。
Calendar访问日历功能以创建日历、管理事件和查看共享日历。
自动化权限范围

对于自动化 (Automations) 的访问权限:

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

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

日历权限范围

对于日历 (Calendar) 的访问权限:

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

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

5. 设置权限 (Settings Permissions)

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

权限名称描述
Interface Settings Access在用户设置中访问和修改界面设置的能力。
API Keys 权限范围

对于 API key 的创建:

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

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

  1. 通过 Admin Panel > Users > Groups 创建一个“管理员”组。
  2. 将所有管理员用户添加到此组中。
  3. 根据需要向该组授予面向普通用户的特性权限(例如,为非管理员组成员提供 API Keys 权限)。

这种方法确保了在添加适用于管理员的新权限时,您可以轻松地通过该组向所有管理员授予权限,而无需修改单个用户的设置。它还提供了对哪些管理员可以访问哪些特性的细粒度控制。

环境变量

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

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

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

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.