API 密钥与认证边界

自动化密钥带有 nfy_ 前缀,并且刻意只在符合条件的构建(/api/v1/builds/** 与旧版 /api/v1/compile/**)、托管产物、项目、已保存处理器、分析及自停用操作上被识别。source-input download 仍仅限 JWT。仅向 HTTPS API 源站以 Authorization: Bearer … 发送该密钥。不要把它放进查询参数、文件、日志、产物、浏览器代码或工作流输出,也不要跟随会改变源站的重定向。

八个范围彼此独立:build:read、build:write、artifact:read、project:read、project:write、processor:read、processor:write 与 analytics:read。写权限绝不隐含读权限;artifact:read 授予 completed output retrieval,而不是 source-input access。列出项目构建需要同时具备 project:read 和 build:read;提交项目构建需要同时具备 project:write 和 build:write。直接构建或草稿在关联项目时还需要 project:write,包括启动时继承草稿中已保存项目的情况;只要提供 processorId,还需要 processor:read。

仪表盘会话属于不同的认证边界。身份认证、账户、计费、管理和 API 密钥管理操作仍仅限 JWT;唯一例外是密钥可以停用自身。自动化密钥不能替代仪表盘会话。应由人类创建受限密钥,并把一次性秘密直接复制进 CI 提供方;不得将其粘贴到聊天中。

托管产物检索接受仪表盘 JWT,或带有 artifact:read 的自动化密钥,然后授权确切任务。项目任务需要有效的 artifact:output:read;旧版或临时任务使用精确所有者回退。匿名请求、超出该资源边界的路径和不存在的路径都会得到相同的未找到结果;知道或猜中 hostingPath 绝不会授予访问权限。托管响应使用 Cache-Control: private, no-store。