Sdílet prostřednictvím


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? Description
AdvisorResources Yes Zahrnuje zdroje související s .Microsoft.Advisor
AlertsManagementResources Yes Zahrnuje zdroje související s .Microsoft.AlertsManagement
AppServiceResources Yes Zahrnuje zdroje související s .Microsoft.Web
AuthorizationResources Yes Zahrnuje zdroje související s .Microsoft.Authorization
AWSResources Yes Zahrnuje zdroje související s .Microsoft.AwsConnector
AzureBusinessContinuityResources Yes Zahrnuje zdroje související s .Microsoft.AzureBusinessContinuity
ChaosResources Yes Zahrnuje zdroje související s .Microsoft.Chaos
CommunityGalleryResources Yes Zahrnuje zdroje související s .Microsoft.Compute
ComputeResources Yes Zahrnuje prostředky související se škálovacími sadami Microsoft.Compute virtuálních počítačů.
DesktopVirtualizationResources Yes Zahrnuje zdroje související s .Microsoft.DesktopVirtualization
DnsResources Yes Zahrnuje zdroje související s .Microsoft.Network
EdgeOrderResources Yes Zahrnuje zdroje související s .Microsoft.EdgeOrder
ElasticsanResources Yes Zahrnuje zdroje související s .Microsoft.ElasticSan
ExtendedLocationResources Yes Zahrnuje zdroje související s .Microsoft.ExtendedLocation
FeatureResources Yes Zahrnuje zdroje související s .Microsoft.Features
GuestConfigurationResources Yes Zahrnuje zdroje související s .Microsoft.GuestConfiguration
HealthResourceChanges Yes Zahrnuje zdroje související s .Microsoft.Resources
HealthResources Yes Zahrnuje zdroje související s .Microsoft.ResourceHealth
InsightsResources Yes Zahrnuje zdroje související s .Microsoft.Insights
IoTSecurityResources Yes Zahrnuje zdroje související s Microsoft.IoTSecurity a Microsoft.IoTFirmwareDefense.
KubernetesConfigurationResources Yes Zahrnuje zdroje související s .Microsoft.KubernetesConfiguration
KustoResources Yes Zahrnuje zdroje související s .Microsoft.Kusto
MaintenanceResources Yes Zahrnuje zdroje související s .Microsoft.Maintenance
ManagedServicesResources Yes Zahrnuje zdroje související s .Microsoft.ManagedServices
MigrateResources Yes Zahrnuje zdroje související s .Microsoft.OffAzure
NetworkResources Yes Zahrnuje zdroje související s .Microsoft.Network
PatchAssessmentResources Yes Zahrnuje zdroje související s hodnocením Microsoft.Compute záplat Azure Virtual Machines a Microsoft.HybridCompute.
PatchInstallationResources Yes Zahrnuje zdroje související s instalací Microsoft.Compute záplat Azure Virtual Machines a Microsoft.HybridCompute.
PolicyResources Yes Zahrnuje zdroje související s .Microsoft.PolicyInsights
RecoveryServicesResources Yes Zahrnuje zdroje související s Microsoft.DataProtection a Microsoft.RecoveryServices.
ResourceChanges Yes Zahrnuje zdroje související s .Microsoft.Resources
ResourceContainerChanges Yes Zahrnuje zdroje související s .Microsoft.Resources
ResourceContainers Yes 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).
Resources Yes Výchozí tabulka, pokud není v dotazu definovaná tabulka. Tady je většina typů prostředků a vlastností Resource Manageru.
SecurityResources Yes Zahrnuje zdroje související s .Microsoft.Security
ServiceFabricResources Yes Zahrnuje zdroje související s .Microsoft.ServiceFabric
ServiceHealthResources Yes Zahrnuje zdroje související s .Microsoft.ResourceHealth/events
SpotResources Yes Zahrnuje zdroje související s .Microsoft.Compute
SupportResources Yes Zahrnuje zdroje související s .Microsoft.Support
TagsResources Yes Zahrnuje zdroje 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.

Note

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 jakékoliv duplicitní názvy sloupců z spojené tabulky, v tomto příkladu ResourceContainers , jsou připojeny jednotkou 1. Protože tabulka ResourceContainers obsahuje typy jak pro odběry, tak pro skupiny zdrojů, může být použit jakýkoli typ pro připojení ke zdroji z Resources tabulky.

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ší krok využívá join sloučení výsledků s ResourceContainers , kde typ je předplatné na vlastnosti, která je jak v první tabulce, project tak v spojené tabulce project. Přejmenování pole se vynechá join přidání jako název1, protože vlastnost je již promítnuta 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

Note

Při omezení join výsledků na project, musí být vlastnost použitá join k propojení dvou tabulek, subscriptionId v uvedeném příkladu, zahrnuta do .project

Rozšířené vlastnosti

Jako ukázková funkce mají některé typy zdrojů v Resource Graph k dispozici více typů souvisejících vlastností k dotazování nad rámec vlastností poskytovaných Azure Resource Managerem. Tato množina hodnot, známá jako rozšířené vlastnosti, existuje na podporovaném typu zdroje v properties.extended. Pro zobrazení typů zdrojů 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 náhledová funkce lze sdílený dotaz přímo otevřít v dotazu Resource Graph. 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. URI sdíleného dotazu je Resource ID 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 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.

Note

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í. Specifické tabulkové operátory jsou podporovány Resource Graphem, z nichž některé mají odlišné 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íčů
distinct Zobrazení prostředků, které obsahují úložiště
extend Počet virtuálních počítačů podle typu operačního systému
join Trezor klíčů s názvem předplatného Připojte se k podporovaným variantám: innerunique, inner, leftouter a fullouter. Limit tří join nebo union operací (nebo kombinace těchto dvou) v jednom dotazu. Tyto operace se počítají dohromady a jedna z nich může být křížové spojení tabulek. Pokud je veškeré použití mezi Resource join a ResourceContainers veškeré mezi Resource a ResourceContainers, jsou povoleny tři cross-table 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 to se Skipem.
mvexpand Starší operátor použijte mv-expand místo toho. Limit řádku maximálně 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 Limit řádku maximálně 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
parse 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.
project Výpis prostředků seřazených podle názvu
project-away Odebrání sloupců z výsledků
sort Výpis prostředků seřazených podle názvu Synonymum pro order
summarize Počet prostředků Azure Zjednodušená pouze první stránka
take Seznam všech veřejných IP adres Synonymum pro limit. Nefunguje to se Skipem.
top Zobrazení prvních pěti virtuálních počítačů podle názvu a jejich typu operačního systému
union 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. Může být použit v jedné tabulce nebo mezi tabulkami Resources a ResourceContainers .
where 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 zážitku s portálem Open Query má Azure Resource Graph Explorer vyšší globální limit než Resource Graph SDK.

Note

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 odběrů nebo skupin správy , ze kterých jsou zdroje vráceny dotazem, je výchozí na seznamu odběrů založených na kontextu oprávněného uživatele. Pokud není definována skupina správy nebo seznam odběrů, rozsah dotazu zahrnuje všechny zdroje a zahrnuje delegované zdroje 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
    
  • Tělo žádosti

    {
      "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í specifikováno): Vrací přiřazení pro daný rozsah a všechny podrozsahy.
  • AtScopeAndAbove: Vrací přiřazení pro daný rozsah a všechny nadřazené rozsahy, ale ne pro podrozsahy.
  • AtScopeAboveAndBelow: Vrací přiřazení pro daný rozsah, všechny nadřazené rozsahy a všechny podřízené rozsahy.
  • AtScopeExact: Vrací přiřazení pouze pro daný rozsah; Nejsou zahrnuty žádné rodičovské ani dětské mikroskopy.

Note

Pro použití parametru AuthorizationScopeFilter nezapomeňte použít verzi API 2021-06-01-01 nebo novější ve svých požadavcích.

Příklad: Získejte všechna přiřazení politik do skupiny správy myMG a do rozsahů kořenových (rodičovských domén) tenantů.

  • 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í politik v rozsahu předplatného mySubscriptionId , skupiny správy a Tenant Root.

  • 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"]
    }
    

Escape 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ý zahrnuje 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: Použijte backslash (\) jako postavu pro únik.

      Příklad dotazu, který unikne vlastnosti $type v Bash:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
      
    • CMD: Neunikejte znaku dolarového znaku ().$

    • PowerShell: Použijte backtick (`) jako escape znak.

      Příklad dotazu, který unikne vlastnosti $type v PowerShellu:

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

Další kroky