拓冰建站拓冰建站
首页 / 资讯中心 / 正文

TeamAI 模型配置下发安全:apply_model_config 如何完整保护 API 密钥

TeamAI 模型配置下发安全apply_model_config 如何完整保护 API 密钥【免费下载链接】teamai-cliMake Every Team AI Native项目地址: https://gitcode.com/GitHub_Trending/te/teamai-cliTeamAI是一款让团队 AI 原生的命令行工具Make Every Team AI Native。当企业后端通过模型配置下发推送apply_model_config任务时任务里携带的API 密钥代理网关 Token会落到你的本地配置文件。密钥一旦泄露就是资损TeamAI 为此设计了五层纵深防御确保密钥只在落盘、校验、隔离、防冲突、防回传等每个环节都被严格保护 ️背景模型配置下发的工作流程TeamAI 的本地代理会定期与后端同步。后端可以在同步响应中下发一条apply_model_config任务cmd字段是一段 JSON描述一个模型候选集包含provider、model_id、base_url以及敏感的api_key。客户端收到后会校验 payload把模型配置写入对应 AgentCodeBuddy、WorkBuddy 或 Claude的本地文件再向服务端回执成功或失败。完整协议说明见 docs/usage-guide.zh-CN.md。关键实现集中在 src/local-agent.ts 的applyModelConfig函数中。第一层严格的载荷校验拒绝一切脏输入下发内容是不可信的远程数据解析入口 parseDeliveredModels 做了多重安检必填字段强校验provider、model_id、name、base_url、api_key必须是非空字符串见 requireModelString任何一项缺失都直接抛错并回执失败URL 协议白名单base_url必须是合法的 http/https 地址防止被塞入file://、javascript:等危险协议原型污染防护model_id为__proto__、prototype、constructor时直接拒绝第 2184 行去重与类型约束重复的model_id、非法的max_tokens数值都会被拦截。任何一条不合规任务立即失败一个字节都不会写入磁盘。第二层文件权限 0600 原子写入密钥藏在只有属主能读的角落真正落盘的是 writeModelJson两个细节值得新手理解权限模式0600写入的临时文件在原子 rename 之前就被设为仅属主可读写。注释里写得很明白——如果在 rename 之后再 chmod中间会存在一个符号链接跟踪的时间竞争窗口TOCTOU先设权限再替换才能彻底堵住。符号链接保留如果你的配置文件是指向别处的符号链接TeamAI 会解析到真实路径写入绝不替换你管理的链接。同样的 0600 权限策略也用于登录凭证文件见 writeTokenFile。第三层Gitignore 自动隔离防止密钥被 commit 出去workspace 级的模型配置会写入workspace/.codebuddy/models.json这个文件含凭证。TeamAI 会自动在 ensureWorkspaceModelGitignore 中创建或更新.codebuddy/.gitignore把models.json排除在版本控制之外。另外workspace 级下发只在目标路径已注册在 reporter 的 workspace bindings 中时才被接受未注册的路径一律拒绝——后端无法把配置种到任意目录。第四层用户配置优先冲突时让路并留痕这是最容易翻车的地方Agent 的配置文件是用户自己维护的。TeamAI 的做法哈希所有权登记每次托管写入后把内容哈希记入 manifestentryHash。下次同步时只有哈希匹配的条目才被视为TeamAI 管理的用户自己添加的模型条目原样保留即使 model_id 相同双通道冲突检测针对 Claude 网关不仅检查~/.claude/settings.json的env还检查进程 shell 环境变量第 2424-L2446 行。如果你用 shellexport ANTHROPIC_*配了自己的网关TeamAI 会跳过写入并把跳过的 key 记录到~/.teamai/reporter/errors.jsonl留痕受保护 key 清单ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_API_KEY等十余个敏感环境变量都在保护范围内不误伤其他 Agent不支持的 Agent 直接回执失败绝不会写错配置文件。第五层API 密钥永不回传——只留在本地磁盘上报方向同样安全。模型清单回传时buildModelReport 相关逻辑只包含provider、model_id、name和source: enterpriseapi_key字段永远不会出现在上报载荷中。官方文档的原话是api_key 不会被回传——ProxyToken 只留在本地磁盘。再加上 src/utils/redact.ts 提供的全局脱敏能力对 PEM 私钥、JWT、sk-前缀 token、Bearer头、连接串密码等做正则遮罩即使日志意外捕获了密钥形态的文本也会被替换为REDACTED:***占位符。安全机制速览防护层机制对应代码位置输入校验必填字段 / URL 白名单 / 原型污染拦截parseDeliveredModels磁盘权限0600 先设权限后原子替换writeModelJson版本控制隔离自动写入.gitignoreensureWorkspaceModelGitignore用户配置保护哈希登记 shell env 冲突检测reconcileClaudeModels密钥不回传上报载荷剥离api_key 日志脱敏redact.ts相关行为均有完整测试覆盖见 src/__tests__/local-agent-model-config.test.ts包括用户 shell 冲突时跳过网关写入等回归场景。写在最后对普通用户来说你不需要理解每一行实现——只要知道密钥校验后才落盘、文件只有你能读、永远不会进 git、永远不会回传服务端你自己的配置永远不会被覆盖。这正是企业级模型配置下发与随手写个配置文件的本质区别。如果想动手体验clone 仓库后运行本地测试套件即可复现上述所有保护行为git clone https://gitcode.com/GitHub_Trending/te/teamai-cli更多端点协议与回执细节欢迎阅读 docs/usage-guide.md 原文。【免费下载链接】teamai-cliMake Every Team AI Native项目地址: https://gitcode.com/GitHub_Trending/te/teamai-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门