Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A linguagem de consulta para o Azure Resource Graph dá suporte a muitos operadores e funções. Cada um funciona e opera com base na Kusto Query Language (KQL). Para saber mais sobre a linguagem de consulta utilizada pelo Resource Graph, comece com o tutorial do KQL.
Este artigo aborda os componentes de linguagem suportados pelo Resource Graph:
- Compreender a linguagem de consulta do Azure Resource Graph
Tabelas do Gráfico de Recursos
O Gráfico de Recursos fornece várias tabelas para os dados que armazena sobre os tipos de recursos do Azure Resource Manager e suas propriedades. As tabelas do Gráfico de Recursos podem ser usadas com o join operador para obter propriedades de tipos de recursos relacionados.
As tabelas do Resource Graph suportam os join sabores:
| Tabela do Gráfico de Recursos | Podem join outras tabelas? |
Description |
|---|---|---|
| AdvisorResources | Yes | Inclui recursos relacionados com Microsoft.Advisor. |
| AlertsManagementResources | Yes | Inclui recursos relacionados com Microsoft.AlertsManagement. |
| AppServiceResources | Yes | Inclui recursos relacionados com Microsoft.Web. |
| AuthorizationResources | Yes | Inclui recursos relacionados com Microsoft.Authorization. |
| AWSResources | Yes | Inclui recursos relacionados com Microsoft.AwsConnector. |
| AzureBusinessContinuityResources | Yes | Inclui recursos relacionados com Microsoft.AzureBusinessContinuity. |
| ChaosResources | Yes | Inclui recursos relacionados com Microsoft.Chaos. |
| CommunityGalleryResources | Yes | Inclui recursos relacionados com Microsoft.Compute. |
| ComputeResources | Yes | Inclui recursos relacionados a Conjuntos de Dimensionamento de Microsoft.Compute Máquinas Virtuais. |
| DesktopVirtualizationResources | Yes | Inclui recursos relacionados com Microsoft.DesktopVirtualization. |
| DnsResources | Yes | Inclui recursos relacionados com Microsoft.Network. |
| EdgeOrderResources | Yes | Inclui recursos relacionados com Microsoft.EdgeOrder. |
| ElasticsanResources | Yes | Inclui recursos relacionados com Microsoft.ElasticSan. |
| ExtendedLocationResources | Yes | Inclui recursos relacionados com Microsoft.ExtendedLocation. |
| FeatureResources | Yes | Inclui recursos relacionados com Microsoft.Features. |
| GuestConfigurationResources | Yes | Inclui recursos relacionados com Microsoft.GuestConfiguration. |
| HealthResourceChanges | Yes | Inclui recursos relacionados com Microsoft.Resources. |
| HealthResources | Yes | Inclui recursos relacionados com Microsoft.ResourceHealth. |
| InsightsResources | Yes | Inclui recursos relacionados com Microsoft.Insights. |
| IoTSecurityResources | Yes | Inclui recursos relacionados com Microsoft.IoTSecurity e Microsoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Inclui recursos relacionados com Microsoft.KubernetesConfiguration. |
| KustoResources | Yes | Inclui recursos relacionados com Microsoft.Kusto. |
| MaintenanceResources | Yes | Inclui recursos relacionados com Microsoft.Maintenance. |
| ManagedServicesResources | Yes | Inclui recursos relacionados com Microsoft.ManagedServices. |
| MigrateResources | Yes | Inclui recursos relacionados com Microsoft.OffAzure. |
| NetworkResources | Yes | Inclui recursos relacionados com Microsoft.Network. |
| PatchAssessmentResources | Yes | Inclui recursos relacionados com a avaliação Microsoft.Compute de patches em Máquinas Virtuais do Azure e Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Inclui recursos relacionados com a instalação Microsoft.Compute de patches Azure Virtual Machines e Microsoft.HybridCompute. |
| PolicyResources | Yes | Inclui recursos relacionados com Microsoft.PolicyInsights. |
| RecoveryServicesResources | Yes | Inclui recursos relacionados com Microsoft.DataProtection e Microsoft.RecoveryServices. |
| ResourceChanges | Yes | Inclui recursos relacionados com Microsoft.Resources. |
| ResourceContainerChanges | Yes | Inclui recursos relacionados com Microsoft.Resources. |
| ResourceContainers | Yes | Inclui tipos de recursos e dados do grupo de gerenciamento (Microsoft.Management/managementGroups), da assinatura (Microsoft.Resources/subscriptions) e do grupo de recursos (Microsoft.Resources/subscriptions/resourcegroups). |
| Resources | Yes | A tabela padrão se uma tabela não estiver definida na consulta. A maioria dos tipos de recursos e propriedades do Resource Manager estão aqui. |
| SecurityResources | Yes | Inclui recursos relacionados com Microsoft.Security. |
| ServiceFabricResources | Yes | Inclui recursos relacionados com Microsoft.ServiceFabric. |
| ServiceHealthResources | Yes | Inclui recursos relacionados com Microsoft.ResourceHealth/events. |
| SpotResources | Yes | Inclui recursos relacionados com Microsoft.Compute. |
| SupportResources | Yes | Inclui recursos relacionados com Microsoft.Support. |
| TagsResources | Yes | Inclui recursos relacionados com Microsoft.Resources/tagnamespaces. |
Para obter uma lista de tabelas que inclui tipos de recursos, vá para Tabela do Gráfico de Recursos do Azure e referência de tipo de recurso.
Note
Resources é a tabela padrão. Ao consultar a Resources tabela, não é necessário fornecer o nome da tabela, a menos que join ou union sejam usados. Mas a prática recomendada é sempre incluir a tabela inicial na consulta.
Para descobrir quais tipos de recursos estão disponíveis em cada tabela, use o Resource Graph Explorer no portal. Como alternativa, use uma consulta como <tableName> | distinct type para obter uma lista de tipos de recursos suportados pela tabela do Gráfico de Recursos que existem em seu ambiente.
A consulta a seguir mostra um arquivo join. O resultado da consulta mistura as colunas e quaisquer nomes duplicados das colunas da tabela unida, ResourceContainers neste exemplo, são acrescentados a 1. Como a tabela ResourceContainers tem tipos tanto para subscrições como para grupos de recursos, qualquer um dos tipos pode ser usado para se juntar ao recurso a partir da Resources tabela.
Resources
| join ResourceContainers on subscriptionId
| limit 1
A consulta a seguir mostra um uso mais complexo do join. Primeiro, a consulta usa project para obter os campos do tipo de recurso Cofre da Resources Chave do Azure. O passo seguinte utiliza join a fusão dos resultados com os ResourceContainers , onde o tipo é uma subscrição numa propriedade que está tanto na primeira tabela project como na tabela projectunida. A renomeação do campo evita join adicioná-lo como name1 , pois a propriedade já é projetada a partir de Resources. O resultado da consulta é um cofre de chave única exibindo o tipo, o nome, o local e o grupo de recursos do cofre de chaves, juntamente com o nome da assinatura em que ele está.
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
Ao limitar os join resultados com project, a propriedade usada por join para relacionar as duas tabelas, subscriptionId no exemplo acima, deve ser incluída em project.
Propriedades estendidas
Como funcionalidade de pré-visualização , alguns dos tipos de recursos no Resource Graph têm mais propriedades relacionadas com tipos disponíveis para consultar para além das propriedades fornecidas pelo Azure Resource Manager. Este conjunto de valores, conhecido como propriedades estendidas, existe num tipo de recurso suportado em properties.extended. Para mostrar tipos de recursos com propriedades estendidas, use a seguinte consulta:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Exemplo: Obter contagem de máquinas virtuais por instanceView.powerState.code:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elementos de linguagem personalizados do Gráfico de Recursos
Sintaxe de consulta compartilhada (visualização)
Como funcionalidade de pré-visualização, uma consulta partilhada pode ser acedida diretamente numa consulta de Grafo de Recursos. Esse cenário torna possível criar consultas padrão como consultas compartilhadas e reutilizá-las. Para chamar uma consulta compartilhada dentro de uma consulta do Gráfico de Recursos, use a {{shared-query-uri}} sintaxe. O URI da consulta partilhada é o ID de Recurso da consulta partilhada na página de Definições dessa consulta. Neste exemplo, nosso URI de consulta compartilhada é /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS.
Esse URI aponta para a assinatura, o grupo de recursos e o nome completo da consulta compartilhada que queremos referenciar em outra consulta. Esta consulta é a mesma criada em Tutorial: Criar e partilhar uma consulta.
Note
Não é possível salvar uma consulta que faça referência a uma consulta compartilhada como uma consulta compartilhada.
Exemplo 1: Use apenas a consulta compartilhada:
Os resultados desta consulta do Gráfico de Recursos são os mesmos que a consulta armazenada na consulta compartilhada.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Exemplo 2: Inclua a consulta compartilhada como parte de uma consulta maior:
Essa consulta primeiro usa a consulta compartilhada e, em seguida, usa limit para restringir ainda mais os resultados.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Elementos de linguagem KQL suportados
O Resource Graph suporta um subconjunto de tipos de dados KQL, funções escalares, operadores escalares e funções de agregação. Operadores tabulares específicos são suportados pelo Resource Graph, alguns dos quais apresentam comportamentos diferentes.
Operadores tabulares/de nível superior suportados
Aqui está a lista de operadores tabulares KQL suportados pelo Resource Graph com exemplos específicos:
| KQL | Consulta de exemplo do Gráfico de Recursos | Notes |
|---|---|---|
| count | Contar cofres de chaves | |
| distinct | Mostrar recursos que contêm armazenamento | |
| extend | Contar máquinas virtuais por tipo de SO | |
| join | Cofre de chaves com nome de subscrição | Junte-se sabores suportados: innerunique, inner, leftouter e fullouter. Limite de três join ou union operações (ou uma combinação das duas) numa única consulta, contadas em conjunto, uma das quais pode ser uma junção entre tabelas. Se todo o uso de cross-table join for entre Resource e ResourceContainers, então três join cross-tables são permitidos. Estratégias de associação personalizadas, como associação de transmissão, não são permitidas. Para quais tabelas podem usar join, vá para Tabelas do Gráfico de Recursos. |
| limit | Listar todos os endereços IP públicos | Sinónimo de take. Não funciona com o Skip. |
| mvexpand | Operador legado, use mv-expand em vez disso.
Limite de linha máximo de 2.000. O padrão é 128. |
|
| mv-expand | Listar o Azure Cosmos DB com locais de gravação específicos |
Limite de linha máximo de 2.000. O padrão é 128. Limite de 3 mv-expand em uma única consulta. |
| order | Listar recursos ordenados por nome | Sinónimo de sort |
| parse | Obter redes virtuais e sub-redes de interfaces de rede | É ideal acessar as propriedades diretamente se elas existirem, em vez de usar parseo . |
| project | Listar recursos ordenados por nome | |
| project-away | Remover colunas dos resultados | |
| sort | Listar recursos ordenados por nome | Sinónimo de order |
| summarize | Contar recursos do Azure | Apenas primeira página simplificada |
| take | Listar todos os endereços IP públicos | Sinónimo de limit. Não funciona com o Skip. |
| top | Mostrar as primeiras cinco máquinas virtuais por nome e por tipo de SO | |
| union | Combinar resultados de duas consultas em um único resultado | Mesa única permitida: | union [kind= inner|outer] [withsource=ColumnName] Table. Limite de três union pernas em uma única consulta. Não é permitida a resolução difusa de mesas de union perna. Podem ser usados dentro de uma única tabela ou entre as tabelas de Recursos e ResourceContainers . |
| where | Mostrar recursos que contêm armazenamento |
Há um limite padrão de três join e três mv-expand operadores em uma única consulta do SDK do Resource Graph. Pode solicitar um aumento destes limites para o seu inquilino através da Ajuda + suporte.
Para suportar a experiência do portal Open Consult , o Azure Resource Graph Explorer tem um limite global mais elevado do que o Resource Graph SDK.
Note
Não é possível fazer referência a uma tabela como tabela correta várias vezes, o que excede o limite de 1. Se você fizer isso, você receberá um erro com o código DisallowedMaxNumberOfRemoteTables.
Escopo da consulta
O âmbito das subscrições ou grupos de gestão dos quais os recursos são devolvidos por uma consulta passa por defeito a uma lista de subscrições com base no contexto do utilizador autorizado. Se não estiver definido um grupo de gestão ou uma lista de subscrições, o âmbito da consulta inclui todos os recursos e inclui recursos delegados pelo Azure Lighthouse .
A lista de assinaturas ou grupos de gerenciamento a serem consultados pode ser definida manualmente para alterar o escopo dos resultados. Por exemplo, a propriedade REST API managementGroups usa a ID do grupo de gerenciamento, que é diferente do nome do grupo de gerenciamento. Quando managementGroups especificado, os recursos das primeiras 10.000 assinaturas na hierarquia de grupo de gerenciamento especificada ou sob ela são incluídos.
managementGroups não pode ser usado ao mesmo tempo que subscriptionso .
Exemplo: Consultar todos os recursos dentro da hierarquia do grupo de gerenciamento nomeado My Management Group com ID myMG.
URI da API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01Órgão do Pedido
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
O AuthorizationScopeFilter parâmetro permite listar atribuições de Política do Azure e atribuições de função de controle de acesso baseado em função do Azure (Azure RBAC) na AuthorizationResources tabela que são herdadas de escopos superiores. O AuthorizationScopeFilter parâmetro aceita os seguintes valores para as PolicyResources tabelas e AuthorizationResources :
- AtScopeAndBelow (padrão se não especificado): Devolve as atribuições para o âmbito dado e para todos os escopos filhos.
- AtScopeAndAbove: Devolve atribuições para o âmbito dado e para todos os escopos pais, mas não para os filhos.
- AtScopeAboveAndBelow: Devolve atribuições para o âmbito dado, todos os escopos pais e todos os escopos filhos.
- AtScopeExact: Retorna atribuições apenas para o âmbito dado; Não estão incluídos os endoscopos parentais ou filhos.
Note
Para usar o AuthorizationScopeFilter parâmetro, certifique-se de usar a versão 2021-06-01-preview ou a versão posterior da API nos seus pedidos.
Exemplo: Obtenha todas as atribuições de políticas no grupo de gestão myMG e nos escopos Tenant Root (pai).
URI da API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewSolicitar amostra do corpo
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Exemplo: Obtenha todas as atribuições de políticas na subscrição mySubscriptionId , grupo de gestão e escopos Tenant Root.
URI da API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewSolicitar amostra do corpo
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Personagens de fuga
Alguns nomes de propriedade, como aqueles que incluem um . ou $, devem ser encapsulados ou escapados na consulta ou o nome da propriedade é interpretado incorretamente e não fornece os resultados esperados.
Ponto (
.): Envolva o nome['propertyname.withaperiod']da propriedade usando colchetes.Exemplo de consulta que envolve a propriedade odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']Cifrão (
$): Fuja do caractere no nome da propriedade. O caractere de escape usado depende do shell que executa o Resource Graph.Bash: Use uma barra inversa (
\) como personagem de fuga.Exemplo de consulta que escapa da propriedade $type no Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd: Não escapes à personagem do cifrão ().
$PowerShell: Use um backtick (
`) como personagem de escape.Exemplo de consulta que escapa da propriedade $type no PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Próximos passos
- Azure Resource Graph linguagem de consultas Consultas iniciais e Consultas avançadas.
- Saiba mais sobre como explorar os recursos do Azure.