跳到内容
MagicFrog

安全模型

合规不靠口头承诺——六道机制,逐条可验证

每一条都写进产品行为,并给出验证方法。出问题时,五分钟回答:谁、何时、对哪台机器、做了什么。

→

企业 Agent OS 的安全边界不该由厂商承诺,而该由机制构成。下面六张卡,每张是一个可独立验证的事实。

从路由到数据自有,按攻击面从外到内排列。

六张卡下的每条要点都是可执行断言:任何一条与产品行为不符,都按 BUG 处理进代码仓库——验证方法就在每张卡上。

这六条机制的另一个共同点:都不需要你「相信」MagicFrog 会守约——路由看代码,审计看记录,加密看密钥在谁手里。验证材料全部在你这边。

如果你只想记住一句:在 MagicFrog 里,任何动作都可以回答「在哪台机器上、谁批准的」——记住这句,其余五条都是它的展开。

routing

01

显式目标路由

每一次浏览器、命令、文件操作都点名目标 computerId。错机、离线、越权——显式失败,绝不静默换一台。

  • 缺 ID、错配、撤销、能力不足,一律明确失败
  • 资源句柄绑定原 computerId,禁跨机串用
  • 操作记录标注实际执行机器
audit

02

操作可审计可回答

每一次操作都能回答两个问题——落在哪台机器、谁批准。审计与操作同事务落库,不是事后补记。

  • 批准目标 = 实际执行目标
  • 结果与审计明确目标机器
credentials

03

凭据与加密

管理员口令以 argon2id(PHC 形态)保存,明文永不落存储;敏感字段字段级加密;模型密钥 BYOK 归企业自己的账号,不进客户端产物。

  • 首启改密完成前不得进入工作台
  • 口令以 argon2id(PHC 形态)保存,明文永不落存储
  • 模型密钥 BYOK,不进客户端产物
egress

04

网络出口 fail-closed

Agent 经你授权的客户端出口访问内网系统;断线、过期、撤销、策略失败一律断路,禁退直连。

  • 出口选择是显式生命周期
  • 切换出口不复用旧通道
lifecycle

05

设备生命周期

已有电脑与服务器一条命令 enroll 登记;unenroll 注销只撤销接入——不关机、不重装、不碰原机数据。

  • enroll 登记一条命令完成
  • unenroll 注销只撤销接入
  • 不关机、不重装、不碰原机数据
data-ownership

06

数据自有

自部署默认 SQLite,数据文件落在你自己的服务器。本宣传站自身零第三方追踪——说数据自有,先自己做到不偷看。

  • 默认且唯一必需的数据库形态:SQLite
  • 数据文件落在你自己的服务器
  • 本宣传站自身零第三方追踪

六条机制共用同一个设计决定:显式优于隐式。失败是显式的、授权是显式的、审计是显式的——没有需要信任的暗箱。

六条机制都不是配置出来的,是产品代码里写死的默认行为——这正是「可逐条验证」的含义。

一次调用的数据流向

从你下达到结果落库,每一步都有名字:谁发起、去哪台机器、经什么出口、谁批准、记录落在哪。

一条浏览器操作从指令到落库的五步——任何一步不满足,操作在原地失败。

数据流图也回答一个常见质疑:agent 会不会顺手碰别的机器?答案在第二步——路由层不认识顺手,只认识 computerId。

任何一步显式失败,操作就地停止:没有重试风暴,没有静默换路,没有超时后改投别的机器。失败是这条数据流里最诚实的结果。

  1. 数据流 · 01

    指令进入控制面

    你在工作台下达任务,指令与上下文写入你服务器上的会话记录。

  2. 数据流 · 02

    路由按目标机器解析

    中间件强制目标纪律:没有点名目标就拒绝派发;点名了就校验在线、归属与能力。

  3. 数据流 · 03

    出口按会话绑定

    流量经 direct 或你授权的客户端隧道离开;隧道失效即断路,禁退直连。

  4. 数据流 · 04

    设备端二次授权

    目标机器的 daemon 核对方法与声明能力,超出能力的操作显式拒绝。

  5. 数据流 · 05

    审计与操作同事务

    执行结果与审计记录一并落库,写明工具、动作、目标机器与毫秒时间戳。

五个环节里没有任何一步依赖「系统会做对」的信任:每一步都是校验,失败就近显式暴露。

部署信任边界

哪些东西落在你的服务器里,哪些东西永远不进来。

信任边界画在服务器边界上:边界内的每一项都可自行验证。

信任边界的检验方法很朴素:拔掉外网,你的 MagicFrog 还能跑吗?能——除了模型调用走你的密钥出网,其他一切都在本地闭环。

看完这份边界图,下一个动作是跑一次真实部署验证它。

边界之内 · 你的服务器

  • SQLite 数据库:账号、任务、会话与审计,全在你的数据目录
  • 字段加密密钥:你生成、你保管,丢了无法恢复
  • 语音端点:默认 loopback,识别与合成不出你的基础设施
  • 模型密钥:BYOK 存在你的服务端,不进客户端产物

边界之外 · 永不进来

  • 没有第三方追踪:宣传站自身零埋点,工作台无遥测上报
  • 没有订阅与厂商目录:只有 BYOK 通道
  • 没有多租户:一台服务器只服务你的账号
  • 没有隐式提权:member 不会变成 owner,产品内不存在该路径

边界之内的一切都可以备份、迁移、审计;边界之外的一切都依赖不到。这就是自部署的实际含义。

安全边界,七个常见追问

关于加密、审计与隔离的五个追问。更底层的问题,直接读文档对应章节。

审计记录能对接我们自己的日志系统吗?

能。审计 sink 可插拔,默认是 stderr 上的结构化日志行,部署可以把工具审计接进自己的日志收集处。

字段加密密钥丢了怎么办?

被加密的列无法恢复——这是刻意的 fail-closed。密钥随数据目录一起备份;轮换密钥走重加密迁移,全程没有明文落盘窗口。

初始管理员密码会被强制更换吗?

会。首启写入的账号标记 must_change_password,改密完成前每个业务端点都以 403 拒绝,客户端只呈现改密界面。

浏览器会话之间怎么隔离?

每个会话是独立浏览器实例:独立进程、独立 profile 目录、独立调试端口。句柄跨会话或跨机器无法解析。

模型供应商能看到我的业务数据吗?

模型调用看到的是该次会话发送的内容,走你自己的密钥与你选的供应商。MagicFrog 不设托管层,也不代理你的模型流量。

OAuth 登录默认开着吗?

默认关闭,路由不存在零暴露。要开就在 admin 后台配置 client id 与 secret,并设置 redirect URI 严格校验和邮箱域名白名单;自建账号始终是主通道。

出口吊销多久生效?

五秒内。先 SIGTERM 后 SIGKILL,硬性五秒上界;每一条经该代理路由的连接都被主动终止,不是等超时。

最后一个提醒:安全是部署出来的,不是采购出来的。这套机制的每一项都依赖你按文档部署——密钥自己生成、改密自己完成、出口自己授权。做到这三件,这页纸上的每一条都成立。

还有更细的问题,文档里都有对应章节:自部署讲加密与密钥,路由讲授权两层,出口讲 fail-closed 状态机。

安全边界不是我们发给你的,是你自己画出来的;MagicFrog 做的,是让每一条边界都清晰可见。