为了确保 OpenClaw 既能顺畅运行,又不至于因权限过大导致安全隐患,建议在飞书开发者后台 - 权限管理中,按照以下清单进行勾选。
这份清单分为基础必备和进阶功能两部分:
- 基础必备权限(无论个人还是团队,必须开启)
这些权限保证机器人能"听到"指令并"开口"说话:
- im:message:p2p_msg:readonly (接收单聊消息) ------ 允许机器人和你 1 对 1 聊天。
- im:message:group_at_msg:readonly (接收群聊中@机器人的消息) ------ 团队场景下,机器人只响应被 @ 的内容,保护群隐私。
- im:message.p2p_msg:send (发送单聊消息) ------ 机器人回复你的基础。
- im:message.group_msg:send (发送群聊消息) ------ 机器人在群里回复大家的必要权限。
- 进阶功能权限(按需开启)
如果你需要 OpenClaw 处理文档、查看成员信息或发送富媒体内容,请有选择性地开启:
- 处理文档/表格:
- drive:file:readonly (读取云文档/云空间文件) ------ 机器人读取你发给它的 Excel 或文档进行分析。
- sheet:spreadsheet:readonly (读取电子表格) ------ 专门用于自动化报表读取。
- 识别身份(团队场景推荐):
- contact:user.id:readonly (获取用户 ID) ------ 辅助 OpenClaw 区分是谁在发指令,实现权限隔离。
- 发送图片/附件:
- im:resource:upload (上传图片/视频/文件) ------ 如果你让 AI 绘图或生成报表文件发回给你,必须勾选。
⚠️ 安全红线(如非极特殊需求,请保持关闭)
- im:message:everything:readonly (接收所有消息) ------ 极度危险。开启后机器人会监听群内所有闲聊,极易导致公司内部非公开谈话被上传至 AI 大模型,触发严重合规风险。
- contact:contact:readonly (获取通讯录所有信息) ------ 除非你需要机器人根据职位进行复杂的审批流跳转,否则不要开启。
配置小贴士:
- 发布版本:在勾选完权限后,必须在飞书后台点击"版本管理与发布",创建一个新版本并申请上线(个人使用通常秒过),权限才会正式生效。
- IP 白名单:在"安全设置"中,强烈建议填入你部署 OpenClaw 机器的固定公网 IP,防止 App Secret 泄露后被他人冒用。
在 OpenClaw(或类似的开源项目)中,直接将 App ID 和 App Secret 以明文形式写在配置文件(如 config.yaml 或 settings.json)中是最不安全的做法,一旦代码误上传或服务器被入侵,凭据将直接暴露。
为了兼顾"安全"与"可用",建议采用以下三种递进式的配置方案:
方案一:环境变量法(最推荐 / 行业标准)
不要在配置文件里写死密钥,而是通过操作系统的环境变量注入。
- 修改配置文件:在 OpenClaw 的配置文件中,将对应项设为引用变量(具体格式视 OpenClaw 版本而定,通常如下):
lark:
app_id: ${LARK_APP_ID}
app_secret: ${LARK_APP_SECRET}
- 在服务器/本地设置环境:
- Linux/Mac: 在终端执行 export LARK_APP_ID="你的ID"。
- Docker: 在 docker-compose.yml 中配置:
environment:
-
LARK_APP_ID=cli_xxxxxxxx
-
LARK_APP_SECRET=xxxxxxxxxxxx
方案二:使用 .env 隐藏文件(本地开发常用)
如果你是在本地运行 Python 环境,可以使用 .env 文件配合 .gitignore。
- 在项目根目录新建一个 .env 文件:
csharp
LARK_APP_ID=cli_a1b2c3d4
LARK_APP_SECRET=secret_e5f6g7h8
- 关键步骤:确保你的 .gitignore 文件中包含了 .env,防止它被同步到 GitHub 等代码仓库。
- OpenClaw 启动时会自动加载该文件中的配置。
方案三:配置文件权限锁定(如果必须写在文件里)
如果你一定要直接写在 config.yaml 中,请务必执行以下安全加固:
- 限制文件权限:在 Linux 系统中,执行以下命令,确保只有运行 OpenClaw 的用户可以读取该文件:
csharp
chmod 600 config.yaml
(这会防止服务器上其他低权限账号偷看你的配置)
- 多层加密(进阶):部分用户会使用 sops 或 ansible-vault 对配置文件进行加密,只有在启动输入动态口令时才解密。
💡 避坑指南:
- 严禁硬编码:绝对不要在 main.py 或任何 .py 源代码中直接写 app_id = "xxx"。
- 定期轮换:建议每 3-6 个月在飞书后台点击"重置 App Secret",并同步更新你的部署环境。
- 日志屏蔽:检查 OpenClaw 的日志输出,确保它不会在启动时把你的 Secret 打印到控制台或 log 文件中。