Informatie over de querytaal van Azure Resource Graph
De querytaal voor de Azure Resource Graph ondersteunt veel operators en functies. Elk werkt 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 hun eigenschappen. Sommige tabellen kunnen worden gebruikt met join
operators of union
om eigenschappen op te halen uit gerelateerde resourcetypen. Hier volgt de lijst met tabellen die beschikbaar zijn in Resource Graph:
Resource Graph tabel | Kunnen join andere tabellen? |
Description |
---|---|---|
Resources | Yes | De standaardtabel als er geen is gedefinieerd in de query. De meeste Resource Manager resourcetypen en -eigenschappen staan hier. |
ResourceContainers | Yes | Bevat beheergroep (Microsoft.Management/managementGroups ), abonnement (Microsoft.Resources/subscriptions ) en resourcegroep (Microsoft.Resources/subscriptions/resourcegroups ) resourcetypen en gegevens. |
AdvisorResources | Ja (preview) | Bevat resources met betrekking tot Microsoft.Advisor . |
AlertsManagementResources | Ja (preview) | Bevat resources met betrekking tot Microsoft.AlertsManagement . |
DesktopVirtualizationResources | Yes | Bevat resources met betrekking tot Microsoft.DesktopVirtualization . |
ExtendedLocationResources | No | Bevat resources met betrekking tot Microsoft.ExtendedLocation . |
GuestConfigurationResources | No | Bevat resources met betrekking tot Microsoft.GuestConfiguration . |
HealthResources | Ja (preview) | Bevat resources met betrekking tot Microsoft.ResourceHealth/availabilitystatuses . |
IoTSecurityResources | No | Bevat resources met betrekking tot Microsoft.IoTSecurity . |
KubernetesConfigurationResources | No | Bevat resources met betrekking tot Microsoft.KubernetesConfiguration . |
MaintenanceResources | Gedeeltelijk, voeg alleen toe aan . (preview) | Bevat resources met betrekking tot Microsoft.Maintenance . |
PatchAssessmentResources | No | Bevat resources met betrekking tot azure Virtual Machines patch-evaluatie. |
PatchInstallationResources | No | Bevat resources met betrekking tot de installatie van Azure Virtual Machines patch. |
PolicyResources | Yes | Bevat resources met betrekking tot Microsoft.PolicyInsights . |
RecoveryServicesResources | Gedeeltelijk, voeg alleen toe aan . (preview) | Bevat resources met betrekking tot Microsoft.DataProtection en Microsoft.RecoveryServices . |
SecurityResources | Ja (preview) | Bevat resources met betrekking tot Microsoft.Security . |
ServiceHealthResources | Nee (preview) | Bevat resources met betrekking tot Microsoft.ResourceHealth/events . |
WorkloadMonitorResources | No | Bevat resources met betrekking tot Microsoft.WorkloadMonitor . |
Zie Naslaginformatie: Ondersteunde tabellen en resourcetypen voor een volledige lijst, inclusief resourcetypen.
Notitie
Resources is de standaardtabel. Tijdens het uitvoeren van query's op de tabel Resources is het niet vereist om de tabelnaam op te geven, tenzij join
of union
worden gebruikt. Het wordt echter aanbevolen om altijd de eerste tabel in de query op te nemen.
Gebruik Resource Graph Explorer in de portal om te ontdekken welke resourcetypen beschikbaar zijn in elke tabel. Als alternatief kunt u een query <tableName> | distinct type
zoals gebruiken om een lijst op te halen met resourcetypen die de opgegeven Resource Graph tabel ondersteunt die in uw omgeving bestaan.
In de volgende query ziet u 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 bevat voor zowel abonnementen als resourcegroepen, kan elk type worden gebruikt om vanuit de tabel Resources aan de resource te koppelen.
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 uit Resources voor 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 als project
in de gekoppelde tabel bevindt project
. Met de veldnaam wordt join
voorkomen dat deze wordt toegevoegd als naam1 , omdat de eigenschap al wordt geprojecteerd vanuit 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
Bij het beperken van de join
resultaten met project
moet de eigenschap die door join
wordt gebruikt om de twee tabellen, subscriptionId in het bovenstaande voorbeeld, te koppelen, worden opgenomen in project
.
Uitgebreide eigenschappen
Als preview-functie hebben sommige resourcetypen in Resource Graph meer typegerelateerde eigenschappen beschikbaar om query's uit te voeren buiten de eigenschappen die door Azure Resource Manager worden geleverd. Deze set waarden, ook wel uitgebreide eigenschappen genoemd, bestaat op een ondersteund resourcetype in properties.extended
. Als u wilt zien welke resourcetypen uitgebreide eigenschappen hebben, gebruikt u de volgende query:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Voorbeeld: Get count of virtual machines by instanceView.powerState.code
:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
aangepaste taalelementen Resource Graph
Gedeelde querysyntaxis (preview)
Als preview-functie kan een gedeelde query rechtstreeks worden geopend in een Resource Graph-query. Dit scenario maakt het mogelijk om standaardquery's te maken als gedeelde query's en deze opnieuw te gebruiken. Als u een gedeelde query wilt aanroepen in 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
de 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 dezelfde als de query die is gemaakt in 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 operatoren worden ondersteund door Resource Graph, waarvan sommige ander gedrag vertonen.
Ondersteunde operators op het hoogste niveau in tabelvorm/op het hoogste niveau
Hier volgt de lijst met KQL-tabelloperators die worden ondersteund door Resource Graph met specifieke voorbeelden:
KQL | Resource Graph voorbeeldquery | Notities |
---|---|---|
Tellen | Sleutelkluizen tellen | |
distinct | Resources weergeven die opslag bevatten | |
Uitbreiden | Virtuele machines tellen op type besturingssysteem | |
Join | Sleutelkluis met abonnementsnaam | Ondersteunde join-smaken: innerunique, inner, leftouter. Limiet van 3 join in één query, waarvan 1 een kruistabel join kan zijn. Als het gebruik in meerdere tabellen join plaatsvindt tussen Resource en ResourceContainers, zijn 3 kruistabellen join toegestaan. Aangepaste joinstrategieën, zoals broadcast join, zijn niet toegestaan. Zie Resource Graph tabellen voor welke tabellen kunnen worden gebruiktjoin . |
Beperken | Een lijst van alle openbare IP-adressen weergeven | Synoniem van take . Werkt niet met Overslaan. |
mvexpand | Verouderde operator, gebruik mv-expand in plaats daarvan. RowLimit maximum van 400. De standaardwaarde is 128. |
|
mv-expand | Azure Cosmos DB met specifieke schrijflocaties weergeven | RowLimit maximum van 400. De standaardwaarde is 128. Limiet van 2 mv-expand in één query. |
order | Een lijst van resources weergeven, gesorteerd op naam | Synoniem van sort |
parse | Virtuele netwerken en subnetten van netwerkinterfaces ophalen | Het is optimaal om rechtstreeks toegang te krijgen tot eigenschappen als deze bestaan in plaats van gebruik te maken parse van . |
Project | Een lijst van resources weergeven, gesorteerd op naam | |
project-away | Kolommen verwijderen uit resultaten | |
Sorteren | 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 Overslaan. |
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: T| union [|kind= outer inner ] [withsource= Kolomnaam] Tabel. Limiet van 3 poten union in één query. Fuzzy resolutie van union beentabellen is niet toegestaan. Kan worden gebruikt binnen één tabel of tussen de tabellen Resources en ResourceContainers . |
Waar | Resources weergeven die opslag bevatten |
Er is een standaardlimiet van 3 join
en 3 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 portal 'Query openen' heeft Azure Resource Graph Explorer een hogere globale limiet dan Resource Graph SDK.
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 er geen beheergroep of abonnementslijst is gedefinieerd, bestaat het querybereik uit alle resources, waaronder gedelegeerde Azure Lighthouse-resources .
De lijst met abonnementen of beheergroepen waarop u een query wilt uitvoeren, kan handmatig worden gedefinieerd om het bereik van de resultaten te wijzigen. De eigenschap REST API managementGroups
gebruikt bijvoorbeeld de beheergroep-id, die verschilt van de naam van de beheergroep. Wanneer managementGroups
is opgegeven, worden resources van de eerste 10.000 abonnementen in of onder de opgegeven beheergroephiërarchie opgenomen. managementGroups
kan niet tegelijkertijd subscriptions
met worden gebruikt.
Voorbeeld: voer een query uit op alle resources binnen de hiërarchie van de beheergroep met de naam My Management Group
.myMG
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
Aanvraagtekst
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Met de AuthorizationScopeFilter
parameter kunt u Azure Policy-toewijzingen en Azure RBAC-roltoewijzingen in de AuthorizationResources
tabel weergeven die zijn overgenomen van hogere bereiken. De AuthorizationScopeFilter
parameter accepteert de volgende waarden voor de PolicyResources
tabellen en AuthorizationResources
:
- 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 voor 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 gebruiken in uw aanvragen.
Voorbeeld: Alle beleidstoewijzingen ophalen in de bereiken myMG-beheergroep en Tenanthoofdmap (bovenliggend).
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Voorbeeld van aanvraagbody
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Voorbeeld: Haal alle beleidstoewijzingen op voor het mySubscriptionId-abonnement , de beheergroep en de hoofdbereiken van de tenant.
REST API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Voorbeeld van aanvraagbody
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Escapetekens
Sommige eigenschapsnamen, zoals de namen die een .
of $
bevatten, moeten in de query worden verpakt of ge escaped, anders wordt de eigenschapsnaam onjuist geïnterpreteerd en levert niet de verwachte resultaten op.
.
- De naam van de eigenschap als zodanig verpakken:['propertyname.withaperiod']
Voorbeeldquery die de eigenschap odata.type verpakt:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
$
- Escape voor het teken in de eigenschapsnaam. Het gebruikte escape-teken is afhankelijk van de shell die Resource Graph wordt uitgevoerd.Bash -
\
Voorbeeldquery die de eigenschap $type in Bash escapen:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd - Niet ontsnappen aan het
$
teken.Powershell -
`
Voorbeeldquery die de eigenschap $type in PowerShell escapen:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Volgende stappen
- Zie de taal die wordt gebruikt in Starter-query's.
- Zie Geavanceerde query's voor geavanceerde gebruikswijzen.
- Lees meer over het verkennen van resources.