Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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? |
Description |
|---|---|---|
| AdvisorResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Advisor |
| AlertsManagementResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.AlertsManagement |
| AppServiceResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Web |
| AuthorizationResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Authorization |
| AWSResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.AwsConnector |
| AzureBusinessContinuityResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.AzureBusinessContinuity |
| ChaosResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Chaos |
| CommunityGalleryResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Compute |
| ComputeResources | Yes | A virtuálisgép-méretezési csoportokhoz Microsoft.Compute kapcsolódó erőforrásokat tartalmazza. |
| DesktopVirtualizationResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.DesktopVirtualization |
| DnsResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Network |
| EdgeOrderResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.EdgeOrder |
| ElasticsanResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.ElasticSan |
| ExtendedLocationResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.ExtendedLocation |
| FeatureResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Features |
| GuestConfigurationResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.GuestConfiguration |
| HealthResourceChanges | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Resources |
| HealthResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.ResourceHealth |
| InsightsResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Insights |
| IoTSecurityResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódnak és Microsoft.IoTSecurityMicrosoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.KubernetesConfiguration |
| KustoResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Kusto |
| MaintenanceResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Maintenance |
| ManagedServicesResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.ManagedServices |
| MigrateResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.OffAzure |
| NetworkResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Network |
| PatchAssessmentResources | Yes | Tartalmaz Azure Virtual Machines patch assessment Microsoft.Compute és Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Tartalmaz Azure Virtual Machines javítás telepítéséhez Microsoft.Compute kapcsolódó forrásokat és Microsoft.HybridCompute. |
| PolicyResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.PolicyInsights |
| RecoveryServicesResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódnak és Microsoft.DataProtectionMicrosoft.RecoveryServices. |
| ResourceChanges | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Resources |
| ResourceContainerChanges | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Resources |
| ResourceContainers | Yes | 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. |
| Resources | Yes | 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 | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Security |
| ServiceFabricResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.ServiceFabric |
| ServiceHealthResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.ResourceHealth/events |
| SpotResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Compute |
| SupportResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Support |
| TagsResources | Yes | Tartalmaz forrásokat, amelyek kapcsolódóak .Microsoft.Resources/tagnamespaces |
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.
Note
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 összekeveri az oszlopokat, és a kapcsolódó táblázatból, a ResourceContainers (ebben a példában) bármely duplikált oszlopnevet 1-mel csatoljuk. Mivel a ResourceContainers táblája tartalmazza a típusokat előfizetésekhez és az erőforráscsoportokhoz egyaránt, mindkét típus használható az erőforráshoz a tábla Resources szerinti csatlakozáshoz.
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 project használjaResources. A következő lépés join az eredmények összevonását használja a ResourceContainers-szel , ahol a típus egy előfizetés egy tulajdonságon, amely mind az első project táblában, mind az egyesített táblában projecttalálható. A mező átnevezése elkerülijoin, hogy name1-ként adják hozzá, mivel a tulajdonság már ki van vetítve .Resources 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
Note
Az eredmények korlátozása join esetén project, a két tábla összekapcsolásához használt join tulajdonság, a fenti példában SubscriptionId, be kell kerülni .project
Kiterjesztett tulajdonságok
Előnézeti funkcióként néhány erőforrás-típus az Azure Resource Manager által biztosított tulajdonságokon túl több típushoz kapcsolódó tulajdonsággal rendelkezik. Ez az értékhalmaz, amelyet kiterjesztett tulajdonságoknak neveznek, egy támogatott erőforrástípuson létezik .properties.extended A kiterjesztett tulajdonságokkal rendelkező erőforrás-típusok megjelenítéséhez 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őnézeti funkcióként egy megosztott lekérdezés közvetlenül elérhető egy Resource Graph lekérdezésben. 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-je a megosztott lekérdezés Erőforrás azonosítója a Beállítások oldalon az adott lekérdezéshez. 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.
Note
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, skaláris függvények, skaláris operátorok és aggregációs függvények egy részhalmazát. A Resource Graph támogatja a konkrét táblázatos operátorokat , amelyek közül néhány eltérő viselkedéssel bír.
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 | Notes |
|---|---|---|
| count | Kulcstartók megszámlálása | |
| distinct | A tárolót tartalmazó erőforrások megjelenítése | |
| extend | A virtuális gépek száma az operációs rendszer típusa szerint | |
| join | Kulcstartó előfizetés nevével | Csatlakozz a támogatott ízekhez: innerunique, inner, leftouter és fullouter. Egy lekérdezés három join vagy union műveletének (vagy a kettő kombinációjának) korlátja, összeszámolva, amelyek közül az egyik táblaközi illesztés lehet. Ha minden kereszttáblás join használat az Erőforrás és a ResourceContainers között van, akkor három kereszttáblás 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. |
| limit | Az összes nyilvános IP-cím listázása | Szinonimája.take
Nem működik Skip-tel. |
| mvexpand | Régebbi operátort használjon mv-expand helyette.
RowLimit maximum: 2 000. Az alapértelmezett érték 128. |
|
| mv-expand | Az Azure Cosmos DB listázása adott írási helyekkel |
RowLimit maximum: 2 000. Az alapértelmezett érték 128. 3-ra mv-expand vonatkozó korlát egyetlen lekérdezésben. |
| order | Az erőforrások listája név szerint rendezve | Szinonimája sort |
| parse | 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. |
| project | Az erőforrások listája név szerint rendezve | |
| project-away | Oszlopok eltávolítása az eredményekből | |
| sort | Az erőforrások listája név szerint rendezve | Szinonimája order |
| summarize | 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
Nem működik Skip-tel. |
| top | Az első öt virtuális gép megjelenítése a nevük és az operációs rendszerük típusa szerint | |
| union | 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 a Resources és ResourceContainers táblák között. |
| where | 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.
Note
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
Az előfizetések vagy kezelőcsoportok hatóköre, amelyekből lekérdezés által visszaküldött erőforrásokat adnak, alapértelmezés szerint az engedélyezett felhasználó kontextusa alapján egy előfizetéslistára vonatkozik. Ha egy menedzsment csoport vagy előfizetéses lista nincs meghatározva, a lekérdezési hatókör minden erőforrást magában foglal, és tartalmazza az Azure Lighthouse által delegált erőforrásokat 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 My Management Groupellátott myMG 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-01Kérelem tartalma
{ "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 PolicyResources a AuthorizationResources táblákhoz:
- AtScopeAndBelow (alapértelmezett, ha nincs megadva): Visszaadja a megadott scope-ra és az összes gyermek scope-ra vonatkozó kiosztásokat.
- AtScopeAndAbove: A megadott scope-hoz és az összes szülő scope-hoz tartozó hozzárendeléseket ad, de a gyermek scope-okat nem.
- AtScopeAboveAndBelow: Visszaadja a megadott scope-hoz, az összes szülő scope-hoz és minden gyermek scope-hoz.
- AtScopeExact: Csak a megadott hatótávra vonatkozó hozzárendeléseket ad vissza; Szülői vagy gyermek távcsövek nem szerepelnek.
Note
A AuthorizationScopeFilter paraméter használatához mindenképp használd a 2021-06-01-preview vagy későbbi API verziót a kéréseidben.
Példa: Szerezd meg az összes szabályzat kijelölést a myMG menedzsment csoportnál és a Bérlő Root (szülő) sztáriánál keresztül.
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewTörzsminta kérése
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Példa: Minden szabályzat hozzárendelést a mySubscriptionId előfizetés, menedzsment csoport és Bérlő Root scope-on kap.
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewTörzsminta kérése
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
** Vezérlő 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, amely az odata.type tulajdonságot csomagolja:
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álj egy backslash-t (
\) menekülő karakterként.Példa lekérdezés, amely a Bash-ban $type tulajdonságból kilép:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd: Ne menekülj el a dollárjel (
$) karakter elől.PowerShell: Használj egy backticket (
`) menekülés karakterként.Példa lekérdezés, amely kilép a PowerShell-ben $type tulajdonságból:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
RBAC-engedélyek kiértékelési függvényei a Azure Resource Graph
A Azure Resource Graph (ARG) két olyan függvényt biztosít, amelyek lehetővé teszik annak kiértékelését, hogy a kurens lekérdezési identitás adott engedélyekkel rendelkezik-e az egyes erőforrásokhoz:
hasPermission()hasDataPermission()
Ezek a függvények egy logikai értéket (1 vagy 0) adnak vissza erőforrásonként, és lehetővé teszik az olyan forgatókönyveket, mint például az erőforrások szűrése vagy összegzése a hozzáférés alapján.
Note
Ezeket a függvényeket egy erőforráspéldány és az érvényes RBAC-hozzárendelések kontextusában értékeli ki a rendszer. Ezek nem működnek közvetlenül a szerepkör-definíciókon.
hasPermission()
A hasPermission() függvény kiértékeli, hogy a lekérdezési identitás rendelkezik-e adott vezérlősík-engedéllyel egy erőforráson.
Használja a következő formátumot hasPermission():
hasPermission('<permission-string>')
A hasPermission() függvény hatékony RBAC-hozzárendeléseket használ a lekérdezési identitáshoz, és erőforrássoronként kiértékeli. A függvény 1 értéket ad vissza, ha az identitás rendelkezik a megadott engedéllyel az erőforráson, és 0 , ha az identitás nem.
Példa: Írási hozzáférés ellenőrzése Azure tárolóregisztrációs adatbázisokhoz
resources
| where type =~ 'Microsoft.ContainerRegistry/registries'
| extend canPush = hasPermission('Microsoft.ContainerRegistry/registries/push/write')
Ebben a példában az egyes tárolóregisztrációs adatbázis-erőforrásokat egyenként értékeli ki a rendszer, és canPush jelzi, hogy a lekérdezési identitás végrehajthatja-e a megadott írási műveletet az adott erőforráson. Az eredmények felhasználhatók szűrésre, összesítésre vagy összegzésre a visszaadott érték alapján.
hasDataPermission()
A hasDataPermission() lekérdezés kiértékeli, hogy a lekérdezési identitás rendelkezik-e adott adatsík-engedéllyel egy erőforráson.
Használja a következő formátumot hasDataPermission():
hasDataPermission('<permission-string>')
A hasDataPermission() függvény hatékony adatsík-hozzáférés-kiértékelést használ a lekérdezési identitáshoz, és erőforrássoronként értékeli ki. A függvény 1 értéket ad vissza, ha az identitás rendelkezik a megadott adatsík-engedéllyel az erőforráson, és 0 értéket, ha az identitás nem.
Példa: Adatsík olvasási hozzáférésének ellenőrzése Azure Blob Storage
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend canReadBlobs = hasDataPermission('Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read')
Ebben a példában minden tárolóerőforrást külön-külön értékelünk ki. A hasDataPermissions() függvény ellenőrzi, hogy a lekérdezési identitás rendelkezik-e a megadott adat-plne engedélyekkel. A visszaadott érték használható szűréshez, összegzéshez vagy jelentéskészítéshez.
Példa: Adatsík olvasási hozzáférésének ellenőrzése Azure Blob Storage szűréssel
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| where hasDataPermission('Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read') == 1
Ez a példa csak azokat a tárfiókokat adja vissza, ahol a lekérdezési identitás blob olvasási hozzáféréssel rendelkezik.
Fontos korlátozások
Ezeket a függvényeket gyakran összekeverik a szerepkör- vagy engedélyfelderítési forgatókönyvekkel. A következő korlátozásokat fontos megérteni:
- A
hasPermission()függvények nemhasDataPermission()határozzák meg, hogy a szerepkördefiníció milyen engedélyeket ad meg. - Nem használhatók a microsoft.authorization/roledefinitions erőforrások lekérdezésére vagy szűrésére.
- Ezek nem olyan kérdések megválaszolására szolgálnak, mint például:
- "Mely szerepkörök biztosítják ezt az engedélyt?"
- "Milyen műveleteket tartalmaz ez a szerepkör-definíció?"
Következő lépések
- Azure Resource Graph query language Starter queries and Advanced queries.
- További információ az Azure-erőforrások megismeréséről.