首页/新闻资讯/正文详情

Codex Router 安全设计深度剖析:凭证隔离、600权限与 Caller Key 轮换的 6 道防线

发布时间:2026/9/26 6:11:36 来源:云帆数科 栏目:资讯中心
Codex Router 安全设计深度剖析:凭证隔离、600权限与 Caller Key 轮换的 6 道防线
Codex Router 安全设计深度剖析凭证隔离、600权限与 Caller Key 轮换的 6 道防线【免费下载链接】codex-routerExternal-model router for Codex with guided Kimi OAuth/API, DeepSeek, safe migration, and rollback.项目地址: https://gitcode.com/gh_mirrors/co/codex-routerCodex Router是一个本地模型路由器让 Codex 等 AI 编程客户端可以安全地调用 Kimi、DeepSeek 等外部模型。对新手来说最容易忽略的问题是这些 API Key 到底存在哪、会不会被别的程序偷走。本文带你拆解它的安全设计——凭证隔离、600 文件权限、回环网络边界与 Caller Key 轮换共 6 道防线全部在官方 SECURITY.md 中有详细说明。先搞清楚为什么路由器需要一套独立保险柜Codex Router 的核心思路是信任根分离它不复用 Codex 自己的凭证体系而是建立一套独立的本地密钥随机 Caller Key、内部服务密钥、私有状态目录。这样即使某一方的凭证泄露也不会牵连另一方。所有敏感状态默认存放在$CODEX_HOME/codex-router目录下关键文件路径定义在 paths.mjs文件用途权限internal-secret随机回环服务密钥600caller-secret客户端请求用的随机能力密钥600kimi-api-key.secret等各提供商 API Key600migrations/回滚快照私有防线一凭证隔离——不同的钥匙只开不同的门这是整套设计中最重要的原则每一类凭证都有专属路径且只能发往对应厂商的端点 Kimi Code OAuth 只从官方 Kimi CLI 目录读取只发往 Kimi 管理端点 DeepSeek API Key 只发往配置的 DeepSeek 端点 ChatGPT 认证仅对原生 GPT、图像、独立联网搜索请求放行。更关键的是不泄漏承诺外部请求永远不会拿到 ChatGPT 账号 ID、Codex 安装 ID 或调用者的授权头任何提供商凭证都不会写进模型注册表、目录、日志或健康检查响应中。详见 SECURITY.md 的 Credential separation 一节。防线二600 私有权限 原子写入杜绝半截密钥POSIX 系统上所有私钥文件都强制600权限仅当前用户可读写。核心实现是 file-security.mjs 中的两个函数protectPrivateFile把文件chmod到0o600writePrivateFile采用临时文件 → 收权限 → 原子替换三步走见 file-security.mjs保证任何时刻磁盘上都不存在一个权限宽松的半成品密钥文件。Windows 用户同样不用担心写入时会通过 PowerShell 重建 ACL把继承规则剥离只授予当前用户 SID 完全控制权限见 file-security.mjs并且会校验文件确实受保护privateFileIsProtected——校验失败就报错而不是静默放行。防线三只监听 127.0.0.1 的回环网络边界路由器和转发器只绑定127.0.0.1不监听任何外部网卡。配合模型请求必须走 JSON、拒绝带浏览器来源头的请求、不返回 CORS 头可以直接挡掉路过式浏览器攻击和同机器上无权限的进程。官方也明确提醒这条边界不防同用户的恶意代码不要改成0.0.0.0、不要做端口隧道SECURITY.md Network boundary 一节。防线四随机 Caller Key 藏在 URL 路径里每个受管客户端的接入地址形如http://127.0.0.1:端口/_codex-router/随机密钥/v1。密钥由 48 字节密码学随机数生成secret.mjs校验时使用恒定时间比较防止时序侧信道caller-auth.mjs。好处很直观密钥本身就是路径的一部分猜不到 URL 就进不了门也不需要把密钥塞进环境变量或配置文件。防线五Caller Key 轮换——带进度存档的原子操作这是全文最值得细看的部分。轮换密钥听起来简单但如果中途崩溃客户端会指向一个永远 401的地址。Codex Router 用三件套解决这个问题操作日志Journalcaller-key-rotation-journal.mjs 定义了严格的状态机prepared → service-stopped → secret-swapped → clients-refreshed → service-started → verified每一步落盘崩溃后重启可精确续跑或回滚互斥锁caller-key-rotation-lock.mjs 保证同一时间只有一个轮换在跑避免两个进程互相覆盖原子交换与回滚swapCallerCapability 先备份旧密钥再替换新密钥任一步失败就把旧密钥换回来并报错恢复流程 recoverPendingCallerKeyRotation 还会先验证回滚密钥的摘要和权限不匹配就失败关闭绝不动正在健康运行的服务。完成后系统还会双向验证新密钥能拿到模型列表旧密钥必须返回 401verifyCallerRotation。防线六脱敏输出——密钥不跟着截图和日志跑即使前 5 道防线都守住了密钥也可能出现在错误信息里漏网。redactCallerUrl 会把所有含密钥的 URL 替换成[REDACTED]覆盖 doctor 输出、支持包和错误消息。配置管理器同样会在首次修改 Codex 配置前生成.pre-codex-router备份并原子重写、收紧权限SECURITY.md Configuration safety 一节。新手自查清单如何验证自己的安全状态✅ 运行doctor命令检查权限与配置输出经过脱敏✅ 查看状态目录权限internal-secret、caller-secret应为600secret.mjs 提供状态检查✅ 确认监听地址是127.0.0.1而非0.0.0.0✅ 分享截图前检查 URL必要时手动打码生成路径✅ 需要轮换时执行caller-key rotate全流程自动备份、验证、可回滚。总结6 道防线各管一段防线一句话概括核心源码凭证隔离每把钥匙只开自己的门SECURITY.md600 权限原子写入 严格 ACLfile-security.mjs回环边界只监听 127.0.0.1SECURITY.mdCaller Key随机密钥藏进 URL 路径caller-auth.mjs安全轮换状态机日志 锁 回滚caller-key-rotation.mjs脱敏输出密钥永不进入日志caller-auth.mjs对普通用户而言这套设计意味着你只管正常接入各家模型密钥的存储、权限、轮换与泄漏防护已由 Codex Router 在本地默默完成。【免费下载链接】codex-routerExternal-model router for Codex with guided Kimi OAuth/API, DeepSeek, safe migration, and rollback.项目地址: https://gitcode.com/gh_mirrors/co/codex-router创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Dify本地部署镜像拉取失败的三大核心原因与修复方案
Dify本地部署镜像拉取失败的三大核心原因与修复方案

1. 为什么Dify镜像拉取失败不是“网络不好”这么简单Dify本地部署时卡在docker pull阶段,终端反复输出pull access denied、manifest for difyai/dify:latest not found,或者干脆卡死在Waiting for download...——这是2024年Q2以来我收到最多的技术咨询… · 2026/9/26 6:11:30

SpringBoot+Vue个性化图书推荐系统:协同过滤算法与毕设落地实践
SpringBoot+Vue个性化图书推荐系统:协同过滤算法与毕设落地实践

每年这个时间点,我都能在技术社区里刷到大量"毕设选题求助帖"——"有没有适合Java Web的毕设题目""SpringBoot项目有没有推荐""图书管理系统是不是太老套了"。说实话,图书管理系统确实烂大街了,但如… · 2026/9/26 6:11:30

别让侧躺看动画悄悄伤眼,屏幕时间管理这样做
别让侧躺看动画悄悄伤眼,屏幕时间管理这样做

很多家长第一次遇到这个问题,多半是在某个哄睡的傍晚:孩子已经躺到床上了,却吵着要看动画片,你顺手把手机或平板递过去,他就侧过身,半撑着头,眼睛一眨不眨地盯着屏幕。你心里隐约觉得哪里不对&a… · 2026/9/26 6:11:30

会议录音总搞不清谁说了啥?实测5款区分发言人的录音转文字工具,帮你告别“听两小时、猜两小时”
会议录音总搞不清谁说了啥?实测5款区分发言人的录音转文字工具,帮你告别“听两小时、猜两小时”

你有没有过这样的经历:一场两小时的跨部门会议,七八个人轮流发言,中间穿插几次抢话和私下讨论。会后你打开录音文件,听着听着就懵了——刚才那段到底是谁说的?是市场部张经理还是技术部李组长?两个人的声音… · 2026/9/26 6:39:40

金融技术服务合规边界与内容生成伦理
金融技术服务合规边界与内容生成伦理

我无法根据当前输入生成符合要求的博文。原因如下:项目标题为"financial-services",这是一个高度泛化的行业领域术语,本身不构成具体可操作、可拆解的项目;项目正文为空,未提供任何实质性描述(如… · 2026/9/26 6:39:40

POI与EasyExcel深度对比:底层原理、性能实测与复杂表头处理实战
POI与EasyExcel深度对比:底层原理、性能实测与复杂表头处理实战

去年年中我们团队做一个数据中台项目,技术选型讨论会上出现了很有意思的一幕:后端组里有三个老开发坚持用Apache POI,理由是“老牌劲旅更稳,社区更新也勤”;另外两个新来的同事用EasyExcel写过一阵子,说“P… · 2026/9/26 6:39:40

【Spring AI 入门与实战】04-模型抽象层-一行配置切换模型
【Spring AI 入门与实战】04-模型抽象层-一行配置切换模型

模型抽象层:一行配置切换 OpenAI/DeepSeek/通义/智谱 本文是专栏《Spring AI 入门与实战》的第 4 篇,上一篇我们聊了《第一个 AI 应用:ChatClient 十分钟上手》。这一篇钻到 ChatClient 背后:ChatModel/EmbeddingModel 抽象是怎么… · 2026/9/26 6:39:34

挂轨式墙面收纳系统的结构原理:轨道、定位件与免工具调节是怎么实现的
挂轨式墙面收纳系统的结构原理:轨道、定位件与免工具调节是怎么实现的

# 挂轨式墙面收纳系统的结构原理:轨道、定位件与免工具调节是怎么实现的> 面向技术社区与行业观察者,讲清一套「竖向轨道 挂接组件」系统在结构上是怎么成立的。> 本文不涉及具体报价与交付政策;文中结构参数为品类通用信息&#xff0… · 2026/9/26 6:39:34

NVIDIA Model Optimizer 安装指南:Linux 与 Windows 全平台环境搭建与验证实战
NVIDIA Model Optimizer 安装指南:Linux 与 Windows 全平台环境搭建与验证实战

【免费下载链接】Model-Optimizer A unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks… · 2026/9/26 6:39:34

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码