如何检查Azure子网的Microsoft.Storage服务端点是否正在被使用
检查专用子网中Microsoft.Storage服务端点的使用状态
以下是通过Azure门户、Azure CLI、Terraform三种方式,验证该服务端点是否被实际使用或必要的方法:
一、Azure门户操作
1. 检查存储账户的防火墙关联规则
进入目标存储账户的 安全性 + 网络 > 防火墙和虚拟网络 页面:
- 若“允许从选定的虚拟网络和IP地址访问”列表中包含目标子网,说明该子网的
Microsoft.Storage服务端点是存储账户访问控制的必要配置,子网内资源依赖它访问存储。 - 若存储账户设置为“允许所有网络访问”,则该服务端点可能是冗余配置。
2. 分析存储账户流量日志
进入存储账户的 监控 > 日志 页面,使用Kusto查询筛选来自目标子网的存储访问流量:
StorageBlobLogs | where SubnetId == "/subscriptions/{订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.Network/virtualNetworks/{VNet名称}/subnets/{子网名称}" | where OperationName in ("PutBlob", "GetBlob", "ListBlobs") | summarize 请求量=count() by bin(TimeGenerated, 1h)
- 若查询返回非空结果,说明该子网的服务端点正在被用于存储访问。
3. 检查密钥保管库的网络规则(若涉及)
进入密钥保管库的 网络设置 页面:
- 若未配置允许目标子网访问,说明密钥保管库不依赖该服务端点,非生产环境正常运行也符合逻辑。
二、Azure CLI操作
1. 查询存储账户的子网允许列表
运行以下命令,查看存储账户关联的子网规则:
az storage account show --name <存储账户名> --resource-group <资源组名> --query "networkRuleSet.virtualNetworkRules"
- 结果中若包含目标子网的ID,说明该服务端点被存储账户的防火墙引用,是必要配置。
2. 确认子网的服务端点配置
验证子网确实启用了Microsoft.Storage服务端点:
az network subnet show --name <子网名称> --resource-group <资源组名> --vnet-name <VNet名称> --query "serviceEndpoints[].service"
三、Terraform操作
1. 检查存储账户的网络规则依赖
通过Terraform数据源查询现有存储账户的网络配置:
data "azurerm_storage_account" "prod_storage" { name = "<生产环境存储账户名>" resource_group_name = var.rg_name } output "storage_allowed_subnets" { value = data.azurerm_storage_account.prod_storage.network_rules.virtual_network_rules }
运行terraform apply后,查看输出结果:
- 若包含目标子网的配置,说明该服务端点是存储访问控制的必要部分。
2. 排查资源配置依赖
检查Terraform代码中是否有资源(如虚拟机、函数应用、容器实例等)的访问逻辑依赖于受子网限制的存储账户,这类资源会间接依赖该服务端点。
补充说明
非生产环境未启用服务端点仍能正常运行,大概率是因为非生产存储账户的防火墙设置为“允许所有网络访问”,或使用了私有链接(Private Link)替代服务端点实现安全访问。
内容的提问来源于stack exchange,提问作者Muerte
相关产品推荐
相关产品推荐

