Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Język zapytań dla usługi Azure Resource Graph obsługuje wiele operatorów i funkcji. Każda praca i działanie na podstawie język zapytań Kusto (KQL). Aby dowiedzieć się więcej o języku zapytań używanym przez usługę Resource Graph, zacznij od samouczka dotyczącego języka KQL.
W tym artykule opisano składniki języka obsługiwane przez usługę Resource Graph:
- Omówienie języka zapytań usługi Azure Resource Graph
Tabele usługi Resource Graph
Usługa Resource Graph udostępnia kilka tabel dla danych przechowywanych na temat typów zasobów usługi Azure Resource Manager i ich właściwości. Tabele usługi Resource Graph mogą służyć operatorowi join do pobierania właściwości z powiązanych typów zasobów.
Tabele usługi Resource Graph obsługują join smaki:
| Tabela usługi Resource Graph | Czy inne join tabele mogą być? |
Description |
|---|---|---|
| AdvisorResources | Yes | Zawiera zasoby związane z .Microsoft.Advisor |
| AlertsManagementResources | Yes | Zawiera zasoby związane z .Microsoft.AlertsManagement |
| AppServiceResources | Yes | Zawiera zasoby związane z .Microsoft.Web |
| AuthorizationResources | Yes | Zawiera zasoby związane z .Microsoft.Authorization |
| AWSResources | Yes | Zawiera zasoby związane z .Microsoft.AwsConnector |
| AzureBusinessContinuityResources | Yes | Zawiera zasoby związane z .Microsoft.AzureBusinessContinuity |
| ChaosResources | Yes | Zawiera zasoby związane z .Microsoft.Chaos |
| CommunityGalleryResources | Yes | Zawiera zasoby związane z .Microsoft.Compute |
| ComputeResources | Yes | Obejmuje zasoby związane z zestawami Microsoft.Compute skalowania maszyn wirtualnych. |
| DesktopVirtualizationResources | Yes | Zawiera zasoby związane z .Microsoft.DesktopVirtualization |
| DnsResources | Yes | Zawiera zasoby związane z .Microsoft.Network |
| EdgeOrderResources | Yes | Zawiera zasoby związane z .Microsoft.EdgeOrder |
| ElasticsanResources | Yes | Zawiera zasoby związane z .Microsoft.ElasticSan |
| ExtendedLocationResources | Yes | Zawiera zasoby związane z .Microsoft.ExtendedLocation |
| FeatureResources | Yes | Zawiera zasoby związane z .Microsoft.Features |
| GuestConfigurationResources | Yes | Zawiera zasoby związane z .Microsoft.GuestConfiguration |
| HealthResourceChanges | Yes | Zawiera zasoby związane z .Microsoft.Resources |
| HealthResources | Yes | Zawiera zasoby związane z .Microsoft.ResourceHealth |
| InsightsResources | Yes | Zawiera zasoby związane z .Microsoft.Insights |
| IoTSecurityResources | Yes | Zawiera zasoby związane z Microsoft.IoTSecurity i Microsoft.IoTFirmwareDefense. |
| KubernetesConfigurationResources | Yes | Zawiera zasoby związane z .Microsoft.KubernetesConfiguration |
| KustoResources | Yes | Zawiera zasoby związane z .Microsoft.Kusto |
| MaintenanceResources | Yes | Zawiera zasoby związane z .Microsoft.Maintenance |
| ManagedServicesResources | Yes | Zawiera zasoby związane z .Microsoft.ManagedServices |
| MigrateResources | Yes | Zawiera zasoby związane z .Microsoft.OffAzure |
| NetworkResources | Yes | Zawiera zasoby związane z .Microsoft.Network |
| PatchAssessmentResources | Yes | Zawiera zasoby związane z oceną Microsoft.Compute poprawek Azure Virtual Machines oraz Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Zawiera zasoby związane z instalacją Microsoft.Compute poprawek Azure Virtual Machines oraz Microsoft.HybridCompute. |
| PolicyResources | Yes | Zawiera zasoby związane z .Microsoft.PolicyInsights |
| RecoveryServicesResources | Yes | Zawiera zasoby związane z Microsoft.DataProtection i Microsoft.RecoveryServices. |
| ResourceChanges | Yes | Zawiera zasoby związane z .Microsoft.Resources |
| ResourceContainerChanges | Yes | Zawiera zasoby związane z .Microsoft.Resources |
| ResourceContainers | Yes | Obejmuje grupy zarządzania (), subskrypcji (Microsoft.Management/managementGroupsMicrosoft.Resources/subscriptions) i grupy zasobów (Microsoft.Resources/subscriptions/resourcegroups) oraz typy zasobów i dane. |
| Resources | Yes | Tabela domyślna, jeśli tabela nie jest zdefiniowana w zapytaniu. Większość typów zasobów i właściwości usługi Resource Manager jest tutaj. |
| SecurityResources | Yes | Zawiera zasoby związane z .Microsoft.Security |
| ServiceFabricResources | Yes | Zawiera zasoby związane z .Microsoft.ServiceFabric |
| ServiceHealthResources | Yes | Zawiera zasoby związane z .Microsoft.ResourceHealth/events |
| SpotResources | Yes | Zawiera zasoby związane z .Microsoft.Compute |
| SupportResources | Yes | Zawiera zasoby związane z .Microsoft.Support |
| TagsResources | Yes | Zawiera zasoby związane z .Microsoft.Resources/tagnamespaces |
Aby uzyskać listę tabel zawierających typy zasobów, przejdź do tabeli usługi Azure Resource Graph i odwołania do typu zasobu.
Note
Resources jest tabelą domyślną. Podczas wykonywania zapytań dotyczących Resources tabeli nie jest wymagane podanie nazwy tabeli, chyba że join zostanie użyta lub union użyta. Zalecaną praktyką jest jednak zawsze uwzględnienie początkowej tabeli w zapytaniu.
Aby dowiedzieć się, które typy zasobów są dostępne w każdej tabeli, użyj Eksploratora usługi Resource Graph w portalu. Alternatywnie możesz użyć zapytania, takiego jak <tableName> | distinct type pobranie listy typów zasobów, które dana tabela usługi Resource Graph obsługuje istniejące w danym środowisku.
Poniższe zapytanie przedstawia proste joinpolecenie . Wynik zapytania łączy kolumny, a wszelkie zduplikowane nazwy kolumn z połączonej tabeli, w tym przykładzie ResourceContainers , są dodawane przez 1. Ponieważ tabela ResourceContainers zawiera typy zarówno dla subskrypcji, jak i grup zasobów, każdy z tych typów może być używany do łączenia z zasobu z Resources tabeli.
Resources
| join ResourceContainers on subscriptionId
| limit 1
Poniższe zapytanie przedstawia bardziej złożone użycie programu join. Najpierw zapytanie używa project polecenia , aby pobrać pola z Resources dla typu zasobu magazynów usługi Azure Key Vault. Następnym krokiem join jest połączenie wyników z ResourceContainers , gdzie typem jest subskrypcja na właściwości, która znajduje się zarówno w pierwszej tabeli project , jak i w połączonej tabeli project. Przemianowanie pola unika join dodawania go jako nazwy1, ponieważ właściwość jest już rzutowana z Resources. Wynikiem zapytania jest pojedynczy magazyn kluczy wyświetlający typ, nazwę, lokalizację i grupę zasobów magazynu kluczy wraz z nazwą subskrypcji, w niej znajduje się.
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
Ograniczając join wyniki przez project, właściwość użyta przez join do powiązania obu tabel, subscriptionId w powyższym przykładzie, musi być uwzględniona w project.
Właściwości rozszerzone
Jako funkcja podglądowa , niektóre typy zasobów w Resource Graph mają więcej właściwości związanych z typem do zapytań poza właściwościami oferowanymi przez Azure Resource Manager. Ten zbiór wartości, znany jako rozszerzone właściwości, istnieje na obsługiwanym typie zasobu w .properties.extended Aby pokazać typy zasobów o rozszerzonych właściwościach, użyj następującego zapytania:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Przykład: pobieranie liczby maszyn wirtualnych według instanceView.powerState.code:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elementy języka niestandardowego usługi Resource Graph
Składnia zapytań udostępnionych (wersja zapoznawcza)
Jako funkcja podglądowa, współdzielone zapytanie jest dostępne bezpośrednio w zapytaniu Resource Graph. Ten scenariusz umożliwia tworzenie standardowych zapytań jako udostępnionych zapytań i ponowne używanie ich. Aby wywołać zapytanie udostępnione wewnątrz zapytania usługi Resource Graph, użyj {{shared-query-uri}} składni . URI współdzielonego zapytania to Resource ID współdzielonego zapytania na stronie Ustawienia dla tego zapytania. W tym przykładzie identyfikator URI udostępnionego zapytania to /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS.
Ten identyfikator URI wskazuje subskrypcję, grupę zasobów i pełną nazwę udostępnionego zapytania, do którego chcemy się odwołać w innym zapytaniu. To zapytanie jest takie samo jak zapytanie utworzone w artykule Samouczek: tworzenie i udostępnianie zapytania.
Note
Nie można zapisać kwerendy odwołującej się do udostępnionego zapytania jako kwerendy udostępnionej.
Przykład 1: Użyj tylko udostępnionego zapytania:
Wyniki tego zapytania usługi Resource Graph są takie same jak zapytanie przechowywane w udostępnionym zapytaniu.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Przykład 2. Dołącz udostępnione zapytanie jako część większego zapytania:
To zapytanie najpierw używa udostępnionego zapytania, a następnie używa limit go do dalszego ograniczania wyników.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Obsługiwane elementy języka KQL
Resource Graph obsługuje podzbiór typów danych KQL, funkcji skalarnych, operatorów skalarnych oraz funkcji agregacji. Specyficzne operatory tabelaryczne są obsługiwane przez Resource Graph, z których niektóre mają różne zachowania.
Obsługiwane operatory tabelaryczne/najwyższego poziomu
Oto lista operatorów tabelarycznych języka KQL obsługiwanych przez usługę Resource Graph z określonymi przykładami:
| KQL | Przykładowe zapytanie usługi Resource Graph | Notes |
|---|---|---|
| count | Liczba magazynów kluczy | |
| distinct | Pokaż zasoby, które zawierają magazyn | |
| extend | Liczba maszyn wirtualnych według typu systemu operacyjnego | |
| join | Magazyn kluczy o nazwie subskrypcji | Dołącz obsługiwane smaki: innerunique, inner,leftouter i fullouter. Limit trzech operacji join lub union (lub ich kombinacji) w jednym zapytaniu, liczone razem, z których jedna może być sprzężeniem między tabelami. Jeśli całe użycie przez tabele join krzyżowe odbywa się między Resource aResourceContainers, dozwolone są trzy cross-table (pomiędzy tabelami join ). Niestandardowe strategie sprzężenia, takie jak dołączanie do emisji, nie są dozwolone. Dla których tabel można używać , przejdź do join usługi Resource Graph. |
| limit | Lista wszystkich publicznych adresów IP | Synonim .take Nie działa ze Skipem. |
| mvexpand | Zamiast tego użyj starszego mv-expand operatora.
Limit rzędu to maksymalnie 2 000. Wartość domyślna to 128. |
|
| mv-expand | Wyświetlanie listy usługi Azure Cosmos DB z określonymi lokalizacjami zapisu |
Limit rzędu to maksymalnie 2 000. Wartość domyślna to 128. Limit 3 mv-expand w jednym zapytaniu. |
| order | Lista zasobów posortowana według nazwy | Synonim sort |
| parse | Pobieranie sieci wirtualnych i podsieci interfejsów sieciowych | Optymalne jest uzyskiwanie dostępu do właściwości bezpośrednio, jeśli istnieją zamiast używać metody parse. |
| project | Lista zasobów posortowana według nazwy | |
| project-away | Usuwanie kolumn z wyników | |
| sort | Lista zasobów posortowana według nazwy | Synonim order |
| summarize | Liczba zasobów platformy Azure | Uproszczona tylko pierwsza strona |
| take | Lista wszystkich publicznych adresów IP | Synonim .limit Nie działa ze Skipem. |
| top | Pokaż pierwsze pięć maszyn wirtualnych według nazwy i ich typu systemu operacyjnego | |
| union | Łączenie wyników z dwóch zapytań w jeden wynik | Dozwolona jedna tabela: | union [kind= inner|outer] [withsource=ColumnName] Table. Limit trzech union nóg w jednym zapytaniu. Rozmyte rozpoznawanie union tabel nóg nie jest dozwolone. Może być używany w jednej tabeli lub pomiędzy tabelami Resources a ResourceContainers . |
| where | Pokaż zasoby, które zawierają magazyn |
Istnieje domyślny limit trzech join i trzech mv-expand operatorów w jednym zapytaniu zestawu RESOURCE Graph SDK. Możesz poprosić o zwiększenie tych limitów dla dzierżawy za pośrednictwem pomocy i obsługi technicznej.
Aby wspierać doświadczenie portalu Open Query , Azure Resource Graph Explorer ma wyższy globalny limit niż Resource Graph SDK.
Note
Nie można odwołać się do tabeli jako odpowiedniej tabeli wiele razy, co przekracza limit 1. Jeśli to zrobisz, zostanie wyświetlony błąd z kodem DisallowedMaxNumberOfRemoteTables.
Zakres zapytania
Zakres subskrypcji lub grup zarządzania , z których zasoby są zwracane za pomocą zapytania, domyślnie opiera się na liście subskrypcji opartej na kontekście użytkownika upoważnionego. Jeśli grupa zarządzania lub lista subskrypcji nie jest zdefiniowana, zakres zapytań obejmuje wszystkie zasoby i zawiera zasoby delegowane przez Azure Lighthouse .
Lista subskrypcji lub grup zarządzania do wykonywania zapytań można zdefiniować ręcznie, aby zmienić zakres wyników. Na przykład właściwość interfejsu API managementGroups REST przyjmuje identyfikator grupy zarządzania, która różni się od nazwy grupy zarządzania. Po managementGroups określeniu zasoby z pierwszych 10 000 subskrypcji w lub w ramach określonej hierarchii grup zarządzania są uwzględniane.
managementGroups nie można używać w tym samym czasie co subscriptions.
Przykład: wykonaj zapytanie o wszystkie zasoby w hierarchii grupy zarządzania o nazwie My Management Group o identyfikatorze myMG.
Identyfikator URI interfejsu API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01Treść żądania
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Parametr AuthorizationScopeFilter umożliwia wyświetlanie listy przypisań usługi Azure Policy i przypisań ról opartych na rolach (RBAC) platformy Azure w AuthorizationResources tabeli, które są dziedziczone z górnych zakresów. Parametr AuthorizationScopeFilter akceptuje następujące wartości dla PolicyResources tabel i AuthorizationResources :
- AtScopeAndBelow (domyślne, jeśli nie jest określone): Zwraca przypisania dla danego zakresu oraz wszystkich zakresów potomnych.
- AtScopeAndAbove: Zwraca przypisania dla danego zakresu oraz wszystkich zakresów nadrzędnych, ale nie dla zakresów potomnych.
- AtScopeAboveAndBelow: Zwraca przypisania do danego zakresu, wszystkich zakresów nadrzędnych oraz wszystkich zakresów potomnych.
- AtScopeExact: Zwraca przypisania tylko dla danego zakresu; Nie ma w zestawie zakresów rodziców ani dziecka.
Note
Aby użyć parametru AuthorizationScopeFilter , upewnij się, że w swoich żądaniach używasz wersji API z wersji 2021-06-01-01 lub nowzej.
Przykład: Pobierz wszystkie przypisania polityk w grupie zarządzania myMG oraz w zakresach Tenant Root (nadrzędnych).
Identyfikator URI interfejsu API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewPrzykład treści żądania
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Przykład: Pobierz wszystkie przypisania polityk w zakresie subskrypcji mySubscriptionId , grupy zarządzania oraz Tenant Root.
Identyfikator URI interfejsu API REST
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-previewPrzykład treści żądania
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Znaki ucieczki
Niektóre nazwy właściwości, takie jak te, które zawierają element . lub $, muszą być opakowane lub uniknięte w kwerendzie lub nazwa właściwości jest interpretowana niepoprawnie i nie dostarcza oczekiwanych wyników.
Kropka (
.): zawijaj nazwę['propertyname.withaperiod']właściwości przy użyciu nawiasów kwadratowych.Przykładowe zapytanie, które owija właściwość odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']Znak dolara (
$): uniknie znaku w nazwie właściwości. Użyty znak ucieczki zależy od powłoki, która uruchamia usługę Resource Graph.Bash: Użyj backslash (
\) jako postaci do ucieczki.Przykładowe zapytanie, które wychodzi z właściwości $type w Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typeCMD: Nie unikaj znaku dolara (
$).PowerShell: Użyj backticku (
`) jako znaku ucieczki.Przykładowe zapytanie, które wychodzi z właściwości $type w PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Dalsze kroki
- Azure Resource Graph query language Starter queries oraz Advanced queries.
- Dowiedz się więcej o sposobie eksplorowania zasobów platformy Azure.