师否
返回博客

Vercel KMS:无需管理密钥,从函数安全签署JWT

2026年9月1日7 分钟

Vercel KMS:无需管理密钥,从函数安全签署 JWT

在构建无服务器应用或微服务时,安全地签署 JWT(JSON Web Token)通常是一个挑战。传统方式需要开发者在代码或环境变量中直接管理私钥,这不仅带来了泄露风险,也增加了密钥轮换和管理的复杂性。Vercel 推出的 KMS(密钥管理服务)功能,旨在从根本上解决这一痛点。

Vercel KMS 是什么?

Vercel KMS 是一项托管服务,它允许您从 Vercel Functions(即 Vercel 的无服务器函数)中使用受管的非对称签名密钥来签署 JWT 或任意消息。其核心设计理念是:私钥永不离开 Vercel 的安全边界

这意味着,您的私钥不会存储在您的代码库、环境变量或任何需要您自行维护的基础设施中。函数在执行签名操作时,会使用其内置的 Vercel OIDC 令牌向 Vercel 平台进行身份验证,然后请求 KMS 服务完成签名。最终,验证令牌的一方只需使用对应的公钥,即可安全地验证签名的有效性。

核心工作流程与优势

使用 Vercel KMS 的典型工作流程如下:

  1. 密钥创建与管理:在 Vercel 控制台中,您可以轻松创建和管理签名者(Issuers)及其关联的签名密钥。
  2. 函数签名:在您的 Vercel Function 代码中,通过 SDK 或 API 调用 KMS 服务。函数会自动使用其身份凭证(OIDC 令牌)进行认证,随后 KMS 会使用您指定的私钥对数据(如 JWT 的 payload)进行签名,并返回签名结果。
  3. 公钥验证:任何需要验证该 JWT 的服务或客户端,都可以公开获取对应的公钥,并使用标准库(如 josejsonwebtoken)来验证签名。

这种方法的优势显而易见:

  • 增强安全性:私钥作为核心机密,从未暴露在可能被泄露的代码或配置文件中。
  • 简化运维:无需在服务器、CI/CD 流水线或多个环境中分发和轮换私钥。密钥的创建、轮换和审计都在一个集中的地方管理。
  • 符合无服务器理念:完美契合 Vercel Functions 等无服务器环境的无状态、按需执行的特性。

支持的签名算法与密钥轮换

Vercel KMS 目前支持主流的非对称签名算法,包括:

  • RSA
  • ECDSA
  • EdDSA

这为开发者提供了足够的灵活性来满足不同的安全和性能需求。更重要的是,Vercel KMS 支持密钥轮换。您可以定期创建新的签名密钥,并平滑过渡到新密钥,而旧密钥可以在一段宽限期内继续用于验证已发布的签名,从而确保业务连续性。这对于满足安全合规要求至关重要。

适用场景

Vercel KMS 特别适用于以下场景:

  • 无服务器架构的身份验证与授权:为您的 API 端点或后端服务安全地签发访问令牌(Access Token)或身份令牌(ID Token)。
  • 微服务间的安全通信:服务之间可以使用 KMS 签发的 JWT 进行相互认证和数据传递。
  • 任何需要安全托管私钥的 Vercel 应用:例如,签署支付回调、生成防篡改的链接等。

对于正在构建React Server Components的复杂应用,或希望为其所有边缘函数和 API 提供统一、安全的密钥管理服务的开发者来说,Vercel KMS 提供了一个非常优雅的解决方案。它将安全责任从开发者侧转移到了平台侧,让您能更专注于业务逻辑的实现。

同时,配合 Vercel 的其他安全与性能功能(例如其 CDN 支持的 ECH 加密传输),可以构建出既安全又高性能的现代化 Web 应用。

总之,Vercel KMS 通过托管密钥管理服务,将签署 JWT 这一关键操作的安全性和便捷性提升到了一个新的层次,是 Vercel 生态中一个值得关注的强大工具。