0

我需要使用 Azure Resource Graph 在 Azure 中获取公共 ips 列表以及订阅名称、资源类型(例如 vm、应用程序网关、elb)。我还想显示公共 IP 地址。

这是我的草稿,但我不知道如何列出其他资源:

Resources
| where type =~ 'microsoft.compute/virtualmachines'
|project name, OS=tostring(properties.storageProfile.osDisk.osType), location, 
ipid = tolower(tostring(properties.networkProfile.networkInterfaces[0].id))
| join kind=leftouter (
    Resources
    | where type =~ 'microsoft.network/networkinterfaces'
    | project ipid = tolower(id), elasticPoolName = name, 
    publicIPid = properties.ipConfigurations[0].properties.publicIPAddress.id)
    | join kind=leftouter (
        Resources
        | where type =~ 'microsoft.network/applicationGateways'
        | project name, publicIP
on ipid
| project-away ipid
| project name, OS, location, pubipid=tolower(tostring(publicIPid))
| join kind=leftouter (
    Resources
    | where type =~ 'microsoft.network/publicipaddresses'
    | project pubipid = tolower(id), publicIP = properties.ipAddress)
on pubipid
| project-away pubipid
| project name, publicIP, OS, location
4

1 回答 1

0

您可以使用以下查询来获取所有 IP 地址的关联资源提供程序:

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| project name,id= split(properties.ipConfiguration.id,"providers",1),ip_address=properties.ipAddress

输出:

在此处输入图像描述

笔记:

  • 如您在上图中所见,我们得到了一个输出提供者的名称,例如 id 部分 /Microsoft.Network/loadBalancers/kubernetes/frontendIPConfigurations/0713fba8-23fa-43bc-a003-b4197500b399,那么这意味着公共 IP 与一个Load balancer名称相关联,kubernetes如 1 所示。
  • 如果关联与网络接口,则网络接口可能与计算资源(如 VM 等)或 DNS 关联,如 2 所示。
  • 如果它不与任何资源相关联,则它会返回null,如 3 所示。
  • 在 4 中,Bastion Host 正在使用它。
  • 在 5 中,它被 VNET 网关使用。
于 2021-11-03T11:43:26.427 回答