Starter Resource Graph-lekérdezésminták

Az Azure Resource Graph-fal végzett lekérdezések megértéséhez először a lekérdezés nyelvét kell alapszinten megismernie. Ha még nem ismeri a Kusto lekérdezésnyelv (KQL) használatát, javasoljuk, hogy tekintse át a KQL-oktatóanyagot, amelyből megtudhatja, hogyan írhat kéréseket a keresett erőforrásokra vonatkozóan.

Ez a cikk a következő kezdő lekérdezéseket használja:

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Nyelvi támogatás

Az Azure Resource Graph-ot az Azure CLI (bővítményen keresztül) és az Azure PowerShell (modulon keresztül) támogatja. Mielőtt a következő lekérdezések bármelyikét végrehajtaná, ellenőrizze, hogy a környezet készen áll-e. A kiválasztott parancshéj környezet telepítéséhez és ellenőrzéséhez lásd: Azure CLI és Azure PowerShell.

Az Azure-erőforrások száma

Ez a lekérdezés az Ön által elérhető előfizetésekben lévő Azure-erőforrások számát adja vissza. Ez a lekérdezés emellett annak ellenőrzésére is jól használható, hogy a kiválasztott parancshéj rendelkezik-e a megfelelő, telepített és működőképes Azure Resource Graph-összetevőkkel.

Resources
| summarize count()

Alapértelmezés szerint az Azure CLI lekérdezi az összes elérhető előfizetést, de megadhatja az --subscriptions adott előfizetések lekérdezésére szolgáló paramétert.

az graph query -q "Resources | summarize count()"

Ez a példa egy változót használ az előfizetés-azonosítóhoz.

subid=$(az account show --query id --output tsv)
az graph query -q "Resources | summarize count()" --subscriptions $subid

A felügyeleti csoport és a bérlő hatókörei alapján is lekérdezhető. Cserélje le és <tenantId> cserélje le <managementGroupId> az értékeket.

az graph query -q "Resources | summarize count()" --management-groups '<managementGroupId>'
az graph query -q "Resources | summarize count()" --management-groups '<tenantId>'

A bérlőazonosítóhoz változót is használhat.

tenantid=$(az account show --query tenantId --output tsv)
az graph query -q "Resources | summarize count()" --management-groups $tenantid

Key Vault-erőforrások számlálása

Ez a lekérdezés a visszaadott rekordok számának megszámlálása helyett summarize használjacount. Csak a kulcstartók szerepelnek a darabszámban.

Resources
| where type =~ 'microsoft.keyvault/vaults'
| count
az graph query -q "Resources | where type =~ 'microsoft.keyvault/vaults' | count"

Az erőforrások listája név szerint rendezve

Ez a lekérdezés bármilyen típusú erőforrást vissza tud adni, de csak a név, típus és hely tulajdonságokkal. Az order by paranccsal rendezi a tulajdonságokat a név tulajdonság alapján növekvő (asc) sorrendben.

Resources
| project name, type, location
| order by name asc
az graph query -q "Resources | project name, type, location | order by name asc"

Az összes virtuális gép megjelenítése név szerint rendezve, csökkenő sorrendben

Ha csak a (Microsoft.Compute/virtualMachines típusú) virtuális gépeket kívánja listázni, megfeleltetheti a típus tulajdonságot az eredmények között. Az előző lekérdezéshez hasonlóan a desc paraméter az order by paramétert csökkenő sorrendre módosítja. A típusegyezésben megadott =~ esetén a Resource Graph megkülönbözteti a kis- és a nagybetűt.

Resources
| project name, location, type
| where type =~ 'Microsoft.Compute/virtualMachines'
| order by name desc
az graph query -q "Resources | project name, location, type| where type =~ 'Microsoft.Compute/virtualMachines' | order by name desc"

Az első öt virtuális gép megjelenítése a nevük és az operációs rendszerük típusa szerint

Ez a lekérdezés csak öt név szerint rendezett egyező rekord lekérésére használ top . Az Azure-erőforrás típusa Microsoft.Compute/virtualMachines. A project adja meg az Azure Resource Graph-nak, hogy a lekérdezés mely tulajdonságokat tartalmazza.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project name, properties.storageProfile.osDisk.osType
| top 5 by name desc
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project name, properties.storageProfile.osDisk.osType | top 5 by name desc"

A virtuális gépek száma az operációs rendszer típusa szerint

Az előző lekérdezésre épülve a listánk továbbra is a Microsoft.Compute/virtualMachines típusú Azure-erőforrásokra korlátozódik, viszont a visszaadott rekordok száma szerint már nincs szűrve. Ehelyett a summarize és a count() paramétert használtuk annak meghatározásához, hogyan csoportosítsa és összesítse az értékeket tulajdonság alapján, amely ebben a példában a properties.storageProfile.osDisk.osType. Az alábbi helyen talál példát arra, hogy hogyan néz ki ez a sztring a teljes objektumban: erőforrások felfedezése – virtuális gépek felderítése.

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| summarize count() by tostring(properties.storageProfile.osDisk.osType)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"

Ugyanazt a lekérdezést másképpen is megírhatja, ha extend egy tulajdonságot használ, és ideiglenes nevet ad neki a lekérdezésen belül, ebben az esetben az operációs rendszerben. az operációs rendszert ezután az előző példához hasonlóan használja summarizecount() .

Resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| extend os = properties.storageProfile.osDisk.osType
| summarize count() by tostring(os)
az graph query -q "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | extend os = properties.storageProfile.osDisk.osType | summarize count() by tostring(os)"

Feljegyzés

Vegye figyelembe, hogy míg az =~ paraméter lehetővé teszi a kis- és nagybetűk megkülönböztetése nélküli lekérdezést, ha tulajdonságokat (például properties.storageProfile.osDisk.osType) használ a lekérdezésben, a kis- és nagybetűt helyesen kell megadni. Ha a tulajdonság helytelen eset, a rendszer null vagy helytelen értéket ad vissza, és a csoportosítás vagy az összegzés helytelen lenne.

A storage szót tartalmazó erőforrások megjelenítése

Ahelyett, hogy contains explicit módon definiálja az egyező típust, ez a példa lekérdezés megkeresi a storage szóhoz tartozó Azure-erőforrást.

Resources
| where type contains 'storage' | distinct type
az graph query -q "Resources | where type contains 'storage' | distinct type"

Az összes Azure-beli virtuális hálózati alhálózat listázása

Ez a lekérdezés az Azure-beli virtuális hálózatok (VNetek) listáját adja vissza, beleértve az alhálózatneveket és a címelőtagokat.

Resources
| where type == 'microsoft.network/virtualnetworks'
| extend subnets = properties.subnets
| mv-expand subnets
| project name, subnets.name, subnets.properties.addressPrefix, location, resourceGroup, subscriptionId
az graph query -q "Resources | where type == 'microsoft.network/virtualnetworks' | extend subnets = properties.subnets | mv-expand subnets | project name, subnets.name, subnets.properties.addressPrefix, location, resourceGroup, subscriptionId"

Az összes nyilvános IP-cím listázása

Az előző lekérdezéshez hasonlóan minden olyan elemet megtalál, amelynek a típusa tartalmazza a publicIPAddresses sztringet. Ez a lekérdezés kibővül ezen a mintán, hogy csak azokat az eredményeket tartalmazza, ahol a properties.ipAddressisnotempty, hogy csak a properties.ipAddress értéket adja vissza, és limit az első 100 találatot adja vissza. Előfordulhat, hogy a választott rendszerhéjtól függően el kell menekülnie az idézőjelek elől.

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| project properties.ipAddress
| limit 100
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress | limit 100"

A konfigurált IP-címekkel rendelkező erőforrások száma előfizetés szerint csoportosítva

Ha maradunk az előző lekérdezéspéldánál, és hozzáadjuk a summarize és a count() paramétert, megkaphatjuk a konfigurált IP-címekkel rendelkező erőforrások előfizetés szerinti listáját.

Resources
| where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress)
| summarize count () by subscriptionId
az graph query -q "Resources | where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | summarize count () by subscriptionId"

Az adott címkeértékkel rendelkező erőforrások listázása

Az eredményeket az Azure-erőforrás típusán kívül más tulajdonságok, pl. a címke alapján is korlátozhatjuk. Ebben a példában azokra az Environment címkenévvel rendelkező Azure-erőforrásokra szűrünk, amelyek értéke Internal.

Resources
| where tags.environment=~'internal'
| project name
az graph query -q "Resources | where tags.environment=~'internal' | project name"

Az erőforrás címkéinek és a hozzájuk tartozó értékek megadásához adja hozzá a tags tulajdonságot a project kulcsszóhoz.

Resources
| where tags.environment=~'internal'
| project name, tags
az graph query -q "Resources | where tags.environment=~'internal' | project name, tags"

Az adott címkeértékkel rendelkező összes tárfiók listázása

Kombinálhatja az előző példa szűrőfunkcióját, és type tulajdonság alapján szűrheti az Azure-erőforrásokat. Ez a lekérdezés az Azure-erőforrások adott típusainak keresését is adott címkenévre és -értékre korlátozza.

Resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| where tags['tag with a space']=='Custom value'
az graph query -q "Resources | where type =~ 'Microsoft.Storage/storageAccounts' | where tags['tag with a space']=='Custom value'"

Feljegyzés

Ez példa az egyező találatok kereséséhez az == paramétert használja az =~ feltételes helyett. Az == kis- és nagybetűket megkülönböztető találatot ad.

Az összes címke és érték listázása

Ez a lekérdezés a felügyeleti csoportok, előfizetések és erőforrások címkéit és értékeit sorolja fel. A lekérdezés először korlátozza a címkéket isnotempty()tartalmazó erőforrásokat, korlátozza a belefoglalt mezőket úgy, hogy csak a címkéket tartalmazza, projectés mvexpandextend lekéri a párosított adatokat a tulajdonságcsomagból. Ezt követően a ResourceContainers eredményeit az erőforrásokból származó eredményekre egyesítiunion, így széles körű lefedettséget biztosít, hogy mely címkék legyenek lekérve. Végül a párosított adatokra distinct korlátozza az eredményeket, és kizárja a rendszer által rejtett címkéket.

ResourceContainers
| where isnotempty(tags)
| project tags
| mvexpand tags
| extend tagKey = tostring(bag_keys(tags)[0])
| extend tagValue = tostring(tags[tagKey])
| union (
    resources
    | where isnotempty(tags)
    | project tags
    | mvexpand tags
    | extend tagKey = tostring(bag_keys(tags)[0])
    | extend tagValue = tostring(tags[tagKey])
)
| distinct tagKey, tagValue
| where tagKey !startswith "hidden-"
az graph query -q "ResourceContainers | where isnotempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) | union (resources | where notempty(tags) | project tags | mvexpand tags | extend tagKey = tostring(bag_keys(tags)[0]) | extend tagValue = tostring(tags[tagKey]) ) | distinct tagKey, tagValue | where tagKey !startswith "hidden-""

Társítatlan hálózati biztonsági csoportok megjelenítése

Ez a lekérdezés olyan hálózati biztonsági csoportokat (NSG-ket) ad vissza, amelyek nincsenek hálózati adapterhez vagy alhálózathoz társítva.

Resources
| where type =~ "microsoft.network/networksecuritygroups" and isnull(properties.networkInterfaces) and isnull(properties.subnets)
| project name, resourceGroup
| sort by name asc
az graph query -q "Resources | where type =~ 'microsoft.network/networksecuritygroups' and isnull(properties.networkInterfaces) and isnull(properties.subnets) | project name, resourceGroup | sort by name asc"

Súlyosság szerint rendezett Azure Monitor-riasztások listázása

Ez a lekérdezés a táblával adja vissza a alertsmanagementresources súlyosság szerint rendezett Azure Monitor-riasztásokat.

alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity)
| summarize AlertsCount = count() by Severity
az graph query -q "alertsmanagementresources | where type =~ 'microsoft.alertsmanagement/alerts' | where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now() | project Severity = tostring(properties.essentials.severity) | summarize AlertsCount = count() by Severity"

Súlyosság és riasztási állapot szerint rendezett Azure Monitor-riasztások listázása

Ez a lekérdezés a táblával adja vissza a alertsmanagementresources súlyosság és a riasztási állapot szerint rendezett Azure Monitor-riasztásokat.

alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity), AlertState = tostring(properties.essentials.alertState)
| summarize AlertsCount = count() by Severity, AlertState
az graph query -q "alertsmanagementresources | where type =~ 'microsoft.alertsmanagement/alerts' | where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now() | project Severity = tostring(properties.essentials.severity), AlertState = tostring(properties.essentials.alertState) | summarize AlertsCount = count() by Severity, AlertState"

Súlyosság, monitorozási szolgáltatás és célerőforrás-típus szerint rendezett Azure Monitor-riasztások listázása

Ez a lekérdezés a táblával adja vissza a súlyosság, a monitorozási szolgáltatás és a alertsmanagementresources célerőforrás típusa szerint rendezett Azure Monitor-riasztásokat.

alertsmanagementresources
| where type =~ 'microsoft.alertsmanagement/alerts'
| where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now()
| project Severity = tostring(properties.essentials.severity),
MonitorCondition = tostring(properties.essentials.monitorCondition),
ObjectState = tostring(properties.essentials.alertState),
MonitorService = tostring(properties.essentials.monitorService),
AlertRuleId = tostring(properties.essentials.alertRule),
SignalType = tostring(properties.essentials.signalType),
TargetResource = tostring(properties.essentials.targetResourceName),
TargetResourceType = tostring(properties.essentials.targetResourceName), id
| summarize AlertsCount = count() by Severity, MonitorService , TargetResourceType
az graph query -q "alertsmanagementresources | where type =~ 'microsoft.alertsmanagement/alerts' | where todatetime(properties.essentials.startDateTime) >= ago(2h) and todatetime(properties.essentials.startDateTime) < now() | project Severity = tostring(properties.essentials.severity), MonitorCondition = tostring(properties.essentials.monitorCondition), ObjectState = tostring(properties.essentials.alertState), MonitorService = tostring(properties.essentials.monitorService), AlertRuleId = tostring(properties.essentials.alertRule), SignalType = tostring(properties.essentials.signalType), TargetResource = tostring(properties.essentials.targetResourceName), TargetResourceType = tostring(properties.essentials.targetResourceName), id | summarize AlertsCount = count() by Severity, MonitorService , TargetResourceType"

Következő lépések