Memahami bahasa kueri Azure Resource Graph
Bahasa kueri untuk Azure Resource Graph mendukung banyak operator dan fungsi. Masing-masing bekerja dan beroperasi berdasarkan Kusto Query Language (KQL). Untuk mempelajari tentang bahasa kueri yang digunakan oleh Resource Graph, mulailah dengan tutorial untuk KQL.
Artikel ini mencakup komponen bahasa yang didukung oleh Resource Graph:
Tabel Resource Graph
Grafik Sumber Daya menyediakan beberapa tabel untuk data yang disimpannya tentang jenis sumber daya Azure Resource Manager dan propertinya. Tabel Resource Graph dapat digunakan dengan join
operator untuk mendapatkan properti dari jenis sumber daya terkait.
Tabel Resource Graph mendukung join
ragam:
Tabel Resource Graph | Bisakah join tabel lainnya? |
Deskripsi |
---|---|---|
AdvisorResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Advisor . |
AlertsManagementResources | Ya | Mencakup sumber daya terkait dengan Microsoft.AlertsManagement . |
AppServiceResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Web . |
AuthorizationResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Authorization . |
AWSResources | Ya | Mencakup sumber daya terkait dengan Microsoft.AwsConnector . |
AzureBusinessContinuityResources | Ya | Mencakup sumber daya terkait dengan Microsoft.AzureBusinessContinuity . |
ChaosResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Chaos . |
CommunityGalleryResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Compute . |
ComputeResources | Ya | Mencakup sumber daya yang terkait dengan Microsoft.Compute Virtual Machine Scale Sets. |
DesktopVirtualizationResources | Ya | Mencakup sumber daya terkait dengan Microsoft.DesktopVirtualization . |
DnsResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Network . |
EdgeOrderResources | Ya | Mencakup sumber daya terkait dengan Microsoft.EdgeOrder . |
ElasticsanResources | Ya | Mencakup sumber daya terkait dengan Microsoft.ElasticSan . |
ExtendedLocationResources | Ya | Mencakup sumber daya terkait dengan Microsoft.ExtendedLocation . |
FeatureResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Features . |
GuestConfigurationResources | Ya | Mencakup sumber daya terkait dengan Microsoft.GuestConfiguration . |
HealthResourceChanges | Ya | Mencakup sumber daya terkait dengan Microsoft.Resources . |
HealthResources | Ya | Mencakup sumber daya terkait dengan Microsoft.ResourceHealth . |
InsightsResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Insights . |
IoTSecurityResources | Ya | Mencakup sumber daya terkait dengan Microsoft.IoTSecurity dan Microsoft.IoTFirmwareDefense . |
KubernetesConfigurationResources | Ya | Mencakup sumber daya terkait dengan Microsoft.KubernetesConfiguration . |
KustoResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Kusto . |
MaintenanceResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Maintenance . |
ManagedServicesResources | Ya | Mencakup sumber daya terkait dengan Microsoft.ManagedServices . |
MigrateResources | Ya | Mencakup sumber daya terkait dengan Microsoft.OffAzure . |
NetworkResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Network . |
OrbitalResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Orbital . |
PatchAssessmentResources | Ya | Termasuk sumber daya yang terkait dengan penilaian Microsoft.Compute patch Azure Virtual Machines dan Microsoft.HybridCompute . |
PatchInstallationResources | Ya | Termasuk sumber daya yang terkait dengan penginstalan Microsoft.Compute patch Azure Virtual Machines dan Microsoft.HybridCompute . |
PolicyResources | Ya | Mencakup sumber daya terkait dengan Microsoft.PolicyInsights . |
RecoveryServicesResources | Ya | Mencakup sumber daya terkait dengan Microsoft.DataProtection dan Microsoft.RecoveryServices . |
ResourceChanges | Ya | Mencakup sumber daya terkait dengan Microsoft.Resources . |
ResourceContainerChanges | Ya | Mencakup sumber daya terkait dengan Microsoft.Resources . |
ResourceContainers | Ya | Mencakup jenis dan data sumber daya grup manajemen (Microsoft.Management/managementGroups ) langganan (Microsoft.Resources/subscriptions ) dan grup sumber daya (Microsoft.Resources/subscriptions/resourcegroups ). |
Sumber | Ya | Tabel default jika tabel tidak ditentukan dalam kueri. Sebagian besar jenis sumber daya dan properti Resource Manager ada di sini. |
SecurityResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Security . |
ServiceFabricResources | Ya | Mencakup sumber daya terkait dengan Microsoft.ServiceFabric . |
ServiceHealthResources | Ya | Mencakup sumber daya terkait dengan Microsoft.ResourceHealth/events . |
SpotResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Compute . |
SupportResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Support . |
TagsResources | Ya | Mencakup sumber daya terkait dengan Microsoft.Resources/tagnamespaces . |
Untuk daftar tabel yang menyertakan jenis sumber daya, buka tabel Azure Resource Graph dan referensi jenis sumber daya.
Catatan
Resources
adalah tabel default. Saat mengkueri Resources
tabel, tidak diperlukan untuk memberikan nama tabel kecuali join
atau union
digunakan. Tetapi praktik yang direkomendasikan adalah selalu menyertakan tabel awal dalam kueri.
Untuk menemukan jenis sumber daya mana yang tersedia di setiap tabel, gunakan Resource Graph Explorer di portal. Sebagai alternatif, gunakan kueri seperti <tableName> | distinct type
untuk mendapatkan daftar jenis sumber daya yang didukung oleh tabel Resource Graph yang ada di lingkungan Anda.
Kueri berikut menunjukkan join
sederhana. Hasil kueri menyatukan kolom dan setiap nama kolom duplikat dari tabel yang digabungkan, ResourceContainers dalam contoh ini, ditambahkan dengan 1. Karena tabel ResourceContainers memiliki jenis untuk langganan dan grup sumber daya, salah satu jenis mungkin digunakan untuk bergabung ke sumber daya dari Resources
tabel.
Resources
| join ResourceContainers on subscriptionId
| limit 1
Kueri berikut menunjukkan penggunaan join
yang lebih kompleks. Pertama, kueri menggunakan project
untuk mendapatkan bidang dari Resources
untuk jenis sumber daya vault Azure Key Vault. Langkah berikutnya menggunakan join
untuk menggabungkan hasil dengan ResourceContainers dengan jenis langganan pada properti yang ada di tabel pertama project
dan tabel gabungan project
. Ganti nama bidang menghindari penambahan sebagai nama1 karena properti sudah diproyeksikan dari Resources
.join
Hasil kueri adalah jenis tampilan kubah kunci tunggal, nama, lokasi, dan grup sumber daya brankas kunci, bersama dengan nama langganan tempat penyimpanannya.
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
Catatan
Saat membatasi hasil join
dengan project
, properti yang digunakan oleh join
untuk menghubungkan dua tabel, subscriptionId dalam contoh di atas, harus disertakan dalam project
.
Properti yang diperluas
Sebagai fitur pratinjau, beberapa jenis sumber daya di Resource Graph memiliki lebih banyak properti terkait jenis yang tersedia untuk kueri di luar properti yang disediakan oleh Azure Resource Manager. Kumpulan nilai ini, yang dikenal sebagai properti yang diperluas, ada pada jenis sumber daya yang didukung di properties.extended
. Untuk memperlihatkan tipe sumber daya dengan properti yang diperluas, gunakan kueri berikut:
Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc
Contoh: Dapatkan hitungan komputer virtual dengan instanceView.powerState.code
:
Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)
Elemen bahasa khusus Resource Graph
Sintaksis kueri bersama (pratinjau)
Sebagai fitur pratinjau, kueri bersama dapat diakses langsung di kueri Resource Graph. Skenario ini memungkinkan untuk membuat kueri standar sebagai kueri bersama dan menggunakannya kembali. Untuk memanggil kueri bersama di dalam kueri Resource Graph, gunakan sintaksis {{shared-query-uri}}
. URI kueri bersama adalah ID Sumber Daya kueri bersama pada halaman Pengaturan untuk kueri tersebut. Dalam contoh ini, URI kueri bersama kita adalah /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS
.
URI ini mengarah ke langganan, grup sumber daya, dan nama lengkap kueri bersama yang ingin kita rujuk di kueri lain. Kueri ini sama dengan yang dibuat di Tutorial: Buat dan bagikan kueri.
Catatan
Anda tidak dapat menyimpan kueri yang merujuk kueri bersama sebagai kueri bersama.
Contoh 1: Gunakan hanya kueri bersama:
Hasil kueri Resource Graph ini sama dengan kueri yang disimpan dalam kueri bersama.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
Contoh 2: Sertakan kueri bersama sebagai bagian dari kueri yang lebih besar:
Kueri ini pertama-tama menggunakan kueri bersama, lalu menggunakan limit
untuk lebih membatasi hasil.
{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'
Elemen bahasa KQL yang didukung
Resource Graph mendukung subset KQL jenis data, fungsi skalar, operator skalar, dan fungsi agregasi. Operator tabular tertentu didukung oleh Resource Graph, beberapa di antaranya memiliki perilaku yang berbeda.
Operator tabular/tingkat atas yang didukung
Berikut adalah daftar operator tabular KQL yang didukung oleh Resource Graph dengan sampel tertentu:
KQL | Kueri sampel Resource Graph | Catatan |
---|---|---|
count | Hitungan brankas kunci | |
distinct | Menampilkan sumber daya yang berisi penyimpanan | |
perpanjang | Menghitung komputer virtual berdasarkan jenis OS | |
join | Key vault dengan nama langganan | Gabungkan rasa yang didukung: innerunique, inner, leftouter, dan fullouter. Batas tiga join dalam satu kueri, salah satunya mungkin berupa tabel join silang . Jika semua penggunaan lintas tabel join adalah antara Resource dan ResourceContainers, tiga tabel join silang diizinkan. Strategi bergabung khusus, seperti bergabung dengan siaran, tidak diizinkan. Untuk tabel mana yang dapat menggunakan join , buka tabel Resource Graph. |
batas | Mencantumkan semua alamat IP publik | Sinonim dari take . Tidak berfungsi dengan Lewati. |
mvexpand | Operator lama, gunakan mv-expand sebagai gantinya. RowLimit maksimal 2.000. Defaultnya adalah 128. |
|
mv-expand | Mencantumkan Azure Cosmos DB dengan lokasi tulis tertentu | RowLimit maksimal 2.000. Defaultnya adalah 128. Batas 3 mv-expand dalam satu kueri. |
urutan | Mencantumkan sumber daya yang diurutkan menurut nama | Sinonim dari sort |
Mengurai | Mendapatkan jaringan virtual dan subnet antarmuka jaringan | Sangat optimal untuk mengakses properti secara langsung jika ada daripada menggunakan parse . |
proyek | Mencantumkan sumber daya yang diurutkan menurut nama | |
project-away | Menghapus kolom dari hasil | |
urutkan | Mencantumkan sumber daya yang diurutkan menurut nama | Sinonim dari order |
meringkas | Menghitung sumber daya Azure | Hanya halaman pertama yang disederhanakan |
take | Mencantumkan semua alamat IP publik | Sinonim dari limit . Tidak berfungsi dengan Lewati. |
top | Tampilkan lima komputer virtual pertama berdasarkan nama dan jenis OS-nya | |
union | Menggabungkan hasil dari dua kueri menjadi satu hasil | Tabel tunggal diizinkan: | union [kind= inner|outer] [withsource=ColumnName] Table . Batas tiga union kaki dalam satu kueri. Resolusi fuzzy dari union tabel kaki tidak diizinkan. Mungkin digunakan dalam satu tabel atau antara tabel Sumber Daya dan ResourceContainers . |
di mana | Menampilkan sumber daya yang berisi penyimpanan |
Ada batas default tiga join
dan tiga mv-expand
operator dalam satu kueri Resource Graph SDK. Anda dapat meminta peningkatan batas ini untuk penyewa Anda melalui Bantuan + dukungan.
Untuk mendukung pengalaman portal Open Query , Azure Resource Graph Explorer memiliki batas global yang lebih tinggi daripada Resource Graph SDK.
Catatan
Anda tidak dapat mereferensikan tabel sebagai tabel kanan beberapa kali, yang melebihi batas 1. Jika Anda melakukannya, Anda akan menerima kesalahan dengan kode DisallowedMaxNumberOfRemoteTables.
Cakupan kueri
Cakupan langganan atau grup manajemen dari mana sumber daya dikembalikan oleh default kueri ke daftar langganan berdasarkan konteks pengguna yang diotorisasi. Jika grup manajemen atau daftar langganan tidak ditentukan, cakupan kueri adalah semua sumber daya, dan menyertakan sumber daya yang didelegasikan Azure Lighthouse .
Daftar langganan atau grup manajemen yang diminta dapat didefinisikan secara manual untuk mengubah ruang lingkup hasil. Contoh, properti managementGroups
REST API mengambil ID grup pengelolaan, yang berbeda dari nama grup pengelolaan. Ketika managementGroups
ditentukan, sumber daya dari 10.000 langganan pertama di atau di bawah hierarki grup manajemen yang ditentukan disertakan. managementGroups
tidak dapat digunakan bersamaan dengan subscriptions
.
Contoh: Mengkueri semua sumber daya dalam hierarki grup manajemen bernama My Management Group
dengan ID myMG
.
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
Isi Permintaan
{ "query": "Resources | summarize count()", "managementGroups": ["myMG"] }
Parameter memungkinkan AuthorizationScopeFilter
Anda mencantumkan penetapan Azure Policy dan penetapan peran kontrol akses berbasis peran Azure (Azure RBAC) dalam AuthorizationResources
tabel yang diwarisi dari cakupan atas. Parameter AuthorizationScopeFilter
menerima nilai berikut untuk PolicyResources
tabel dan AuthorizationResources
:
- AtScopeAndBelow (default jika tidak ditentukan): Mengembalikan penugasan untuk cakupan yang diberikan dan semua cakupan anak.
- AtScopeAndAbove: Mengembalikan penugasan untuk cakupan yang diberikan dan semua cakupan induk, tetapi bukan cakupan anak.
- AtScopeAboveAndBelow: Mengembalikan penugasan untuk cakupan tertentu, semua cakupan induk, dan semua cakupan anak.
- AtScopeExact: Mengembalikan penugasan hanya untuk cakupan yang diberikan; tidak ada cakupan induk atau anak yang disertakan.
Catatan
Untuk menggunakan AuthorizationScopeFilter
parameter , pastikan untuk menggunakan versi API 2021-06-01-preview atau yang lebih baru dalam permintaan Anda.
Contoh: Dapatkan semua penugasan kebijakan di grup manajemen myMG dan lingkup Akar Penyewa (atas).
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Minta Sampel Isi
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "managementGroups": ["myMG"] }
Contoh: Dapatkan semua penugasan kebijakan di langganan mySubscriptionId, grup manajemen, dan lingkup Akar Penyewa.
REST API URI
POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
Minta Sampel Isi
{ "options": { "authorizationScopeFilter": "AtScopeAndAbove" }, "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'", "subscriptions": ["mySubscriptionId"] }
Karakter escape
Beberapa nama properti, seperti yang menyertakan .
atau $
, harus dibungkus atau diescape dalam kueri atau nama properti diinterpretasikan secara salah dan tidak memberikan hasil yang diharapkan.
Titik (
.
): Bungkus nama['propertyname.withaperiod']
properti menggunakan tanda kurung siku.Contoh kueri yang membungkus properti odata.type:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
Tanda dolar (
$
): Lolos dari karakter dalam nama properti. Karakter escape yang digunakan tergantung pada shell yang menjalankan Resource Graph.Bash: Gunakan garis miring terbalik (
\
) sebagai karakter escape.Contoh kueri yang keluar dari properti $type di Bash:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
cmd: Jangan lolos dari karakter tanda dolar (
$
).PowerShell: Gunakan backtick (
`
) sebagai karakter escape.Contoh kueri yang keluar dari properti $type di PowerShell:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Langkah berikutnya
- Kueri Starter bahasa kueri Azure Resource Graph dan kueri Tingkat Lanjut.
- Pelajari selengkapnya tentang cara menjelajahi sumber daya Azure.