账户模型
最小权限的第一步,是把 admin-ops 与 openclaw-run 分开:前者只用于安装 Node 24、升级 OpenClaw、写入 launchd plist;后者只拥有工作目录、日志目录和网关配置的读写权。不要让守护进程长期以管理员账户运行,也不要把 SSH 登录账户直接作为 OpenClaw 的运行身份。
| 账户 | 允许动作 | 禁止动作 | 验收信号 |
|---|---|---|---|
| admin-ops | 安装、升级、写 plist | 日常处理任务 | sudo 记录可追溯 |
| openclaw-run | 启动 gateway、读白名单 | 修改系统服务 | 无管理员组权限 |
| 审计读取者 | 读取 doctor 包与状态快照 | 改配置、重启服务 | 只读凭据 |
- 痛点 1:单账户部署会把安装权限和运行权限混在一起,离职、外包交付和事故复盘都难拆。
- 痛点 2:只做日志脱敏不能证明出站边界,欧洲客户更关心哪些域名被允许访问。
- 痛点 3:doctor 输出如果只在终端看一眼,缺少时间戳、版本号和 gateway 状态,无法进入验收包。
launchd 标签
建议标签使用 com.openclaw.gateway.eu-de,工作目录放在 /opt/openclaw,日志放在 /var/log/openclaw。由 admin-ops 写入 plist 后,使用 launchctl print gui/<uid>/com.openclaw.gateway.eu-de 验证归属,再切回 openclaw-run 执行 openclaw gateway status --json。如果 status 中的 bind、pid、version 与预期不一致,先不要进入白名单验收。
白名单模板
这篇文章与已有日志脱敏主题的区别在于:这里不展开 redactPatterns,而把重点放在 欧盟出站域名白名单。模板按用途分组,先允许 OpenClaw 控制面、Node 包源、公司 Git/Registry 与必要监控域名,再显式拒绝通配公网。每个域名必须写用途、负责人和过期复核日,避免“临时放开”长期沉淀。
| 分组 | 示例 | 验收方式 |
|---|---|---|
| 控制面 | openclaw.example.eu | doctor egress 通过 |
| 依赖源 | registry.npmjs.org / mirror.internal | Node 24 安装可复现 |
| 代码与镜像 | git.company.eu / ghcr.io | CI 拉取 p95 有记录 |
验收清单
落地顺序保持短链路:1)在德国节点开通独占 Mac mini M4;2)用 admin-ops 安装 Node 24 与 OpenClaw v2026.5.x;3)创建 openclaw-run 并迁移工作目录权限;4)执行 openclaw onboard --non-interactive;5)加载 launchd 标签;6)导入白名单模板;7)运行 openclaw doctor --non-interactive --output json;8)追加 openclaw gateway status --json;9)把命令、退出码、JSON 和审批单一起归档。
FAQ
是否必须使用德国节点?如果客户、代码仓库或审计团队在欧盟,德国法兰克福节点能让远程 Mac、控制面和出站审计处在更容易解释的地理边界内。
能否只跑 doctor?不建议。doctor 证明配置健康,gateway status 证明当前进程状态,二者合并才适合作为最小可复现验收。
推荐什么套餐?试点阶段用 Mac mini M4 16GB 建基线;并发构建、移动端真机调试或多仓 Registry 拉取较重时,升级 24GB/32GB,并把租期与季度合规复核对齐。
把账户拆分和出站白名单做成可复核上线包
先阅读帮助中心确认 SSH/VNC 与开通流程,再回到博客复用 OpenClaw 检查清单,最后选择德国节点 Mac mini M4 套餐完成试点。