Azure Key Vault 简介:服务架构、核心概念与术语

聊完 AWS KMS,咱们来看看微软家的钥匙管家——Azure Key Vault (AKV)。说白了,它就是 Azure 上用来安全存储密钥、密码、证书和敏感配置的集中式托管服务。我最早接触它是在一个混合云项目中——客户想把本地生成的 SSL 证书迁移到云端统一管理,当时对比了一圈,最后选了 Key Vault,理由很简单:跟 Azure AD 和 ARM 集成太紧密了。

那 Key Vault 到底长什么样?核心组件有哪些?我先带你捋一遍架构。

1. 服务架构概览

Azure Key Vault 分两层运行:控制平面和数据平面。你想想看,控制平面管的是创建、删除、配置 Vault 本身;数据平面管的是你存在里面的密钥、机密、证书的读写操作。两套入口分开,安全隔离做得挺到位。

  • 控制平面:通过 Azure Resource Manager (ARM) 暴露 REST API。你在 Portal、CLI 或 PowerShell 里做的 New-AzKeyVault 操作,走的都是控制平面。
  • 数据平面:每个 Vault 有独立的 endpoint,比如 https://myvault.vault.azure.net。REST API 走这个地址,比如 GET /secrets/{name}。

嗯,这里要注意:数据平面的访问策略跟控制平面的 RBAC 是分开配置的。我曾经在项目中因为忘了给应用配数据平面权限,导致生产环境读不到数据库密码,排查了半天才发现是访问策略没加——经验教训啊。

从高可用角度看,Key Vault 默认是区域冗余的——如果你的 Key Vault 创建在支持可用区 (Availability Zones) 的区域,数据会在多个物理隔离的机房自动复制。不过要注意:有些老区域的 Key Vault 不支持 AZ,创建前最好查一下文档。

2. 核心概念与术语

我把 Key Vault 里最重要的几个概念列在下面,你对照表格看会更清楚。

概念英文说明
保管库Vault一个逻辑容器,你可以在里面放密钥、机密、证书。每个 Vault 有唯一的名称和 endpoint。
密钥Key对称或非对称密钥,用于加密/签名。支持 RSA、EC 和对称的 AES 密钥。可以软硬件保护。
机密Secret字符串类型的数据,比如数据库连接字符串、。最多 250KB。
证书CertificateKey Vault 可以帮你管理 X.509 证书的生命周期——签发、续期、分发都行。底层其实是用密钥和机密来存储证书。
托管 HSMManaged HSM专用的 HSM 实例,给你 FIPS 140-2 Level 3 级别的硬件安全模块。独立于标准 Key Vault,价格贵,但合规要求高的场景才用。
软删除Soft Delete防止误删。删除后对象进入软删除状态,保留 90 天,期间可以恢复。
清除保护Purge Protection软删除的增强版。开启后,管理员也不能在保留期内彻底清除对象,必须等过期自动清理。
访问策略Access Policy控制谁能对 Vault 里的对象做什么操作。粒度到密钥操作、机密操作、证书操作。
RBACAzure RBAC用 Azure 角色来控制 Vault 的管理操作,比如 Vault 贡献者、Vault 读者。
防火墙和 VNetFirewall & VNet只允许特定 IP 或虚拟网络访问你的 Vault。增加了网络层隔离。

一句话总结:Vault 是房子,密钥/机密/证书是屋子里的保险柜。控制平面管房子本身,数据平面管保险柜里的东西。

3. 数据平面的访问控制

这块容易搞混。Key Vault 的数据平面有两种授权方式:

  • Vault 访问策略 (Access Policy):每个 Vault 可以配置多个策略,每个策略给一个安全主体(应用、用户、组)分配权限。比如「密钥签名」「机密读取」「证书创建」。
  • Azure RBAC for Key Vault:Azure 在 2021 年推出了更统一的数据平面 RBAC,你可以用内置角色比如 Key Vault Secrets User 直接授权。我建议新项目都优先用这种方式,因为它跟 Azure 其他服务的授权模型一致,审计日志也更清晰。

注意:如果同时启用了访问策略和 RBAC,会报错。你只能二选一。我曾经踩过这个坑——给应用加了个 RBAC 角色,又保留旧访问策略,结果请求一直返回 403。查了两小时才发现冲突了。

4. 密钥保护层级:软件 vs HSM

创建密钥时,可以选择 Software 或 HSM 保护。HSM 保护的密钥在 FIPS 140-2 Level 2 的硬件安全模块中创建和存储(标准版)。Managed HSM 则升到 Level 3。这个区别直接影响合规审计,比如支付行业 PCI DSS 通常要求 Level 3 或以上。

我个人习惯是:只要预算允许,生产环境尽量用 HSM-backed 密钥。软件保护虽然便宜,但密钥材料会以加密形式存储在 Azure 的存储中,理论上依赖 Azure 的加密实现。HSM 则保证密钥材料永远不会离开硬件边界。

避坑指南:我曾经因为图省事,给一个金融客户的标准 Key Vault 创建了软件保护密钥做交易签名。结果审计时被指出不符合 PCI DSS 的 FIPS 140-2 Level 3 要求。最后只能重建 Managed HSM 实例并迁移密钥——浪费了大量时间。

5. 一张图看懂 Key Vault 架构

下面这张图帮你理清 Key Vault 的组件和数据流。注意控制平面和数据平面是独立的入口,客户端应用通过 Data Plane Endpoint 访问密钥/机密/证书,而管理员通过 ARM 管理 Vault 本身。

Azure Key Vault 架构概览 控制平面 (Control Plane) ARM API 创建/删除/配置 Vault Azure Portal / CLI / PowerShell 访问策略 / RBAC 数据平面 (Data Plane) Data Plane Endpoint 密钥 / 机密 / 证书 读写 加密 / 解密 / 签名 / 验证 认证使用 Azure AD Key Vault 实例 密钥 (Keys) RSA / EC / AES 机密 (Secrets) 连接字符串 / 密码 证书 (Certs) X.509 / 自动续期 可选:Managed HSM (FIPS 140-2 Level 3) 客户端应用 管理员 / DevOps 注意:控制平面走 ARM,数据平面走 Vault Endpoint;二者使用不同的认证和授权机制。

6. 与 AWS KMS 的简单对比

知道 Key Vault 跟 AWS KMS 的区别,对选型有帮助。我列几个关键不同点:

  • 概念粒度:KMS 只有密钥,Key Vault 还管机密和证书。所以如果你需要统一管理密码和证书,Key Vault 天生更合适。
  • HSM 选项:KMS 的 Custom Key Store 依赖于 CloudHSM,而 Azure 的 Managed HSM 是独立服务,集成更紧密。
  • 访问控制:KMS 用 IAM 策略 + Key Policies,Key Vault 用 Access Policy 或 RBAC。我更喜欢 Azure 的 RBAC,感觉更灵活。
  • 软删除:Key Vault 默认开启软删除(90天保留),KMS 没有类似功能。如果你对数据恢复有要求,Key Vault 更安全。

我的建议:如果团队主要是 Azure 生态,直接用 Key Vault 准没错。但如果你两朵云都要用,考虑抽一层抽象,比如用 HashiCorp Vault 统一管理。