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.Advisor kapcsolódó erőforrásokat tartalmazza: . |
AlertsManagementResources | Igen | A következőhöz Microsoft.AlertsManagement kapcsolódó erőforrásokat tartalmazza: . |
AppServiceResources | Igen | A következőhöz Microsoft.Web kapcsolódó erőforrásokat tartalmazza: . |
AuthorizationResources | Igen | A következőhöz Microsoft.Authorization kapcsolódó erőforrásokat tartalmazza: . |
AWSResources | Igen | A következőhöz Microsoft.AwsConnector kapcsolódó erőforrásokat tartalmazza: . |
AzureBusinessContinuityResources | Igen | A következőhöz Microsoft.AzureBusinessContinuity kapcsolódó erőforrásokat tartalmazza: . |
ChaosResources | Igen | A következőhöz Microsoft.Chaos kapcsolódó erőforrásokat tartalmazza: . |
CommunityGalleryResources | Igen | A következőhöz Microsoft.Compute kapcsoló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.DesktopVirtualization kapcsolódó erőforrásokat tartalmazza: . |
DnsResources | Igen | A következőhöz Microsoft.Network kapcsolódó erőforrásokat tartalmazza: . |
EdgeOrderResources | Igen | A következőhöz Microsoft.EdgeOrder kapcsolódó erőforrásokat tartalmazza: . |
ElasticsanResources | Igen | A következőhöz Microsoft.ElasticSan kapcsolódó erőforrásokat tartalmazza: . |
ExtendedLocationResources | Igen | A következőhöz Microsoft.ExtendedLocation kapcsolódó erőforrásokat tartalmazza: . |
FeatureResources | Igen | A következőhöz Microsoft.Features kapcsolódó erőforrásokat tartalmazza: . |
GuestConfigurationResources | Igen | A következőhöz Microsoft.GuestConfiguration kapcsolódó erőforrásokat tartalmazza: . |
HealthResourceChanges | Igen | A következőhöz Microsoft.Resources kapcsolódó erőforrásokat tartalmazza: . |
HealthResources | Igen | A következőhöz Microsoft.ResourceHealth kapcsolódó erőforrásokat tartalmazza: . |
Elemzések Resources | Igen | A következőhöz Microsoft.Insights kapcsolódó erőforrásokat tartalmazza: . |
IoTSecurityResources | Igen | Ide tartoznak a kapcsolódó és Microsoft.IoTFirmwareDefense a Microsoft.IoTSecurity . |
KubernetesConfigurationResources | Igen | A következőhöz Microsoft.KubernetesConfiguration kapcsolódó erőforrásokat tartalmazza: . |
KustoResources | Igen | A következőhöz Microsoft.Kusto kapcsolódó erőforrásokat tartalmazza: . |
MaintenanceResources | Igen | A következőhöz Microsoft.Maintenance kapcsolódó erőforrásokat tartalmazza: . |
ManagedServicesResources | Igen | A következőhöz Microsoft.ManagedServices kapcsolódó erőforrásokat tartalmazza: . |
MigrateResources | Igen | A következőhöz Microsoft.OffAzure kapcsolódó erőforrásokat tartalmazza: . |
NetworkResources | Igen | A következőhöz Microsoft.Network kapcsolódó erőforrásokat tartalmazza: . |
OrbitalResources | Igen | A következőhöz Microsoft.Orbital kapcsolódó erőforrásokat tartalmazza: . |
PatchAssessmentResources | Igen | Az Azure Virtual Machines javításértékeléséhez Microsoft.Compute és Microsoft.HybridCompute a . |
PatchInstallationResources | Igen | Tartalmazza az Azure Virtual Machines javítás telepítésével Microsoft.Compute és Microsoft.HybridCompute a . |
PolicyResources | Igen | A következőhöz Microsoft.PolicyInsights kapcsolódó erőforrásokat tartalmazza: . |
RecoveryServicesResources | Igen | Ide tartoznak a kapcsolódó és Microsoft.RecoveryServices a Microsoft.DataProtection . |
ResourceChanges | Igen | A következőhöz Microsoft.Resources kapcsolódó erőforrásokat tartalmazza: . |
ResourceContainerChanges | Igen | A következőhöz Microsoft.Resources kapcsoló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.Security kapcsolódó erőforrásokat tartalmazza: . |
ServiceFabricResources | Igen | A következőhöz Microsoft.ServiceFabric kapcsolódó erőforrásokat tartalmazza: . |
ServiceHealthResources | Igen | A következőhöz Microsoft.ResourceHealth/events kapcsolódó erőforrásokat tartalmazza: . |
SpotResources | Igen | A következőhöz Microsoft.Compute kapcsolódó erőforrásokat tartalmazza: . |
SupportResources | Igen | A következőhöz Microsoft.Support kapcsolódó erőforrásokat tartalmazza: . |
TagsResources | Igen | A következőhöz Microsoft.Resources/tagnamespaces kapcsoló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ű join
leké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 ResourceContainerekkel egyesíti, ahol a típus egy olyan tulajdonság előfizetése project
, amely az első tábla és az összekapcsolt tábla project
egyiké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 project
korlá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 join lehet. 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. 2000. Az alapértelmezett érték 128. |
|
mv-expand | Az Azure Cosmos DB listázása adott írási helyekkel | RowLimit max. 2000. 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 parse helyett 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 subscriptions
a .
Példa: Az azonosítóval myMG
ellá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
- Az Azure Resource Graph lekérdezési nyelv starter lekérdezései és speciális lekérdezései.
- További információ az Azure-erőforrások megismeréséről.