Yazımızın ilk bölümünde Azure Resource Graph servisini kavramaya çalıştık. Şimdi ise örnek sorgulamalar yaparak, bunları detaylandırmaya ve uygulamaya geçelim. Örnek yapabilmek için şu şekilde bir senaryomuz olduğunu varsayalım; organizasyon içerisinde ortalama 500~
kadar Azure Subscription olduğunu ve bu ortamın bir kişi tarafından yönetildiğini düşünün. Bizden istenen ise tüm storage account hesaplarını listelemek.
Yukarıdaki talep edilen bilgiyi almanın birçok yöntemi var daha önce bunlardan bahsetmiştik. Dilerseniz bu bilgiyi Azure Portal üzerinden alabilir veya PowerShell ile tüm abonelikleri tek tek gezip Get-AzStorageAccount
cmdlet ile toplama şansına sahip olabiliriz. Fakat Azure Resource Graph Query ile bunu yapmak çok daha kolay ve şimdi bunu deneyimleyeceğiz.
Storage hesaplarını listelemek
1 2 |
resources | where type =~ "Microsoft.storage/storageaccounts" |
Resim-1
Yaptığımız yukarıdaki örnekte **resources** tablosu içerisinde bulunan ve tipi storageAccounts ile aynı olanları getirmesini istedik. Filtreleme için where
operatörünü kullandık ve ilgili resource tipine eşit ise bize tüm storage hesaplarını döndürmesini istedik. Unutmayın ki sadece Reader
hakkımız olan storage hesaplarını listeleyebiliriz. Örneklerimizi çoğaltalım.
Public IP Addressleri listelemek
1 2 3 |
resources | where type =~ "microsoft.network/publicipaddresses" | project name, properties.ipAddress |
Resim-2
Bu sefer farklı bir örnek ile devam edelim. Abonelikler içerisinde bulunan tüm Public IP Adreslerinin listelenmesini talep ediyoruz. Bunu listelemek için yukarıdaki KQL
sorgulaması yeterli olacaktır. Yukarıda bulunan sorgulama cümlesini biraz daha genişletmek istiyorum. Bu sefer summarize
operatörünü kullanıp bir Resource Map oluşturmaya çalışalım ve sonucu beraber görelim.
1 2 3 4 |
resources | where type =~ "microsoft.network/publicipaddresses" | project name, properties.ipAddress, location | summarize count() by location |
Resim-3
Örnekte çıkan sonuçta gözüktüğü gibi çok kolay bir şekilde Public IP Adreslerimizi listeledik. Farklı bir örnek ile hız kesmeden devam edelim.
Virtual Machine boyutuna ve lokasyonuna göre sıralamak
1 2 3 |
resources | where type =~ 'microsoft.compute/virtualMachines' | summarize count() by tostring(properties.hardwareProfile.vmSize), location |
Sorgul cümlesinin göz gezdiridignizde yine aynı summarize ve count fonksiyonunu kullanarak virtual machine özelliginde tutulan vmSize
niteliğine göre yaptığımızı fark edeceksiniz. Sonuç aşağıdaki gibi olmalı:
Resim-4
Hybrid Use Benefit lisansı olanları listelemek
Azure Hybrid Benefit, Enterprise ortamınızda var olan Windows Server, SQL Server lisanslarınızı Azure Cloud ortamında kullanmanıza imkan veren bir lisans tipi olarak geçmektedir. Eğer Azure Cloud ortamınızda bulunan Windows Server'lar
içerisinden hangilerinde bu lisanslama tipi açık diye merak ediyorsanız aşağıda bulunan sorgulama size yeterli gelecektir.
1 2 3 4 5 6 |
resources | where type =~ 'microsoft.compute/virtualMachines' | extend imageOffer=tostring(properties.storageProfile.imageReference.offer) | extend licenseType=properties.licenseType | where imageOffer == 'WindowsServer' and licenseType=='Windows_Server' | project name, imageOffer, licenseType |
Örneğimizi bir tık daha geliştirelim. Sahip olduğumuz sorgulamayı kullanalım ve bunu Bar Chart
olarak gösterelim.
1 2 3 4 5 6 7 |
resources | where type =~ 'microsoft.compute/virtualMachines' | extend imageOffer=tostring(properties.storageProfile.imageReference.offer) | extend licenseType=iif(tostring(properties.licenseType) == "Windows_Server", "HUB[WindowsServer]", "WindowsServer") | where imageOffer == 'WindowsServer' | project name, imageOffer, licenseType | summarize count() by licenseType |
Resim-6
Bir sonraki yazımızda Azure Defender for Cloud örnekleri ile sorgulamalar yapacağız.
Bu konuyla ilgili sorularınızı http://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.
Referanslar
TAGs:Azure Resource Graph, KQL, Resource Manager, Azure Resource Graph nedir