Vercel 主张终结长期静态凭证,把 OIDC 短时令牌做成默认

Vercel 把机器对机器的认证类比 2010 年前后的 HTTPS:标准(OAuth、OIDC、DBSC)已经存在,但缺乏让安全方式成为默认的工具与持续推动。

导语:Vercel 把机器对机器的认证类比 2010 年前后的 HTTPS:标准(OAuth、OIDC、DBSC)已经存在,但缺乏让安全方式成为默认的工具与持续推动。

摘要

Vercel 把机器对机器的认证类比 2010 年前后的 HTTPS:标准(OAuth、OIDC、DBSC)已经存在,但缺乏让安全方式成为默认的工具与持续推动,于是长期静态凭证(不过期的 API key、数据库密码)仍是大量 SaaS 与基础设施的默认做法。文章给出实测数据――对 1000 多家 SaaS 供应商调研,仅 8.4% 支持安全认证方式。Vercel 已建 OIDC UI 与 shadcn/ui registry,在 Blob、AI Gateway、Sandbox 等自研服务推广 OIDC,并对 Marketplace 供应商设定硬门槛:2026 年 11 月 30 日前不支持 OIDC 的供应商列表将标"Not secure",2027 年 1 月未提供安全认证的将被下架。其 OIDC 联邦自 2024 年 GA。

微信图片_20261023152858.png

正文(译文)

十五年前,TLS 是你用来保护应用最敏感区域的东西。随后 Google、Let's Encrypt、EFF 等牵头推动"HTTPS 无处不在",让加密成为每一次请求的默认。没有它,浏览器与服务器之间的任何中间人都能读取并篡改流量。

OAuth、OIDC、DBSC 及相关标准已经提供了安全认证的构件,但光有标准并不能让安全方法成为常态。HTTPS 需要让加密变简单的工具,以及一场让它成为预期的持续推动。机器对机器的认证仍像 2010 年的 HTTPS:一些供应商与企业走在前面,而长期静态凭证对许多 SaaS 供应商与基础设施提供者仍是默认。

在 Vercel,我们想让"快速且安全"成为整个 Web 的默认――包括我们自己的服务与 Marketplace 里的集成。我们构建了 OIDC UI,一个 shadcn/ui 组件库,给供应商提供信任策略表单与令牌校验代码。我们正在 Vercel 内扩展 OIDC 支持,并对 Marketplace 供应商设定新的认证要求。

长期静态凭证并不安全 长期静态凭证是应用反复复用的秘密,如 API key 与数据库密码,往往永不过期。随着智能体承担更多有用工作,我们通过这些凭证给它们授予访问系统、工具与数据的权限,而授予的权限往往远超手头任务所需。

这些凭证可能泄露进代码仓库或聊天记录,在服务或依赖被攻陷时被窃取,或在提示注入诱使智能体吐出它们时暴露。无论怎么发生,攻击者在凭证过期或被撤销前,都能用它被授予的权限使用凭证。近期行业里多起凭证盗窃与供应链事件表明:当恶意代码能在生产环境读取应用的凭证时,静态加密是不够的。

轮换已暴露的凭证,需要在使用它的各系统间耗费时间与协调,出错还可能中断生产。在 Vercel,我们此前出于谨慎,已花数千个工程小时做多次、非常痛苦的密钥轮换,我们绝不想再经历一次。

更好的方案早已存在 用 OIDC,你的应用可以在不存储长期供应方密钥的情况下完成认证:一个可信签发方提供签名的短时令牌来标识应用,接收方在决定授予什么访问前先校验该令牌。被盗令牌在过期后失效,限制那份拷贝可被使用的时长,即便泄露未被察觉。你的应用能以编程方式获取新凭证,无需在所用各系统间分发并手工轮换持久的供应方密钥。

我们一直在 Vercel 内优先 OIDC,让应用能访问 Blob、AI Gateway 与 Sandbox 而不为这些服务存储长期密钥。我们的 OIDC 联邦自 2024 年已通用可用,让运行在 Vercel 上的应用能在配置好的项目与环境信任策略下,把 Vercel 签发的身份令牌换成临时的 AWS、Google Cloud 与 Azure 凭证。但要让开发者不再管理长期密钥,这种支持必须延伸到他们应用依赖的所有服务。

Web 的其他部分还没跟上 我们调查了 1000 多家 SaaS 供应商,发现仅 8.4% 支持安全认证方式。

但让供应商支持安全认证只是问题的一部分。即便某项服务提供了安全方法,开发者也常因它用起来更简单而选静态密钥。我们看到三大采用障碍:让安全认证比用静态密钥更复杂的工具与配置;在请求路径上获取或交换令牌带来的额外时延;供应商提供并优先安全认证的动机不足。我们的目标是让安全认证在 Vercel 上成为默认,同时借 Marketplace 推动更多供应商支持它。

我们对更安全 Web 的承诺 我们有责任在我们运行的服务、开发者使用的工具、以及与伙伴构建的集成中,让这一改变切实可行。

让安全认证更易用 用安全令牌必须比粘贴一个密钥更简单,否则开发者会继续粘贴密钥。在 Vercel,代码用一个函数调用获取 OIDC 令牌,并用自定义 audience 指定要接收它的服务。

通过 Vercel Connect,应用与智能体用它们的部署身份在运行时请求供应方令牌,而不必把长期供应方密钥存进环境变量。连接器配置好并关联到项目、用户的账户也连接后,代码就能以供应方支持的 scope 为该用户请求令牌。

示例(app/api/agent/route.ts,获取 Linear 访问令牌): import { getToken } from '@vercel/connect'; const token = await getToken('oauth/linear', { subject: { type: 'user', id: 'user_123' }, scopes: ['read'] }); 即通过 Vercel Connect 为某用户请求 Linear 访问。

我们也在把 OIDC 支持扩展到 Vercel API 与 CLI,以消除部署工作流中对长期 Vercel 令牌的需要。

面向 API 供应商的 OIDC UI OIDC UI 是一个 shadcn/ui 组件库,含信任策略配置器与服务端令牌校验器,内置 Vercel、GitHub、GitLab、Google、Bitbucket、AWS、Azure 与自定义 OIDC 签发方的供应方表单。一个供应方可以让客户为某个 Vercel 项目的生产环境配置信任,再据该策略校验传入令牌,而不必从零搭建配置界面与校验代码。

〔此处粘贴原文配图:OIDC UI 构建器界面截图,展示身份提供方、表单库、校验器选项与 Vercel 信任策略表单预览(文中为同一截图的多张画廊)〕

降低安全认证的性能够本 环境变量里的静态密钥在函数运行时已可用,读取它不需要网络请求;而获取令牌或把它换成供应方凭证会增加网络时延,所以减少这些调用是让安全认证可行的一部分。Vercel Functions 在请求头里收到平台签发的令牌,SDK 直接读取而无需再发起一次请求;平台复用未过期的令牌,Vercel Connect 在进程内缓存供应方令牌并在临近过期时刷新。自定义 audience 与供应方交换需要网络调用。

例如,一个应用可以用 Azure SDK 以临时凭证而非数据库密钥访问 Cosmos DB:把 Azure 配置为信任 Vercel 项目及其默认令牌 audience 后,回调把 Vercel OIDC 令牌交给 ClientAssertionCredential,由其换成 CosmosClient 使用的 Azure 访问令牌。

示例(lib/cosmos.ts): import { getVercelOidcToken } from '@vercel/oidc'; import { ClientAssertionCredential } from '@azure/identity'; import { CosmosClient } from '@azure/cosmos'; const credentialsProvider = new ClientAssertionCredential(process.env.AZURE_TENANT_ID!, process.env.AZURE_CLIENT_ID!, () => getVercelOidcToken()); const cosmosClient = new CosmosClient({ endpoint: process.env.COSMOS_DB_ENDPOINT!, aadCredentials: credentialsProvider }); 即用 Vercel OIDC 令牌换取 Azure Cosmos DB 访问。

给供应商支持安全认证的动机 Vercel Marketplace 提供第三方数据库、内容管理系统、可观测性工具等。我们的目标是让所有这些供应商都支持短时、基于身份的认证,无论它们直接接受 OIDC 令牌还是把它换成临时凭证。我们正努力让开发者连接一项服务时,集成自动配置好该认证,无需单独的配置步骤。

"HTTPS 无处不在"并非仅靠人体工学取胜。Chrome 给纯 HTTP 打了"Not secure"标签,然后定下截止期限。现在我们也在定自己的期限:到 2026 年 11 月 30 日,不支持从 Vercel 到其服务的 OIDC 认证、仍以长期密钥做认证的供应商,其列表项将出现类似的"Not secure"提示;到 2027 年 1 月,未提供安全认证的供应商将被下架。我们对 Vercel API 与我们自己的原生集成也执行同一标准。

从静态到动态 十五年前,给每一次请求加密像是过度之举。今天,那把小锁如此寻常,以至于我们只在它缺失时才注意到。服务之间的安全认证也应当变得同样例行,让开发者连接所需系统时,不必再存另一个长期密钥。从静态到动态,一直是 Vercel 的使命――它始于页面,如今轮到凭证。

附加资源 OIDC 联邦介绍部署如何获得短时身份令牌,附 AWS、GCP、Azure 与自有 API 的指南;自定义 OIDC 令牌 audience 把每个令牌限定于指定接收服务;Vercel Connect 在运行时请求短时、带 scope 的供应方令牌,让代码与智能体永不在本地存储凭证;Vercel Connect 指南一步步讲解如何构建从 Slack 机器人到 GitHub 智能体的各类智能体。


(来源:艾瑞网)
免责声明:本文内容来源于第三方或整理自互联网,本站仅提供展示,不拥有所有权,不代表本站观点立场,也不构成任何其他建议,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容,不承担相关法律责任。如发现本站文章、图片等内容有涉及版权/违法违规或其他不适合的内容, 请及时联系我们进行处理。

相关推荐