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

零密钥的工作负载身份:nono集成SPIFFE/SPIRE完整教程

发布时间:2026/9/26 2:57:07 来源:云帆数科 栏目:资讯中心
零密钥的工作负载身份:nono集成SPIFFE/SPIRE完整教程
零密钥的工作负载身份nono集成SPIFFE/SPIRE完整教程【免费下载链接】nonoagent runtime security - zero trust, zero setup, zero latency.项目地址: https://gitcode.com/gh_mirrors/non/nononono 是一款面向 AI Agent 的开源零延迟沙箱主打零信任、零配置、零延迟运行。而它的 SPIFFE/SPIRE 工作负载身份集成让沙箱内的 Agent 和工具在访问 API 时完全不需要密钥nono 启动时连接本地 SPIRE Agent按需获取短生命周期的 JWT-SVID 并自动注入请求头被沙箱化的进程只发出一个普通 HTTP 请求从头到尾都接触不到任何凭据。为什么选择工作负载身份把密钥彻底移出沙箱传统做法是把 API Token 写进配置文件、环境变量或密钥库keystore。问题是Agent 本身就运行在沙箱里而它恰恰是你最不放心的那一方——一旦凭据暴露给它提示注入或失控行为都可能把密钥带出去。SPIFFESecure Production Identity Framework For Everyone用一种更优雅的方式解决这个问题SPIFFE ID一个类似spiffe://example.com/nono-supervisor的身份标识由信任域Trust Domain统一签发SVIDSPIRE 签发的短期凭据JWT 或 X.509 证书几分钟就过期泄露也几乎没用工作负载认证SPIRE 根据进程的真实属性UID、Pod 信息、云实例身份等自动颁发身份全程无需存储任何长期密钥nono 目前支持JWT-SVID每次请求前获取一个新令牌注入为 Bearer 头刷新由 SPIRE Agent 缓存处理。工作原理一张图看懂凭据注入链路先理解一个关键事实注册进 SPIRE 的工作负载是 nono 监督进程supervisor而不是沙箱内部的那个进程。从图中可以看到内核沙箱边界Kernel Sandbox Boundary上方是可信区操作系统内核、nono 二进制在 exec 前应用沙箱、你显式授权的路径下方是不可信区被执行的 Agent 命令、它派生的所有子进程、它加载的库和发起的网络连接。这意味着沙箱内的进程根本摸不到 SPIRE 的 Agent socket更没有凭据可见性。整个链路如下nono 监督进程通过 Workload API 连接本地 SPIRE Agent socket出站请求先经过 nono 本地代理代理按配置获取 JWT-SVID以Authorization: Bearer jwt形式注入沙箱进程只感知到一个普通的出站请求对凭据的存在毫不知情这条注入链路的实现位于 crates/nono-proxy/src/spiffe.rs令牌以内存清零zeroize方式处理到期前自动刷新SPIRE 下发的 JWT 密钥材料绝不落盘、不进日志。快速上手三步完成 SPIFFE 集成第一步准备 SPIRE Server 与 Agent大部分运维工作在 SPIRE 侧运行 server 和 agent、写认证策略、注册工作负载。nono 的配置文件里只需要一个 socket 路径。仓库自带了本地演示配置可以直接参考Server 配置testdata/spire/server.conf信任域test.nonoJWT TTL 5 分钟Agent 配置testdata/spire/agent.conf启用unix工作负载认证器第二步注册工作负载条目告诉 SPIRE满足什么条件的进程可以拥有哪个 SPIFFE ID。本地环境用unix:uid选择器最直观spire-server entry create \ -spiffeID spiffe://example.com/nono-supervisor \ -selector unix:uid:$(id -u)不同环境的认证方式各由 SPIRE 负责nono 完全无感知同一个 profile 在任何 SPIFFE 环境都通用环境SPIRE 认证方式Linux / macOSunix:uid内核 SO_PEERCREDKubernetesPod UID、命名空间、ServiceAccount 标签AWS EC2实例身份文档GCP / Azure实例元数据第三步在 nono profile 中声明 SPIFFE 凭据在 profile 的网络凭据里加一个spiffe块即可与credential_key互斥{ network: { credentials: [my-api], custom_credentials: { my-api: { upstream: https://api.internal.example.com, spiffe: { type: jwt, workload_api_socket: /var/run/spire/sockets/agent.sock, audience: [https://api.internal.example.com], inject_header: Authorization } } } } }完整字段说明与官方文档见 docs/cli/features/spiffe.mdx。两种配置模式直注 Bearer 还是 OAuth2 换令牌根据上游 API 的鉴权方式nono 提供两个互斥的配置面模式一spiffe块JWT-SVID 直注适用于直接接受 JWT 作为 Bearer Token的上游。nono把令牌原样注入请求头无任何交换过程。可通过inject_header更换目标头用credential_format{}为占位符自定义值格式。模式二auth.client_assertionJWT-SVID 换 OAuth2 令牌适用于OAuth2 令牌端点接受jwt-bearer断言的上游Anthropic API 即属此类。此时用client_assertion字段替代spiffe块auth: { token_url: https://api.example.com/oauth/token, client_assertion: { type: spiffe_jwt, workload_api_socket: /var/run/spire/sockets/agent.sock, audience: [https://api.example.com] } }关键差异JWT-SVID 本身成为客户端凭据——不再需要client_id和client_secret。nono 自动完成交换、缓存 OAuth2 访问令牌直到临期并把换到的访问令牌而非裸 JWT-SVID注入上游请求。常用字段速查字段说明workload_api_socketSPIRE Agent socket 路径唯一必填的环境相关项audience签发 JWT-SVID 的受众inject_header注入的请求头默认Authorizationcredential_format值格式串{}被令牌替换默认Bearer {}svid_hintAgent 返回多个 SVID 时指定使用哪一个 SPIFFE IDSocket 路径速查表workload_api_socket是唯一需要按环境调整的字段。填错了也不怕——nono 在启动时就连不上 socket 会直接失败配置错误立即可见不会静默降级平台典型路径Linux/var/run/spire/sockets/agent.sockmacOS本地安装/tmp/spire-agent/public/api.sockKubernetesSPIFFE CSI 驱动/run/spiffe/sockets/agent.socknono 自动帮你处理的事项集成 SPIFFE 后以下安全细节全部自动化无需人工干预✅启动即验证连接 Workload APIsocket 不可达立即失败fail-closed✅凭据注入自动获取并注入正确的凭据JWT-SVID 或 OAuth2 换得的令牌✅后台轮换SVID 到期前自动刷新无需重启进程、无凭据中断✅内存清零JWT 令牌在释放时对内存清零✅令牌体检拒绝已过期exp或未生效nbf的令牌及时提示检查 SPIRE TTL 与系统时钟漂移SPIRE 运维者只需负责运行 server/agent、注册工作负载条目、为 JWT 路由配置 OIDC 发现端点让上游无需了解 SPIRE 即可验签或为client_assertion流程配置联邦规则。本地复现一条脚本跑通全流程仓库提供了开箱即用的集成测试脚本 scripts/spire-test.sh它会自动完成下载 SPIRE 1.9.6 二进制幂等已存在则复用基于 testdata/spire/server.conf 与 testdata/spire/agent.conf 启动 server 和 agent生成 join token、注册spiffe://test.nono/nono-proxy工作负载条目运行三层测试crates/nono-proxy/tests/spiffe_integration.rs代理层凭据获取与 fail-closed 验证crates/nono-cli/tests/spiffe_run.rs端到端验证——起一个 mock HTTP 服务经真实nono run -- curl ...断言请求头中确实注入了 JWT-SVID在 Linux 上执行即可复现./scripts/spire-test.sh总结nono 的 SPIFFE/SPIRE 集成把Agent 访问 API 需要密钥这个问题从根上消灭了密钥从未存在过——身份由 SPIRE 根据进程真实属性签发令牌几分钟即失效沙箱进程全程零可见性。你只需要在 profile 里填一个 socket 路径其余的注入、轮换、清理全部自动完成。对于在生产环境大规模运行 AI Agent 的团队这正是零信任工作负载身份最落地的形态。更多细节可查阅官方文档 docs/cli/features/spiffe.mdx 与网络功能说明 docs/cli/features/networking.mdx。【免费下载链接】nonoagent runtime security - zero trust, zero setup, zero latency.项目地址: https://gitcode.com/gh_mirrors/non/nono创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

NPM供应链投毒:从隐蔽触发机制到企业级防御实战
NPM供应链投毒:从隐蔽触发机制到企业级防御实战

我在一次应急响应里见过这样的场景:一个负责处理订单回调的Node.js服务,连续几周在凌晨2点到4点向一个陌生IP发送心跳数据包。查遍业务代码,谁也找不到问题点,最后发现问题出在node_modules里某个毫不起眼的依赖包——它在install… · 2026/9/26 2:57:07

yuzu Switch 模拟器第一次跑通完整指南
yuzu Switch 模拟器第一次跑通完整指南

yuzu Switch 模拟器第一次跑通完整指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu 是一款免费开源的任天堂 Switch 模拟器,用 C 编写,官方维护 Windows、Linux 和 Android 三个平台… · 2026/9/26 2:57:01

ctf-agent:LLM驱动的CTF解题代理系统架构与实战
ctf-agent:LLM驱动的CTF解题代理系统架构与实战

/* 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 2:57:01

Java线程池阻塞排查指南:从线程状态到根因定位的完整框架
Java线程池阻塞排查指南:从线程状态到根因定位的完整框架

排查Java线程池阻塞问题,我最大的感受是:大部分时候不是不会用ThreadPoolExecutor,而是对“阻塞到底发生在那哪一环、为什么这一环会卡住、怎么从线程状态反推根因”缺少一个系统性的分析框架。这篇内容就围绕Java线程池阻塞场景做一次完整拆… · 2026/9/26 4:18:42

labelme 与 NumPy 版本不兼容:np.bool 报错排查与修复指南
labelme 与 NumPy 版本不兼容:np.bool 报错排查与修复指南

1. 从一次标注崩溃说起:labelme 与 NumPy 的版本暗雷如果你正在做图像标注,尤其是给 YOLOv8 这类目标检测模型准备数据集,labelme 几乎是绕不开的工具。它轻量、开源、支持多边形和矩形标注,导出的 JSON 格式也足够通用。但很多人… · 2026/9/26 4:18:42

统一拖拽图文只收到一半:UDMF 多 Entry 的类型协商、校验与失败回滚
统一拖拽图文只收到一半:UDMF 多 Entry 的类型协商、校验与失败回滚

统一拖拽图文只收到一半:UDMF 多 Entry 的类型协商、校验与失败回滚 从浏览器或富文本页面拖一段“文字 两张图片”到应用,文字出现了,第二张图却因格式不支持而失败;用户再次拖入后,文字又重复一份。官方统一拖拽指… · 2026/9/26 4:18:36

植物大战僵尸E版支线v1.97安装配置与实战避坑指南
植物大战僵尸E版支线v1.97安装配置与实战避坑指南

植物大战僵尸这个IP的生命力确实离谱,原版通关十遍之后,很多人开始往“改版”“支线”“融合版”这些方向折腾。E版支线就是其中一个流传很广的改版分支,它把原版的关卡结构做了重新编排,加入了新的僵尸波次、新的植物机制和一批自… · 2026/9/26 4:18:36

COMSOL仿真表面等离子共振:从模型搭建到共振角提取全流程
COMSOL仿真表面等离子共振:从模型搭建到共振角提取全流程

1. 项目背景:从一束反射光里“挖”出折射率做光学仿真的人,尤其是碰过生物传感、薄膜光学或者气体检测的朋友,对SPR这个词一定不陌生。表面等离子共振(Surface Plasmon Resonance)说白了就是金属薄膜表面自由电子在光波… · 2026/9/26 4:18:30

智能表格:普通人的外置大脑,轻松管理生活与工作
智能表格:普通人的外置大脑,轻松管理生活与工作

把“外置大脑”这个词挂在嘴边的人不少,但真正把生活和工作整理得井井有条的人,真不多。我做过项目、带过团队,也亲历过被琐事追着跑的阶段,最后发现一个很朴素的道理:普通人最需要的不是更聪明的头脑,而是… · 2026/9/26 4:18:24

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

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第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

了解更多?预约专属演示

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

企业微信二维码