你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍将 Azure Resource Graph 与 Azure Virtual Network Manager 配合使用。 Azure Resource Graph (ARG) 扩展了 Azure 资源管理,使你可以查询一组给定的订阅,以便更好地管理环境。 借助 ARG 集成,可以查询 ARG 来深入了解其 Azure Virtual Network Manager (AVNM) 配置。 通过自定义的 Kusto 查询提供见解,提供资源级别或区域级别状态数据。
将 ARG 与虚拟网络管理器配合使用
下面是 Azure Resource Graph 可用于深入了解 Azure Virtual Network Manager 的一些方案:
- 检索区域目标状态数据,以了解在每个区域及其状态中部署的配置。
- 发现应用了特定配置的所有资源。
- 检索应用于虚拟网络及其预配状态的有效配置。
- 确定在部署过程中成功、失败或正在进行中的虚拟网络数。
可用资源
以下资源可用于在 ARG 中查询安全管理员配置:
- microsoft.network/effectivesecurityadminrules
- microsoft.network/networkmanagers/securityadminconfigurations/rulecollections/snapshots
- microsoft.network/networkmanagers/securityadminconfigurations/rulecollections/rules/snapshots
- microsoft.network/networkmanagers/securityadminconfigurations/snapshots
- microsoft.network/networkmanagers/securityadminregionalgoalstates
开始使用
若要开始在 ARG 中查询虚拟网络管理器数据,请执行以下步骤:
在 Azure 门户中搜索 Resource Graph 资源管理器,并选择以重定向到 ARG 查询编辑器。
在查询编辑器中输入 Kusto 查询,然后选择“运行查询”。
可以从 Resource Graph Explorer 以 CSV 格式下载这些查询的输出。 还可以使用 ARG 支持的任何自动化客户端(例如 PowerShell、CLI 或 SDK)在自定义自动化中使用这些查询。 还可以使用 ARG 在 Azure 门户中创建自定义工作簿作为数据源。
注意
ARG 让你可以查询你对其拥有适当基于角色的访问控制 (RBAC) 权限的资源。
示例查询
下面是可在虚拟网络管理器数据上运行的示例查询。 可以在自定义仪表板和自动化中使用它们。 每个查询都列出了所涉及的输入和返回的输出。
列出影响给定虚拟网络的所有虚拟网络管理器
输入:输入虚拟网络的 vnetId。 它使用以下语法:00000000-0000-0000-0000-000000000000 输出:虚拟网络管理器 ID 列表。
networkresources
| where type == "microsoft.network/effectivesecurityadminrules"
| extend vnetId = "00000000-0000-0000-0000-000000000000"
| where id == strcat(vnetId,"/providers/Microsoft.Network/effectiveSecurityAdminRules/default")
| mv-expand properties.EffectiveSecurityAdminConfigurations
| mv-expand properties.effectiveSecurityAdminConfigurations
| extend configId = tolower(iff(properties_EffectiveSecurityAdminConfigurations.Id == "", properties_effectiveSecurityAdminConfigurations.id, properties_EffectiveSecurityAdminConfigurations.Id))
| extend networkManagerId = substring(configId, 0, indexof(configId, "/securityadminconfigurations/"))
| distinct networkManagerId
列出给定网络管理器的最新安全管理员提交的详细信息
输入:输入虚拟网络管理器的 ID。 它使用以下语法:/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager
输出:安全管理员配置的提交详细信息列表,包括 CommitId、CommitTimestamp、location、SecurityAdminConfigurationId、SecurityAdminRuleIds、SecurityAdminRuleCollectionIds、status 和 errorMessage。
networkresources
| where type == "microsoft.network/networkmanagers/securityadminregionalgoalstates"
| where id contains tolower("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager")
| extend adminConfigurationId = tolower(iff(properties.securityAdminConfigurations[0].id == "", properties.SecurityAdminConfigurations[0].Id, properties.securityAdminConfigurations[0].id))
| extend adminRuleCollectionIds = todynamic(iff(properties.securityAdminRuleCollections == "", properties.SecurityAdminRuleCollections, properties.securityAdminRuleCollections))
| extend adminRuleIds = todynamic(iff(properties.securityAdminRules == "", properties.SecurityAdminRules, properties.securityAdminRules))
| extend commitId = iff(properties.commitId == "", properties.CommitId, properties.commitId)
| extend timeStamp = todatetime(iff(properties.commitTimestamp == "", properties.CommitTimestamp, properties.commitTimestamp))
| extend status = iff(properties.status == "", properties.Status, properties.status)
| extend errorMessage = iff(properties.errorMessage == "" and properties.ErrorMessage == "", "", iff(properties.errorMessage == "", properties.ErrorMessage, properties.errorMessage))
| order by timeStamp desc
| project commitId, timeStamp, location, adminConfigurationId, adminRuleCollectionIds, adminRuleIds, status, errorMessage
受给定安全管理员配置影响的虚拟网络计数
输入:输入安全管理员配置快照的 adminConfigurationID。 它使用以下语法:"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager/securityAdminConfigurations/config_2023-05-15-15-07-27/snapshots/0"
输出:列出受影响的虚拟网络,包括 Region、successCount 和 failedcount。
注意
安全管理员配置快照的 adminConfigurationId。 可以从列表提交详细信息查询的输出中获取此 ID。
networkresources
| where type == "microsoft.network/effectivesecurityadminrules"
| extend snapshotConfigIdToCheck = tolower("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkManagers/myVirtualNetworkManager/securityAdminConfigurations/config_2023-05-15-15-07-27/snapshots/0")
| mv-expand properties.effectiveSecurityAdminConfigurations
| mv-expand properties.EffectiveSecurityAdminConfigurations
| extend configurationId = tolower(iff(properties_effectiveSecurityAdminConfigurations.id == "", properties_EffectiveSecurityAdminConfigurations.Id, properties_effectiveSecurityAdminConfigurations.id))
| extend provisioningState = tolower(iff(properties.ProvisioningState == "", properties.provisioningState, properties.ProvisioningState))
| where configurationId == snapshotConfigIdToCheck
| summarize count() by location, provisioningState
后续步骤
使用 Azure 门户创建 Azure Virtual Network Manager 实例。