Azure Endpoint’lerini Powershell Yardımıyla Nasıl Listelerim
Eğer Azure’da bir adet VM yaratıp, dashboard’una girerseniz “endpoint” denilen bir sekme dikkatinizi çekecektir. Basit bir şekilde acıkmak gerekirse endpoint Azure’da bulunan bir VM veya servisin dünyaya açıldığı nokta yani porttur. Bir VM üzerinde her hangi bir servis yarattığınız zaman bu servis ait olduğu network içerisinde veya S2S VPN ile bağlı bulunduğu yerdeki diğer sunucular tarafından rahatlıkla erişilebilir ama dış dünya ile iletişime geçemez bunun için bir endpoint tanımlamamız ve bu endpoint’in dış dünyada ile konuşacağı portuda belirtmemiz gerekmektedir.
Eğer yeni bir endpoint tanımlamak isterseniz iki adet port seçeneği olduğunu görürsünüz.Bunlar Private ve Public’dir isimlerinden de anlaşılacağı üzere Private kendi networkünüz içerisinde bulunan sunucuların bir birleriyle haberleşmek için kullanacağı port numarası ve Public ise dış dünya ile haberleştiği porttur.
Endpoint’in ne olduğu konusunda anlaştıysak; neden raporlanması gerektiğini de anlamışsınızdır. Siz istediğiniz kadar on-premise veri merkezinizde güvenlik önlemleri alsanız da, unutulmuş bir endpoint veya işgüzar biri tarafından habersizce açılmış bir endpoint tüm veri güvenliğinizi riske atabilir. Sadece birkaç VM’iniz varsa endpointleri yönetmek kolay olabilir ama ya onlarca ve hatta yüzlerce endpointte sahip olursanız? Mevcut Azure ara yüzünden endpointleri raporlamanıza şu an için imkan yok bu sebepten dolayı küçük bir Powershell scripti geliştirdim.
Yapmamız gerekenler ilk önce tüm VM’leri sıralamak ardından her VM için tek tek endpointlerin listesini çıkartmaktır.Eğer eski yazılarımı hatırlarsanız Azure’da bulunan tüm VM’leri “Get-AzureVM” komutuyla görebileceğimizden bahsetmiştim.
Çıktıya dikkatli bakarsanız her VM’in ait olduğu bir servis var bu sebepten dolayı ilk önce tanımlı servislerimizin listesini almalı ve her servis içerisinde ki VM’leri tek tek “Get-AzureEndpoint” ile kontrol etmem gerekiyor. Küçük bir döngüyle bu sorunu da çözdüm.
Scriptin tamamı aşağıda ki gibidir.
$services = ((Get-AzureVM ).ServiceName|Get-Unique) $services | ForEach-Object { $s = $_ $vms = ((Get-AzureVM -ServiceName $_ ).Name|Get-Unique) $vms |ForEach-Object{ Get-AzureVM -ServiceName $s -Name $_ |Get-AzureEndpoint } }
Çıktısı aşağıda ki gibi olmalıdır.