Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El lenguaje de consulta de Azure Resource Graph admite muchos operadores y funciones. Cada uno funciona en función del lenguaje de consulta de Kusto (KQL). Para información sobre el lenguaje de consulta usado por Resource Graph, comience con el tutorial para KQL.
En este artículo se tratan los componentes de idioma admitidos por Resource Graph:
- Información del lenguaje de consulta de Azure Resource Graph
Tablas de Resource Graph
Resource Graph proporciona varias tablas para los datos que almacena sobre los tipos de recursos de Azure Resource Manager y sus propiedades. Las tablas de Resource Graph se pueden usar con el operador join para obtener propiedades de los tipos de recursos relacionados.
Las tablas de Resource Graph admiten los tipos de join:
| Tabla de Resource Graph | ¿Se puede usar join con otras tablas? |
Description |
|---|---|---|
| AdvisorResources | Yes | Incluye recursos relacionados con Microsoft.Advisor. |
| AlertsManagementResources | Yes | Incluye recursos relacionados con Microsoft.AlertsManagement. |
| AppServiceResources | Yes | Incluye recursos relacionados con Microsoft.Web. |
| AuthorizationResources | Yes | Incluye recursos relacionados con Microsoft.Authorization. |
| AWSResources | Yes | Incluye recursos relacionados con Microsoft.AwsConnector. |
| AzureBusinessContinuityResources | Yes | Incluye recursos relacionados con Microsoft.AzureBusinessContinuity. |
| ChaosResources | Yes | Incluye recursos relacionados con Microsoft.Chaos. |
| CommunityGalleryResources | Yes | Incluye recursos relacionados con Microsoft.Compute. |
| ComputeResources | Yes | Incluye recursos relacionados con Microsoft.ComputeVirtual Machine Scale Sets. |
| DesktopVirtualizationResources | Yes | Incluye recursos relacionados con Microsoft.DesktopVirtualization. |
| DnsResources | Yes | Incluye recursos relacionados con Microsoft.Network. |
| EdgeOrderResources | Yes | Incluye recursos relacionados con Microsoft.EdgeOrder. |
| ElasticsanResources | Yes | Incluye recursos relacionados con Microsoft.ElasticSan. |
| ExtendedLocationResources | Yes | Incluye recursos relacionados con Microsoft.ExtendedLocation. |
| FeatureResources | Yes | Incluye recursos relacionados con Microsoft.Features. |
| GuestConfigurationResources | Yes | Incluye recursos relacionados con Microsoft.GuestConfiguration. |
| HealthResourceChanges | Yes | Incluye recursos relacionados con Microsoft.Resources. |
| HealthResources | Yes | Incluye recursos relacionados con Microsoft.ResourceHealth. |
| InsightsResources | Yes | Incluye recursos relacionados con Microsoft.Insights. |
| IoTSecurityResources | Yes | Incluye recursos relacionados con Microsoft.IoTSecurity y Microsoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Incluye recursos relacionados con Microsoft.KubernetesConfiguration. |
| KustoResources | Yes | Incluye recursos relacionados con Microsoft.Kusto. |
| MaintenanceResources | Yes | Incluye recursos relacionados con Microsoft.Maintenance. |
| ManagedServicesResources | Yes | Incluye recursos relacionados con Microsoft.ManagedServices. |
| MigrateResources | Yes | Incluye recursos relacionados con Microsoft.OffAzure. |
| NetworkResources | Yes | Incluye recursos relacionados con Microsoft.Network. |
| PatchAssessmentResources | Yes | Incluye recursos relacionados con la evaluación Microsoft.Compute de parches de Azure Virtual Machines y Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Incluye recursos relacionados con la instalación Microsoft.Compute de parches de Azure Virtual Machines y Microsoft.HybridCompute. |
| PolicyResources | Yes | Incluye recursos relacionados con Microsoft.PolicyInsights. |
| RecoveryServicesResources | Yes | Incluye recursos relacionados con Microsoft.DataProtection y Microsoft.RecoveryServices. |
| ResourceChanges | Yes | Incluye recursos relacionados con Microsoft.Resources. |
| ResourceContainerChanges | Yes | Incluye recursos relacionados con Microsoft.Resources. |
| ResourceContainers | Yes | Incluye el grupo de administración (Microsoft.Management/managementGroups), la suscripción (Microsoft.Resources/subscriptions) y los tipos de datos del grupo de recursos (Microsoft.Resources/subscriptions/resourcegroups) del grupo de recursos y los datos. |
| Resources | Yes | Tabla predeterminada si una tabla no está definida en la consulta. La mayoría de los tipos de recursos y propiedades de Resource Manager están aquí. |
| SecurityResources | Yes | Incluye recursos relacionados con Microsoft.Security. |
| ServiceFabricResources | Yes | Incluye recursos relacionados con Microsoft.ServiceFabric. |
| ServiceHealthResources | Yes | Incluye recursos relacionados con Microsoft.ResourceHealth/events. |
| SpotResources | Yes | Incluye recursos relacionados con Microsoft.Compute. |
| SupportResources | Yes | Incluye recursos relacionados con Microsoft.Support. |
| TagsResources | Yes | Incluye recursos relacionados con Microsoft.Resources/tagnamespaces. |
Para obtener una lista de tablas que incluye tipos de recursos, vaya a La tabla de Azure Resource Graph y la referencia de tipo de recurso.
Note
Resources es la tabla predeterminada. Al consultar la tabla Resources, no es necesario proporcionar el nombre de la tabla a menos que se usen join o union. Pero la práctica recomendada es incluir siempre la tabla inicial en la consulta.
Para detectar qué tipos de recursos están disponibles en cada tabla, use el Explorador de Resource Graph en el portal. Como alternativa, utilice una consulta como <tableName> | distinct type para obtener una lista de los tipos de recursos que admite la tabla de Resource Graph que existe en su entorno.
En la consulta siguiente se muestra un uso sencillo de join. El resultado de la consulta mezcla las columnas y cualquier nombre duplicado de columna de la tabla unida, ResourceContainers en este ejemplo, se agrega con 1. Como la tabla ResourceContainers tiene tipos tanto para suscripciones como para grupos de recursos, cualquiera de los dos tipos puede usarse para unirse al recurso desde Resources la tabla.
Resources
| join ResourceContainers on subscriptionId
| limit 1
En la consulta siguiente se muestra un uso más complejo de join. En primer lugar, la consulta usa project para obtener los campos Resources para el tipo de recurso almacenes de Azure Key Vault. El siguiente paso consiste join en fusionar los resultados con ResourceContainers , donde el tipo es una suscripción a una propiedad que está tanto en la primera tabla project como en la tabla projectunida. El renombramiento del campo evita join añadirlo como name1 ya que la propiedad ya está proyectada desde Resources. El resultado de la consulta es un solo almacén de claves que muestra su tipo, nombre, ubicación y el grupo de recursos del almacén de claves, junto con el nombre de la suscripción en que se encuentra.
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
Al limitar los join resultados con project, la propiedad usada por join para relacionar las dos tablas, subscriptionId en el ejemplo anterior, debe incluirse en project.
Propiedades extendidas
Como función de vista previa , algunos de los tipos de recursos en Resource Graph tienen más propiedades relacionadas con tipos disponibles para consultar más allá de las proporcionadas por Azure Resource Manager. Este conjunto de valores, conocido como propiedades extendidas, existe en un tipo de recurso soportado en properties.extended. Para mostrar tipos de recursos con propiedades extendidas, utilice la siguiente consulta:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Ejemplo: Obtenga el recuento de máquinas virtuales mediante instanceView.powerState.code:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elementos del lenguaje personalizado de Resource Graph
Sintaxis de consulta compartida (versión preliminar)
Como función de vista previa, una consulta compartida puede accederse directamente en una consulta de Resource Graph. Este escenario permite crear consultas estándar como consultas compartidas, así como reutilizarlas. Para llamar a una consulta compartida dentro de una consulta de Resource Graph, use la sintaxis {{shared-query-uri}}. El URI de la consulta compartida es el ID de recurso de la consulta compartida en la página de Configuración para esa consulta. En este ejemplo, el URI de la consulta compartida es /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS.
Este URI apunta a la suscripción, al grupo de recursos y al nombre completo de la consulta compartida a la que se desea hacer referencia en otra consulta. Esta consulta es la misma que la creada en Tutorial: Creación y uso compartido de una consulta.
Note
No se puede guardar como consulta compartida una consulta que haga referencia a una consulta compartida.
Ejemplo 1: Usar solo la consulta compartida:
Los resultados de esta consulta de Resource Graph son los mismos que los de la consulta almacenada en la consulta compartida.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Ejemplo 2: Incluir la consulta compartida como parte de una consulta mayor:
En primer lugar, esta consulta usa la consulta compartida y, a continuación, usa limit para restringir aún más los resultados.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Elementos del lenguaje KQL admitidos
Resource Graph soporta un subconjunto de tipos de datos KQL, funciones escalares, operadores escalares y funciones de agregación. Operadores tabulares específicos son soportados por Resource Graph, algunos de los cuales tienen comportamientos diferentes.
Operadores de nivel superior o tabulares compatibles
Esta es la lista de operadores tabulares KQL admitidos por Resource Graph con ejemplos específicos:
| KQL | Consulta de ejemplo de Resource Graph | Notes |
|---|---|---|
| count | Contador de almacenes de claves | |
| distinct | Mostrar los recursos que contienen almacenamiento | |
| extend | Recuento de máquinas virtuales por tipo de sistema operativo | |
| join | Almacén de claves con el nombre de la suscripción | Combina sabores compatibles: innerunique, inner, leftouter y fullouter. Límite de tres operaciones join o union (o una combinación de ambas) en una sola consulta, contadas juntas, una de las cuales podría ser una unión entre tablas. Si todo el uso de la tabla join cruzada es entre Resource y ResourceContainers, entonces se permiten tres tablas join cruzadas. No se permiten las estrategias de combinación personalizadas, como la combinación de difusión. Para qué tablas pueden usar join, vaya a tablas de Resource Graph. |
| limit | Enumerar todas las direcciones IP públicas | Sinónimo de take. No funciona con Skip. |
| mvexpand | Operador heredado, use mv-expand en su lugar.
Límite de filas máximo de 2.000. El valor predeterminado es 128. |
|
| mv-expand | Enumeración de Azure Cosmos DB con ubicaciones de escritura concretas |
Límite de filas máximo de 2.000. El valor predeterminado es 128. Límite de 3 mv-expand en una sola consulta. |
| order | Enumeración de recursos ordenados por nombre | Sinónimo de sort |
| parse | Obtención de redes virtuales y subredes de interfaces de red | Es óptimo acceder directamente a las propiedades si existen en lugar de usar parse. |
| project | Enumeración de recursos ordenados por nombre | |
| project-away | Eliminación de columnas de los resultados | |
| sort | Enumeración de recursos ordenados por nombre | Sinónimo de order |
| summarize | Recuento de recursos de Azure | Solo la primera página simplificada |
| take | Enumerar todas las direcciones IP públicas | Sinónimo de limit. No funciona con Skip. |
| top | Mostrar las cinco primeras máquinas virtuales por nombre y su tipo de sistema operativo | |
| union | Combinación de los resultados de dos consultas para formar un solo resultado | Tabla única permitida: | union [kind= inner|outer] [withsource=ColumnName] Table. Límite de tres union piernas en una sola consulta. No se permite la resolución aproximada de tablas de segmento union. Puede usarse dentro de una única tabla o entre las tablas de Recursos y Contenedores de Recursos . |
| where | Mostrar los recursos que contienen almacenamiento |
Hay un límite predeterminado de tres join y tres operadores mv-expand en una sola consulta del SDK de Resource Graph. Puede solicitar un aumento de estos límites para el inquilino en Ayuda y soporte técnico.
Para soportar la experiencia del portal Open Consult , Azure Resource Graph Explorer tiene un límite global más alto que el SDK de Resource Graph.
Note
No se puede hacer referencia a una tabla como tabla correcta más de una vez, lo que excede el límite de 1. Si lo hace, recibirá un error con el código DisallowedMaxNumberOfRemoteTables.
Ámbito de la consulta
El alcance de las suscripciones o grupos de gestión de los que se devuelven los recursos mediante una consulta se traduce por defecto en una lista de suscripciones basada en el contexto del usuario autorizado. Si no se define un grupo de gestión o una lista de suscripción, el alcance de la consulta incluye todos los recursos e incluye recursos delegados por Azure Lighthouse .
La lista de suscripciones o grupos de administración que se va a consultar se puede definir manualmente para cambiar el ámbito de los resultados. Por ejemplo, la propiedad managementGroups de la API de REST toma el id. del grupo de administración, que es diferente del nombre del grupo de administración. Cuando se especifica managementGroups, se incluyen los recursos de las primeras 10000 suscripciones de la jerarquía de grupos de administración especificada.
managementGroups no se puede usar al mismo tiempo que subscriptions.
Ejemplo: Consulte todos los recursos de la jerarquía del grupo de administración denominado My Management Group con el identificador myMG.
URI DE LA API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01Cuerpo de la solicitud
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
El parámetro AuthorizationScopeFilter permite enumerar las asignaciones de Azure Policy y las asignaciones de roles de control de acceso basado en rol (RBAC de Azure) en la tabla AuthorizationResources que se heredan de ámbitos superiores. El parámetro AuthorizationScopeFilter acepta los siguientes valores para las tablas PolicyResources y AuthorizationResources:
- AtScopeAndBelow (por defecto si no se especifica): Devuelve las asignaciones para el alcance dado y todos los ámbitos hijos.
- AtScopeAndAbove: Devuelve las asignaciones para el ámbito dado y todos los ámbitos padres, pero no los ámbitos hijos.
- AtScopeAboveAndBelow: Devuelve las asignaciones para el ámbito dado, todos los ámbitos padres y todos los ámbitos hijos.
- AtScopeExact: Devuelve las asignaciones solo para el ámbito dado; No se incluyen los ámbitos parentales ni los hijos del niño.
Note
Para usar el AuthorizationScopeFilter parámetro, asegúrate de usar la versión preliminar de la API 2021-06-01 o una versión posterior de la API en tus solicitudes.
Ejemplo: Obtén todas las asignaciones de políticas en el grupo de gestión de myMG y en los ámbitos raíz de inquilino (padre).
URI DE LA API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewEjemplo de cuerpo de la solicitud
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Ejemplo: Obtén todas las asignaciones de políticas en los ámbitos de suscripción mySubscriptionId , grupo de gestión y raíz de tenido.
URI DE LA API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewEjemplo de cuerpo de la solicitud
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Caracteres de escape
Algunos nombres de propiedad, como los que incluyen . o $, debe encapsularse o escapar en la consulta para que se interprete correctamente; de lo contrario, no proporcionan los resultados previstos.
Punto (
.): ajuste el nombre de la propiedad['propertyname.withaperiod']mediante corchetes.Consulta de ejemplo que envuelve la propiedad odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']Signo de dólar (
$): escape el carácter en el nombre de la propiedad. El carácter de escape usado depende del shell que ejecuta Resource Graph.Bash: Usa una barra diagonal (
\) como personaje de escape.Consulta de ejemplo que escapa de la propiedad $type en Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd: No escapes del personaje del signo de dólar ().
$PowerShell: Usa un backtick (
`) como personaje de escape.Ejemplo de consulta que escapa de la propiedad $type en PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Pasos siguientes
- Azure Resource Graph lenguaje de consultas Consultas iniciales y consultas avanzadas.
- Obtenga más información sobre cómo explorar los recursos de Azure.