Google ADK 零信任代理怎么落地:签名写入、gVisor 沙箱与语义网关的边界
把 Google ADK 代理接到订单库、内部 API 或动态脚本后,风险就不再只是“回答错了一句话”。它可能写入退款记录、读取不该暴露的数据,甚至把运行时环境当成工具输出。Google Developers Blog 最近给出的零信任思路很实用:把代理产生的状态变化当成一条数据流,分别在身份、运行时和业务语义三个位置设硬门槛。
提示词只能表达意图,不能替代权限系统。真正的生产边界应落在写入签名、隔离运行时和确定性校验上,并且每一层都要能单独验收。
要点速览
- 每次改变数据库状态的请求都绑定具体代理身份,记录不可抵赖的签名证据。
- 动态生成的计算放到 gVisor 隔离环境,限制网络出口、文件权限和资源用量。
- 输入、工具调用和输出在模型之外经过确定性规则检查,拒绝越权退款和敏感数据外带。
- 三层不能互相替代:签名解决“谁写的”,沙箱解决“在哪里跑”,语义网关解决“能不能做”。

先按数据流拆开代理的真实风险
一个客服退款代理通常会经历四步:读取用户请求,查询订单,计算扣款或退款金额,最后把结果写入账本。模型可以负责规划工具调用,但“退款金额是否超过订单上限”“这次写入由哪个代理发起”都不应只靠上下文里的规则。
最容易漏掉的是共享连接池。多个代理使用同一组数据库凭据时,日志只能说明“这个账号写过一行”,却不能证明是哪一个代理、哪一份输入促成了变更。出现争议或密钥泄露后,追责链就断了。
| 数据流位置 | 要保护的对象 | 硬校验问题 |
|---|---|---|
| 进入代理 | 用户请求与工具参数 | 是否包含越权意图、敏感数据或异常金额 |
| 执行计算 | 临时脚本、文件和网络 | 能否访问宿主机、外网或未授权目录 |
| 提交变更 | 退款账本与业务状态 | 哪个代理签名,金额和订单是否匹配 |
第一层:让每次写入都有可核对的代理身份
写入签名的目标不是给模型“加密”,而是给状态变化补一条可以复查的证据。每个代理使用独立服务账号,请求提交前对规范化后的业务载荷签名,数据库侧或写入服务验证签名后才落库。
载荷至少要包含订单编号、动作类型、金额、请求标识和策略版本。字段顺序和编码必须稳定,否则同一业务内容在签名端与验签端会得到不同摘要。生产环境不要把私钥放在容器文件系统里,可使用 Cloud KMS 一类的硬件保护密钥服务完成签名。
payload = {
"order_id": "ord_2026_0817",
"action": "refund",
"amount": "149.00",
"policy_version": "refund-v3"
}
# 伪代码:签名服务返回签名,写入服务负责验签
signature = signer.sign(canonical_json(payload))
ledger.commit(payload, signature, agent_id)
验收时不要只看接口返回 200。应在账本里抽查签名、代理 ID、策略版本和原始请求 ID,并故意改动金额后重放一次,确认验签或业务校验拒绝这笔写入。
第二层:把动态计算放进 gVisor 隔离边界
代理为了计算折扣、解析文件或整理日志,可能生成短脚本。即使脚本来自“看起来正常”的请求,也不能默认它只会读临时目录。标准容器仍与宿主机共享 Linux 内核,错误的能力配置或内核漏洞可能扩大影响面。
gVisor 通过用户态内核提供额外隔离层。落地时把任务目录挂成只读或临时目录,明确禁止外网访问,设置 CPU、内存和执行时长上限,并让任务以低权限身份运行。隔离层不是万能的:宿主机、镜像供应链和调度权限仍要按常规方式加固。

验证可以从三条失败路径开始:尝试访问宿主机文件,尝试连接外部地址,尝试超过资源上限。三者都应得到明确拒绝或受控终止,并且在审计日志中留下任务 ID、代理 ID、策略版本和结束原因。
第三层:用确定性语义网关拦住越权工具调用
退款上限、个人信息脱敏和工具参数范围属于业务规则,适合放在模型前后都能执行的语义网关里。网关不判断模型“想表达什么”,而是检查结构化字段和可观察的工具调用:金额是否超过订单总额,目标表是否在允许集合,输出是否包含密钥格式或银行卡号。
输入侧可以拒绝明显的越权请求,工具侧检查动作、资源和参数,输出侧做敏感信息过滤。规则要有版本号,并进入自动化回归:同一组攻击样本在模型升级、提示词调整和工具新增后都重新执行。
decision = gateway.check({
"agent_id": agent_id,
"tool": "refund_ledger",
"order_total": "149.00",
"requested_amount": "10000.00"
})
if decision.action != "ALLOW":
return {"status": "blocked", "reason": decision.reason}
这里的关键是“确定性”。如果网关本身又把判断交给另一个模型,边界就重新变成软约束。模型可以提出方案,但最终放行应由可测试的代码、策略和权限完成。
三层防线怎样组合,才不会留下空档
签名、沙箱和语义网关保护的是三个不同问题。签名不能阻止已获授权的代理写入错误金额;沙箱不能判断退款是否符合业务政策;语义网关也不能证明一次写入确实来自指定代理。建议按下面的顺序联调:
- 先用固定样例验证网关拒绝越权参数和敏感输出。
- 再把动态计算切到 gVisor,验证文件、网络和资源限制。
- 最后打开写入签名,核对正常写入、篡改载荷和重放请求三类结果。
如果只能先做一件事,优先保护真实状态变化:先收紧数据库写入权限并记录代理身份,再逐步把动态计算和语义校验补齐。不要因为有了签名就给代理更大的数据库权限,也不要因为用了沙箱就允许工具直接提交账本。
常见问题
系统提示词写了退款上限,还需要语义网关吗?
需要。提示词可能被输入诱导,也可能随着模型和工具变化而失效;金额上限、字段范围和敏感信息检查应由模型外的确定性规则执行。
gVisor 能替代容器安全和主机加固吗?
不能。它增加了运行时隔离层,但镜像来源、宿主机补丁、调度权限、密钥管理和日志审计仍要单独治理。
为什么每个代理都要有独立身份?
共享账号只能证明“某个连接写过数据”,无法把一次变更绑定到具体代理。独立身份配合签名,才能支持追责、撤销和按代理收紧权限。
如何判断这套架构已经可以上线?
至少要有三组可重复的验收记录:篡改写入被拒、隔离任务越界被阻断、超出业务规则的工具调用被拦截;同时保留代理 ID、请求 ID、策略版本和失败原因。
最后的落地清单
Google ADK 的零信任实践并不是给代理再加一个“安全提示词”,而是把权限和证据搬到基础设施层。先画清从用户请求到数据库提交的数据流,再逐层确定身份、运行时和业务规则,最后用攻击样例做反向验收。这样即使模型判断出错,错误也会在真正改变状态之前被限制住。
MySQL EXPLAIN ANALYZE 怎么核对估算与实测:耗时分布、行数偏差与慢查询定位
- 上一篇
- MySQL EXPLAIN ANALYZE 怎么核对估算与实测:耗时分布、行数偏差与慢查询定位
- 下一篇
- PHP 8.4 DateTimeZone::getTransitions 怎么核对夏令时:时区切换、缺口时间与排查记录
-
- 科技周边 · 业界新闻 | 3小时前 | google · mcp · 开发者工具 · AI开发 · 文档检索 · 文档检索 官方文档 Google Developer Knowledge API MCP Server 开发代理
- Google Developer Knowledge API 与 MCP Server 发布后:如何把官方文档接入开发代理
- 143浏览 收藏
-
- 科技周边 · 业界新闻 | 3小时前 |
- Rust 生态 arrayref 供应链事件怎么排查:受影响依赖、锁文件核对与替换策略
- 230浏览 收藏
-
- 科技周边 · 业界新闻 | 5小时前 | github · 开发工具 · actions · CodeQL · 代码安全 · 安全分析 GitHub Actions GitHub CodeQL 2.26.3 代码扫描 JavaScript建模
- GitHub CodeQL 2.26.3 更新了什么:Actions 查询识别与升级注意事项
- 213浏览 收藏
-
- 科技周边 · 业界新闻 | 6小时前 |
- GitHub 8 月 17 日长时间中断暴露什么:容量故障、重试风暴与平台可靠性改造
- 215浏览 收藏
-
- 科技周边 · 业界新闻 | 7小时前 | 性能优化 · rust · 编程语言 · 版本发布 · Rust 1.98.0 algebraic_add format_into rustup
- Rust 1.98.0 发布了什么:代数浮点方法、稳定性边界与升级核对
- 145浏览 收藏
-
- 科技周边 · 业界新闻 | 9小时前 | 云原生 · kubernetes · 容器安全 · Kubernetes 1.35 Pod 安全上下文 supplementalGroupsPolicy Pod Security
- Kubernetes 1.35 发布后 Pod 安全上下文怎么核对:升级前后的兼容边界
- 329浏览 收藏
-
- 科技周边 · 业界新闻 | 10小时前 | go · 性能排查 · 运行时 · pprof goroutineleak goroutine 泄漏 Go 1.27
- Go 1.27 goroutineleak profile 怎么用:先识别永久阻塞,再决定是否回收
- 482浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ljg-skills
- ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
- 5242次使用
-
- MELO音乐
- MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
- 4749次使用
-
- UniScribe
- UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
- 4703次使用
-
- 剧云
- 剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
- 4955次使用
-
- 万象有声
- 万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
- 4913次使用
-
- Go chassis云原生微服务开发框架应用编程实战
- 2022-12-29 214浏览
-
- docker的 linux 内核可以和宿主机不一样吗?
- 2023-01-12 318浏览
-
- Go 服务上 Kubernetes 后 HPA 为什么不扩容:requests、CPU 和并发指标怎么选
- 2026-07-17 111浏览
-
- 零基础入门PolarDB-X:搭建高可用系统并联动数据大屏
- 2023-02-24 274浏览
-
- 手把手教你使用 Prometheus 监控 MySQL 与 MariaDB.md
- 2023-02-20 437浏览

