Az Azure Resource Graph lekérdezési nyelvének ismertetése

Az Azure Resource Graph lekérdezési nyelve számos operátort és függvényt támogat. Minden munka Kusto lekérdezésnyelv (KQL) alapján működik. A Resource Graph által használt lekérdező nyelv megismerését kezdje a KQL-oktatóanyaggal.

Ez a cikk a Resource Graph által támogatott nyelvi összetevőket ismerteti:

Resource Graph-táblák

A Resource Graph számos táblát biztosít az Azure Resource Manager-erőforrástípusokról és azok tulajdonságairól tárolt adatokhoz. A Resource Graph-táblák az operátorral használhatóak a join kapcsolódó erőforrástípusok tulajdonságainak lekérésére.

A Resource Graph-táblák támogatják az join ízeket:

Resource Graph-tábla Tud join más táblákat is? Leírás
AdvisorResources Igen A következőhöz Microsoft.Advisorkapcsolódó erőforrásokat tartalmazza: .
AlertsManagementResources Igen A következőhöz Microsoft.AlertsManagementkapcsolódó erőforrásokat tartalmazza: .
AppServiceResources Igen A következőhöz Microsoft.Webkapcsolódó erőforrásokat tartalmazza: .
AuthorizationResources Igen A következőhöz Microsoft.Authorizationkapcsolódó erőforrásokat tartalmazza: .
AWSResources Igen A következőhöz Microsoft.AwsConnectorkapcsolódó erőforrásokat tartalmazza: .
AzureBusinessContinuityResources Igen A következőhöz Microsoft.AzureBusinessContinuitykapcsolódó erőforrásokat tartalmazza: .
ChaosResources Igen A következőhöz Microsoft.Chaoskapcsolódó erőforrásokat tartalmazza: .
CommunityGalleryResources Igen A következőhöz Microsoft.Computekapcsolódó erőforrásokat tartalmazza: .
ComputeResources Igen A virtuálisgép-méretezési csoportokhoz Microsoft.Compute kapcsolódó erőforrásokat tartalmazza.
DesktopVirtualizationResources Igen A következőhöz Microsoft.DesktopVirtualizationkapcsolódó erőforrásokat tartalmazza: .
DnsResources Igen A következőhöz Microsoft.Networkkapcsolódó erőforrásokat tartalmazza: .
EdgeOrderResources Igen A következőhöz Microsoft.EdgeOrderkapcsolódó erőforrásokat tartalmazza: .
ElasticsanResources Igen A következőhöz Microsoft.ElasticSankapcsolódó erőforrásokat tartalmazza: .
ExtendedLocationResources Igen A következőhöz Microsoft.ExtendedLocationkapcsolódó erőforrásokat tartalmazza: .
FeatureResources Igen A következőhöz Microsoft.Featureskapcsolódó erőforrásokat tartalmazza: .
GuestConfigurationResources Igen A következőhöz Microsoft.GuestConfigurationkapcsolódó erőforrásokat tartalmazza: .
HealthResourceChanges Igen A következőhöz Microsoft.Resourceskapcsolódó erőforrásokat tartalmazza: .
HealthResources Igen A következőhöz Microsoft.ResourceHealthkapcsolódó erőforrásokat tartalmazza: .
Elemzések Resources Igen A következőhöz Microsoft.Insightskapcsolódó erőforrásokat tartalmazza: .
IoTSecurityResources Igen Ide tartoznak a kapcsolódó és Microsoft.IoTFirmwareDefenseaMicrosoft.IoTSecurity .
KubernetesConfigurationResources Igen A következőhöz Microsoft.KubernetesConfigurationkapcsolódó erőforrásokat tartalmazza: .
KustoResources Igen A következőhöz Microsoft.Kustokapcsolódó erőforrásokat tartalmazza: .
MaintenanceResources Igen A következőhöz Microsoft.Maintenancekapcsolódó erőforrásokat tartalmazza: .
ManagedServicesResources Igen A következőhöz Microsoft.ManagedServiceskapcsolódó erőforrásokat tartalmazza: .
MigrateResources Igen A következőhöz Microsoft.OffAzurekapcsolódó erőforrásokat tartalmazza: .
NetworkResources Igen A következőhöz Microsoft.Networkkapcsolódó erőforrásokat tartalmazza: .
OrbitalResources Igen A következőhöz Microsoft.Orbitalkapcsolódó erőforrásokat tartalmazza: .
PatchAssessmentResources Igen Az Azure Virtual Machines javításértékeléséhezMicrosoft.Compute és Microsoft.HybridComputea .
PatchInstallationResources Igen Tartalmazza az Azure Virtual Machines javítás telepítésévelMicrosoft.Compute és Microsoft.HybridComputea .
PolicyResources Igen A következőhöz Microsoft.PolicyInsightskapcsolódó erőforrásokat tartalmazza: .
RecoveryServicesResources Igen Ide tartoznak a kapcsolódó és Microsoft.RecoveryServicesaMicrosoft.DataProtection .
ResourceChanges Igen A következőhöz Microsoft.Resourceskapcsolódó erőforrásokat tartalmazza: .
ResourceContainerChanges Igen A következőhöz Microsoft.Resourceskapcsolódó erőforrásokat tartalmazza: .
ResourceContainers Igen Tartalmazza a felügyeleti csoport (Microsoft.Management/managementGroups), az előfizetés (Microsoft.Resources/subscriptions) és az erőforráscsoport (Microsoft.Resources/subscriptions/resourcegroups) erőforrástípusokat és -adatokat.
Források Igen Az alapértelmezett tábla, ha egy tábla nincs definiálva a lekérdezésben. A Resource Manager legtöbb erőforrástípusa és tulajdonsága itt található.
SecurityResources Igen A következőhöz Microsoft.Securitykapcsolódó erőforrásokat tartalmazza: .
ServiceFabricResources Igen A következőhöz Microsoft.ServiceFabrickapcsolódó erőforrásokat tartalmazza: .
ServiceHealthResources Igen A következőhöz Microsoft.ResourceHealth/eventskapcsolódó erőforrásokat tartalmazza: .
SpotResources Igen A következőhöz Microsoft.Computekapcsolódó erőforrásokat tartalmazza: .
SupportResources Igen A következőhöz Microsoft.Supportkapcsolódó erőforrásokat tartalmazza: .
TagsResources Igen A következőhöz Microsoft.Resources/tagnamespaceskapcsolódó erőforrásokat tartalmazza: .

Az erőforrástípusokat tartalmazó táblák listájához lépjen az Azure Resource Graph táblára és az erőforrástípusra vonatkozó hivatkozásra.

Feljegyzés

Resources az alapértelmezett tábla. A tábla lekérdezése Resources során nem szükséges megadni a tábla nevét, hacsak join nem használják vagy union használják. Az ajánlott eljárás azonban az, hogy a kezdeti táblát mindig belefoglalja a lekérdezésbe.

Ha szeretné felderíteni, hogy mely erőforrástípusok érhetők el az egyes táblákban, használja a Resource Graph Explorert a portálon. Másik lehetőségként használjon egy lekérdezést, például <tableName> | distinct type lekérheti az adott Resource Graph-tábla által támogatott erőforrástípusok listáját, amelyek a környezetben léteznek.

Az alábbi lekérdezés egy egyszerű joinlekérdezést jelenít meg. A lekérdezés eredménye egyesíti az oszlopokat, és a példában szereplő resourceContainers tábla összes ismétlődő oszlopneve 1-zel van hozzáfűzve. Mivel a ResourceContainers tábla előfizetésekhez és erőforráscsoportokhoz is tartalmaz típusokat, bármelyik típus használható az erőforráshoz való csatlakozáshoz a táblából Resources .

Resources
| join ResourceContainers on subscriptionId
| limit 1

Az alábbi lekérdezés a joinösszetettebb használatát mutatja be. Először is a lekérdezés az Azure Key Vault-tárolók erőforrástípusának mezőit Resources használjaproject. A következő lépés join az eredményeket a ResourceContainerekkelegyesíti, ahol a típus egy olyan tulajdonság előfizetése project, amely az első tábla és az összekapcsolt tábla projectegyikében található. A mező átnevezése elkerüli join a név1 nevet, mivel a tulajdonság már ki van vetve innenResources. A lekérdezés eredménye egyetlen kulcstartó, amely a kulcstartó nevét, helyét és erőforráscsoportját, valamint annak az előfizetésnek a nevét jeleníti meg, amelyben szerepel.

Resources
| where type == 'microsoft.keyvault/vaults'
| project name, type, location, subscriptionId, resourceGroup
| join (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId
| project type, name, location, resourceGroup, SubName
| limit 1

Feljegyzés

Az eredmények projectkorlátozásakor join a két tábla összekapcsolásához használt join tulajdonságot , a fenti példában szereplő subscriptionId tulajdonságot is tartalmaznia kell.project

Kiterjesztett tulajdonságok

Előzetes verziójú funkcióként a Resource Graph egyes erőforrástípusai több típushoz kapcsolódó tulajdonsággal rendelkeznek, amelyek az Azure Resource Manager által biztosított tulajdonságokon túl is lekérdezhetők. Ez a kiterjesztett tulajdonságok néven ismert értékkészlet egy támogatott erőforrástípuson létezik a következőbenproperties.extended: . Ha kiterjesztett tulajdonságokkal rendelkező erőforrástípusokat szeretne megjeleníteni, használja a következő lekérdezést:

Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc

Példa: Virtuális gépek számának lekérése a következő szerint instanceView.powerState.code:

Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)

Resource Graph egyéni nyelvi elemei

Megosztott lekérdezés szintaxisa (előzetes verzió)

Előzetes verziójú funkcióként a megosztott lekérdezések közvetlenül egy Resource Graph-lekérdezésben érhetők el. Ez a forgatókönyv lehetővé teszi szabványos lekérdezések közös lekérdezésként való létrehozását és újbóli felhasználását. Ha megosztott lekérdezést szeretne meghívni egy Resource Graph-lekérdezésben, használja a szintaxist {{shared-query-uri}} . A megosztott lekérdezés URI-ja a lekérdezés Gépház lapján található megosztott lekérdezés erőforrás-azonosítója. Ebben a példában a megosztott lekérdezés URI-ja a következő /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS. Ez az URI a másik lekérdezésben hivatkozni kívánt megosztott lekérdezés előfizetésére, erőforráscsoportjára és teljes nevére mutat. Ez a lekérdezés megegyezik a következő oktatóanyagban létrehozott lekérdezéssel: Lekérdezés létrehozása és megosztása.

Feljegyzés

Nem menthet olyan lekérdezést, amely megosztott lekérdezésre hivatkozik megosztott lekérdezésként.

1. példa: Csak a megosztott lekérdezés használata:

A Resource Graph-lekérdezés eredményei megegyeznek a megosztott lekérdezésben tárolt lekérdezés eredményeivel.

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}

2. példa: A megosztott lekérdezés belefoglalása egy nagyobb lekérdezés részeként:

Ez a lekérdezés először a megosztott lekérdezést használja, majd limit tovább korlátozza az eredményeket.

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'

Támogatott KQL nyelvi elemek

A Resource Graph támogatja a KQL-adattípusok, a skaláris függvények, a skaláris operátorok és az aggregációs függvények egy részét. A Resource Graph bizonyos táblázatos operátorokat támogat, amelyek némelyike eltérő viselkedéssel rendelkezik.

Támogatott táblázatos/felső szintű operátorok

Íme a Resource Graph által támogatott KQL táblázatos operátorok listája konkrét mintákkal:

KQL Resource Graph-minta lekérdezés Jegyzetek
count Kulcstartók megszámlálása
Különböző A tárolót tartalmazó erőforrások megjelenítése
Kiterjesztése A virtuális gépek száma az operációs rendszer típusa szerint
csatlakozás Kulcstartó előfizetés nevével Csatlakozzon a támogatott ízekhez: innerunique, inner, leftouter és fullouter. Egy lekérdezés három join korlátja, amelyek közül az egyik kereszttáblás joinlehet. Ha minden táblaközi join használat erőforrás- és ResourceContainers-felhasználók között van, akkor három táblaközi join használat engedélyezett. Az egyéni illesztési stratégiák, például a közvetítési csatlakozás nem engedélyezettek. Mely táblák használhatókjoin, lépjen a Resource Graph-táblákra.
Korlátoz Az összes nyilvános IP-cím listázása Szinonimája.take A Skip nem működik.
mvexpand Régebbi operátort használjon mv-expand helyette. RowLimit max. 400. Az alapértelmezett érték 128.
mv-expand Az Azure Cosmos DB listázása adott írási helyekkel RowLimit max. 400. Az alapértelmezett érték 128. Egy lekérdezésben legfeljebb 2 mv-expand lehet.
Rendelés Az erőforrások listája név szerint rendezve Szinonimája sort
Elemez Virtuális hálózatok és hálózati adapterek alhálózatainak lekérése A tulajdonságokat optimális közvetlenül elérni, ha azok a használat parsehelyett léteznek.
Projekt Az erőforrások listája név szerint rendezve
projekteltávol Oszlopok eltávolítása az eredményekből
Rendezés Az erőforrások listája név szerint rendezve Szinonimája order
Összefoglalni Az Azure-erőforrások száma Csak egyszerűsített első oldal
take Az összes nyilvános IP-cím listázása Szinonimája.limit A Skip nem működik.
Top Az első öt virtuális gép megjelenítése a nevük és az operációs rendszerük típusa szerint
Unió Két lekérdezés eredményeinek egyesítése egyetlen eredményben Egyetlen tábla engedélyezett: | union [kind= inner|outer] [withsource=ColumnName] Table. Egyetlen lekérdezés három union lábának korlátja. A lábtáblák homályos felbontása union nem engedélyezett. Használható egyetlen táblában, vagy az Erőforrások és a ResourceContainers táblák között.
Ahol A tárolót tartalmazó erőforrások megjelenítése

Egyetlen Resource Graph SDK-lekérdezésben három join és három mv-expand operátor alapértelmezett korlátja van. A bérlőre vonatkozó korlátozások növelését a Súgó + támogatás segítségével kérheti.

Az Open Query portál élményének támogatásához az Azure Resource Graph Explorer magasabb globális korláttal rendelkezik, mint a Resource Graph SDK.

Feljegyzés

A táblákra nem hivatkozhat többször jobb táblázatként, ami meghaladja az 1-et. Ha így tesz, hibaüzenetet kap a DisallowedMaxNumberOfRemoteTables kóddal.

Lekérdezési hatókör

Azoknak az előfizetéseknek vagy felügyeleti csoportoknak a hatóköre, amelyekből egy lekérdezés az erőforrásokat visszaadja, alapértelmezés szerint az előfizetések listájára kerül az engedélyezett felhasználó környezete alapján. Ha nincs meghatározva felügyeleti csoport vagy előfizetési lista, a lekérdezés hatóköre az összes erőforrás, és magában foglalja az Azure Lighthouse delegált erőforrásait is.

A lekérdezésre kerülő előfizetések vagy felügyeleti csoportok listája manuálisan definiálható az eredmények hatókörének módosításához. A REST API managementGroups tulajdonság például a felügyeleti csoport azonosítóját veszi fel, amely eltér a felügyeleti csoport nevétől. Ha managementGroups meg van adva, az első 10 000 előfizetésből származó erőforrások szerepelnek a megadott felügyeleticsoport-hierarchiában vagy alatt. managementGroups nem használható egyszerre, mint subscriptionsa .

Példa: Az azonosítóval myMGellátott My Management Group felügyeleti csoport hierarchiájának összes erőforrásának lekérdezése.

  • REST API URI

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
    
  • Kérelem törzse

    {
      "query": "Resources | summarize count()",
      "managementGroups": ["myMG"]
    }
    

A AuthorizationScopeFilter paraméter lehetővé teszi az Azure Policy-hozzárendelések és az Azure szerepköralapú hozzáférés-vezérlési (Azure RBAC- ) szerepkör-hozzárendelések felsorolását a AuthorizationResources felső hatókörökből öröklő táblában. A AuthorizationScopeFilter paraméter a következő értékeket fogadja el a táblákhoz és AuthorizationResources a PolicyResources táblákhoz:

  • AtScopeAndBelow (alapértelmezett, ha nincs megadva): Az adott hatókör és az összes gyermekhatókör hozzárendeléseit adja vissza.
  • AtScopeAndAbove: Az adott hatókör és az összes szülőhatókör hozzárendeléseit adja vissza, a gyermekhatóköröket nem.
  • AtScopeAboveAndBelow: Az adott hatókör, az összes szülő- és gyermekhatókör hozzárendeléseit adja vissza.
  • AtScopeExact: Csak az adott hatókörhöz tartozó hozzárendeléseket ad vissza; a rendszer nem tartalmaz szülő- vagy gyermekhatókört.

Feljegyzés

A paraméter használatához AuthorizationScopeFilter mindenképpen használja a 2021-06-01-preview vagy újabb API-verziót a kérésekben.

Példa: Az összes szabályzat-hozzárendelés lekérése a myMG felügyeleti csoportban és a bérlőgyökér (szülő)hatókörökben.

  • REST API URI

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
    
  • Törzsminta kérése

    {
      "options": {
        "authorizationScopeFilter": "AtScopeAndAbove"
      },
      "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'",
      "managementGroups": ["myMG"]
    }
    

Példa: Az összes szabályzat-hozzárendelés lekérése a mySubscriptionId-előfizetésben, a felügyeleti csoportban és a bérlő gyökértartományában.

  • REST API URI

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
    
  • Törzsminta kérése

    {
      "options": {
        "authorizationScopeFilter": "AtScopeAndAbove"
      },
      "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'",
      "subscriptions": ["mySubscriptionId"]
    }
    

Escape-karakterek

Egyes tulajdonságneveket, például az a . vagy $, be kell csomagolni vagy meg kell szökni a lekérdezésben, vagy a tulajdonságnév helytelenül van értelmezve, és nem adja meg a várt eredményeket.

  • Pont (.): A tulajdonságnév ['propertyname.withaperiod'] körbefuttatása szögletes zárójelekkel.

    Példa lekérdezés az odata.type tulajdonság körbefuttatására:

    where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
    
  • Dollárjel ($): A tulajdonságnév karakterének elhagyása. A használt feloldó karakter a Resource Graphot futtató rendszerhéjtól függ.

    • Bash: Használjon fordított perjelet (\) menekülési karakterként.

      Példa lekérdezés, amely a Bash $type tulajdonsága elől menekül:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
      
    • cmd: Ne meneküljön a dollárjel ($) karakterből.

    • PowerShell: Használjon egy backtick (`) karaktert menekülési karakterként.

      Példa lekérdezés, amely a PowerShellben $type tulajdonság elől menekül:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
      

Következő lépések