Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le langage de requête pour Azure Resource Graph prend en charge plusieurs opérateurs et fonctions. Leur fonctionnement et leur utilisation s’appuient sur le langage de requête Kusto (KQL, Kusto Query Language). Pour en savoir plus sur le langage de requête utilisé par Resource Graph, commencez par suivre le tutoriel KQL.
Cet article traite des composants de langage pris en charge par Resource Graph :
Tables Resource Graph
Resource Graph fournit plusieurs tables contenant les données qu’il stocke sur les types de ressources Azure Resource Manager et leurs propriétés. Les tables Resource Graph peuvent être utilisées avec l'opérateur join pour obtenir des propriétés à partir de types de ressources associés.
Les tables Resource Graph prennent en charge les options join :
| Table Resource Graph | Peut join d’autres tables ? |
Description |
|---|---|---|
| AdvisorResources | Yes | Inclut des ressources liées à Microsoft.Advisor. |
| AlertsManagementResources | Yes | Inclut des ressources liées à Microsoft.AlertsManagement. |
| AppServiceResources | Yes | Inclut des ressources liées à Microsoft.Web. |
| AuthorizationResources | Yes | Inclut des ressources liées à Microsoft.Authorization. |
| AWSResources | Yes | Inclut des ressources liées à Microsoft.AwsConnector. |
| AzureBusinessContinuityResources | Yes | Inclut des ressources liées à Microsoft.AzureBusinessContinuity. |
| ChaosResources | Yes | Inclut des ressources liées à Microsoft.Chaos. |
| CommunityGalleryResources | Yes | Inclut des ressources liées à Microsoft.Compute. |
| ComputeResources | Yes | Inclut les ressources liées à Microsoft.Compute Virtual Machine Scale Sets. |
| DesktopVirtualizationResources | Yes | Inclut des ressources liées à Microsoft.DesktopVirtualization. |
| DnsResources | Yes | Inclut des ressources liées à Microsoft.Network. |
| EdgeOrderResources | Yes | Inclut des ressources liées à Microsoft.EdgeOrder. |
| ElasticsanResources | Yes | Inclut des ressources liées à Microsoft.ElasticSan. |
| ExtendedLocationResources | Yes | Inclut des ressources liées à Microsoft.ExtendedLocation. |
| FeatureResources | Yes | Inclut des ressources liées à Microsoft.Features. |
| GuestConfigurationResources | Yes | Inclut des ressources liées à Microsoft.GuestConfiguration. |
| HealthResourceChanges | Yes | Inclut des ressources liées à Microsoft.Resources. |
| HealthResources | Yes | Inclut des ressources liées à Microsoft.ResourceHealth. |
| InsightsResources | Yes | Inclut des ressources liées à Microsoft.Insights. |
| IoTSecurityResources | Yes | Inclut des ressources liées à Microsoft.IoTSecurity et Microsoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Inclut des ressources liées à Microsoft.KubernetesConfiguration. |
| KustoResources | Yes | Inclut des ressources liées à Microsoft.Kusto. |
| MaintenanceResources | Yes | Inclut des ressources liées à Microsoft.Maintenance. |
| ManagedServicesResources | Yes | Inclut des ressources liées à Microsoft.ManagedServices. |
| MigrateResources | Yes | Inclut des ressources liées à Microsoft.OffAzure. |
| NetworkResources | Yes | Inclut des ressources liées à Microsoft.Network. |
| PatchAssessmentResources | Yes | Comprend des ressources liées à l’évaluation Microsoft.Compute des correctifs Azure Virtual Machines et Microsoft.HybridComputeà . |
| PatchInstallationResources | Yes | Comprend des ressources liées à l’installation Microsoft.Compute de correctifs Azure Virtual Machines et Microsoft.HybridComputeà . |
| PolicyResources | Yes | Inclut des ressources liées à Microsoft.PolicyInsights. |
| RecoveryServicesResources | Yes | Inclut des ressources liées à Microsoft.DataProtection et Microsoft.RecoveryServices. |
| ResourceChanges | Yes | Inclut des ressources liées à Microsoft.Resources. |
| ResourceContainerChanges | Yes | Inclut des ressources liées à Microsoft.Resources. |
| ResourceContainers | Yes | Inclut les données et les types de ressources du groupe d’administration (Microsoft.Management/managementGroups), de l’abonnement (Microsoft.Resources/subscriptions) et du groupe de ressources (Microsoft.Resources/subscriptions/resourcegroups). |
| Resources | Yes | La table par défaut s'applique si une table n'est pas définie dans la requête. Elle contient la plupart des types de ressources et propriétés Resource Manager. |
| SecurityResources | Yes | Inclut des ressources liées à Microsoft.Security. |
| ServiceFabricResources | Yes | Inclut des ressources liées à Microsoft.ServiceFabric. |
| ServiceHealthResources | Yes | Inclut des ressources liées à Microsoft.ResourceHealth/events. |
| SpotResources | Yes | Inclut des ressources liées à Microsoft.Compute. |
| SupportResources | Yes | Inclut des ressources liées à Microsoft.Support. |
| TagsResources | Yes | Inclut des ressources liées à Microsoft.Resources/tagnamespaces. |
Pour obtenir la liste des tables qui incluent des types de ressources, accédez à la table Azure Resource Graph et à la référence de type de ressource.
Note
Resources est la table par défaut. Lorsque vous interrogez la table Resources, il n’est pas nécessaire d’indiquer le nom de la table, sauf si vous utilisez join ou union. Toutefois, la pratique recommandée consiste à toujours inclure la table initiale dans la requête.
Utilisez l’Explorateur Resource Graph dans le portail pour découvrir les types de ressources disponibles dans chaque table. Vous pouvez également utiliser une requête telle que <tableName> | distinct type pour obtenir la liste des types de ressources existant dans votre environnement, pris en charge par la table Resource Graph concernée.
La requête suivante illustre un opérateur join simple. Le résultat de la requête mélange les colonnes et tous les noms de colonnes dupliqués de la table jointe, ResourceContainers dans cet exemple, sont ajoutés à 1. Comme la table ResourceContainers comporte des types à la fois pour les abonnements et les groupes de ressources, l’un ou l’autre type peut être utilisé pour rejoindre la ressource depuis Resources la table.
Resources
| join ResourceContainers on subscriptionId
| limit 1
La requête suivante illustre une utilisation plus complexe de l’opérateur join. Tout d’abord, la requête utilise project pour obtenir les champs de Resources pour le type de ressource coffre Azure Key Vault. L’étape suivante consiste join à fusionner les résultats avec les ResourceContainers , où le type est une abonnement sur une propriété qui se trouve à la fois dans la project première table et dans la projecttable jointe. Le renommage évite join de l’ajouter comme name1 puisque la propriété est déjà projetée à partir de Resources. Le résultat de la requête est un coffre de clés unique affichant le type, le nom, l’emplacement et le groupe de ressources du coffre de clés, ainsi que le nom de l’abonnement dans lequel il se trouve.
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
Lors de la limitation des join résultats par project, la propriété utilisée par join pour relier les deux tableaux, subscriptionId dans l’exemple ci-dessus, doit être incluse dans project.
Propriétés étendues
En tant que fonction d’aperçu , certains types de ressources dans Resource Graph disposent de propriétés plus spécifiques aux types disponibles pour interroger au-delà des propriétés fournies par Azure Resource Manager. Cet ensemble de valeurs, appelé propriétés étendues, existe sur un type de ressource supporté dans properties.extended. Pour afficher les types de ressources avec des propriétés étendues, utilisez la requête suivante :
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Exemple : Obtenir le nombre total de machines virtuelles à l’aide de instanceView.powerState.code :
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Éléments de langage personnalisés Resource Graph
Syntaxe des requêtes partagées (préversion)
En tant que fonction d’aperçu, une requête partagée peut être accessible directement dans une requête Resource Graph. Ce scénario permet de créer des requêtes standard comme requêtes partagées et de les réutiliser. Pour appeler une requête partagée à l’intérieur d’une requête Resource Graph, utilisez la syntaxe {{shared-query-uri}}. L’URI de la requête partagée est l’ID de ressource de la requête partagée sur la page Paramètres pour cette requête. Dans cet exemple, l’URI de la requête partagée est /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS.
Il pointe vers l’abonnement, le groupe de ressources et le nom complet de la requête partagée à laquelle nous souhaitons faire référence dans une autre requête. Cette requête est identique à celle créée dans Tutoriel : Création et partage d’une requête.
Note
Il n’est pas possible d’enregistrer comme requête partagée une requête qui fait référence à une requête partagée.
Exemple 1 : utilisez uniquement la requête partagée :
Les résultats de cette requête Resource Graph sont les mêmes que ceux de la requête stockée dans la requête partagée.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Exemple 2 : incluez la requête partagée dans une requête plus large :
Cette requête utilise d’abord la requête partagée, puis se sert de limit pour limiter encore les résultats.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Éléments du langage KQL pris en charge
Resource Graph prend en chargement un sous-ensemble de types de données KQL, de fonctions scalaires, d’opérateurs scalaires et de fonctions d’agrégation. Des opérateurs tabulaires spécifiques sont pris en charge par Resource Graph, certains ayant des comportements différents.
Opérateurs tabulaires/de niveau supérieur pris en charge
voici la liste des opérateurs tabulaires KQL pris en charge par Resource Graph avec des exemples spécifiques :
| KQL | Exemple de requête Resource Graph | Notes |
|---|---|---|
| count | Compter les coffres de clés | |
| distinct | Afficher les ressources contenant storage | |
| extend | Compter les machines virtuelles par type de système d’exploitation | |
| join | Coffre de clés avec nom d’abonnement | Ajoutez les saveurs supportées : innerunique, inner, leftouter et fullouter. Limite à trois join ou union opérations (ou une combinaison des deux) dans une seule requête, comptées ensemble, dont l'une peut être une jointure entre tables. Si toute utilisation des tables join croisées se fait entre Resource et ResourceContainers, alors trois tables join croisées sont autorisées. Les stratégies de jointure personnalisées comme la jointure de diffusion ne sont pas autorisées. Pour savoir quelles tables peuvent utiliser join, consultez Tables Ressource Graph. |
| limit | Lister toutes les adresses IP publiques | Identique à take. Ça ne marche pas avec Skip. |
| mvexpand | Opérateur hérité, utilisez mv-expand à la place.
Limite de rangs maximum de 2 000. La valeur par défaut est 128. |
|
| mv-expand | Lister Azure Cosmos DB avec des emplacements d’écriture spécifiques |
Limite de rangs maximum de 2 000. La valeur par défaut est 128. Limite de 3 mv-expand dans une requête unique. |
| order | Lister les ressources triées par nom | Identique à sort |
| parse | Obtenir les réseaux virtuels et les sous-réseaux des interfaces réseau | Il est préférable d’accéder directement aux propriétés, le cas échéant, au lieu d’utiliser parse. |
| project | Lister les ressources triées par nom | |
| project-away | Supprimer des colonnes des résultats | |
| sort | Lister les ressources triées par nom | Identique à order |
| summarize | Compter les ressources Azure | Première page simplifiée uniquement |
| take | Lister toutes les adresses IP publiques | Identique à limit. Ça ne marche pas avec Skip. |
| top | Afficher les cinq premières machines virtuelles par nom et leur type de système d’exploitation | |
| union | Combiner les résultats de deux requêtes en un résultat unique | Table unique autorisée : | union [kind= inner|outer] [withsource=ColumnName] Table. Limite de trois sections union dans une seule requête. La résolution approximative des tables avec sections union n’est pas autorisée. Peut être utilisé dans une seule table ou entre les tables Resources et ResourceContainers . |
| where | Afficher les ressources contenant storage |
Il existe une limite par défaut de trois opérateurs join et de trois opérateurs mv-expand dans une seule requête du Kit de développement logiciel (SDK) Resource Graph. Vous pouvez demander une augmentation de ces limites pour votre locataire via Aide + support.
Pour prendre en charge l’expérience du portail Open Query , Azure Resource Graph Explorer a une limite globale plus élevée que le SDK Resource Graph.
Note
Vous ne pouvez pas référencer une table comme table appropriée plusieurs fois, ce qui dépasse la limite de 1. Si vous le faites, vous recevrez une erreur avec le code DisallowedMaxNumberOfRemoteTables.
Étendue de requête
La portée des abonnements ou des groupes de gestion d’où les ressources sont renvoyées par requête se traduit par défaut en une liste d’abonnements basée sur le contexte de l’utilisateur autorisé. Si un groupe de gestion ou une liste d’abonnements n’est pas défini, le périmètre de requête comprend toutes les ressources, incluant les ressources déléguées par Azure Lighthouse .
La liste des abonnements ou des groupes d’administration à interroger peut être définie manuellement pour changer l’étendue des résultats. Par exemple, la propriété managementGroups de l’API REST prend l’ID du groupe d’administration, qui est différent du nom du groupe d’administration. Quand managementGroups est spécifié, les ressources des 10 000 premiers abonnements dans ou sous la hiérarchie du groupe d’administration spécifié sont incluses.
managementGroups ne peut pas être utilisé en même temps que subscriptions.
Exemple : Interroger toutes les ressources dans la hiérarchie du groupe d'administration nommé My Management Group avec l'ID myMG.
URI de l’API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01Corps de la requête
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Le paramètre AuthorizationScopeFilter vous permet de répertorier les affectations de stratégies Azure et les attributions de rôles de contrôle d'accès en fonction du rôle Azure (Azure RBAC) dans la table AuthorizationResources qui sont héritées des étendues supérieures. Le paramètre AuthorizationScopeFilter accepte les valeurs suivantes pour les tables PolicyResources et AuthorizationResources :
- AtScopeAndBelow (par défaut si non spécifié) : Retourne les assignations pour le champ donné et tous les champs enfants.
- AtScopeAndAbove : Renvoie les affectations pour le champ d’application donné et tous les champs parents, mais pas pour les champs enfants.
- AtScopeAboveAndBelow : Retourne les affectations pour le périmètre donné, tous les champs parents, et tous les champs enfants.
- AtScopeExact : Retourne les affectations uniquement pour le périmètre donné ; Aucun endoscope parent ou enfant n’est inclus.
Note
Pour utiliser ce AuthorizationScopeFilter paramètre, assurez-vous d’utiliser la version API preview 2021-06-01-ou la version ultérieure de l’API dans vos requêtes.
Exemple : Obtenez toutes les assignations de politiques dans le groupe de gestion myMG et les champs de contrôle Tenant Root (parent).
URI de l’API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewExemple de corps d’une demande
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Exemple : Obtenez toutes les assignations de politique dans les champs d’application mySubscriptionId , de groupe de gestion et de racines locataires.
URI de l’API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewExemple de corps d’une demande
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Caractères d’échappement
Certains noms propres, tels que ceux qui incluent un . ou $, doivent être inclus dans un wrapper ou échappés dans la requête, sinon le nom de la propriété est interprété de façon incorrecte et les résultats attendus ne sont pas obtenus.
Point (
.) : enveloppez le nom de la propriété['propertyname.withaperiod']à l’aide de crochets.Exemple de requête qui enveloppe la propriété odata.type :
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']Signe dollar (
$) : échappez le caractère dans le nom de la propriété. Le caractère d'échappement utilisé dépend de l'interpréteur de commandes qui exécute Resource Graph.Bash : Utilisez une barre oblique inverse (
\) comme personnage d’évasion.Exemple de requête qui échappe à la propriété $type dans Bash :
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd : Ne fuyez pas le personnage du signe dollar ().
$PowerShell : Utilisez un backtick (
`) comme personnage d’évasion.Exemple de requête qui échappe à la propriété $type dans PowerShell :
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Étapes suivantes
- Azure Resource Graph Query Langues Requêtes Starter et requêtes avancées.
- Découvrez comment explorer les ressources Azure.