Azure Kaynak Grafı sorgu dilini anlama

Azure Kaynak Grafı için sorgu dili birçok işleci ve işlevi destekler. Her çalışma ve Kusto Sorgu Dili (KQL) temelinde çalışır. Kaynak Grafı tarafından kullanılan sorgu dili hakkında bilgi edinmek için KQL öğreticisiyle başlayın.

Bu makale, Kaynak Grafı tarafından desteklenen dil bileşenlerini kapsar:

tabloları Kaynak Grafı

Kaynak Grafı, Azure Resource Manager kaynak türleri ve özellikleri hakkında depoladıkları veriler için çeşitli tablolar sağlar. Kaynak Grafı tabloları işleciyle birlikte join kullanarak ilgili kaynak türlerinden özellikleri alabilirsiniz.

Kaynak Grafı tablolar tatları join destekler:

Kaynak Grafı tablosu Diğer tablolar olabilir mi join ? Açıklama
AdvisorResources Yes ile ilgili Microsoft.Advisorkaynakları içerir.
AlertsManagementResources Yes ile ilgili Microsoft.AlertsManagementkaynakları içerir.
AppServiceResources Yes ile ilgili Microsoft.Webkaynakları içerir.
AuthorizationResources Yes ile ilgili Microsoft.Authorizationkaynakları içerir.
AWSResources Yes ile ilgili Microsoft.AwsConnectorkaynakları içerir.
AzureBusinessContinuityResources Yes ile ilgili Microsoft.AzureBusinessContinuitykaynakları içerir.
ChaosResources Yes ile ilgili Microsoft.Chaoskaynakları içerir.
CommunityGalleryResources Yes ile ilgili Microsoft.Computekaynakları içerir.
ComputeResources Yes Sanal Makine Ölçek Kümeleri ile ilgili Microsoft.Compute kaynakları içerir.
DesktopVirtualizationResources Yes ile ilgili Microsoft.DesktopVirtualizationkaynakları içerir.
DnsResources Yes ile ilgili Microsoft.Networkkaynakları içerir.
EdgeOrderResources Yes ile ilgili Microsoft.EdgeOrderkaynakları içerir.
ElasticsanResources Yes ile ilgili Microsoft.ElasticSankaynakları içerir.
ExtendedLocationResources Yes ile ilgili Microsoft.ExtendedLocationkaynakları içerir.
FeatureResources Yes ile ilgili Microsoft.Featureskaynakları içerir.
GuestConfigurationResources Yes ile ilgili Microsoft.GuestConfigurationkaynakları içerir.
HealthResourceChanges Yes ile ilgili Microsoft.Resourceskaynakları içerir.
HealthResources Yes ile ilgili Microsoft.ResourceHealthkaynakları içerir.
İçgörülerKaynaklar Yes ile ilgili Microsoft.Insightskaynakları içerir.
IoTSecurityResources Yes ve Microsoft.IoTFirmwareDefenseile ilgili Microsoft.IoTSecurity kaynakları içerir.
KubernetesConfigurationResources Yes ile ilgili Microsoft.KubernetesConfigurationkaynakları içerir.
KustoResources Yes ile ilgili Microsoft.Kustokaynakları içerir.
MaintenanceResources Yes ile ilgili Microsoft.Maintenancekaynakları içerir.
ManagedServicesResources Yes ile ilgili Microsoft.ManagedServiceskaynakları içerir.
MigrateResources Yes ile ilgili Microsoft.OffAzurekaynakları içerir.
NetworkResources Yes ile ilgili Microsoft.Networkkaynakları içerir.
OrbitalResources Yes ile ilgili Microsoft.Orbitalkaynakları içerir.
PatchAssessmentResources Yes Azure Sanal Makineler düzeltme eki değerlendirmesi Microsoft.Compute ve Microsoft.HybridComputeile ilgili kaynakları içerir.
PatchInstallationResources Yes Azure Sanal Makineler düzeltme eki yükleme Microsoft.Compute ve Microsoft.HybridComputeile ilgili kaynakları içerir.
İlkeKaynaklar Yes ile ilgili Microsoft.PolicyInsightskaynakları içerir.
RecoveryServicesResources Yes ve Microsoft.RecoveryServicesile ilgili Microsoft.DataProtection kaynakları içerir.
ResourceChanges Yes ile ilgili Microsoft.Resourceskaynakları içerir.
ResourceContainerChanges Yes ile ilgili Microsoft.Resourceskaynakları içerir.
ResourceContainers Yes Yönetim grubu (Microsoft.Management/managementGroups), abonelik (Microsoft.Resources/subscriptions) ve kaynak grubu (Microsoft.Resources/subscriptions/resourcegroups) kaynak türlerini ve verilerini içerir.
Kaynaklar Yes Sorguda tablo tanımlanmamışsa varsayılan tablo. Resource Manager kaynak türlerinin ve özelliklerinin çoğu buradadır.
SecurityResources Yes ile ilgili Microsoft.Securitykaynakları içerir.
ServiceFabricResources Yes ile ilgili Microsoft.ServiceFabrickaynakları içerir.
ServiceHealthResources Yes ile ilgili Microsoft.ResourceHealth/eventskaynakları içerir.
SpotResources Yes ile ilgili Microsoft.Computekaynakları içerir.
SupportResources Yes ile ilgili Microsoft.Supportkaynakları içerir.
EtiketlerKaynaklar Yes ile ilgili Microsoft.Resources/tagnamespaceskaynakları içerir.

Kaynak türlerini içeren tabloların listesi için Azure Kaynak Grafı tablosuna ve kaynak türü başvurusuna gidin.

Not

Resources varsayılan tablodur. Tabloyu sorgularkenResources, kullanılmadığı veya union kullanılmadığı sürece join tablo adını sağlamak gerekmez. Ancak önerilen uygulama, ilk tabloyu her zaman sorguya eklemektir.

Her tabloda hangi kaynak türlerinin kullanılabilir olduğunu bulmak için portaldaki Kaynak Grafı Gezgini'ni kullanın. Alternatif olarak, verilen Kaynak Grafı tablosunun ortamınızda bulunan desteklediği kaynak türlerinin listesini almak için gibi <tableName> | distinct type bir sorgu kullanın.

Aşağıdaki sorguda basit joinbir gösterilir. Sorgu sonucu sütunları birleştirir ve bu örnekteki ResourceContainers tablosundaki yinelenen sütun adları 1 ile eklenir. ResourceContainers tablosunda hem abonelikler hem de kaynak grupları için türler olduğundan, tablodan Resources kaynağa katılmak için iki tür de kullanılabilir.

Resources
| join ResourceContainers on subscriptionId
| limit 1

Aşağıdaki sorguda daha karmaşık bir kullanımı gösterilmektedir join. İlk olarak sorgu, Azure Key Vault kasaları kaynak türüne ait alanları Resources almak için kullanırproject. Sonraki adım, sonuçları ResourceContainers ile birleştirmek için kullanırjoin. Burada tür, hem ilk tablonun hem de birleştirilen tablonun project projectözelliğindeki bir aboneliktir. Özelliği zaten kaynağından yansıtıldığından, alan yeniden adlandırma, ad1 olarak eklenmesini Resourcesönlerjoin. Sorgu sonucu, anahtar kasasının türünü, adını, konumunu ve kaynak grubunu ve içinde bulunduğu aboneliğin adını görüntüleyen tek bir anahtar kasasıdır.

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

Not

sonuçları ile projectsınırlandırırkenjoin, yukarıdaki örnekteki subscriptionId olmak üzere iki tabloyu ilişkilendirmek için tarafından join kullanılan özelliğine projectdahil edilmelidir.

Genişletilmiş özellikler

Önizleme özelliği olarak, Kaynak Grafı'daki kaynak türlerinden bazıları, Azure Resource Manager tarafından sağlanan özelliklerin ötesinde sorgu yapmak için kullanılabilen türle ilgili daha fazla özelliğe sahiptir. Genişletilmiş özellikler olarak bilinen bu değer kümesi, içinde properties.extendeddesteklenen bir kaynak türünde bulunur. Genişletilmiş özelliklere sahip kaynak türlerini göstermek için aşağıdaki sorguyu kullanın:

Resources
| where isnotnull(properties.extended)
| distinct type
| order by type asc

Örnek: ile sanal makinelerin instanceView.powerState.codesayısını alma:

Resources
| where type == 'microsoft.compute/virtualmachines'
| summarize count() by tostring(properties.extended.instanceView.powerState.code)

Özel dil öğelerini Kaynak Grafı

Paylaşılan sorgu söz dizimi (önizleme)

Önizleme özelliği olarak paylaşılan sorguya doğrudan bir Kaynak Grafı sorgusunda erişilebilir. Bu senaryo, paylaşılan sorgular olarak standart sorgular oluşturmayı ve bunları yeniden kullanmayı mümkün kılar. Kaynak Grafı sorgunun içinde paylaşılan sorguyu çağırmak için söz dizimini {{shared-query-uri}} kullanın. Paylaşılan sorgunun URI'si, bu sorgunun Ayarlar sayfasındaki paylaşılan sorgunun Kaynak Kimliğidir. Bu örnekte, paylaşılan sorgu URI'miz şeklindedir /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS. Bu URI, başka bir sorguda başvurmak istediğimiz paylaşılan sorgunun aboneliğine, kaynak grubuna ve tam adına işaret ediyor. Bu sorgu, Öğretici: Sorgu oluşturma ve paylaşma bölümünde oluşturulan sorguyla aynıdır.

Not

Paylaşılan sorguya başvuran bir sorguyu paylaşılan sorgu olarak kaydedemezsiniz.

Örnek 1: Yalnızca paylaşılan sorguyu kullanın:

Bu Kaynak Grafı sorgusunun sonuçları, paylaşılan sorguda depolanan sorguyla aynıdır.

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}

Örnek 2: Paylaşılan sorguyu daha büyük bir sorgunun parçası olarak ekleyin:

Bu sorgu önce paylaşılan sorguyu kullanır ve ardından sonuçları daha fazla kısıtlamak için kullanır limit .

{{/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SharedQueries/providers/Microsoft.ResourceGraph/queries/Count VMs by OS}}
| where properties_storageProfile_osDisk_osType =~ 'Windows'

Desteklenen KQL dil öğeleri

Kaynak Grafı KQL veri türlerinin, skaler işlevlerin, skaler işleçlerin ve toplama işlevlerinin bir alt kümesini destekler. Belirli tablosal işleçler, bazıları farklı davranışlara sahip olan Kaynak Grafı tarafından desteklenir.

Desteklenen tablosal/üst düzey işleçler

Belirli örneklerle Kaynak Grafı tarafından desteklenen KQL tablo işleçlerinin listesi aşağıdadır:

KQL Örnek sorguyu Kaynak Grafı Notlar
count Anahtar kasalarını sayma
Farklı Depolama içeren kaynakları göster
uzatmak Sanal makineleri işletim sistemi türüne göre sayma
join Abonelik adıyla anahtar kasası Desteklenen birleşim tatları: innerunique, inner, leftouter ve fullouter. Tek bir sorguda üç join sınırı vardır ve bunlardan biri çapraz tablo joinolabilir. Tüm çapraz tablo join kullanımı Resource ve ResourceContainers arasındaysa, üç çapraz tabloya join izin verilir. Yayına katılma gibi özel birleştirme stratejilerine izin verilmez. hangi tabloların kullanabileceği jointablolar için Kaynak Grafı tablolara gidin.
sınır Tüm genel IP adreslerini listele öğesinin eş anlamlısı take. Skip ile çalışmaz.
mvexpand Eski işleç yerine kullanın mv-expand . RowLimit en fazla 2.000. Varsayılan değer 128'dir.
mv-expand Azure Cosmos DB'nin belirli yazma konumlarını listeleme RowLimit en fazla 2.000. Varsayılan değer 128'dir. Tek bir sorguda 3 mv-expand sınırı.
order Ada göre sıralanmış kaynakları listeleme Eş anlamlısı sort
ayrıştırmak Ağ arabirimlerinin sanal ağlarını ve alt ağlarını alma özellikleri kullanmak parseyerine varsa doğrudan erişmek en uygunudur.
proje Ada göre sıralanmış kaynakları listeleme
proje dışı Sonuçlardan sütunları kaldırma
sıralayın Ada göre sıralanmış kaynakları listeleme Eş anlamlısı order
Özetle Azure kaynaklarını sayma Yalnızca basitleştirilmiş ilk sayfa
almak Tüm genel IP adreslerini listele öğesinin eş anlamlısı limit. Skip ile çalışmaz.
Sayfanın Üstü Ada ve işletim sistemi türüne göre ilk beş sanal makineyi gösterme
sendika İki sorgudan elde edilen sonuçları tek bir sonuçta birleştirme Tek tabloya izin verilir: | union [kind= inner|outer] [withsource=ColumnName] Table. Tek bir sorguda üç union bacak sınırı. Bacak masalarının bulanık çözünürlüğüne union izin verilmez. Tek bir tablo içinde veya Resources ve ResourceContainers tabloları arasında kullanılabilir.
nerede Depolama içeren kaynakları göster

Tek bir Kaynak Grafı SDK sorgusunda varsayılan olarak üç join ve üç mv-expand işleç sınırı vardır. Yardım + destek aracılığıyla kiracınız için bu sınırlarda bir artış isteyebilirsiniz.

Açık Sorgu portalı deneyimini desteklemek için Azure Kaynak Grafı Gezgini'nin genel sınırı Kaynak Grafı SDK'dan daha yüksektir.

Not

Bir tabloya birden çok kez sağ tablo olarak başvuramazsınız ve bu da 1 sınırını aşıyor. Bunu yaparsanız, DisallowedMaxNumberOfRemoteTables koduyla bir hata alırsınız.

Sorgu kapsamı

Kaynakların sorgu tarafından döndürüldiği aboneliklerin veya yönetim gruplarının kapsamı, yetkili kullanıcının bağlamını temel alan bir abonelik listesi olarak varsayılan olarak kullanılır. Bir yönetim grubu veya abonelik listesi tanımlanmamışsa sorgu kapsamı tüm kaynaklardır ve Azure Lighthouse tarafından atanan kaynakları içerir.

Sorgulanacak aboneliklerin veya yönetim gruplarının listesi, sonuçların kapsamını değiştirmek için el ile tanımlanabilir. Örneğin REST API managementGroups özelliği, yönetim grubunun adından farklı olan yönetim grubu kimliğini alır. Belirtildiğinde managementGroups , belirtilen yönetim grubu hiyerarşisindeki veya altındaki ilk 10.000 abonelikteki kaynaklar eklenir. managementGroups ile aynı anda subscriptionskullanılamaz.

Örnek: Kimliği myMGile adlı My Management Group yönetim grubunun hiyerarşisi içindeki tüm kaynakları sorgulayın.

  • REST API URI'si

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01
    
  • İstek Gövdesi

    {
      "query": "Resources | summarize count()",
      "managementGroups": ["myMG"]
    }
    

parametresi, AuthorizationScopeFilter üst kapsamlardan devralınan tablodaki AuthorizationResources Azure İlkesi atamalarını ve Azure rol tabanlı erişim denetimi (Azure RBAC) rol atamalarını listelemenizi sağlar. AuthorizationScopeFilter parametresi ve AuthorizationResources tabloları için PolicyResources aşağıdaki değerleri kabul eder:

  • AtScopeAndBelow (belirtilmezse varsayılan): Verilen kapsam ve tüm alt kapsamlar için atamaları döndürür.
  • AtScopeAndAbove: Verilen kapsam ve tüm üst kapsamlar için atamaları döndürür, ancak alt kapsamları döndürmez.
  • AtScopeAboveAndBelow: Verilen kapsam, tüm üst kapsamlar ve tüm alt kapsamlar için atamaları döndürür.
  • AtScopeExact: Yalnızca verilen kapsam için atamaları döndürür; üst veya alt kapsam dahil değildir.

Not

parametresini AuthorizationScopeFilter kullanmak için isteklerinizde 2021-06-01-preview veya üzeri API sürümünü kullandığınızdan emin olun.

Örnek: myMG yönetim grubunda ve Kiracı Kökü (üst) kapsamlarında tüm ilke atamalarını alın.

  • REST API URI'si

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
    
  • İstek Gövdesi Örneği

    {
      "options": {
        "authorizationScopeFilter": "AtScopeAndAbove"
      },
      "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'",
      "managementGroups": ["myMG"]
    }
    

Örnek: mySubscriptionId aboneliği, yönetim grubu ve Kiracı Kök kapsamlarında tüm ilke atamalarını alın.

  • REST API URI'si

    POST https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-06-01-preview
    
  • İstek Gövdesi Örneği

    {
      "options": {
        "authorizationScopeFilter": "AtScopeAndAbove"
      },
      "query": "PolicyResources | where type =~ 'Microsoft.Authorization/PolicyAssignments'",
      "subscriptions": ["mySubscriptionId"]
    }
    

Kaçış karakterleri

veya $içerenler . gibi bazı özellik adları sorguda sarmalanmalıdır veya kaçılmalıdır veya özellik adı yanlış yorumlanır ve beklenen sonuçları sağlamaz.

  • Nokta (.): Köşeli ayraç kullanarak özellik adını ['propertyname.withaperiod'] sarmalar.

    odata.type özelliğini kaydıran örnek sorgu:

    where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.['odata.type']
    
  • Dolar işareti ($): Özellik adındaki karakterden kaçış. Kullanılan kaçış karakteri, Kaynak Grafı çalıştıran kabuğa bağlıdır.

    • Bash: Kaçış karakteri olarak ters eğik çizgi (\) kullanın.

      Bash'te $type özelliğinden kaçan örnek sorgu:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$type
      
    • cmd: Dolar işareti ($) karakterinden kaçmayın.

    • PowerShell: Kaçış karakteri olarak bir backtick (`) kullanın.

      PowerShell'de özellik $type kaçış örnek sorgu:

      where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
      

Sonraki adımlar