2、创建与配置 Key Vault

绕不开的话题:怎么把这个保险柜立起来?
我个人习惯先想好命名规则——稍不注意就容易乱。Azure Key Vault 的创建方式挺灵活:门户、CLI、PowerShell,各有各的适用场景。下面我把三种方式都走一遍,再重点聊聊网络隔离,那才是真正容易踩坑的地方。

2.1 Azure 门户创建

适合初次体验或快速搭建。登入 Azure 门户,搜索“Key Vault”进入创建页面。需要关心的配置项:

  • 订阅和资源组:建议一个专用资源组,方便后续删除
  • 名称:全局唯一,2-24 个字符,只能包含字母、数字和横杠
  • 区域:选离用户最近的区域,数据主权也要考虑
  • 定价层:标准(Standard)或高级(Premium)。高级支持 HSM 密钥,但费用高不少
  • 保留天数:软删除保留期(7-90 天),默认 90
  • 访问权限:Vault 访问策略 或 RBAC。我建议用 RBAC,后续管理更集中
提示: 创建完成后,az keyvault show 能快速确认配置。门户上也能实时看诊断日志。

其实门户创建最大的好处是直观,各种选项都有上下文说明。不过呢,你想想看,每次点来点去,生产环境重复部署肯定不现实。这时候 CLI 或 PowerShell 才是主力。

2.2 Azure CLI 创建

我自己最爱用 CLI,一条命令搞定,可重复可脚本化。先登录并选择订阅:

az login
az account set --subscription "你的订阅ID"

创建 Key Vault:

az keyvault create \
  --name "myvault-${RANDOM}" \
  --resource-group "rg-kv-demo" \
  --location "eastasia" \
  --sku "Standard" \
  --enable-rbac-authorization true \
  --retention-days 30

参数说明:

  • --name 要全局唯一,我习惯加个随机数后缀
  • --sku 记得别手抖选 Premium,除非真需要 HSM
  • --enable-rbac-authorization 启用 RBAC,如果你部署的是新环境,强烈推荐
  • --retention-days 软删除保留天数,团队规定里常设为 30 天
避坑指南: 我曾经在生产环境忘记加 --enable-rbac-authorization,导致后续指派权限时还要手动迁移,挺麻烦的。建议一开始就确认好。

CLI 创建完成后,可以用 az keyvault list --resource-group rg-kv-demo 验证。

2.3 PowerShell 创建

如果你的运维环境基于 Windows 或已有 PowerShell 流程,用这个更顺手。需要先安装 Az.KeyVault 模块:

Install-Module -Name Az.KeyVault -Scope CurrentUser
Connect-AzAccount # 登录
Select-AzSubscription -SubscriptionId "你的订阅ID"

创建命令:

New-AzKeyVault `
  -VaultName "myvault-ps-$(Get-Random)" `
  -ResourceGroupName "rg-kv-demo" `
  -Location "eastasia" `
  -Sku "Standard" `
  -EnableRbacAuthorization $true `
  -SoftDeleteRetentionInDays 30
三种创建方式对比
方式适用场景自动化程度我的推荐指数
Azure 门户一次性部署、学习低⭐️⭐️⭐️
Azure CLI跨平台脚本、CI/CD高⭐️⭐️⭐️⭐️⭐️
PowerShellWindows 运维、已有 PS 流程高⭐️⭐️⭐️⭐️
核心建议: 三种方式选一种即可,不要混用。我个人的团队统一用 CLI + Bicep 部署,幂等性好。

2.4 网络隔离设置

Key Vault 默认公网可达,但生产环境必须隔离。说白了就是防止数据在公网上裸奔。 你想想看,如果密钥存储本身暴露在外,那还有什么安全可言?

Azure 提供三层隔离手段,由浅入深:

  1. 防火墙(Firewall):直接限制哪些 IP 可以访问 Key Vault
  2. 虚拟网络服务终结点(VNet Service Endpoint):允许特定 VNet 流量进入
  3. 私有端点(Private Endpoint):完全把 Key Vault 拉进 VNet,不走公网

我的实际经验是:能上私有端点就别犹豫。我曾经遇到一个客户,用了防火墙规则但没封住一个被攻击的公共 IP,导致令牌被窃。后来换成私有端点才彻底解决。

2.4.1 防火墙规则

门户上在“网络” -> “防火墙和虚拟网络”中开启“允许从所选网络访问”。然后添加允许的 IP 列表。CLI 命令示例:

az keyvault network-rule add \
  --name "myvault" \
  --ip-address "203.0.113.0/24" \
  --resource-group "rg-kv-demo"
提示: 添加规则后别忘了把“默认操作”改成“拒绝”,否则防火墙规则等于没设。

2.4.2 VNet 服务终结点

需要先创建 Virtual Network,然后在 Key Vault 的网络设置中关联子网。CLI 步骤:

# 创建 VNet 和子网
az network vnet create -g rg-kv-demo -n vnet-demo --subnet-name snet-kv

# 启用服务终结点
az network vnet subnet update -g rg-kv-demo \
  --vnet-name vnet-demo -n snet-kv \
  --service-endpoints "Microsoft.KeyVault"

# 添加网络规则
az keyvault network-rule add -n myvault \
  --vnet-name vnet-demo --subnet snet-kv \
  -g rg-kv-demo

2.4.3 私有端点

私有端点是 目前最推荐的方式。创建私有端点后会分配一个私有 IP,Key Vault 不再暴露公网 DNS。创建命令(适用于 Azure CLI 2.40+):

# 创建私有端点
az network private-endpoint create \
  -g rg-kv-demo -n pe-kv \
  --vnet-name vnet-demo --subnet snet-kv \
  --private-connection-resource-id $(az keyvault show -n myvault -g rg-kv-demo --query id -o tsv) \
  --group-id vault \
  --connection-name conn-kv

# 创建 DNS 记录(用于解析私有域名)
az network private-dns zone create -g rg-kv-demo -n privatelink.vaultcore.azure.net
az network private-dns link vnet create -g rg-kv-demo -z privatelink.vaultcore.azure.net \
  -n dns-link --virtual-network vnet-demo --registration-enabled false
az network private-endpoint dns-zone-group create -g rg-kv-demo \
  --endpoint-name pe-kv -n zone-group \
  --private-dns-zone privatelink.vaultcore.azure.net \
  --zone-name privatelink.vaultcore.azure.net
特别注意: 创建私有端点后,Key Vault 的 DNS 解析会走私有区域。如果不在同一 VNet 或已经建立 DNS 转发,连接会失败。建议测试:从 VNet 内的 VM 解析 vaultname.vault.azure.net 是否返回私有 IP。

2.4.4 网络隔离决策速查表

场景推荐隔离方式复杂度
测试环境,仅需限制个别 IP防火墙低
同区域内部服务访问VNet 服务终结点中
跨区域/混合云,要求隔离私有端点高(需 DNS 配置)

嗯,到这里创建与配置的主要招式都过了一遍。记住:命名全局唯一,网络隔离趁早做,访问控制选 RBAC。下面这张图把整章流程串起来,方便你对照参考。

Key Vault 创建与配置流程图 开始创建 Key Vault Azure 门户 Azure CLI PowerShell 配置:名称、区域、SKU、访问控制 网络隔离策略选择 防火墙规则 特定 IP 允许 VNet 服务终结点 子网级别集成 私有端点 完全 VNet 内通信 创建并隔离完成 三种方式选其一即可 网络隔离按需配置

这一章的东西不少,但核心就两件事:怎么快速建出 Key Vault,以及怎么把它安全地藏起来。你可以在测试环境先拿 CLI 练手,等熟悉了再套上私有端点。记住,网络隔离不是可选项,是必选项——我亲眼见过因为偷懒没配防火墙,结果被扫描端口的机器人盯上,虽然最后没出事但也吓得够呛。