Principy dotazovacího jazyka služby Azure Resource Graph
Dotazovací jazyk pro Azure Resource Graph podporuje mnoho operátorů a funkcí. Každá práce a funguje na základě dotazovací jazyk Kusto (KQL). Pokud chcete získat další informace o dotazovacím jazyce, který používá Resource Graph, začněte kurzem, který je věnovaný KQL.
Tento článek se zabývá komponentami jazyka podporovanými službou Resource Graph:
Tabulky Resource Graphu
Resource Graph poskytuje několik tabulek pro data uložená o typech prostředků Azure Resource Manageru a jejich vlastnostech. Tabulky Resource Graphu je možné použít s operátorem join
k získání vlastností ze souvisejících typů prostředků.
Tabulky Resource Graphu join
podporují varianty:
Tabulka Resource Graph | Můžou join jiné tabulky? |
Popis |
---|---|---|
AdvisorResources | Ano | Zahrnuje prostředky související s Microsoft.Advisor . |
AlertsManagementResources | Ano | Zahrnuje prostředky související s Microsoft.AlertsManagement . |
AppServiceResources | Ano | Zahrnuje prostředky související s Microsoft.Web . |
AuthorizationResources | Ano | Zahrnuje prostředky související s Microsoft.Authorization . |
AWSResources | Ano | Zahrnuje prostředky související s Microsoft.AwsConnector . |
AzureBusinessContinuityResources | Ano | Zahrnuje prostředky související s Microsoft.AzureBusinessContinuity . |
ChaosResources | Ano | Zahrnuje prostředky související s Microsoft.Chaos . |
CommunityGalleryResources | Ano | Zahrnuje prostředky související s Microsoft.Compute . |
ComputeResources | Ano | Zahrnuje prostředky související se škálovacími sadami Microsoft.Compute virtuálních počítačů. |
DesktopVirtualizationResources | Ano | Zahrnuje prostředky související s Microsoft.DesktopVirtualization . |
DnsResources | Ano | Zahrnuje prostředky související s Microsoft.Network . |
EdgeOrderResources | Ano | Zahrnuje prostředky související s Microsoft.EdgeOrder . |
ElasticsanResources | Ano | Zahrnuje prostředky související s Microsoft.ElasticSan . |
ExtendedLocationResources | Ano | Zahrnuje prostředky související s Microsoft.ExtendedLocation . |
FeatureResources | Ano | Zahrnuje prostředky související s Microsoft.Features . |
GuestConfigurationResources | Ano | Zahrnuje prostředky související s Microsoft.GuestConfiguration . |
HealthResourceChanges | Ano | Zahrnuje prostředky související s Microsoft.Resources . |
HealthResources | Ano | Zahrnuje prostředky související s Microsoft.ResourceHealth . |
InsightsResources | Ano | Zahrnuje prostředky související s Microsoft.Insights . |
IoTSecurityResources | Ano | Zahrnuje prostředky související s Microsoft.IoTSecurity a Microsoft.IoTFirmwareDefense . |
KubernetesConfigurationResources | Ano | Zahrnuje prostředky související s Microsoft.KubernetesConfiguration . |
KustoResources | Ano | Zahrnuje prostředky související s Microsoft.Kusto . |
Zdroje údržby | Ano | Zahrnuje prostředky související s Microsoft.Maintenance . |
ManagedServicesResources | Ano | Zahrnuje prostředky související s Microsoft.ManagedServices . |
MigrateResources | Ano | Zahrnuje prostředky související s Microsoft.OffAzure . |
NetworkResources | Ano | Zahrnuje prostředky související s Microsoft.Network . |
OrbitalResources | Ano | Zahrnuje prostředky související s Microsoft.Orbital . |
PatchAssessmentResources | Ano | Zahrnuje prostředky související s posouzením Microsoft.Compute oprav služby Azure Virtual Machines a Microsoft.HybridCompute . |
PatchInstallationResources | Ano | Zahrnuje prostředky související s instalací Microsoft.Compute oprav služby Azure Virtual Machines a Microsoft.HybridCompute . |
ZásadyResources | Ano | Zahrnuje prostředky související s Microsoft.PolicyInsights . |
RecoveryServicesResources | Ano | Zahrnuje prostředky související s Microsoft.DataProtection a Microsoft.RecoveryServices . |
ResourceChanges | Ano | Zahrnuje prostředky související s Microsoft.Resources . |
ResourceContainerChanges | Ano | Zahrnuje prostředky související s Microsoft.Resources . |
ResourceContainers | Ano | Zahrnuje typy prostředků a data skupiny pro správu (Microsoft.Management/managementGroups ), předplatné (Microsoft.Resources/subscriptions ) a skupiny prostředků (Microsoft.Resources/subscriptions/resourcegroups ). |
Zdroje informací | Ano | Výchozí tabulka, pokud není v dotazu definovaná tabulka. Tady je většina typů prostředků a vlastností Resource Manageru. |
SecurityResources | Ano | Zahrnuje prostředky související s Microsoft.Security . |
ServiceFabricResources | Ano | Zahrnuje prostředky související s Microsoft.ServiceFabric . |
ServiceHealthResources | Ano | Zahrnuje prostředky související s Microsoft.ResourceHealth/events . |
SpotResources | Ano | Zahrnuje prostředky související s Microsoft.Compute . |
Zdroje podpory | Ano | Zahrnuje prostředky související s Microsoft.Support . |
ZnačkyResources | Ano | Zahrnuje prostředky související s Microsoft.Resources/tagnamespaces . |
Seznam tabulek, které obsahují typy prostředků, najdete v tabulce Azure Resource Graphu a odkazu na typ prostředku.
Poznámka:
Resources
je výchozí tabulka. Při dotazování tabulky Resources
není nutné zadávat název tabulky, pokud join
se nepoužívá ani union
nepoužívá. Doporučeným postupem je ale vždy zahrnout do dotazu počáteční tabulku.
Pokud chcete zjistit, které typy prostředků jsou dostupné v každé tabulce, použijte Průzkumníka služby Resource Graph na portálu. Jako alternativu použijte dotaz, například <tableName> | distinct type
k získání seznamu typů prostředků, které daná tabulka Resource Graph podporuje, které ve vašem prostředí existují.
Následující dotaz ukazuje jednoduchý join
. Výsledek dotazu spojí sloupce dohromady a všechny duplicitní názvy sloupců z připojené tabulky, ResourceContainers v tomto příkladu jsou připojeny 1. Vzhledem k tomu, že tabulka ResourceContainers obsahuje typy pro předplatná i skupiny prostředků, může být k připojení k prostředku z Resources
tabulky použit jeden typ.
Resources
| join ResourceContainers on subscriptionId
| limit 1
Následující dotaz ukazuje složitější použití join
. Nejprve dotaz použije project
k získání polí Resources
pro typ prostředku trezorů služby Azure Key Vault. Dalším krokem je join
sloučení výsledků s ResourceContainers, kde typ je odběr vlastnosti, která je jak v první tabulce, tak project
s připojenou tabulkou project
. Přejmenování join
pole zabrání jeho přidání jako název1 , protože vlastnost již je projektována z Resources
. Výsledkem dotazu je jeden trezor klíčů zobrazující typ, název, umístění a skupinu prostředků trezoru klíčů spolu s názvem předplatného, ve kterém se nachází.
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
Poznámka:
Při omezení výsledků pomocí join
vlastnosti použité join
k relaci dvou tabulek, subscriptionId v předchozím příkladu, musí být zahrnuta v project
.project
Rozšířené vlastnosti
Jako funkce preview mají některé typy prostředků v Resource Graphu k dispozici více vlastností souvisejících s typem, které umožňují dotazovat se nad rámec vlastností poskytovaných Azure Resource Managerem. Tato sada hodnot, označovaných jako rozšířené vlastnosti, existuje u podporovaného typu prostředku v properties.extended
souboru . Pokud chcete zobrazit typy prostředků s rozšířenými vlastnostmi, použijte následující dotaz:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Příklad: Získání počtu virtuálních počítačů podle instanceView.powerState.code
:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elementy vlastního jazyka Resource Graphu
Syntaxe sdíleného dotazu (Preview)
Jako funkce preview je sdílený dotaz přístupný přímo v dotazu Resource Graphu. Tento scénář umožňuje vytvářet standardní dotazy jako sdílené dotazy a opakovaně je používat. Pokud chcete volat sdílený dotaz v dotazu Resource Graphu, použijte {{shared-query-uri}}
syntaxi. Identifikátor URI sdíleného dotazu je ID prostředku sdíleného dotazu na stránce Nastavení pro tento dotaz. V tomto příkladu je /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS
identifikátor URI sdíleného dotazu .
Tento identifikátor URI odkazuje na předplatné, skupinu prostředků a úplný název sdíleného dotazu, na který chceme odkazovat v jiném dotazu. Tento dotaz je stejný jako dotaz vytvořený v kurzu: Vytvoření a sdílení dotazu.
Poznámka:
Dotaz, který odkazuje na sdílený dotaz jako sdílený dotaz, nelze uložit.
Příklad 1: Použijte pouze sdílený dotaz:
Výsledky tohoto dotazu Resource Graphu jsou stejné jako dotaz uložený ve sdíleném dotazu.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Příklad 2: Zahrňte sdílený dotaz jako součást většího dotazu:
Tento dotaz nejprve použije sdílený dotaz a pak použije limit
k dalšímu omezení výsledků.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Podporované elementy jazyka KQL
Resource Graph podporuje podmnožinu datových typů KQL, skalárních funkcí, skalárních operátorů a agregačních funkcí. Služba Resource Graph podporuje konkrétní tabulkové operátory , z nichž některé mají jiné chování.
Podporované operátory tabulkové nebo nejvyšší úrovně
Tady je seznam tabulkových operátorů KQL podporovaných službou Resource Graph s konkrétními ukázkami:
KQL | Ukázkový dotaz Resource Graphu | Notes |
---|---|---|
count | Počet trezorů klíčů | |
zřetelný | Zobrazení prostředků, které obsahují úložiště | |
rozšířit | Počet virtuálních počítačů podle typu operačního systému | |
join | Trezor klíčů s názvem předplatného | Podporované příchutě spojení: innerunique, inner, leftouter a fullouter. Limit tří join v jednom dotazu, z nichž jeden může být křížovou tabulkou join . Pokud je všechna použití křížové tabulky join mezi resource a ResourceContainers, jsou povolené tři křížové tabulky join . Vlastní strategie připojení, jako je například připojení k vysílání, nejsou povoleny. Pro které tabulky lze použít join , přejděte do tabulek Resource Graphu. |
limit | Seznam všech veřejných IP adres | Synonymum pro take . Nefunguje s skipem. |
mvexpand | Starší operátor použijte mv-expand místo toho. Hodnota RowLimit max 2 000. Výchozí hodnota je 128. |
|
mv-expand | Výpis služby Azure Cosmos DB s konkrétními umístěními zápisu | Hodnota RowLimit max 2 000. Výchozí hodnota je 128. Limit 3 mv-expand v jednom dotazu |
order | Výpis prostředků seřazených podle názvu | Synonymum pro sort |
udělat rozbor | Získání virtuálních sítí a podsítí síťových rozhraní | Je optimální přistupovat k vlastnostem přímo, pokud existují místo použití parse . |
projekt | Výpis prostředků seřazených podle názvu | |
pryč od projektu | Odebrání sloupců z výsledků | |
sort | Výpis prostředků seřazených podle názvu | Synonymum pro order |
shrnout | Počet prostředků Azure | Zjednodušená pouze první stránka |
vzít | Seznam všech veřejných IP adres | Synonymum pro limit . Nefunguje s skipem. |
vrchol | Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému | |
svaz | Sloučení výsledků ze dvou dotazů do jednoho výsledku | Povolená jedna tabulka: | union [kind= inner|outer] [withsource=ColumnName] Table . Omezení tří union nohou v jednom dotazu Přibližné rozlišení union tabulek nohou není povoleno. Lze použít v rámci jedné tabulky nebo mezi tabulkami Resources a ResourceContainers . |
kde | Zobrazení prostředků, které obsahují úložiště |
V jednom dotazu sady Resource Graph SDK je výchozí limit tří join
a tří mv-expand
operátorů. Zvýšení těchto limitů pro vašeho tenanta můžete požádat prostřednictvím nápovědy a podpory.
Pro podporu prostředí portálu Open Query má Azure Resource Graph Explorer vyšší globální limit než sada Resource Graph SDK.
Poznámka:
Na tabulku nemůžete odkazovat vícekrát jako na správnou tabulku, která překračuje limit 1. Pokud to uděláte, zobrazí se chyba s kódem DisallowedMaxNumberOfRemoteTables.
Rozsah dotazu
Rozsah předplatných nebo skupin pro správu, ze kterých jsou prostředky vráceny dotazem, ve výchozím nastavení odkazuje na seznam předplatných na základě kontextu autorizovaného uživatele. Pokud není definovaná skupina pro správu nebo seznam předplatných, je obor dotazu všechny prostředky a zahrnuje delegované prostředky služby Azure Lighthouse .
Seznam předplatných nebo skupin pro správu, které se mají dotazovat, je možné ručně definovat, aby se změnil rozsah výsledků. Například vlastnost REST API managementGroups
přebírá ID skupiny pro správu, které se liší od názvu skupiny pro správu. Po managementGroups
zadání jsou zahrnuty prostředky z prvních 10 000 předplatných v zadané hierarchii skupin pro správu nebo v rámci zadané hierarchie skupin pro správu. managementGroups
nelze použít ve stejnou dobu jako subscriptions
.
Příklad: Dotazování všech prostředků v hierarchii skupiny pro správu s názvem My Management Group
ID myMG
.
Identifikátor URI v REST API
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
Text požadavku
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Tento AuthorizationScopeFilter
parametr umožňuje vypsat přiřazení azure Policy a přiřazení rolí na základě role (Azure RBAC) v AuthorizationResources
tabulce, která jsou zděděna z horních oborů. Parametr AuthorizationScopeFilter
přijímá následující hodnoty pro tabulky PolicyResources
AuthorizationResources
:
- AtScopeAndBelow (výchozí, pokud není zadán): Vrátí přiřazení pro daný obor a všechny podřízené obory.
- AtScopeAndAbove: Vrátí přiřazení pro daný obor a všechny nadřazené obory, ale ne podřízené obory.
- AtScopeAboveAndBelow: Vrátí přiřazení pro daný obor, všechny nadřazené obory a všechny podřízené obory.
- AtScopeExact: Vrátí přiřazení pouze pro daný obor; nejsou zahrnuté žádné nadřazené ani podřízené obory.
Poznámka:
Pokud chcete parametr použít AuthorizationScopeFilter
, nezapomeňte ve vašich požadavcích použít verzi rozhraní API 2021-06-01-preview nebo novější.
Příklad: Získejte všechna přiřazení zásad ve skupině pro správu myMG a kořenu tenanta (nadřazené) obory.
Identifikátor URI v REST API
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Ukázka textu požadavku
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Příklad: Získejte všechna přiřazení zásad v rámci předplatného mySubscriptionId , skupiny pro správu a kořenových oborů tenanta.
Identifikátor URI v REST API
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Ukázka textu požadavku
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Řídicí znaky
Některé názvy vlastností, například názvy, které obsahují nebo které obsahují, .
$
musí být zabalené nebo uchycené v dotazu nebo název vlastnosti je interpretován nesprávně a neposkytuje očekávané výsledky.
Tečka (
.
): Zalamujte název['propertyname.withaperiod']
vlastnosti pomocí hranatých závorek.Příklad dotazu, který zabalí vlastnost odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
Znak dolaru (
$
): Řídicí znak v názvu vlastnosti. Použitý řídicí znak závisí na prostředí, na kterém běží Resource Graph.Bash: Jako řídicí znak použijte zpětné lomítko (
\
).Příklad dotazu, který uchytne vlastnost $type v Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd: Neunikejte znaku dolaru (
$
).PowerShell: Jako řídicí znak použijte backtick (
`
).Příklad dotazu, který u řídicího znaku vlastnosti $type v PowerShellu:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Další kroky
- Úvodní dotazy dotazovacího jazyka Azure Resource Graphu a rozšířené dotazy
- Přečtěte si další informace o tom , jak prozkoumat prostředky Azure.