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 .
Přehledy Zdroje 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.extendedsouboru . 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í tohoto dotazu. V tomto příkladu je /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OSidentifiká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íčů
Odlišné 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 400. 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 400. Výchozí hodnota je 128. Limit 2 mv-expand v jednom dotazu
order Výpis prostředků seřazených podle názvu Synonymum pro sort
Analyzovat 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.
Projektu 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
Sumarizovat 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.
Top Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému
Unie 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 PolicyResourcesAuthorizationResources :

  • 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