文档

安全边界

AgentHub 的安全模型把身份、产品权限、本地执行、IM 事件和模型 API 凭据分为不同层级处理。公开文档只描述边界和原则,不记录生产主机、secret、回滚路径或私有证据。

身份

TokenDance ID 是身份权威:

  • GitHub、Google、Feishu 等第三方 provider 由 TokenDance ID 管理。
  • AgentHub 作为 OIDC relying party 消费 TokenDance ID。
  • Hub Server 发行 AgentHub 本地 session。
  • Desktop/Web 的低风险个性化不能当作 Hub API 授权。

不要把飞书 OAuth、GitHub OAuth 或 Google OAuth 写成 AgentHub 直连登录。

公开官网登录边界要刻意收窄。它可以做产品站个性化,也可以证明 TokenDance ID 跳转链路,但不能作为 Hub API 授权、Edge target 访问或 runtime 执行权限已经完整的证据。

授权

认证之后的授权由 AgentHub 产品本地处理:

  • 用户是否属于某个组织或项目。
  • 用户是否能访问某个 workspace、设备或 Edge。
  • 用户是否能启动、取消、审批或查看某个 run。
  • 用户是否能读取 diff、artifact、日志和审计记录。

权限判断应写入 Hub 审计日志,被拒绝的动作也要可追踪。

授权应发生在具体动作上,而不是只在页面加载时判断。用户打开项目视图、启动 run、批准工具调用、读取 diff、下载 artifact、路由到 Edge target,都是不同的权限决策,也应该分别可审计。

Secret 与凭据

以下内容不能进入前端、卡片 payload、公开日志或公开文档:

  • 模型 API key。
  • Feishu verification token、encrypt key、app secret、tenant token。
  • TokenDance ID client secret。
  • Hub session signing secret。
  • Edge 本地执行 secret。
  • 生产主机路径、备份路径和回滚命令。

TokenDance API key 是模型 API 调用凭据,不是 AgentHub 登录凭据。

公开示例只使用占位符,并避免把真实值放进截图。如果示例需要一个看起来像凭据的字段,使用 <agenthub_session_token><local_edge_token><provider_api_key> 这类名称,并说明归属。不要发布真实 callback payload、refresh token、provider 响应或本地 secret 路径。

本地执行与沙箱

Edge Server 靠近文件系统和进程边界,默认应更保守:

  • 使用 workspace allowlist 限制可访问目录。
  • 高风险工具调用需要审批。
  • Runtime adapter 运行在净化环境中。
  • 文件变更通过 diff 和 artifact 暴露给用户审查。
  • 失败、取消、超时和权限拒绝都要产生事件。

Remote/Cloud Edge、设备证明和 relay/provisioning 仍在开发中,不能写成已经完整可用。

本地执行默认按最小权限处理。UI 应在执行前暴露高风险操作,Edge 层即使在 UI 被绕过时也要执行 workspace policy,adapter 输出应先转成结构化事件,再展示到 Web、Desktop 或 IM 界面。

Feishu/Lark 安全

Feishu/Lark 是协作入口,不是身份系统:

  • 事件进入业务逻辑前必须校验签名和解密。
  • card.action.trigger 需要 3 秒内响应。
  • im.message.receive_v1message_id 去重。
  • 卡片 action 只携带 action id 和业务对象 id。
  • 飞书账号绑定回到 TokenDance ID 完成。

耗时工作应尽快离开 webhook 请求路径。Integration Gateway 先确认、入队,再由 AgentHub 通过后续卡片或消息事件更新用户。Raw prompt、完整文件内容、provider key 和本地绝对路径不应复制进卡片 payload。

审计

建议审计以下事件:

  • 登录、登出、会话刷新和绑定状态变化。
  • 项目成员、设备、workspace allowlist 和权限变更。
  • Run 创建、取消、失败、完成和审批。
  • 工具调用、文件变更、diff、artifact 和 preview。
  • IM 事件处理结果和外部平台错误码。

日志默认不记录完整 prompt、消息全文、secret 或模型原始响应中的敏感内容。

最小可用审计记录应包含 actor、organization/project、目标 Edge 或 workspace id、run id、action、result、timestamp、request id,以及脱敏后的拒绝或失败原因。私有证据保留在运维 workspace;公开文档描述形状,不公开生产日志流。