Informatie over de querytaal van Azure Resource Graph
De querytaal voor Azure Resource Graph ondersteunt veel operators en functies. Elk werk en werkt op basis van Kusto-querytaal (KQL). Voor meer informatie over de querytaal die door Resource Graph wordt gebruikt, begint u met de zelfstudie voor KQL.
In dit artikel worden de taalonderdelen behandeld die worden ondersteund door Resource Graph:
Resource Graph-tabellen
Resource Graph biedt verschillende tabellen voor de gegevens die worden opgeslagen over Azure Resource Manager-resourcetypen en de bijbehorende eigenschappen. Resource Graph-tabellen kunnen worden gebruikt met de join
operator om eigenschappen op te halen uit gerelateerde resourcetypen.
Resource Graph-tabellen ondersteunen de join
smaken:
Resource Graph-tabel | Kunnen join andere tabellen? |
Beschrijving |
---|---|---|
AdvisorResources | Ja | Bevat resources met betrekking tot Microsoft.Advisor . |
AlertsManagementResources | Ja | Bevat resources met betrekking tot Microsoft.AlertsManagement . |
AppServiceResources | Ja | Bevat resources met betrekking tot Microsoft.Web . |
AuthorizationResources | Ja | Bevat resources met betrekking tot Microsoft.Authorization . |
AWSResources | Ja | Bevat resources met betrekking tot Microsoft.AwsConnector . |
AzureBusinessContinuityResources | Ja | Bevat resources met betrekking tot Microsoft.AzureBusinessContinuity . |
ChaosResources | Ja | Bevat resources met betrekking tot Microsoft.Chaos . |
CommunityGalleryResources | Ja | Bevat resources met betrekking tot Microsoft.Compute . |
ComputeResources | Ja | Bevat resources met betrekking tot Microsoft.Compute virtuele-machineschaalsets. |
DesktopVirtualizationResources | Ja | Bevat resources met betrekking tot Microsoft.DesktopVirtualization . |
DnsResources | Ja | Bevat resources met betrekking tot Microsoft.Network . |
EdgeOrderResources | Ja | Bevat resources met betrekking tot Microsoft.EdgeOrder . |
ElasticsanResources | Ja | Bevat resources met betrekking tot Microsoft.ElasticSan . |
ExtendedLocationResources | Ja | Bevat resources met betrekking tot Microsoft.ExtendedLocation . |
FeatureResources | Ja | Bevat resources met betrekking tot Microsoft.Features . |
GuestConfigurationResources | Ja | Bevat resources met betrekking tot Microsoft.GuestConfiguration . |
HealthResourceChanges | Ja | Bevat resources met betrekking tot Microsoft.Resources . |
HealthResources | Ja | Bevat resources met betrekking tot Microsoft.ResourceHealth . |
InsightsResources | Ja | Bevat resources met betrekking tot Microsoft.Insights . |
IoTSecurityResources | Ja | Bevat resources met betrekking tot Microsoft.IoTSecurity en Microsoft.IoTFirmwareDefense . |
KubernetesConfigurationResources | Ja | Bevat resources met betrekking tot Microsoft.KubernetesConfiguration . |
KustoResources | Ja | Bevat resources met betrekking tot Microsoft.Kusto . |
MaintenanceResources | Ja | Bevat resources met betrekking tot Microsoft.Maintenance . |
ManagedServicesResources | Ja | Bevat resources met betrekking tot Microsoft.ManagedServices . |
MigrateResources | Ja | Bevat resources met betrekking tot Microsoft.OffAzure . |
NetworkResources | Ja | Bevat resources met betrekking tot Microsoft.Network . |
OrbitalResources | Ja | Bevat resources met betrekking tot Microsoft.Orbital . |
PatchAssessmentResources | Ja | Bevat resources met betrekking tot de evaluatie van Microsoft.Compute azure Virtual Machines-patches en Microsoft.HybridCompute . |
PatchInstallationResources | Ja | Bevat resources met betrekking tot de patchinstallatie van Microsoft.Compute Azure Virtual Machines en Microsoft.HybridCompute . |
PolicyResources | Ja | Bevat resources met betrekking tot Microsoft.PolicyInsights . |
RecoveryServicesResources | Ja | Bevat resources met betrekking tot Microsoft.DataProtection en Microsoft.RecoveryServices . |
ResourceChanges | Ja | Bevat resources met betrekking tot Microsoft.Resources . |
ResourceContainerChanges | Ja | Bevat resources met betrekking tot Microsoft.Resources . |
ResourceContainers | Ja | Omvat beheergroep (), abonnement (Microsoft.Management/managementGroups Microsoft.Resources/subscriptions ) en resourcegroep (Microsoft.Resources/subscriptions/resourcegroups ) resourcetypen en gegevens. |
Resources | Ja | De standaardtabel als een tabel niet is gedefinieerd in de query. De meeste Resource Manager-resourcetypen en -eigenschappen zijn hier. |
SecurityResources | Ja | Bevat resources met betrekking tot Microsoft.Security . |
ServiceFabricResources | Ja | Bevat resources met betrekking tot Microsoft.ServiceFabric . |
ServiceHealthResources | Ja | Bevat resources met betrekking tot Microsoft.ResourceHealth/events . |
SpotResources | Ja | Bevat resources met betrekking tot Microsoft.Compute . |
SupportResources | Ja | Bevat resources met betrekking tot Microsoft.Support . |
TagsResources | Ja | Bevat resources met betrekking tot Microsoft.Resources/tagnamespaces . |
Voor een lijst met tabellen met resourcetypen gaat u naar azure Resource Graph-tabel en resourcetypereferentie.
Notitie
Resources
is de standaardtabel. Tijdens het uitvoeren van query's op de Resources
tabel is het niet vereist om de tabelnaam op te geven, tenzij join
of union
worden gebruikt. Maar de aanbevolen procedure is altijd de eerste tabel in de query op te nemen.
Als u wilt ontdekken welke resourcetypen beschikbaar zijn in elke tabel, gebruikt u Resource Graph Explorer in de portal. Als alternatief kunt u een query gebruiken om <tableName> | distinct type
een lijst met resourcetypen op te halen die door de opgegeven Resource Graph-tabel worden ondersteund die in uw omgeving aanwezig zijn.
De volgende query toont een eenvoudige join
. Het queryresultaat combineert de kolommen en eventuele dubbele kolomnamen uit de gekoppelde tabel, ResourceContainers in dit voorbeeld, worden toegevoegd aan 1. Aangezien de tabel ResourceContainers typen heeft voor zowel abonnementen als resourcegroepen, kan een van beide typen worden gebruikt om vanuit de tabel aan de resource Resources
deel te nemen.
Resources
| join ResourceContainers on subscriptionId
| limit 1
De volgende query toont een complexer gebruik van join
. Eerst gebruikt project
de query om de velden op te halen van Resources
het resourcetype Azure Key Vault-kluizen. In de volgende stap join
worden de resultaten samengevoegd met ResourceContainers waarbij het type een abonnement is op een eigenschap die zich zowel in de eerste tabel project
als in de gekoppelde tabel project
bevindt. De naam van het veld voorkomt dat join
deze wordt toegevoegd als naam1, omdat de eigenschap al is geprojecteerd.Resources
Het queryresultaat is één sleutelkluis met het type, de naam, de locatie en de resourcegroep van de sleutelkluis, samen met de naam van het abonnement waarin deze zich bevindt.
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
Notitie
Wanneer u de join
resultaten beperkt met project
, moet de eigenschap die wordt gebruikt om join
de twee tabellen te koppelen, subscriptionId in het bovenstaande voorbeeld worden opgenomen in project
.
Uitgebreide eigenschappen
Als preview-functie hebben sommige resourcetypen in Resource Graph meer typegerelateerde eigenschappen die beschikbaar zijn om query's uit te voeren buiten de eigenschappen van Azure Resource Manager. Deze set waarden, ook wel uitgebreide eigenschappen genoemd, bestaat op een ondersteund resourcetype in properties.extended
. Gebruik de volgende query om resourcetypen met uitgebreide eigenschappen weer te geven:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Voorbeeld: Het aantal virtuele machines ophalen op instanceView.powerState.code
:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Aangepaste taalelementen van Resource Graph
Syntaxis voor gedeelde query's (preview)
Als preview-functie kan een gedeelde query rechtstreeks worden geopend in een Resource Graph-query. In dit scenario kunt u standaardquery's maken als gedeelde query's en deze opnieuw gebruiken. Als u een gedeelde query wilt aanroepen binnen een Resource Graph-query, gebruikt u de {{shared-query-uri}}
syntaxis. De URI van de gedeelde query is de resource-id van de gedeelde query op de pagina Instellingen voor die query. In dit voorbeeld is /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS
onze gedeelde query-URI.
Deze URI verwijst naar het abonnement, de resourcegroep en de volledige naam van de gedeelde query waarnaar we in een andere query willen verwijzen. Deze query is hetzelfde als de query die is gemaakt in de zelfstudie: Een query maken en delen.
Notitie
U kunt een query die verwijst naar een gedeelde query niet opslaan als een gedeelde query.
Voorbeeld 1: Alleen de gedeelde query gebruiken:
De resultaten van deze Resource Graph-query zijn hetzelfde als de query die is opgeslagen in de gedeelde query.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Voorbeeld 2: De gedeelde query opnemen als onderdeel van een grotere query:
Deze query maakt eerst gebruik van de gedeelde query en gebruikt limit
vervolgens om de resultaten verder te beperken.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Ondersteunde KQL-taalelementen
Resource Graph ondersteunt een subset van KQL-gegevenstypen, scalaire functies, scalaire operators en aggregatiefuncties. Specifieke tabellaire operators worden ondersteund door Resource Graph, waarvan sommige verschillende gedragingen hebben.
Ondersteunde operators op tabellair/hoogste niveau
Hier volgt de lijst met KQL-tabelloperators die worden ondersteund door Resource Graph met specifieke voorbeelden:
KQL | Voorbeeldquery resourcegrafiek | Opmerkingen |
---|---|---|
count | Sleutelkluizen tellen | |
duidelijk | Resources weergeven die opslag bevatten | |
verlengen | Virtuele machines tellen op type besturingssysteem | |
join | Sleutelkluis met abonnementsnaam | Joins worden ondersteund: innerunique, inner, leftouter en fullouter. Limiet van drie join in één query, waarvan één een kruistabel join kan zijn. Als alle verschillende tabellen join worden gebruikt tussen Resource en ResourceContainers, zijn er drie verschillende tabellen join toegestaan. Aangepaste joinstrategieën, zoals broadcast join, zijn niet toegestaan. Ga naar Resource Graph-tabellen waarvoor tabellen kunnen worden gebruiktjoin . |
limit | Een lijst van alle openbare IP-adressen weergeven | Synoniem van take . Werkt niet met Skip. |
mvexpand | Gebruik in plaats daarvan een verouderde operator mv-expand . RowLimit max. 2000. De standaardwaarde is 128. |
|
mv-expand | Azure Cosmos DB weergeven met specifieke schrijflocaties | RowLimit max. 2000. De standaardwaarde is 128. Limiet van 2 mv-expand in één query. |
order | Een lijst van resources weergeven, gesorteerd op naam | Synoniem van sort |
ontleden | Virtuele netwerken en subnetten van netwerkinterfaces ophalen | Het is optimaal om rechtstreeks toegang te krijgen tot eigenschappen als ze bestaan in plaats van te gebruiken parse . |
project | Een lijst van resources weergeven, gesorteerd op naam | |
project-away | Kolommen verwijderen uit resultaten | |
sort | Een lijst van resources weergeven, gesorteerd op naam | Synoniem van order |
samenvatten | Azure-resources tellen | Alleen vereenvoudigde eerste pagina |
nemen | Een lijst van alle openbare IP-adressen weergeven | Synoniem van limit . Werkt niet met Skip. |
Boven | De eerste vijf virtuele machines weergeven op naam en met hun type besturingssysteem | |
unie | Resultaten van twee query's combineren tot één resultaat | Eén tabel toegestaan: | union [kind= inner|outer] [withsource=ColumnName] Table . Limiet van drie union benen in één query. Fuzzy resolutie van union beentabellen is niet toegestaan. Kan worden gebruikt in één tabel of tussen de tabellen Resources en ResourceContainers . |
waar | Resources weergeven die opslag bevatten |
Er is een standaardlimiet van drie join
en drie mv-expand
operators in één Resource Graph SDK-query. U kunt een verhoging van deze limieten voor uw tenant aanvragen via Help en ondersteuning.
Ter ondersteuning van de Open Query-portal heeft Azure Resource Graph Explorer een hogere globale limiet dan de Resource Graph SDK.
Notitie
U kunt niet meerdere keren verwijzen naar een tabel als rechtertabel, die de limiet van 1 overschrijdt. Als u dit doet, ontvangt u een fout met code DisallowedMaxNumberOfRemoteTables.
Querybereik
Het bereik van de abonnementen of beheergroepen waaruit resources worden geretourneerd door een query, wordt standaard ingesteld op een lijst met abonnementen op basis van de context van de geautoriseerde gebruiker. Als een beheergroep of een lijst met abonnementen niet is gedefinieerd, is het querybereik alle resources en bevat het gedelegeerde Azure Lighthouse-resources .
De lijst met abonnementen of beheergroepen waarop een query moet worden uitgevoerd, kan handmatig worden gedefinieerd om het bereik van de resultaten te wijzigen. De rest API-eigenschap managementGroups
neemt bijvoorbeeld de id van de beheergroep op, die verschilt van de naam van de beheergroep. Wanneer managementGroups
dit is opgegeven, worden resources uit de eerste 10.000 abonnementen in of onder de opgegeven beheergroephiërarchie opgenomen. managementGroups
kan niet tegelijkertijd worden gebruikt als subscriptions
.
Voorbeeld: Voer een query uit op alle resources binnen de hiërarchie van de beheergroep met de naam My Management Group
id myMG
.
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
Aanvraagbody
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
AuthorizationScopeFilter
Met de parameter kunt u Azure Policy-toewijzingen en azure RBAC-roltoewijzingen (op rollen gebaseerd toegangsbeheer) weergeven in de AuthorizationResources
tabel die worden overgenomen van hogere bereiken. De AuthorizationScopeFilter
parameter accepteert de volgende waarden voor de PolicyResources
en AuthorizationResources
tabellen:
- AtScopeAndBelow (standaard indien niet opgegeven): Retourneert toewijzingen voor het opgegeven bereik en alle onderliggende bereiken.
- AtScopeAndAbove: retourneert toewijzingen voor het opgegeven bereik en alle bovenliggende bereiken, maar niet onderliggende bereiken.
- AtScopeAboveAndBelow: retourneert toewijzingen voor het opgegeven bereik, alle bovenliggende bereiken en alle onderliggende bereiken.
- AtScopeExact: retourneert alleen toewijzingen voor het opgegeven bereik; er zijn geen bovenliggende of onderliggende bereiken opgenomen.
Notitie
Als u de AuthorizationScopeFilter
parameter wilt gebruiken, moet u de API-versie 2021-06-01-preview of hoger in uw aanvragen gebruiken.
Voorbeeld: Alle beleidstoewijzingen ophalen in de myMG-beheergroep en tenanthoofdmapbereiken (bovenliggende bereiken).
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Voorbeeld van aanvraagtekst
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Voorbeeld: Haal alle beleidstoewijzingen op in het mySubscriptionId-abonnement , de beheergroep en de tenanthoofdbereiken.
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Voorbeeld van aanvraagtekst
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Escapetekens
Sommige eigenschapsnamen, zoals namen met een .
of $
, moeten worden verpakt of escaped in de query of de naam van de eigenschap wordt onjuist geïnterpreteerd en levert de verwachte resultaten niet op.
Punt (
.
): Plaats de naam['propertyname.withaperiod']
van de eigenschap tussen vierkante haken.Voorbeeldquery waarmee de eigenschap odata.type wordt verpakt:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
Dollarteken (
$
): Escape het teken in de naam van de eigenschap. Het gebruikte escape-teken is afhankelijk van de shell waarop Resource Graph wordt uitgevoerd.Bash: Gebruik een backslash (
\
) als het escape-teken.Voorbeeldquery die de eigenschap $type in Bash escapet:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd: Laat het dollarteken (
$
) niet ontsnappen.PowerShell: Gebruik een backtick (
`
) als escape-teken.Voorbeeldquery die de eigenschap $type in PowerShell escapet:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Volgende stappen
- Azure Resource Graph-querytaal Starter-query's en geavanceerde query's.
- Meer informatie over het verkennen van Azure-resources.