终端日志里出现了不该出现的令牌,Agent 还在用个人账号执行签名和推送。
最快的处理方式:先暂停上线,把身份独立、权限最小化、秘密不落盘、网络出口受控、操作可审计和环境可销毁这 6 项逐一验完;任何一项无法证明,都不要把任务交给 Agent。
时间表:2026 年 7 月 29 日先完成内部预验收,2026 年 8 月 1—6 日按 Black Hat USA 2026 官方 Briefings、Arsenal 和 AI Zone 的公开材料复核清单。 Black Hat USA 2026 已确认在 2026 年 8 月 1 日至 6 日举行,官方页面已列出 AI Zone、AI 与自主威胁相关议题及 Agentic AI 攻防内容,但尚未公开的现场研究不能提前当成结论。(Black Hat USA 2026 官方议程与功能页面)
本周建议动作:把下面的验收项交给安全与 DevOps 双人复核,要求每一项都附证据截图、命令输出或审计记录。不要只安装杀毒软件,也不要把“限制远程登录”当成 Agent 安全方案。
这篇文章适合三类人:
- 允许编码 Agent 访问私有代码仓库的研发团队;
- 使用远程 Mac 执行签名、构建或自动化任务的 DevOps;
- 需要建立 AI Agent 上线门槛的安全与合规负责人。
先划清责任:用户操作和 Agent 操作必须分开
身份混用是最容易被忽略、却最难追责的问题。你需要确认 Agent 使用的是独立服务身份,而不是工程师的个人账号、共享管理员账号或长期有效的个人访问令牌。
通过标准:
- Agent 有独立的服务账号、服务令牌或工作负载身份;
- Git 仓库、构建系统、签名服务和远程 Mac 日志都能区分“用户发起”和“Agent 发起”;
- 每次任务都有任务编号、发起人、Agent 身份、目标仓库和开始结束时间;
- 服务身份只绑定必要的仓库、分支和工具范围。
直接阻断:
- 多人共用一个管理员账号;
- Agent 通过工程师的个人 SSH 密钥或个人 API 令牌访问仓库;
- 日志只能看到“某个用户登录”,无法确认具体是哪次 Agent 调用;
- 账号离职或任务结束后无法快速撤销权限。
对于私有代码仓库,安全性取决于身份是否独立、令牌是否短期有效、仓库权限是否限制到具体任务,以及每次工具调用能否追溯到责任人。只要 Agent 仍使用个人密钥、共享管理员账号或全仓库权限,就不应通过企业验收。
对于 CI/CD 场景,优先考虑短期工作负载身份,而不是把长期密钥写入远程 Mac。GitHub 官方文档说明,OIDC 可以让工作流向云服务请求短期令牌,并通过 sub、仓库和分支等声明限制信任范围;这比长期保存云访问密钥更适合作为验收基线。可参考 GitHub Actions OIDC 身份配置文档。
再检查凭证:签名证书不能跟着 Agent 到处走
编码 Agent 可能读取环境变量、Shell 历史、工作目录、构建缓存和日志。只要签名证书、私钥、仓库令牌或模型 API 凭证以明文出现在这些位置,任务结束后的清理就很难证明完整。
macOS 的 Keychain 可以保存密码、证书和密钥,并能通过访问控制限制应用读取;但“凭证放进 Keychain”不等于 Agent 自动获得安全边界。你仍然要验证具体应用、具体任务和具体用户是否拥有读取权限。Apple 的 Keychain Services 官方文档说明,Keychain 支持管理访问控制列表,可用于限制应用访问密钥链项目。
验收证据应包括:
- 检查环境变量、Shell 历史和工作目录的扫描结果;
- 检查构建日志、调试日志和错误回溯中的敏感字段;
- 展示签名证书或私钥的授权范围;
- 展示任务结束后的撤销记录;
- 展示一次“凭证被主动撤销后,旧任务无法继续”的测试结果。
通过标准:
- 凭证按任务临时授权;
- 令牌具备明确的过期时间和用途;
- 签名操作通过受控接口完成,Agent 不需要导出私钥;
- 任务结束后立即撤销令牌、删除临时授权并清理缓存;
- 日志只保留凭证标识的末尾片段或哈希,不记录完整令牌。
直接阻断:
- 私钥以文件形式长期放在共享目录;
- API 凭证写入
.env、脚本、构建产物或 Git 历史; - 令牌无法立即撤销;
- 任何任务都可以读取同一套签名材料。
判断签名材料是否可能被泄露,重点不在于 Agent 是否“聪明”,而在于它是否能读取证书、是否能导出私钥、是否能调用签名命令,以及签名结果是否有独立审批。Apple 的代码签名文档还特别强调,部分受限 entitlement 需要 provisioning profile 授权,这意味着签名链路中的权限不应只靠远程桌面登录控制。可参考 Apple macOS 分发签名文档。
然后收紧工具权限:默认拒绝高风险写操作
Agent 能执行什么命令,比它使用哪个模型更重要。你需要把工具调用拆成“读取、低风险写入、高风险写入、提权和外部发送”几类,不要直接给它一个可以运行任意 Shell 命令的接口。
建议的权限分层:
- 读取代码、读取测试结果:默认允许;
- 修改工作目录内文件:限于任务目录;
- 删除文件、修改系统配置、安装软件:默认拒绝;
- 访问 Keychain、签名工具、系统服务:单独授权;
- 推送远程仓库、发布构建产物、执行生产变更:必须人工确认;
- 使用
sudo或等效提权:必须有审批记录和任务编号。
如果使用 MCP Server 连接外部工具,应把每个工具视为独立权限边界。MCP 官方授权规范要求服务端验证令牌的目标受众,禁止把不属于该服务的令牌转发给其他服务;官方安全教程还建议按工具或能力拆分最小权限范围,并且不要记录授权头、令牌和密钥。可参考 MCP 授权规范与 MCP 授权安全教程。
远程 Mac 的 Agent 权限隔离方法
不要只依赖 macOS 登录账号。你至少要同时隔离以下 4 层:
- 用户层:Agent 使用专用系统用户,不能与日常办公账号共用桌面和钥匙串。
- 目录层:工作目录、缓存目录、构建输出目录分开,禁止访问用户主目录中的私人文件。
- 工具层:每个命令包装成明确的工具接口,限制参数、路径和返回内容。
- 审批层:删除、签名、发布、推送和提权操作需要人工确认。
真正有效的远程 Mac 隔离,不是创建一个新用户后就结束,而是把身份、目录、工具、审批和回收流程一起绑定。只要 Agent 仍能通过任意 Shell 读取其他用户目录,用户层隔离就只是表面控制。
⚠️ 经验提醒:如果 Agent 的“只读模式”只是界面上的一个开关,而底层仍能调用任意 Shell、读取任意目录或启动系统服务,这个模式不能作为验收证据。
再限制网络出口:能访问不等于应该访问
远程 Mac 上的 Agent 通常需要访问模型端点、代码仓库、依赖源、制品库和通知服务。问题在于,允许任意外连后,提示内容、源码片段、构建日志和错误堆栈可能被发送到未批准目的地。
你需要先形成一份允许列表,再做阻断测试。
| 访问对象 | 默认策略 | 验收证据 | 阻断条件 |
|---|---|---|---|
| 指定模型端点 | 仅允许批准域名和端口 | 防火墙或代理规则、访问日志 | 任意模型端点均可访问 |
| 私有代码仓库 | 只允许指定组织和仓库 | 服务身份、仓库审计记录 | 使用个人令牌或可访问全部仓库 |
| 依赖源 | 允许固定镜像或官方源 | 依赖锁定文件、DNS 或代理日志 | 构建时可访问任意下载地址 |
| 制品库 | 只允许项目对应路径 | 上传记录、制品哈希 | Agent 可覆盖其他项目制品 |
| 外部通知服务 | 按字段脱敏后发送 | 出站请求样本、脱敏规则 | 原始源码、令牌或完整日志外发 |
验收时要构造 3 类测试数据:带假令牌的提示、带敏感字段的源码、包含业务数据的构建日志。确认它们不会出现在未批准域名的请求体、查询参数、错误日志或代理缓存中。
MCP 官方安全要求还强调,生产环境应使用 HTTPS,访问令牌不能放在 URL 查询字符串中,并且令牌需要绑定到预期资源。你可以把这些要求直接转成网络验收条目,而不是只检查远程 Mac 是否能正常联网。
最后补齐审计:一次任务必须能够完整还原
企业上线 Agent 时,不能只看“有没有日志”。重点是能否把一次任务还原成完整操作链:
发起人 → Agent 身份 → 使用的工具 → 目标目录或服务 → 输入摘要 → 执行结果 → 人工确认 → 凭证撤销 → 环境清理。
日志至少要记录:
- 任务编号和发起人;
- Agent 服务身份;
- 工具名称、参数摘要和目标资源;
- 命令是否成功、退出状态和结果摘要;
- 是否触发人工审批;
- 网络访问的目标域名和结果;
- 凭证创建、使用、撤销和清理时间;
- 环境销毁是否完成。
日志中不能出现完整令牌、授权头、私钥、源码全文和未经脱敏的业务数据。MCP 官方安全教程同样建议不要记录凭证、授权头、令牌和密钥,并要求对结构化日志中的敏感字段做脱敏处理。
评分建议:
- 2 分:有明确证据,且可以复现;
- 1 分:已有控制,但范围不完整或缺少测试记录;
- 0 分:没有控制,或无法证明控制有效。
建议按 6 个维度评分,总分 12 分:
- 身份独立:2 分;
- 凭证隔离:2 分;
- 工具与系统权限:2 分;
- 网络出口:2 分;
- 日志审计:2 分;
- 环境销毁:2 分。
10—12 分:可以进入受控试运行,但高风险操作仍需人工确认。
7—9 分:限期整改,不允许访问生产签名材料和高敏感仓库。
0—6 分:禁止上线,先重做隔离和凭证设计。
用这份清单完成最终验收
下面的清单适合直接放进安全评审单。每一项都必须附证据,不能只勾选“已配置”。
- [ ] Agent 使用独立服务身份,不使用共享管理员账号。
- [ ] 用户操作和 Agent 操作可以在日志中明确区分。
- [ ] 私有仓库权限限制到指定组织、项目或分支。
- [ ] 个人 SSH 密钥、个人 API 令牌和长期云密钥未交给 Agent。
- [ ] 环境变量、Shell 历史、工作目录、缓存和构建日志已完成敏感信息扫描。
- [ ] 签名证书和私钥不能被 Agent 导出。
- [ ] 签名、发布、推送、删除和提权操作具备人工确认记录。
- [ ] 高风险命令默认拒绝,工具接口限制了目录、参数和返回内容。
- [ ] 模型端点、代码仓库、依赖源和制品库都有明确允许列表。
- [ ] 已验证提示、源码、构建产物和日志不会发送到未批准目的地。
- [ ] 日志包含身份、工具、目标、结果、审批和任务编号。
- [ ] 日志不会记录完整令牌、授权头、私钥或业务数据。
- [ ] 任务结束后,临时文件、缓存、会话和凭证均已清除。
- [ ] 能够在任务中止后立即撤销凭证和网络访问。
- [ ] 高敏感任务使用可重建、可销毁的独立环境,而不是长期共享桌面。
- [ ] 已完成一次“恶意提示要求读取凭证”和一次“工具越权调用”阻断测试。
- [ ] 安全负责人和 DevOps 负责人分别签字确认通过范围。
- [ ] 所有未通过项都标注了责任人、整改期限和回归测试方式。
环境销毁尤其不能靠口头承诺。安全团队应要求保留销毁前后检查结果,并核对远程 Mac 上的工作目录、临时目录、构建缓存、会话状态和授权记录。若无法快速证明环境已经清空,高敏感签名任务就不应放在长期共享桌面中。
如果你当前使用的是长期共享 Mac、固定个人账号或无法快速回收的云主机,主要缺点通常有 4 个:身份边界模糊、凭证容易残留、网络和工具权限难以按任务收紧、任务结束后缺少可信的销毁证据。相比之下,按任务交付的独立远程 Mac 更适合做隔离测试、短期构建和安全验收;你可以先通过 VPSSpark 帮助中心了解环境使用与回收相关信息,再把本清单交给安全和 DevOps 联合审核。若你还需要核对不同网络出口的访问条件,可查看 VPSSpark 美国东部节点方案中的区域与连接说明,但不要把网络位置本身误当成安全控制。
最后的上线门槛很简单:身份不能独立、凭证不能撤销、权限不能收紧、外连不能解释、日志不能还原,或环境不能销毁,任意一项成立,就应判定为禁止上线。Black Hat USA 2026 的公开议程可以帮助你继续跟踪 AI 与自主威胁研究,但企业是否放行 Agent,最终仍要以你能拿出的验收证据为准。
为 AI Agent 快速搭建可控的远程 Mac 验收环境
使用 VPSSpark 快速开通远程 Mac,在独立环境中验证私有代码仓库、签名工具与自动化流水线的访问边界。
按需选择 Mac 云主机方案,以更灵活的成本满足测试、构建和安全验收等阶段性算力需求。