Drücke "Enter", um den Text zu überspringen.

Schlagwort: KQL

Mitglieder einer Azure Application Security Group auslesen

Immer wieder begegnet mir von Kunden die Frage, ob und wie man die Server, die Mitglieder einer Azure Application Security Group sind, auslesen kann. Im Portal selber müsste man dazu nämlich alles VMs einzelne abklappern.

Und das geht natürlich auch einfacher per PowerShell:

Get-AzNetworkInterface | Select-Object -Property Name, IpConfigurations | Select -Property Name,@{label="ASG";expression={$_.ipConfigurations.ApplicationSecurityGroupsText}} | Where ASG -ne "[]" | fl *

Das könnte man jetzt noch schöner machen – ist aber ohnehin keine wirklich gute Lösung, weil man hierzu alle Subscriptions „abklappern“ müsste. Besser ist hier dann der Resource Graph geeignet:

Die Query fragt alle NICs (und damit auch alle Private Endpoints, die ja auch eine ASG haben könnten) ab und bereitet die Daten dann noch etwas schöner auf. Das Ganze liefert in weniger als einer Sekunde die Informationen über alle Subscriptions!

Die dafür von mir geschriebene Query lautet:

resources
| where type =~ "microsoft.network/networkinterfaces"
| mv-expand properties.ipConfigurations
| mv-expand applicationSecurityGroupId=properties_ipConfigurations.properties.applicationSecurityGroups
| parse applicationSecurityGroupId with * "/applicationSecurityGroups/" applicationSecurityGroup '"' *
| extend vmId = properties.virtualMachine.id
| parse vmId with * "/virtualMachines/" vmName
| extend peId = properties.privateEndpoint.id
| parse peId with * "/privateEndpoints/" peName
| where isnotnull(applicationSecurityGroupId)
| extend endpointName = iff(isnotnull(vmId),vmName, peName)
| extend endpointId = iff(isnotnull(vmId),vmId, peId)
| extend endpointType = iff(isnotnull(vmId),"Virtual Machine","Private Endpoint")
| project applicationSecurityGroup,applicationSecurityGroupId=applicationSecurityGroupId.id,endpointName,endpointId,endpointType
| order by applicationSecurityGroup

Optional kann man noch ein

| summarize make_list(endpointName) by tostring(applicationSecurityGroupId),applicationSecurityGroup

anhängen, wenn man nicht mehr jede VM einzeln sehen will…

Die Query findet ihr auch auf meinem GitHub Repository:

scripts/Azure/ResourceGraph/ApplicationSecurityGroupQuery.kql at master · HaikoHertes/scripts (github.com)

Viel Spaß damit!

Schreibe einen Kommentar...