Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Abfragesprache für Azure Resource Graph unterstützt viele Operatoren und Funktionen. Diese arbeiten und funktionieren auf Grundlage der Abfragesprache Kusto (Kusto Query Language, KQL). Wenn Sie mehr über die von Resource Graph verwendete Abfragesprache erfahren möchten, beginnen Sie mit dem Tutorial für KQL.
In diesem Artikel werden die von Resource Graph unterstützten Sprachkomponenten behandelt:
Resource Graph-Tabellen
Resource Graph umfasst mehrere Tabellen für die Daten, die in Bezug auf Azure Resource Manager-Ressourcentypen und deren Eigenschaften gespeichert werden. Resource Graph-Tabellen können mit dem join-Operator verwendet werden, um Eigenschaften aus verwandten Ressourcentypen abzurufen.
Resource Graph-Tabellen unterstützen die join-Varianten:
| Resource Graph-Tabelle | Ist ein join für andere Tabellen möglich? |
Description |
|---|---|---|
| AdvisorResources | Yes | Includes resources related to Microsoft.Advisor. |
| AlertsManagementResources | Yes | Includes resources related to Microsoft.AlertsManagement. |
| AppServiceResources | Yes | Includes resources related to Microsoft.Web. |
| AuthorizationResources | Yes | Includes resources related to Microsoft.Authorization. |
| AWSResources | Yes | Includes resources related to Microsoft.AwsConnector. |
| AzureBusinessContinuityResources | Yes | Includes resources related to Microsoft.AzureBusinessContinuity. |
| ChaosResources | Yes | Includes resources related to Microsoft.Chaos. |
| CommunityGalleryResources | Yes | Includes resources related to Microsoft.Compute. |
| ComputeResources | Yes | Enthält Ressourcen im Zusammenhang mit Microsoft.Compute-VM-Skalierungsgruppen. |
| DesktopVirtualizationResources | Yes | Includes resources related to Microsoft.DesktopVirtualization. |
| DnsResources | Yes | Includes resources related to Microsoft.Network. |
| EdgeOrderResources | Yes | Includes resources related to Microsoft.EdgeOrder. |
| ElasticsanResources | Yes | Includes resources related to Microsoft.ElasticSan. |
| ExtendedLocationResources | Yes | Includes resources related to Microsoft.ExtendedLocation. |
| FeatureResources | Yes | Includes resources related to Microsoft.Features. |
| GuestConfigurationResources | Yes | Includes resources related to Microsoft.GuestConfiguration. |
| HealthResourceChanges | Yes | Includes resources related to Microsoft.Resources. |
| HealthResources | Yes | Includes resources related to Microsoft.ResourceHealth. |
| InsightsResources | Yes | Includes resources related to Microsoft.Insights. |
| IoTSecurityResources | Yes | Includes resources related to Microsoft.IoTSecurity and Microsoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Includes resources related to Microsoft.KubernetesConfiguration. |
| KustoResources | Yes | Includes resources related to Microsoft.Kusto. |
| MaintenanceResources | Yes | Includes resources related to Microsoft.Maintenance. |
| ManagedServicesResources | Yes | Includes resources related to Microsoft.ManagedServices. |
| MigrateResources | Yes | Includes resources related to Microsoft.OffAzure. |
| NetworkResources | Yes | Includes resources related to Microsoft.Network. |
| PatchAssessmentResources | Yes | Includes resources related to Azure Virtual Machines patch assessment Microsoft.Compute and Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Includes resources related to Azure Virtual Machines patch installation Microsoft.Compute and Microsoft.HybridCompute. |
| PolicyResources | Yes | Includes resources related to Microsoft.PolicyInsights. |
| RecoveryServicesResources | Yes | Includes resources related to Microsoft.DataProtection and Microsoft.RecoveryServices. |
| ResourceChanges | Yes | Includes resources related to Microsoft.Resources. |
| ResourceContainerChanges | Yes | Includes resources related to Microsoft.Resources. |
| ResourceContainers | Yes | Umfasst die Ressourcentypen und Daten der Verwaltungsgruppe (Microsoft.Management/managementGroups), des Abonnements (Microsoft.Resources/subscriptions) und der Ressourcengruppe (Microsoft.Resources/subscriptions/resourcegroups). |
| Resources | Yes | Die Standardtabelle, wenn keine Tabelle in der Abfrage definiert ist. Die meisten Resource Manager-Ressourcentypen und -Eigenschaften sind hier enthalten. |
| SecurityResources | Yes | Includes resources related to Microsoft.Security. |
| ServiceFabricResources | Yes | Includes resources related to Microsoft.ServiceFabric. |
| ServiceHealthResources | Yes | Includes resources related to Microsoft.ResourceHealth/events. |
| SpotResources | Yes | Includes resources related to Microsoft.Compute. |
| SupportResources | Yes | Includes resources related to Microsoft.Support. |
| TagsResources | Yes | Includes resources related to Microsoft.Resources/tagnamespaces. |
Eine Liste der Tabellen, die Ressourcentypen enthalten, finden Sie unter Referenz zu Azure Resource Graph-Tabellen und Ressourcentypen.
Note
Resources ist die Standardtabelle. Beim Abfragen der Tabelle Resources muss der Tabellenname nur angegeben werden, wenn nicht join oder union verwendet werden. Es wird jedoch empfohlen, immer die ursprüngliche Tabelle in die Abfrage einzubeziehen.
Verwenden Sie den Resource Graph-Explorer im Portal, um zu ermitteln, welche Ressourcentypen in den einzelnen Tabellen verfügbar sind. Sie können auch eine Abfrage verwenden (z.B. <tableName> | distinct type), um eine Liste von Ressourcentypen zu erhalten, die von der angegebenen Resource Graph-Tabelle unterstützt werden und in Ihrer Umgebung vorhanden sind.
Die folgende Abfrage zeigt eine einfache Verwendung von join. The query result blends the columns together and any duplicate column names from the joined table, ResourceContainers in this example, are appended with 1. As ResourceContainers table has types for both subscriptions and resource groups, either type might be used to join to the resource from Resources table.
Resources
| join ResourceContainers on subscriptionId
| limit 1
Die folgende Abfrage zeigt eine komplexere Verwendung von join. Zuerst verwendet die Abfrage project, um die Felder aus Resources für den Ressourcentyp „Azure Key Vault-Tresore“ abzurufen. The next step uses join to merge the results with ResourceContainers where the type is a subscription on a property that is both in the first table's project and the joined table's project. The field rename avoids join adding it as name1 since the property already is projected from Resources. Das Abfrageergebnis ist ein einzelner Schlüsseltresor, der den Typ, den Namen, den Speicherort und die Ressourcengruppe des Schlüsseltresors sowie den Namen des Abonnements anzeigt, in dem er sich befindet.
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
When limiting the join results with project, the property used by join to relate the two tables, subscriptionId in the above example, must be included in project.
Extended properties
As a preview feature, some of the resource types in Resource Graph have more type-related properties available to query beyond the properties provided by Azure Resource Manager. This set of values, known as extended properties, exists on a supported resource type in properties.extended. To show resource types with extended properties, use the following query:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Beispiel: Abrufen der Anzahl virtueller Computer über instanceView.powerState.code:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Benutzerdefinierte Sprachelemente in Resource Graph
Syntax für freigegebene Abfragen (Vorschauversion)
As a preview feature, a shared query can be accessed directly in a Resource Graph query. Dieses Szenario ermöglicht es, Standardabfragen als freigegebene Abfragen zu erstellen und wiederzuverwenden. Verwenden Sie die Syntax {{shared-query-uri}}, um eine freigegebene Abfrage innerhalb einer Resource Graph-Abfrage aufzurufen. The URI of the shared query is the Resource ID of the shared query on the Settings page for that query. In diesem Beispiel ist /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS der URI für die freigegebene Abfrage.
Dieser URI verweist auf das Abonnement, die Ressourcengruppe und den vollständigen Namen der freigegebenen Abfrage, auf die in einer anderen Abfrage verwiesen werden soll. Diese Abfrage ist identisch mit der Abfrage, die unter Tutorial: Erstellen und Freigeben einer Abfrage erstellt wird.
Note
Eine Abfrage, die auf eine freigegebene Abfrage verweist, kann nicht als freigegebene Abfrage gespeichert werden.
Beispiel 1: Alleiniges Verwenden der freigegebenen Abfrage
Die Ergebnisse dieser Resource Graph-Abfrage sind identisch mit denen der in der freigegebenen Abfrage gespeicherten.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Beispiel 2: Einfügen der freigegebenen Abfrage als Teil einer größeren Abfrage
Bei dieser Abfrage wird zunächst die freigegebene Abfrage und dann limit verwendet, um die Ergebnisse weiter einzugrenzen.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Unterstützte KQL-Sprachelemente
Resource Graph supports a subset of KQL data types, scalar functions, scalar operators, and aggregation functions. Specific tabular operators are supported by Resource Graph, some of which have different behaviors.
Unterstützte tabellarische Operatoren und Operatoren auf oberster Ebene
Hier finden Sie die Liste der von Resource Graph unterstützten KQL-Tabellenoperatoren mit konkreten Beispielen:
| KQL | Resource Graph-Beispielabfrage | Notes |
|---|---|---|
| count | Anzahl von Schlüsseltresoren | |
| distinct | Anzeigen von Ressourcen, die Speicher enthalten | |
| extend | Anzahl von virtuellen Computern nach Betriebssystemtyp | |
| join | Schlüsseltresor mit Abonnementname | Join flavors supported: innerunique, inner, leftouter, and fullouter. Begrenzung auf drei join oder union Vorgänge (oder eine Kombination der beiden) in einer einzelnen Abfrage, die zusammengezählt werden, wobei einer davon eine tabellenübergreifende Verknüpfung sein kann. If all cross-table join use is between Resource and ResourceContainers, then three cross-table join are allowed. Benutzerdefinierte Joinstrategien wie Broadcastjoin sind nicht zulässig. Welche Tabellen join verwenden können, erfahren Sie unter Resource Graph-Tabellen. |
| limit | Liste der öffentlichen IP-Adressen | Synonym für take. Doesn't work with Skip. |
| mvexpand | Legacy-Operator, verwenden Sie stattdessen mv-expand.
RowLimit max of 2,000. Der Standardwert ist 128. |
|
| mv-expand | Auflisten von Azure Cosmos DB mit bestimmten Schreibinstanzen |
RowLimit max of 2,000. Der Standardwert ist 128. Maximal drei mv-expand-Elemente in einer einzelnen Abfrage. |
| order | Auflisten von Ressourcen nach Namen sortiert | Synonym für sort |
| parse | Abrufen von virtuellen Netzwerken und Subnetzen von Netzwerkschnittstellen | Es ist optimal, direkt auf Eigenschaften zuzugreifen, wenn sie vorhanden sind, anstatt parse zu verwenden. |
| project | Auflisten von Ressourcen nach Namen sortiert | |
| project-away | Entfernen von Spalten aus den Ergebnissen | |
| sort | Auflisten von Ressourcen nach Namen sortiert | Synonym für order |
| summarize | Anzahl der Azure-Ressourcen | Nur vereinfachte erste Seite |
| take | Liste der öffentlichen IP-Adressen | Synonym für limit. Doesn't work with Skip. |
| top | Anzeigen der ersten fünf virtuellen Computer nach Name und BS-Typ | |
| union | Vereinen von Ergebnissen aus zwei Abfragen in einem einzigen Ergebnis | Einzelne Tabelle zulässig: | union [kind= inner|outer] [withsource=ColumnName] Table. Es können maximal drei union-Verzweigungen in einer einzelnen Abfrage vorhanden sein. Fuzzyauflösung von union-Verzweigungstabellen ist nicht zulässig. Might be used within a single table or between the Resources and ResourceContainers tables. |
| where | Anzeigen von Ressourcen, die Speicher enthalten |
Es gibt eine Standardgrenze von drei join- und drei mv-expand-Operatoren in einer einzelnen Resource Graph-SDK-Abfrage. Sie können eine Erhöhung dieser Grenzwerte für Ihren Mandanten über Hilfe und Support anfordern.
To support the Open Query portal experience, Azure Resource Graph Explorer has a higher global limit than Resource Graph SDK.
Note
Sie können eine Tabelle nicht mehrfach als rechte Tabelle referenzieren, was den Grenzwert von 1 überschreitet. Wenn Sie dies tun, erhalten Sie eine Fehlermeldung mit dem Code DisallowedMaxNumberOfRemoteTables.
Query scope
The scope of the subscriptions or management groups from which resources are returned by a query defaults to a list of subscriptions based on the context of the authorized user. If a management group or a subscription list isn't defined, the query scope is all resources, and includes Azure Lighthouse delegated resources.
Die Liste der abzufragenden Abonnements oder Verwaltungsgruppen kann manuell definiert werden, um den Bereich der Ergebnisse zu ändern. Die REST-API-Eigenschaft managementGroups übernimmt beispielsweise die Verwaltungsgruppen-ID, die sich von dem Namen der Verwaltungsgruppe unterscheidet. Wenn managementGroups angegeben ist, werden Ressourcen aus den ersten 10.000 Abonnements in oder unter der angegebenen Verwaltungsgruppenhierarchie eingeschlossen.
managementGroups kann nicht gleichzeitig mit subscriptions verwendet werden.
Beispiel: Abfrage aller Ressourcen innerhalb der Hierarchie der Verwaltungsgruppe namens My Management Group mit der ID myMG.
REST-API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01Request Body
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Mit dem Parameter AuthorizationScopeFilter können Sie in der Tabelle AuthorizationResources Azure Policy-Zuweisungen und Azure RBAC-Rollenzuweisungen (rollenbasierte Zugriffssteuerung in Azure) auflisten, die von oberen Bereichen geerbt werden. Der Parameter AuthorizationScopeFilter akzeptiert die folgenden Werte für die Tabellen PolicyResources und AuthorizationResources:
- AtScopeAndBelow (default if not specified): Returns assignments for the given scope and all child scopes.
- AtScopeAndAbove: Returns assignments for the given scope and all parent scopes, but not child scopes.
- AtScopeAboveAndBelow: Returns assignments for the given scope, all parent scopes, and all child scopes.
- AtScopeExact: Returns assignments only for the given scope; no parent or child scopes are included.
Note
To use the AuthorizationScopeFilter parameter, be sure to use the 2021-06-01-preview or later API version in your requests.
Example: Get all policy assignments at the myMG management group and Tenant Root (parent) scopes.
REST-API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewExemplarischer Anforderungstext
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Example: Get all policy assignments at the mySubscriptionId subscription, management group, and Tenant Root scopes.
REST-API-URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewExemplarischer Anforderungstext
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Escape characters
Einige Eigenschaftennamen, etwa diejenigen, die einen . oder ein $ enthalten, müssen in einer Abfrage umhüllt oder mit Escapezeichen versehen sein. Andernfalls wird der jeweilige Eigenschaftenname falsch interpretiert, sodass nicht die erwarteten Ergebnisse bereitgestellt werden.
Punkt (
.): Schließen Sie den Eigenschaftennamen['propertyname.withaperiod']in Klammern ein.Example query that wraps the property odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']Dollarzeichen (
$): Versehen Sie das Zeichen im Eigenschaftennamen mit einem Escapezeichen. Welches Escapezeichen verwendet wird, hängt von der Shell ab, in der Resource Graph ausführt wird.Bash: Use a backslash (
\) as the escape character.Example query that escapes the property $type in Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd: Don't escape the dollar sign (
$) character.PowerShell: Use a backtick (
`) as the escape character.Example query that escapes the property $type in PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Next steps
- Azure Resource Graph query language Starter queries and Advanced queries.
- Weitere Informationen über das Erkunden von Azure-Ressourcen