写点什么

HashiCorp Vault 1.21 带来 SPIFFE 认证、细粒度密钥恢复等新特性

  • 2026-04-01
    北京
  • 本文字数:1977 字

    阅读完需:约 6 分钟

HashiCorp 发布了 Vault 1.21。这个版本为非人类的工作负载引入了原生 SPIFFE 认证,扩展了在 Vault 1.20 中推出的细粒度密钥恢复模型,并新增了 KV v2 密钥归属信息、MFA TOTP 自助注册、一个 Vault Secrets Operator 的 CSI 驱动(可以把密钥直接挂载到 Pod 中且不落盘到 etcd),以及其他多项改进。

 

Vault Enterprise 1.21 原生支持 SPIFFE(面向所有人的安全生产身份框架),这是一个开放标准,用于在动态环境中为工作负载分配可通过加密验证的身份。借助 SPIFFE,像微服务、容器、无服务器函数这类“非人类身份”,可以通过基于 X509 或 JWT 的 SVID(SPIFFE 可验证身份文档)来完成对 Vault 的认证,而不再依赖静态凭证或手动配置。

 

除了认证之外,Vault 现在还能为那些已经通过 AppRole 或 AWS auth 等方式完成认证的工作负载签发 X509-SVID,使它们可以直接参与基于 SPIFFE 的服务间通信,而无需额外工具。这让 Vault 同时具备 SPIFFE 身份的“消费方”和“签发方”两种角色,对于在 Kubernetes、混合云和多云环境中构建零信任架构的组织来说非常有用。

 

Vault 1.21 进一步扩展了在 Vault Enterprise 1.20 中引入的密钥恢复模型。在 1.20 之前,如果某个密钥被误删或误修改,必须通过快照恢复整个集群,这种操作成本很高,而且会影响所有命名空间。Vault Enterprise 1.20 引入了基于已加载快照的定向恢复能力,运维人员可以先查看快照内容,再通过 CLI 只恢复受影响的路径:

$ vault list -snapshot-id <snapshot_id> <mount_path>/<secret_path>$ vault recover -snapshot-id <snapshot_id> <mount_path>/<secret_path>
复制代码

 

Vault 1.21 将可恢复的路径扩展到数据库静态角色、SSH 配置 CA 和托管密钥等,同时新增了“以副本形式恢复”的选项,而不是直接覆盖当前值:

$ vault recover -snapshot-id=<snapshot_id> -from=secret/my-secret secret/my-secret-recovered
复制代码

 

此外,新版本还增加了一个 UI 组件,让非技术用户也可以操作恢复功能;管理员还可以配置自动快照,保证始终有可用的恢复点。恢复权限通过 Vault 策略中的一个专门 recover 能力来控制,这样可以把恢复操作下放给最接近问题密钥的团队来处理。

 

Vault 1.21 新增了 KV v2 的密钥归属信息功能,在版本元数据中暴露了一个 created_by 字段,用来标识每个密钥版本对应的人类可读身份。现在查询 metadata 接口时,会返回每个版本的归属信息:

$ curl https://127.0.0.1:8200/v1/secret/metadata/my-secret"versions": {  "1": {    "created_time": "2025-10-22T02:24:06.945Z",    "created_by": {      "actor": "userpass-engineer1",      "operation": "create",      "entity_id": "12345678-1234-..."    }  }}
复制代码

 

这意味着开发者现在可以直接通过 API 看出是谁修改了某个密钥,而不需要再去查审计日志或联系 Vault 运维人员——对于在共享环境中排查配置变更问题来说,这是一个很实用的改进。

 

Vault Enterprise 1.21 还支持在登录过程中自助完成 TOTP 注册,让 MFA 的接入流程更加顺畅。之前,如果某个命名空间启用了 TOTP MFA,而用户还没有配置,就会被登录流程直接拦住,必须由管理员手动生成并分发二维码。现在,Vault 会在认证流程中直接生成二维码,省去了用户和管理员之间来回沟通的步骤,让团队可以在没有运维介入的情况下完成 MFA 的启用。

 

Vault Secrets Operator(VSO)以前是把 Vault 中的密钥同步到 Kubernetes 的原生 Secret(存储在 etcd 中)。Vault Enterprise 1.21 引入了一个 CSI 驱动,彻底绕开 etcd:当 Pod 启动并引用一个 CSISecrets 资源作为 volume 时,驱动会从 Vault 拉取密钥,并以文件形式直接挂载到 Pod 的指定路径(例如 /var/run/csi-secrets)。这些密钥只在 Pod 生命周期内存在,不会持久化到集群中。团队可以针对每个密钥选择不同的分发方式,在“易用性”和“隔离性”之间做权衡。该 CSI provider 也已经通过红帽认证,可以在 OpenShift 上使用。

 

SCEP(简单证书注册协议)是在 Vault 1.20 中引入的,是一个由 IETF 标准化的协议,广泛用于为那些无法手动完成证书注册的设备下发证书,比如路由器、交换机、防火墙、通过 MDM 管理的移动设备,以及 IoT 硬件。通过把 SCEP 集成到 Vault 的 PKI 密钥引擎中,组织可以把这些设备的证书管理统一到现有的 Vault 体系中,而不需要再维护一套独立的 PKI 系统。

 

Vault 1.20 还为企业用户引入了使用情况报告功能,可以查看各个集群中哪些密钥引擎、认证方式和功能有被实际使用。这些信息可以帮助平台团队了解使用情况、优化配置,并发现那些利用率较低的能力。此外,该版本还提供了一个 beta 功能,支持从 releases.hashicorp.com 自动下载官方的认证和密钥插件,简化插件注册流程,并减少手动更新插件的工作量。

 

关于 Vault 1.21 的更多细节,可以查看官方的发布说明变更日志