安全与权限控制
为 IM 渠道的机器人设置访客权限,控制哪些用户可以让数字人执行哪些操作。
背景
没有权限控制时,任何给机器人发消息的人都拥有和你本地操作 Halo 相同的权限——包括执行 Shell 命令、读写文件等高危能力。
对于对外开放的机器人(比如给全公司用的企业微信机器人),这是一个安全风险。
权限控制功能让你区分"管理员"(Owner)和"访客"(Guest),并精细控制访客能使用的工具范围。
开启方式
在 设置 → 消息通道 中,展开对应的机器人实例卡片,找到 Permission Control 开关,打开即可。
每个机器人实例的权限配置独立,不同机器人可以有不同的策略。
身份识别:Owner vs Guest
| 角色 | 判断依据 | 权限 |
|---|---|---|
| Owner(管理员) | 发消息者的平台 User ID 在 Owner 列表中 | 无限制,等同于本地操作 |
| Guest(访客) | 不在 Owner 列表中的所有人 | 受 Guest Policy 约束 |
在 Owner 输入框中填写管理员的企业微信/微信 User ID(每行一个,或用逗号分隔)。
如何获取 User ID?
直接问数字人:"我的 User ID 是什么?",数字人会在回复中告知。
访客权限配置
开关:是否允许访客使用数字人
- 关闭:非 Owner 的消息直接被拒绝,数字人不响应
- 开启:访客可以和数字人对话,但受下方工具限制约束
工具权限(Tool Permissions)
控制访客能使用哪些 Claude Code 内置工具,按风险级别分为四组:
| 分组 | 包含工具 | 访客默认 |
|---|---|---|
| 文件读取 | Read、Glob、Grep | ✅ 开启 |
| 网络 | WebFetch、WebSearch | ✅ 开启 |
| 其他 | TodoWrite、Skill 等 | ✅ 开启 |
| 高级(危险) | Bash、Write、Edit、NotebookEdit | ❌ 关闭 |
高级工具默认关闭
Bash(执行任意命令)、Write/Edit(写文件)默认对访客禁用。
开启前请确认:你信任所有可能向机器人发消息的人。公司内网机器人面向全员时,建议保持关闭。
Halo 能力(Halo Capabilities)
控制访客是否能触发 Halo 特定功能:
| 能力 | 说明 | 默认 |
|---|---|---|
| AI 浏览器 | 控制浏览器自动化 | ❌ 关闭 |
| 邮件 | 发送/读取邮件 | ❌ 关闭 |
| 通知 | 向其他渠道发送通知 | ❌ 关闭 |
| 数字人管理 | 创建/修改/删除数字人 | ❌ 关闭 |
| 文件发送 | 通过 IM 发送文件 | ❌ 关闭 |
根据实际需求逐一开启,遵循最小权限原则。
MCP 服务器访问
你安装的第三方 MCP 服务器默认对访客不可见。可以在权限面板中逐个打开,允许访客使用特定 MCP。
系统内置的安全 MCP(web-search、halo-report、halo-memory)始终对访客可用。
典型配置示例
场景 1:公司全员知识库机器人
只允许查询,不允许执行任何操作:
- 访客开启:✅
- 工具:仅开启"文件读取"和"网络"
- 高级工具:❌
- 所有 Halo 能力:❌
场景 2:研发团队自动化助手
允许查询和运行代码,但不允许外发通知:
- 访客开启:✅
- 工具:文件读取 + 网络 + 高级(Bash/Write/Edit)
- 通知/邮件:❌
- 其他 Halo 能力:按需
场景 3:只有我自己用的私人助理
直接在 Owner 列表中填写自己的 User ID,不开访客访问即可。
企业级默认配置
面向企业部署
企业版 Halo 可以在 product.json 中统一设置所有新机器人的默认权限策略(imChannels.permissionControl),无需每个实例手动配置。联系管理员或查看部署文档了解详情。