Förstå frågespråket för Azure Resource Graph
Frågespråket för Azure Resource Graph stöder många operatorer och funktioner. Varje arbete och drift baseras på Kusto-frågespråk (KQL). Om du vill veta mer om det frågespråk som används av Resource Graph börjar du med självstudien för KQL.
Den här artikeln beskriver de språkkomponenter som stöds av Resource Graph:
Resource Graph-tabeller
Resource Graph innehåller flera tabeller för de data som lagras om Azure Resource Manager-resurstyper och deras egenskaper. Resource Graph-tabeller kan användas med operatorn join
för att hämta egenskaper från relaterade resurstyper.
Resource Graph-tabeller stöder smakerna join
:
Resource Graph-tabell | Kan join andra tabeller? |
beskrivning |
---|---|---|
AdvisorResources | Ja | Innehåller resurser som är relaterade till Microsoft.Advisor . |
AlertsManagementResources | Ja | Innehåller resurser som är relaterade till Microsoft.AlertsManagement . |
AppServiceResources | Ja | Innehåller resurser som är relaterade till Microsoft.Web . |
AuthorizationResources | Ja | Innehåller resurser som är relaterade till Microsoft.Authorization . |
AWSResources | Ja | Innehåller resurser som är relaterade till Microsoft.AwsConnector . |
AzureBusinessContinuityResources | Ja | Innehåller resurser som är relaterade till Microsoft.AzureBusinessContinuity . |
ChaosResources | Ja | Innehåller resurser som är relaterade till Microsoft.Chaos . |
CommunityGalleryResources | Ja | Innehåller resurser som är relaterade till Microsoft.Compute . |
ComputeResources | Ja | Innehåller resurser som är relaterade till Microsoft.Compute VM-skalningsuppsättningar. |
DesktopVirtualizationResources | Ja | Innehåller resurser som är relaterade till Microsoft.DesktopVirtualization . |
DnsResources | Ja | Innehåller resurser som är relaterade till Microsoft.Network . |
EdgeOrderResources | Ja | Innehåller resurser som är relaterade till Microsoft.EdgeOrder . |
ElasticsanResources | Ja | Innehåller resurser som är relaterade till Microsoft.ElasticSan . |
ExtendedLocationResources | Ja | Innehåller resurser som är relaterade till Microsoft.ExtendedLocation . |
FeatureResources | Ja | Innehåller resurser som är relaterade till Microsoft.Features . |
GuestConfigurationResources | Ja | Innehåller resurser som är relaterade till Microsoft.GuestConfiguration . |
HealthResourceChanges | Ja | Innehåller resurser som är relaterade till Microsoft.Resources . |
HealthResources | Ja | Innehåller resurser som är relaterade till Microsoft.ResourceHealth . |
InsightsResources | Ja | Innehåller resurser som är relaterade till Microsoft.Insights . |
IoTSecurityResources | Ja | Innehåller resurser relaterade till Microsoft.IoTSecurity och Microsoft.IoTFirmwareDefense . |
KubernetesConfigurationResources | Ja | Innehåller resurser som är relaterade till Microsoft.KubernetesConfiguration . |
KustoResources | Ja | Innehåller resurser som är relaterade till Microsoft.Kusto . |
MaintenanceResources | Ja | Innehåller resurser som är relaterade till Microsoft.Maintenance . |
ManagedServicesResources | Ja | Innehåller resurser som är relaterade till Microsoft.ManagedServices . |
MigrateResources | Ja | Innehåller resurser som är relaterade till Microsoft.OffAzure . |
NetworkResources | Ja | Innehåller resurser som är relaterade till Microsoft.Network . |
OrbitalResources | Ja | Innehåller resurser som är relaterade till Microsoft.Orbital . |
PatchAssessmentResources | Ja | Innehåller resurser som är relaterade till azure virtual machines-korrigeringsutvärdering Microsoft.Compute och Microsoft.HybridCompute . |
PatchInstallationResources | Ja | Innehåller resurser som rör installation Microsoft.Compute av Azure Virtual Machines-korrigeringar och Microsoft.HybridCompute . |
PolicyResources | Ja | Innehåller resurser som är relaterade till Microsoft.PolicyInsights . |
RecoveryServicesResources | Ja | Innehåller resurser relaterade till Microsoft.DataProtection och Microsoft.RecoveryServices . |
ResourceChanges | Ja | Innehåller resurser som är relaterade till Microsoft.Resources . |
ResourceContainerChanges | Ja | Innehåller resurser som är relaterade till Microsoft.Resources . |
ResourceContainers | Ja | Innehåller resurstyper och data för hanteringsgrupp (Microsoft.Management/managementGroups ), prenumeration (Microsoft.Resources/subscriptions ) och resursgrupp (Microsoft.Resources/subscriptions/resourcegroups ). |
Resurser | Ja | Standardtabellen om en tabell inte har definierats i frågan. De flesta Resource Manager-resurstyper och egenskaper finns här. |
SecurityResources | Ja | Innehåller resurser som är relaterade till Microsoft.Security . |
ServiceFabricResources | Ja | Innehåller resurser som är relaterade till Microsoft.ServiceFabric . |
ServiceHealthResources | Ja | Innehåller resurser som är relaterade till Microsoft.ResourceHealth/events . |
SpotResources | Ja | Innehåller resurser som är relaterade till Microsoft.Compute . |
SupportResources | Ja | Innehåller resurser som är relaterade till Microsoft.Support . |
TagsResources | Ja | Innehåller resurser som är relaterade till Microsoft.Resources/tagnamespaces . |
En lista över tabeller som innehåller resurstyper finns i tabellen Azure Resource Graph och resurstypsreferensen.
Kommentar
Resources
är standardtabellen. När du kör frågor mot Resources
tabellen krävs det inte att du anger tabellnamnet såvida inte join
eller union
används. Men den rekommenderade metoden är att alltid inkludera den inledande tabellen i frågan.
Om du vill ta reda på vilka resurstyper som är tillgängliga i varje tabell använder du Resource Graph Explorer i portalen. Du kan också använda en fråga, till exempel <tableName> | distinct type
för att hämta en lista över resurstyper som den angivna Resource Graph-tabellen stöder i din miljö.
Följande fråga visar en enkel join
. Frågeresultatet blandar kolumnerna och eventuella duplicerade kolumnnamn från den anslutna tabellen, ResourceContainers i det här exemplet, läggs till med 1. Eftersom ResourceContainers-tabellen har typer för både prenumerationer och resursgrupper kan båda typerna användas för att ansluta till resursen från Resources
tabellen.
Resources
| join ResourceContainers on subscriptionId
| limit 1
Följande fråga visar en mer komplex användning av join
. Först använder project
frågan för att hämta fälten från Resources
för resurstypen Azure Key Vault-valv. Nästa steg använder join
för att sammanfoga resultatet med ResourceContainers där typen är en prenumeration på en egenskap som finns både i den första tabellens project
och den anslutna tabellens project
. Namnbytet på fältet undviker join
att lägga till det som namn1 eftersom egenskapen redan är projicerad från Resources
. Frågeresultatet är en enda nyckelvalv som visar typ, namn, plats och resursgrupp för nyckelvalvet, tillsammans med namnet på den prenumeration som det finns i.
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
Kommentar
När du begränsar resultatet med project
måste egenskapen som används för join
att relatera de två tabellerna, subscriptionId i exemplet ovan, inkluderas i project
.join
Utökade egenskaper
Som en förhandsgranskningsfunktion har vissa av resurstyperna i Resource Graph fler typrelaterade egenskaper som är tillgängliga för frågor utöver de egenskaper som tillhandahålls av Azure Resource Manager. Den här uppsättningen värden, som kallas utökade egenskaper, finns på en resurstyp som stöds i properties.extended
. Om du vill visa resurstyper med utökade egenskaper använder du följande fråga:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Exempel: Hämta antalet virtuella datorer genom instanceView.powerState.code
att :
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Anpassade språkelement för Resource Graph
Syntax för delad fråga (förhandsversion)
Som en förhandsgranskningsfunktion kan en delad fråga nås direkt i en Resource Graph-fråga. Det här scenariot gör det möjligt att skapa standardfrågor som delade frågor och återanvända dem. Om du vill anropa en delad fråga i en Resource Graph-fråga använder du syntaxen {{shared-query-uri}}
. URI:n för den delade frågan är resurs-ID för den delade frågan på sidan Inställningar för frågan. I det här exemplet är /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS
vår delade fråge-URI .
Den här URI:n pekar på prenumerationen, resursgruppen och det fullständiga namnet på den delade fråga som vi vill referera till i en annan fråga. Den här frågan är densamma som den som skapades i Självstudie: Skapa och dela en fråga.
Kommentar
Du kan inte spara en fråga som refererar till en delad fråga som en delad fråga.
Exempel 1: Använd endast den delade frågan:
Resultatet av den här Resource Graph-frågan är samma som frågan som lagras i den delade frågan.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Exempel 2: Inkludera den delade frågan som en del av en större fråga:
Den här frågan använder först den delade frågan och använder limit
sedan för att ytterligare begränsa resultaten.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
KQL-språkelement som stöds
Resource Graph stöder en delmängd av KQL-datatyper, skalärfunktioner, skaläroperatorer och aggregeringsfunktioner. Specifika tabelloperatorer stöds av Resource Graph, varav vissa har olika beteenden.
Operatorer på tabell-/toppnivå som stöds
Här är listan över KQL-tabelloperatorer som stöds av Resource Graph med specifika exempel:
KQL | Resource Graph-exempelfråga | Kommentar |
---|---|---|
antal | Räkna nyckelvalv | |
tydlig | Visning av resurser med lagring | |
förlänga | Antal virtuella datorer efter OS-typ | |
join | Nyckelvalv med prenumerationsnamn | Join flavors supported: innerunique, inner, leftouter och fullouter. Gränsen på tre join i en enskild fråga, varav en kan vara en korstabell join . Om all användning mellan tabeller join är mellan Resurs och ResourceContainers tillåts tre korstabellerjoin . Anpassade anslutningsstrategier, till exempel sändningskoppling, tillåts inte. För vilka tabeller kan använda join går du till Resource Graph-tabeller. |
gräns | Lista över alla offentliga IP-adresser | take Synonymen för . Fungerar inte med Skip. |
mvexpand | Äldre operator, använd mv-expand i stället. RowLimit max på 2 000. Standardvärdet är 128. |
|
mv-expand | Lista Azure Cosmos DB med specifika skrivplatser | RowLimit max på 2 000. Standardvärdet är 128. Gräns på 3 mv-expand i en enskild fråga. |
order | Lista över resurser sorterade efter namn | Synonym till sort |
parsa | Hämta virtuella nätverk och undernät för nätverksgränssnitt | Det är optimalt att komma åt egenskaper direkt om de finns i stället för att använda parse . |
projekt | Lista över resurser sorterade efter namn | |
project-away | Ta bort kolumner från resultat | |
sortera | Lista över resurser sorterade efter namn | Synonym till order |
sammanfatta | Antal Azure-resurser | Endast förenklad förstasida |
ta | Lista över alla offentliga IP-adresser | limit Synonymen för . Fungerar inte med Skip. |
topp | Visning av de första fem virtuella datorerna efter namn och OS-typ | |
union | Kombinera resultat från två frågor till ett enda resultat | Enkel tabell tillåts: | union [kind= inner|outer] [withsource=ColumnName] Table . Gräns på tre union ben i en enda fråga. Fuzzy-upplösning för union bentabeller tillåts inte. Kan användas i en enda tabell eller mellan tabellerna Resurser och ResourceContainers . |
var | Visning av resurser med lagring |
Det finns en standardgräns på tre join
och tre mv-expand
operatorer i en enda Resource Graph SDK-fråga. Du kan begära en ökning av dessa gränser för din klientorganisation via Hjälp + support.
För att stödja open query-portalen har Azure Resource Graph Explorer en högre global gräns än Resource Graph SDK.
Kommentar
Du kan inte referera till en tabell som rätt tabell flera gånger, vilket överskrider gränsen på 1. Om du gör det får du ett fel med koden DisallowedMaxNumberOfRemoteTables.
Frågeomfång
Omfånget för de prenumerationer eller hanteringsgrupper från vilka resurser returneras av en fråga returneras som standard till en lista över prenumerationer baserat på kontexten för den behöriga användaren. Om en hanteringsgrupp eller en prenumerationslista inte har definierats är frågeomfånget alla resurser och innehåller Azure Lighthouse-delegerade resurser.
Listan över prenumerationer eller hanteringsgrupper som ska frågas kan definieras manuellt för att ändra resultatets omfattning. Egenskapen REST API managementGroups
tar till exempel hanteringsgruppens ID, som skiljer sig från namnet på hanteringsgruppen. När managementGroups
anges inkluderas resurser från de första 10 000 prenumerationerna i eller under den angivna hanteringsgruppshierarkin. managementGroups
kan inte användas samtidigt som subscriptions
.
Exempel: Fråga alla resurser i hierarkin för hanteringsgruppen med namnet My Management Group
med ID myMG
.
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
Begärandetext
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Med AuthorizationScopeFilter
parametern kan du visa en lista över Azure Policy-tilldelningar och rolltilldelningar för Rollbaserad åtkomstkontroll i Azure (Azure RBAC) i tabellen AuthorizationResources
som ärvs från de övre omfången. Parametern AuthorizationScopeFilter
accepterar följande värden för tabellerna PolicyResources
och AuthorizationResources
:
- AtScopeAndBelow (standard om det inte anges): Returnerar tilldelningar för det angivna omfånget och alla underordnade omfång.
- AtScopeAndAbove: Returnerar tilldelningar för det angivna omfånget och alla överordnade omfång, men inte underordnade omfång.
- AtScopeAboveAndBelow: Returnerar tilldelningar för det angivna omfånget, alla överordnade omfång och alla underordnade omfång.
- AtScopeExact: Returnerar endast tilldelningar för det angivna omfånget. Inga överordnade eller underordnade omfång ingår.
Kommentar
Om du vill använda parametern AuthorizationScopeFilter
måste du använda API-versionen 2021-06-01 eller senare i dina begäranden.
Exempel: Hämta alla principtilldelningar i myMG-hanteringsgruppen och klientrotsomfång (överordnad).
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Exempel på begärandetext
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Exempel: Hämta alla principtilldelningar i mySubscriptionId-prenumerationen , hanteringsgruppen och klientrotsomfången.
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Exempel på begärandetext
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Escape-tecken
Vissa egenskapsnamn, till exempel de som innehåller en .
eller $
, måste vara omslutna eller undantagna i frågan eller så tolkas egenskapsnamnet felaktigt och ger inte de förväntade resultaten.
Punkt (
.
): Omslut egenskapsnamnet['propertyname.withaperiod']
med hakparenteser.Exempelfråga som omsluter egenskapen odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
Dollartecken (
$
): Undvik tecknet i egenskapsnamnet. Vilket escape-tecken som används beror på gränssnittet som kör Resource Graph.Bash: Använd ett omvänt snedstreck (
\
) som escape-tecken.Exempelfråga som undflyr egenskapen $type i Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd: Undvik inte dollartecknet (
$
).PowerShell: Använd en backtick (
`
) som escape-tecken.Exempelfråga som undflyr egenskapen $type i PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Nästa steg
- Azure Resource Graph-frågespråk Startfrågor och Avancerade frågor.
- Läs mer om hur du utforskar Azure-resurser.