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 | 高 | ⭐️⭐️⭐️⭐️⭐️ |
| PowerShell | Windows 运维、已有 PS 流程 | 高 | ⭐️⭐️⭐️⭐️ |
2.4 网络隔离设置
Key Vault 默认公网可达,但生产环境必须隔离。说白了就是防止数据在公网上裸奔。 你想想看,如果密钥存储本身暴露在外,那还有什么安全可言?
Azure 提供三层隔离手段,由浅入深:
- 防火墙(Firewall):直接限制哪些 IP 可以访问 Key Vault
- 虚拟网络服务终结点(VNet Service Endpoint):允许特定 VNet 流量进入
- 私有端点(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
2.4.4 网络隔离决策速查表
| 场景 | 推荐隔离方式 | 复杂度 |
|---|---|---|
| 测试环境,仅需限制个别 IP | 防火墙 | 低 |
| 同区域内部服务访问 | VNet 服务终结点 | 中 |
| 跨区域/混合云,要求隔离 | 私有端点 | 高(需 DNS 配置) |
嗯,到这里创建与配置的主要招式都过了一遍。记住:命名全局唯一,网络隔离趁早做,访问控制选 RBAC。下面这张图把整章流程串起来,方便你对照参考。
这一章的东西不少,但核心就两件事:怎么快速建出 Key Vault,以及怎么把它安全地藏起来。你可以在测试环境先拿 CLI 练手,等熟悉了再套上私有端点。记住,网络隔离不是可选项,是必选项——我亲眼见过因为偷懒没配防火墙,结果被扫描端口的机器人盯上,虽然最后没出事但也吓得够呛。