Kezdő 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ásokhoz.

A következő alapszintű lekérdezéseken vezetjük végig:

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()
az graph query -q "Resources | summarize count()"

Key Vault erőforrások száma

Ez a lekérdezés ahelyettsummarize, count hogy megszámolja a visszaadott rekordok számát. A darabszám csak a kulcstartókat tartalmazza.

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 a top paramétert használja ahhoz, hogy a feltételeknek megfelelőkből csak öt rekordot kérjen le, amelyek név szerint vannak rendezve. 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 egy tulajdonságnak extend ideiglenes nevet ad a lekérdezésben, ebben az esetben az operációs rendszerben. az operációs rendszert 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)"

Megjegyzé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 explicit módon meghatározná a típust az egyező találatok lekéréséhez, ez a példaként megadott lekérdezés bármely Azure-erőforrást megtalálja, amely tartalmazza (contains) a storage szót.

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 listáját adja vissza, beleértve az alhálózatok nevét és a címelőtagokat. Köszönöm Saul Dolginnak a közreműködést.

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 kiterjeszti ezt a mintát, hogy csak azokat az eredményeket tartalmazza, ahol 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'"

Megjegyzé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 azok értékeinek listázása

Ez a lekérdezés felsorolja a felügyeleti csoportok, előfizetések és erőforrások címkéit és azok értékeit. A lekérdezés először korlátozza azokat az erőforrásokat, ahol címkék vannak isnotempty(), a belefoglalt mezőket úgy korlátozza, hogy csak a címkét tartalmazza a project, és mvexpandextend a párosított adatokat lekéri a tulajdonságcsomagból. Ezután union a ResourceContainers eredményeit az Erőforrásokból származó eredményekhez kombinálja, így széles körű lefedettséget biztosít a beolvasandó címkéknek. 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"

Következő lépések