Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 ? |
Description |
|---|---|---|
| AdvisorResources | Yes |
Kaynakları içerir.Microsoft.Advisor |
| AlertsManagementResources | Yes |
Kaynakları içerir.Microsoft.AlertsManagement |
| AppServiceResources | Yes |
Kaynakları içerir.Microsoft.Web |
| AuthorizationResources | Yes |
Kaynakları içerir.Microsoft.Authorization |
| AWSResources | Yes |
Kaynakları içerir.Microsoft.AwsConnector |
| AzureBusinessContinuityResources | Yes |
Kaynakları içerir.Microsoft.AzureBusinessContinuity |
| ChaosResources | Yes |
Kaynakları içerir.Microsoft.Chaos |
| CommunityGalleryResources | Yes |
Kaynakları içerir.Microsoft.Compute |
| ComputeResources | Yes | Sanal Makine Ölçek Kümeleri ile ilgili Microsoft.Compute kaynakları içerir. |
| DesktopVirtualizationResources | Yes |
Kaynakları içerir.Microsoft.DesktopVirtualization |
| DnsResources | Yes |
Kaynakları içerir.Microsoft.Network |
| EdgeOrderResources | Yes |
Kaynakları içerir.Microsoft.EdgeOrder |
| ElasticsanResources | Yes |
Kaynakları içerir.Microsoft.ElasticSan |
| ExtendedLocationResources | Yes |
Kaynakları içerir.Microsoft.ExtendedLocation |
| FeatureResources | Yes |
Kaynakları içerir.Microsoft.Features |
| GuestConfigurationResources | Yes |
Kaynakları içerir.Microsoft.GuestConfiguration |
| HealthResourceChanges | Yes |
Kaynakları içerir.Microsoft.Resources |
| HealthResources | Yes |
Kaynakları içerir.Microsoft.ResourceHealth |
| InsightsResources | Yes |
Kaynakları içerir.Microsoft.Insights |
| IoTSecurityResources | Yes | ve ile ilgiliMicrosoft.IoTSecurityMicrosoft.IoTFirmwareDefensekaynakları içerir. |
| KubernetesConfigurationResources | Yes |
Kaynakları içerir.Microsoft.KubernetesConfiguration |
| KustoResources | Yes |
Kaynakları içerir.Microsoft.Kusto |
| MaintenanceResources | Yes |
Kaynakları içerir.Microsoft.Maintenance |
| ManagedServicesResources | Yes |
Kaynakları içerir.Microsoft.ManagedServices |
| MigrateResources | Yes |
Kaynakları içerir.Microsoft.OffAzure |
| NetworkResources | Yes |
Kaynakları içerir.Microsoft.Network |
| PatchAssessmentResources | Yes | Azure Sanal Makineler yama değerlendirmesi Microsoft.Compute kaynakları içerir ve Microsoft.HybridCompute. |
| PatchInstallationResources | Yes | Azure Sanal Makineler yaması kurulumu Microsoft.Compute kaynakları içerir.Microsoft.HybridCompute |
| PolicyResources | Yes |
Kaynakları içerir.Microsoft.PolicyInsights |
| RecoveryServicesResources | Yes | ve ile ilgiliMicrosoft.DataProtectionMicrosoft.RecoveryServiceskaynakları içerir. |
| ResourceChanges | Yes |
Kaynakları içerir.Microsoft.Resources |
| ResourceContainerChanges | Yes |
Kaynakları içerir.Microsoft.Resources |
| 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. |
| Resources | Yes | Sorguda tablo tanımlanmamışsa varsayılan tablo. Resource Manager kaynak türlerinin ve özelliklerinin çoğu buradadır. |
| SecurityResources | Yes |
Kaynakları içerir.Microsoft.Security |
| ServiceFabricResources | Yes |
Kaynakları içerir.Microsoft.ServiceFabric |
| ServiceHealthResources | Yes |
Kaynakları içerir.Microsoft.ResourceHealth/events |
| SpotResources | Yes |
Kaynakları içerir.Microsoft.Compute |
| SupportResources | Yes |
Kaynakları içerir.Microsoft.Support |
| TagsResources | Yes |
Kaynakları içerir.Microsoft.Resources/tagnamespaces |
Kaynak türlerini içeren tabloların listesi için Azure Kaynak Grafı tablosuna ve kaynak türü başvurusuna gidin.
Note
Resources varsayılan tablodur. Tabloyu sorgularkenResources, kullanılmadığı veya join kullanılmadığı sürece union 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 örnekte ResourceContainers olan birleştirilmiş tablodan gelen çoğaltılmış sütun isimleri 1 ile eklenir.
ResourceContainers tablosunda hem abonelikler hem de kaynak grupları için tipler olduğundan, her iki tip de tablodan kaynağa Resources katılmak için 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ı project almak için kullanırResources. Sonraki adımjoin, sonuçları ResourceContainers ile birleştirmek için kullanılır; burada tip hem ilk tabloda hem de birleşik tabloda projectproject özellik için aboneliktir. Alan yeniden adı join ile name1 eklenmesi sağlanır çünkü özellik zaten 'dan Resourcesprojeksiyon edilmektedir. 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
Note
Sonuçları join sınırlarken project, join yukarıdaki örnekte iki tabloyu ilişkilendirmek için kullanılan özellik, abonelikId , içine projectdahil edilmelidir.
Genişletilmiş özellikler
Önizleme özelliği olarak, Resource Graph'taki bazı kaynak türleri, Azure Resource Manager tarafından sağlanan özelliklerin ötesinde sorgulanabilir daha fazla türle ilgili özelliklere sahiptir. Bu değer kümesi, genişletilmiş özellikler olarak bilinir ve içinde desteklenen bir kaynak türünde properties.extendedmevcuttur.
Genişletilmiş özelliklere sahip kaynak türlerini göstermek için aşağıdaki sorgu 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 bir sorguya doğrudan Kaynak Grafiği sorgusu ile 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, o sorgu için 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.
Note
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
Resource Graph, KQL veri türleri, skaler fonksiyonlar, skaler operatörler ve toplama fonksiyonlarının bir alt kümesini destekler. Resource Graph tarafından desteklenen belirli tablo operatörleri vardır; bazıları farklı davranışlara sahiptir.
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ı | Notes |
|---|---|---|
| count | Anahtar kasalarını sayma | |
| distinct | Depolama içeren kaynakları göster | |
| extend | Sanal makineleri işletim sistemi türüne göre sayma | |
| join | Abonelik adıyla anahtar kasası | Desteklenen tatlara katılın: içteniksiz, iç, solcu ve tam tat. Tek bir sorguda üç join veya union işlemin (veya ikisinin birleşiminin) sınırı, birlikte sayılır ve bunlardan biri tablolar arası birleşim olabilir. Tüm çapraz tablo join kullanımı Resource ve ResourceContainers arasında ise, üç çapraz tablo join izinlidir. Yayına katılma gibi özel birleştirme stratejilerine izin verilmez. hangi tabloların kullanabileceği jointablolar için Kaynak Grafı tablolara gidin. |
| limit | Tüm genel IP adreslerini listele | öğesinin eş anlamlısı take.
Skip ile işe yaramıyor. |
| mvexpand | Eski işleç yerine kullanın mv-expand .
RowLimit maksimum 2.000. Varsayılan değer 128'dir. |
|
| mv-expand | Azure Cosmos DB'nin belirli yazma konumlarını listeleme |
RowLimit maksimum 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 |
| parse | Ağ arabirimlerinin sanal ağlarını ve alt ağlarını alma | özellikleri kullanmak parseyerine varsa doğrudan erişmek en uygunudur. |
| project | Ada göre sıralanmış kaynakları listeleme | |
| project-away | Sonuçlardan sütunları kaldırma | |
| sort | Ada göre sıralanmış kaynakları listeleme | Eş anlamlısı order |
| summarize | Azure kaynaklarını sayma | Yalnızca basitleştirilmiş ilk sayfa |
| take | Tüm genel IP adreslerini listele | öğesinin eş anlamlısı limit.
Skip ile işe yaramıyor. |
| top | Ada ve işletim sistemi türüne göre ilk beş sanal makineyi gösterme | |
| union | İ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 tabloda veya Resources ile ResourceContainers tabloları arasında kullanılabilir. |
| where | 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.
Open Query portal deneyimini desteklemek için Azure Kaynak Grafı Explorer, Resource Graph SDK'dan daha yüksek bir küresel sınıra sahiptir.
Note
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ı
Bir sorgu ile kaynakların geri döndüğü aboneliklerin veya yönetim gruplarının kapsamı, yetkili kullanıcının bağlamına göre varsayılan olarak abonelik listesine dayanır. Bir yönetim grubu veya abonelik listesi tanımlanmamışsa, sorgu kapsamı tüm kaynaklardan oluşur ve Azure Lighthouse ile delege edilmiş 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 My Management Groupile adlı myMG 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 İçeriği
{ "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 PolicyResources tabloları için AuthorizationResources aşağıdaki değerleri kabul eder:
- AtScopeAndBelow (belirtilmediyse varsayılan): Verilen kapsam ve tüm alt kapsamlar için atamaları döndürür.
- AtScopeAndAbove: Verilen kapsam ve tüm ana kapsamlar için atamaları döndürür, ancak alt kapsamları döndürmez.
- AtScopeAboveAndBelow: Verilen kapsam, tüm ana kapsamlar ve tüm alt kapsamlar için atamaları döndürür.
- AtScopeExact: Verilen kapsam için yalnızca atamaları döndürür; Ebeveyn veya çocuk kapsamları dahil edilmez.
Note
Parametreyi AuthorizationScopeFilter kullanmak için, isteklerinizde 2021-06-01-preview veya daha sonraki API sürümünü kullandığınızdan emin olun.
Örnek: Tüm politika atamalarını myMG yönetim grubu ve Kiracı Kökü (ebeveyn) kapsamlarında 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: Tüm politika atamalarını mySubscriptionId aboneliği, yönetim grubu ve Kiracı Kökü kapsamlarında 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 saran ö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 bir backslash (
\) kullanın.Bash' $type özelliğinden kaçan örnek sorgu:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.\$typecmd: Dolar işareti (
$) karakterinden kaçmayın.PowerShell: Kaçış karakteri olarak bir backtick (
`) kullanın.PowerShell'de $type özelliğinden kaçan örnek sorgu:
where type=~'Microsoft.Insights/alertRules' | project name, properties.condition.`$type
Azure Kaynak Grafı RBAC izin değerlendirme işlevleri
Azure Kaynak Grafı (ARG), geçerli sorgulama kimliğinin tek tek kaynaklar üzerinde belirli izinlere sahip olup olmadığını değerlendirmenize olanak sağlayan iki işlev sağlar:
hasPermission()hasDataPermission()
Bu işlevler kaynak başına boole değeri (1 veya 0) döndürür ve kaynakları erişime göre filtreleme veya özetleme gibi senaryoları etkinleştirir.
Note
Bu işlevler bir kaynak örneği ve etkili RBAC atamaları bağlamında değerlendirilir. Rol tanımları üzerinde doğrudan çalışmazlar .
hasPermission()
işlevi, hasPermission() sorgulayan kimliğin bir kaynak üzerinde belirli bir denetim düzlemi iznine sahip olup olmadığını değerlendirir.
için hasPermission()aşağıdaki biçimi kullanın:
hasPermission('<permission-string>')
İşlev, hasPermission() sorgu kimliği için etkili RBAC atamaları kullanır ve kaynak satırı başına değerlendirmeler gerçekleştirir. İşlev, kimliğin kaynak üzerinde belirtilen izne sahip olduğu 1 , kimlik yoksa 0 döndürür.
Örnek Azure Kapsayıcı Kayıt Defterlerine yazma erişimini denetleme
resources
| where type =~ 'Microsoft.ContainerRegistry/registries'
| extend canPush = hasPermission('Microsoft.ContainerRegistry/registries/push/write')
Bu örnekte her kapsayıcı kayıt defteri kaynağı ayrı ayrı değerlendirilir ve canPush sorgulayan kimliğin bu kaynakta belirtilen yazma eylemini gerçekleştirip gerçekleştiremeyeceğini gösterir. Sonuçlar, döndürülen değere göre filtreleme, toplama veya özetleme için kullanılabilir.
hasDataPermission()
, hasDataPermission() sorgulayan kimliğin bir kaynak üzerinde belirli bir veri düzlemi iznine sahip olup olmadığını değerlendirir.
için hasDataPermission()aşağıdaki biçimi kullanın:
hasDataPermission('<permission-string>')
İşlev, hasDataPermission() sorgulama kimliği için etkili veri düzlemi erişim değerlendirmesi kullanır ve kaynak satırı başına değerlendirilir. İşlev, kimlik kaynakta belirtilen veri düzlemi iznine sahipse 1, kimlik değilse 0 döndürür.
Örnek: Azure Blob Depolama veri düzlemi okuma erişimini denetleme
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend canReadBlobs = hasDataPermission('Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read')
Bu örnekte, her depolama kaynağı ayrı ayrı değerlendirilir. İşlev, hasDataPermissions() sorgulayan kimliğin belirtilen data-plne izinlerine sahip olup olmadığını denetler. Döndürülen değer filtreleme, özetleme veya raporlama için kullanılabilir.
Örnek: Filtreleme ile Azure Blob Depolama veri düzlemi okuma erişimini denetleme
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| where hasDataPermission('Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read') == 1
Bu örnek yalnızca sorgulayan kimliğin blob okuma erişimine sahip olduğu depolama hesaplarını döndürür.
Önemli sınırlamalar
Bu işlevler genellikle rol veya izin bulma senaryolarıyla karıştırılır. Aşağıdaki sınırlamaların anlaşılması önemlidir:
-
hasPermission()vehasDataPermission()işlevleri, rol tanımının hangi izinleri vereceğini belirlemez. - Microsoft.authorization/roledefinitions kaynaklarını sorgulamak veya filtrelemek için kullanılamazlar.
- Bunlar, şu gibi soruları yanıtlamak için tasarlanmamıştır:
- "Hangi roller bu izni verir?"
- "Bu rol tanımı hangi eylemleri içerir?"
Sonraki Adımlar
- Azure Kaynak Grafı query language Starter queries and Advanced queries.
- Azure kaynaklarını keşfetme hakkında daha fazla bilgi edinin.