1、Azure Key Vault 概述

什么是 Key Vault

说白了,Azure Key Vault 就是一个托管在云上的保险柜。专门用来存三类敏感信息:加密密钥、机密(比如数据库连接串、API )和证书。你想想看,传统做法是把这些信息写在配置文件里,甚至硬编码到代码里——出过事的人都知道,一旦泄露就是灾难。

我个人习惯,只要项目上云,第一件事就是搭 Key Vault。它跟 Azure AD 深度集成,谁可以访问、能访问到什么级别,全用 RBAC 或访问策略控制。而且所有操作都有审计日志,出问题好追溯。

举个例子。我曾经遇到一个客户,他们把存储账户的密钥直接写在 App Service 的应用设置里。后来一个实习生不小心把设置导出到了公开的 GitHub 仓库…… 嗯,那周他们光轮换密钥就折腾了两天。要是用 Key Vault,只需一个引用 @Microsoft.KeyVault(SecretUri=...),密钥根本不会出现在代码里。

Vault vs Managed HSM 核心区别

很多朋友刚开始分不清 Vault 和 Managed HSM。我直接说吧——它们都是 Key Vault 家族的,但定位完全不同。

对比维度Key Vault (标准/Premium)Managed HSM
硬件安全模块软硬件混合 (HSA 1.0)专用 FIPS 140-2 Level 3 硬件
密钥材质保护软件层面加密 + 硬件辅助全程在 HSM 内部生成、存储、运算
租户隔离共享 HSM 分区独占 HSM 分区,物理隔离
管理权限模型基于 Azure AD + Vault 访问策略内置 RBAC + 独立的安全域管理
计费方式按事务量 + 存储量按实例预留,价格高一个数量级
典型适用场景应用配置、证书管理、通用加密金融、政务、高合规要求的密钥生命周期管理

选哪个?我个人建议:除非有明确的合规要求(比如必须 FIPS 140-2 Level 3 物理隔离),否则优先用标准/Premium Vault。运维成本低得多,而且功能完全够用。Managed HSM 号称“密钥的保险柜中的保险柜”,但配置复杂,安全域一旦搞砸恢复起来极其痛苦——我有个同事曾经手误删了安全域,HSM 直接报废,里面的东西全没了。

典型应用场景

日常中,我见过最多的用法是这几类:

  • 应用配置集中管理:数据库连接字符串、第三方 、加密密钥全部存在 Vault,应用在启动时通过托管标识(Managed Identity)拉取。不需要任何配置文件的密文。
  • TLS/SSL 证书生命周期管理:Key Vault 可以直接签发证书(与内部 CA 或公共 CA 集成),到期前自动续签,然后推送到 Azure Front Door、App Gateway 或 CDN。我记得有个项目上线当天发现证书过期,就是因为没用这套自动流程,后来加班到凌晨三点手动换证书。
  • 数据加密密钥轮换:对于存储服务加密或数据库 TDE,使用 Key Vault 中的密钥,通过 Azure Policy 强制每 90 天轮换一次。客户审计时拿出轮换记录,合规审查一次过。
  • CI/CD 管道中的机密注入:在 Azure DevOps 或 GitHub Actions 里通过 Key Vault task 把机密注入到管道变量中,避免将敏感信息写进 YAML 文件。嗯,这里要小心——我曾经看到有人把机密泄露到流水线日志里,就是因为没启用“秘密变量”选项。

一句话总结:只要你的应用需要处理密钥、证书、密码中的任何一类,就应该把 Key Vault 当作默认选项。它不贵,不上它才贵——时间成本和安全隐患才是真金白银。

Key Vault 整体知识结构

下面这张图帮你理清 Key Vault 的核心概念与关系。

Azure Key Vault 知识结构 Azure Key Vault 知识结构 Key Vault 服务 Vault(标准/Premium) Managed HSM 密钥(Key) 机密(Secret) 证书(Certificate) 配置管理 TLS证书管理 密钥轮换 CI/CD机密注入 Vault 与 Managed HSM 共享同一组保护对象(Key/Secret/Cert),但底层安全等级不同。

提示:上图展示了 Key Vault 的两个实例类型如何向下统一管理三类保护对象,再向上输出给四个典型场景。实际操作中,一个 Vault 中可以同时存放所有三类对象,但建议按部门或环境拆分多个 Vault,方便权限隔离和审计。

避坑与建议

用 Key Vault 几年下来,有几点我觉得值得特别提醒:

  • 不要把 Vault 当作数据库存大量非机密数据。Key Vault 不是专门的高吞吐存储,单个 Vault 有请求速率限制(标准版每秒几千次,Premium 版也有限)。我曾经见过有人把业务配置项全塞进 secrets,一到高峰期就触发限流 429。正确的做法:只放真正的机密,其他配置项用 App Configuration 或 ConfigMap。
  • 启用软删除和清除保护。这是默认关闭的。我遇到过一次意外删除整个 Vault 的 case,好在软删除开启后 90 天内可以恢复。如果你要在生产环境用,建议强制启用这两个特性——Azure Policy 可以帮上忙。
  • Managed Identity 优先于服务主体。能用托管标识就别创建 SPN,省得管理密钥轮换和证书过期。尤其是在 AKS 或 App Service 上,托管身份那真的是开箱即用。

注意:Managed HSM 不支持“软删除”,只支持“安全域灾难恢复”。一旦安全域丢失且没有备份,HSM 内所有密钥永久不可恢复。因此,如果要使用 Managed HSM,请务必严格备份安全域,并将备份文件存储在至少两个不同的受信任位置。