Azure Key Vault 安全配置:限制虚拟机访问权限与密钥过期提醒
以下是分步配置指南,确保安全性和合规性:
一、限制虚拟机访问权限
通过网络规则和访问策略实现最小权限原则:
-
启用防火墙和虚拟网络
- 在Key Vault的
网络设置中:- 选择
专用终结点和所选网络 - 添加虚拟机的虚拟网络到
允许的虚拟网络列表 - 拒绝所有公共流量(关闭
允许公用访问)
- 选择
- 在Key Vault的
-
配置访问策略
- 在Key Vault的
访问策略中:# 示例:仅允许虚拟机执行获取操作 principal = "虚拟机托管标识" # 使用托管标识避免凭证存储 permissions = { "keys": ["get"], # 仅允许获取密钥 "secrets": ["get"], # 仅允许获取机密 "certificates": [] # 无证书权限 } - 通过Azure CLI实现:
az keyvault set-policy --name <KeyVault名称> \ --object-id <虚拟机托管标识ID> \ --key-permissions get \ --secret-permissions get
- 在Key Vault的
-
启用专用终结点
- 在虚拟网络内创建专用终结点,确保流量不经过公共互联网。
二、密钥过期提醒配置
通过生命周期管理和事件通知实现主动监控:
-
设置密钥有效期
- 创建/更新密钥时指定
expiration_date:az keyvault key create --name <密钥名> --vault-name <KeyVault名称> \ --expires $(date -d "+90 days" +%Y-%m-%dT%H:%M:%SZ) # 90天后过期
- 创建/更新密钥时指定
-
配置自动提醒
- 方法1:使用Azure Event Grid
- 订阅
KeyNearExpiry事件:# 事件触发逻辑 if event_type == "Microsoft.KeyVault.KeyNearExpiry": send_alert(email="admin@contoso.com", days_before=7) # 过期前7天提醒 - 通过Logic Apps自动发送邮件/Slack通知。
- 订阅
- 方法2:使用Azure Monitor警报
- 创建日志查询规则:
AzureDiagnostics | where Category == "AuditEvent" | where OperationName == "KeyNearExpiry" | project Resource, ExpiryDate - 设置当结果数>0时触发邮件/短信告警。
- 创建日志查询规则:
- 方法1:使用Azure Event Grid
-
定期审计
- 通过
Key Vault分析日志检查:- 未配置过期时间的密钥
- 过去30天未轮换的密钥
- 通过
三、最佳实践
- 权限分离
- 虚拟机仅需
get权限,密钥轮换由独立管理账号执行。
- 虚拟机仅需
- 自动化轮换
- 使用Azure Functions自动更新临近过期的密钥:
$$ \text{轮换周期} \leq \frac{\text{密钥有效期}}{3} \quad (\text{例如90天有效期,每30天轮换}) $$
- 使用Azure Functions自动更新临近过期的密钥:
- 备份与恢复
- 通过
az keyvault key backup定期备份密钥至Blob存储。
- 通过
验证步骤:
- 从非授权虚拟机访问Key Vault,应返回
403 Forbidden。- 测试过期提醒:临时将密钥设为5分钟后过期,检查通知是否触发。
通过上述配置,可显著降低未授权访问风险,并避免服务中断。
3336

被折叠的 条评论
为什么被折叠?



