你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Resource Graph (ARG) 查询 Azure Virtual Network Manager

本文介绍将 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 中查询虚拟网络管理器数据,请执行以下步骤:

  1. 在 Azure 门户中搜索 Resource Graph 资源管理器,并选择以重定向到 ARG 查询编辑器。

    Azure Resource Graph 编辑器的屏幕截图,其中显示了 Kusto 中的虚拟网络管理器查询示例。

  2. 在查询编辑器中输入 Kusto 查询,然后选择“运行查询”

可以从 Resource Graph Explorer 以 CSV 格式下载这些查询的输出。 还可以使用 ARG 支持的任何自动化客户端(例如 PowerShellCLISDK)在自定义自动化中使用这些查询。 还可以使用 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 实例。