Secure DevOps Kit for Azure – Bölüm – 2
  1. Anasayfa
  2. Microsoft Azure

Secure DevOps Kit for Azure – Bölüm – 2

0

Secure DevOps Kit for Azure aracının kullanım detaylarina artık yavaştan girelim. Öncelikle AzSK için Powershell Module nasıl sahip olacağımızi ve ne tür ön gereksinimler olduğunu beraber inceleyelim. Core MS Engineering tarafından bize aktarılan en az aşağıdaki işletim sürümüne ve powershell versiyonuna sahip olmanız gerekiyor.

  • PowerShell 5.0 veya üstü sürümüne sahip olmanız
  • Windows OS

Not: Bildiğiniz gibi Powershell Core sayesinde cross platform üzerinde Powershell’e sahip olma imkanı bizlere sunuluyor. Bu sayede Windows veya Linux, macOs farketmeksizin Powershell’i kullanabilirsiniz ama birtakım özelliklerinden yararlanma şansınız olmayabilir. Bu yüzden dökümantasyon tarafında henüz resmi bir detay göremedim özellikle Core veya Desktop sürümü olarak yaptığım birçok testler de Windows üzerinde Powershell Core tarafında pek sorun yaşamadım. Ancak bu yüzden kendi edindiğim tecrübelerim ile paylaşabilirim ki AzSK Powershell Modülünü sorunsuz kullandığımı söyleyebilirim. Bu detay belki önem arz edebilir. Mümkün oldukça Powershell Core kullanarak hayatımı sürdürüyorum. Hızlıca bu Powershell modülüne nasıl sahip olabiliriz beraber görelim.

Resim-1

#Check the Dependencies of Secure DevOps Kit for Azure
Find-Module -Name AzSK -IncludeDependencies -Repository PSGallery

Bildiğiniz gibi Powershell üzerinden herhangi bir Modülü dahil etmek istersek bize yardımcı olan cmdlet “Install-Module” olarak karşımıza çıkıyor. Fakat bu komutu yazmadan önce bir konuyu sizinle paylaşmak istiyorum. AzSK Powershell modülü aslında arka tarafta Azure Powershell modülüne ihtiyaç duymaktadır. Bunun temel sebebi ise, AzSK Powershell modülüne sahip olduğunuz ve onun detaylarını incelediğiniz zaman birçok geliştirilmiş ‘advanced-powershell-function’larının olması ve bunların arkasında devamlı Azure Powershell Module ile birlikte gelen cmdlet’ler sayesinde ilgili kaynakların özelliklerini talep ederek iş yapabilmesidir. Örneğin, Azure Subscription seviyesindeki detaylara Secure DevOps Kit for Azure (AzSK) Powershell modüllü erişmek ister ise, Azure Powershell Modülüne ihtiyaç duyacak ve tüm yapılandırma detaylarını bu modül içerisinde bulunan komutlar sayesinde edinecektir. Yukarıda gördüğünüz “Find-Module -Name AzSK -IncludeDependencies -Repository PSGallery” aslında bize AzSK Powershell modülünün ne tür bağımlılıkları olduğunu anlatmaktadır.

Resim-2

# Install the Secure DevOps Kit for Azure (AzSK) PS module:
Install-Module -Name AzSK -Repository PSGallery -Scope CurrentUser -Force -Verbose

Artık AzSK Powershell modülünü Powershell Gallery üzerinden talep edebiliriz. Yukarıda gördüğünüz satır içerisinde (9) kullandığım Powershell komut satırı, benim için AzSK’yı sahip olduğum bilgisayar üzerine indirecek ve bunu sadece sahip olduğum oturum içerisinde kalacak şekilde belirtmiş bulunmaktayım. Scope olarak ‘CurrentUser’ parametresi bana bu konuda yardımcı oluyor. Repository parametresi ise belirtmek zorunda değilsiniz, çok farklı Repository’ler kullandığım için özellike belirttim eğer tanımlamazsanız PSGallery yani Microsoft’un Windows üzerinde default tanımlamış olduğu Powershell Gallery üzerinden modüle sahip olmaya başlayacaksınız. En sonda kullandığım ‘-Verbose’ parametresi ise ‘Install-Module’ komutu çalışırken bana arka tarafta yapılanlar hakkında detaylı bilgiler almamı sağlıyor.

Gördüğünüz gibi artık AzSK Powershell Modülüne sahibiz. Modüle içerisinde toplam şimdilik 55 adet cmdlet mevcut ama birçoğunu bu yazı serisinde tanımaya çalışacağız. Şimdi en temelleri olan Subscription seviyesi bazında Security taramaları gerçekleştireceğiz ve bunun için şimdilik sadece abonelik ile ilgili olanlari degerlendirecegim.

Resim-3

İlk bölümde bahsettiğimiz ve konumuzun en önem arz eden başlığı olan ‘Subscription Security’ yani Azure Aboneliğinin güvenliğinin detaylarına göz gezdirelim. Abonelik içerisinde tarama işlemi başlatmak için, ‘Get-AZSKSubscriptionSecurityStatus’ function kullanarak birtakım çıktılar/sonuçlar elde edebiliriz. Kullanmaya başladığımız zaman göreceksiniz ki bircok detayın bu Powershell fonksiyonu tarafından irdelendiğine şahit olacaksınız. Herhangi bir aboneliği incelemek için bir dizi otomatik tarama gerçekleştirir ve çeşitli güvenlik sorunları, yanlış yapılandırmalar veya eski eserler / ayarlar nedeniyle aboneliğinizin daha yüksek bir risk altında olabileceğinin göstergesi olan koşulları/bulguları sizlere işaretler. Bu fonksiyon aşağıdaki kısımlara tek tek bakarak size bir sonuç oluşturmaya çalışıyor.

  • Access Control (IAM ) Erişim kontrolü yapılandırması – abonelik seviyesinde kimlik ve erişim yönetimi ile ilgili sorunlar. (Abonelik üzerinde bulunan admins/owners, custom-rbac roles, MFA, PIM, SPNs)
  • Alert Configuration – Azure Aboneliği ve çeşitli azure kaynakları için hassas eylemler için etkinlik uyarılarının yapılandırılması. (Securtiy Center)
  • Azure Security Center – Azure Güvenlik Merkezi yapılandırması detayları – (Point of contact, VMs Updates, Malware, Extension vb.)
  • Azure Policy ve Resource Lock- konfigürasyonu – Belirli bir düzeyde tanımlanan Azure Policyler ( Region, VM Size, belirli resource tiplerinin yasaklanması), Resource Lock ve diğer tüm Policy ile yapılabilecek diğer aksiyonlar.Bunun dışında şahsi olarak kullandığım ve sizin de güvenli bir abonelik için Azure Policy ile birlikte çalışan Guest Configuration bakmanızı önerebilirim.

Not: Daha fazla detay için lütfen paylaştığım sayfa üzerinden neden önemli oldukları ve ne seviyede önem gerektirdiklerini anlayabilirsiniz. Lütfen şu sayfaya göz gezdirin.

Resim-4

#Scan the security health of your subscription
Import-Module AzSK

$SubscriptionId  = '3b40246b-ffa0-43df-a51e-0c2317b4afc3'

## Otomatik olarak Health Check işlemini başlatır. Hem Powershell Console üzerine hemde CSV oluşturur ve onu açar.
Get-AzSKSubscriptionSecurityStatus -SubscriptionId $SubscriptionId 

Yukarıdaki resim üzerinde görüldüğü üzere ilk health check işlemini ‘Get-AZSKSubscriptionSecurityStatus’ function ile başlattım. Bu komutu çalıştırmadan önce doğal olarak Az Powershell üzerinde tarama başlatalabilmek için ilgili aboneliklere yetkili hesap ile oturum açmanız gerekmektedir. Subscription Id değerini bu function içerisine gönderdip, çalıştırdıktan sonra yukarıda özetle bahsettiğimiz kontrolleri tek tek yapıyor ve sizin için bir sonuç belirlemeye çalışıyor olacak.

Resim-5

İlgili Powershell fonksiyonu bizim için başarılı bir şekilde çalıştı. Yapılan kontroller sonucu ne tür testlerden geçemediğimizin detaylarını Powershell bize Console üzerine yazmış bulunmakta bununla kalmayıp bunları “High”, “Critical”,”Medium” olarak ayırdı. Bunların tüm detayları yukarıda belirttiğim sayfa üzerinde var. İlgili sayfa içerisinde neden seviyelerinin “High”,Medium”,Critical” olarak ayrıldığını anlayabilirsiniz. Health Check işlemini başlatmak istediğim aboneliğim MSDN olarak belirlemiştim. Üzerinde sadece yaptığım testler olan birazda dağınık bir hesap, yukarıdaki tablo içerisinde bazı adımlardan ‘Failed’ aldığımı görüyorum. Bunların bazıları “High” ve “Medium” olarak iki kısma ayrılmış durumda. Yukarıdaki resim içerisinde ayrıca belirttim fakat Powershell fonksiyonu çalışmayı bitirdiği zaman size bir “Windows Explorer” otomatik olarak açıyor olacak ve karşınıza bir takım log dosyaları ve çalıştırdığımız tarama sonucunun daha fazla detaylarını ‘CSV’ dosyası içerisinde bulabileceksiniz.

Resim-6

Bizim için otomatik bir şekilde output çıktısı oluşturdu, bu dosyalardan en önemlisi CSV detayları ve buna baktığımız zaman hangi tür testlerden başarılı/başarısız olduğumuzu görebileceğiz. Bunun dışında ‘Etc’ ve ‘Visual Studio Enterprise – MCT‘ folderında Azure aboneliği için tutulan birtakım bilgiler ve Powershell Function çalıştığı süre boyunca Powershell transcript özellğinden faydalanarak console yazılan her şeyin bir çıktısını da görebiliyorsunuz. İşin özeti bizim için en önemli dosya şimdilik Security Report adındaki dosya olduğunu söyleyebilirim. Şimdi biraz da bu dosya içeriğini inceleyelim.

Resim-7

CSV Dosyasını açtım ve artık içerisindeki değerleri görebiliyoruz. Bizim için nelerin kontrol edildiğini beraber daha rahat anlayabiliriz. Çalıştırdığımız Powershell Function yaptığı tüm testlerin detayları bu kısımda bulunmakta ve CSV dosyasının en sağ tarafında ‘Recommendation’ kısmına giderek neler yapmanız gerektiğini bulabilirsiniz. Ekran görüntüsü olarak paylaşmadım ama abonelik içerisinde hangi Resource‘dan dolayı başarısız sonuçları anlamanız içinde ‘CSV’ üzerinde ‘ResourceId’ kısmına bakarak kaynağınızı direk tanıyabilme ve bulma şansınız vardır. Daha fazla detay öğrenmek için lütfen “Visual Studio Enterprise – MCT“(Sizin aboneliğinizin ismi yazacaktır) klasörü içerisinde bulunan ‘Subscription.LOG’ isimli dosyayı özellikle incelemeyi unutmayın.

Daha farklı bir kullanama yöntemi olan ve parametrik olarak değerler alabilen bu komut, istersek bizlere ‘PDF’ olarak yukarıda gördüğünüz raporları sunabiliyor. Aslında fikir ve kullanım açısından çok hoş, eğer biden çok farklı aboneliğiniz var ise hepsi için tek tek ‘PDF’ çıktıları alıp ilgili iş birimlerini bilgilendirebilirsiniz. Gelin beraber kullanım şeklini inceleyelim.

Resim-8

## CSV olarak değil PDF olarak sonuç almak isterseniz aşağıdaki şekilde çalıştırabilirsiniz.

Get-AzSKSubscriptionSecurityStatus -SubscriptionId $SubscriptionId -GeneratePDF Portrait 

Yukarıda görebildiğiniz gibi yaptığım sadece ‘GeneratePDF‘ parametresini otomatik oluşacak rapor için yatay mı yoksa dikey mi olmasına karar vermem oldu. Talep ederseniz ilk kullandığımız komut (CSV ) sonuna ‘-DoNotOpenOutputFolder’ parametresini eklersek, bizim için herhangi bir ‘Windows Explorer’ açmayacaktır.

Resim-9

Elde ettiğimiz raporların detaylarına baktığımız zaman birçok güvenlik kriterleri ele alınmış durumda. Fakat ilgili Powershell komutu içerisine parametrik değerler göndererek almak istediğimiz arama standlarına göre (bunların belirli bir anahtar kelime listesi var örneğin; RBAX, SOX, AuthN) bu değerleri gönderdiğimiz zaman o spesifik bölümler için tarama/health check başlatabiliyorum. Gönderebileceğimiz parametreler ve anlamları aşağıdaki gibidir.

Resim-10

İlk başta bahsetmek istediğim iki adet parametre var. Bunların detaylarını yukarıdaki açıkladım. Paylaştığım bilgi doğrultusunda, bu parametrelerin alabileceği çok fazla değer var ve aşağıda bulunan liste içerisinde parametreleri kullanmaya karar verdiğinizde bu güvenlik etiketlerini kullanarak ‘Get-AZSKSubscriptionSecurityStatus’ parametre gönderip sadece belirlediğiniz güvenlik denetimine göre sonuç alabilirsiniz.

Resim-11

‘FilterTags’ ve ‘ExcludeTags’ alabilecek parametrik değerler yukarıdaki gibi olmalıdır. Şimdi bir örnek yapalım ve gelin nasıl kullanabildiğimizi beraber görelim.

Resim-12

# Filter Tags bazında arama yapabilmek.

# Example - 1 
Get-AzSKSubscriptionSecurityStatus -SubscriptionId $SubscriptionId -FilterTags "SOX"

# Example - 2
Get-AzSKSubscriptionSecurityStatus -SubscriptionId $SubscriptionId -FilterTags "SDL"

Yukarıda yapmış olduğumuz iki adet farklı örnek bulunuyor. Bu örneklerde görebileceğiniz gibi iki adet farklı tag isimleri göndererek sadece belirlediğimiz güvenlik kriterlerine göre aramalar yaptık. ‘SOX’ – uyum ve denetimi için ‘Get-AZSKSubscriptionSecurityStatus’ çalışacak ve ona uygun bir şekilde kontroller yapacaktır.

Diğer farklı bir kullanım yöntemi olan ve parametrik olarak gönderebileceğimiz bölüm ise ‘ControlIds’ parametresi bize Secure DevOps Kit for Azure için yapılan Control kriterleri bazında filtreleme şansı verecektir. Kullanım şekline beraber bakalım;

Resim-13

Yapmış olduğumuz örnek içerisinde görebileceğiniz üzere, ‘ControlIds‘ parametresi ‘Azure_Subscription_AuthZ_Limit_Admin_Owner_Count‘ eşit olan güvenlik kontrollerine göre rapor oluşturmasını talep ettim ve sadece onun özelinde bana tarama sonucu olan ‘CSV’ dosyasını yaratıyor olacak. Bu yaptığım aramanın sonucu yine Powershell Console üzerinde görebiliyorum ve ayrıca talep istersem, CSV ve PDF olarak çıktı alma şansım var.

Bu yazımız içerisinde AzSK Powershell modülünün sadece bir komutu olan ‘Get-AZSKSubscriptionSecurityStatus’ kullanarak nasıl health check raporları almamız üzerine konuştuk. Bir sonraki yazımızda bu Powershell fonksiyonun nasıl kullanıldığıni ve ne tür yetenekleri olduğunu anlatmaya devam edeceğiz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org 

TAGs:SecDevOps Azure, Secure DevOps Kit for Azure, Security for Azure

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Hasan Güral, Istanbul doğumlu ve uzun yıllardır bilişim sektöründe danışmanlıktan eğitmenliğe farkli pozisyonlarda görev almıştır. Üniversite eğitimiyle birlikte bilişim sektöründe Kibar Holding, Bilge Adam Bilgi Teknolojileri Akademisi ve PeakUp Bilgi Teknolojileri gibi farkli kurumlarda Kıdemli Danışman ve Eğitmen olarak sektöre yön veren projelerde yer almistir.Microsoft Azure alanında yapmış olduğu paylaşımlar ve katkılarından dolayı Microsoft Valuable Professional (Azure) unvanına hak kazanmıştır. Cloud teknolojilerinin otomasyon alaninda gelişmesiyle birlikte zamaninin bir çoğunu PowerShell, Event-Driven Orchestration, Infrastructure as a Code ve Configuration as a Code ile geçirmektedir.Kariyerine Ingiltere’de DevOps Engineer ve Automation Enthusiast rolü ile Cloud Rundle’da devam etmektedir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir