Category: Infrastructure

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

Bu bölüm içerisinde, Secure DevOps Kit for Azure – Bölüm 2 isimli makalemizi okuyup, temel abonelik seviyesinde Azure Kaynaklarının güvenliğini tarama komutlarını kullandığınızı düşünerek biraz daha ileriye götürecek senaryolar üzerinde durmaya çalışacağım. Temel tarama komutlarını kullandık ve kavramaya çalıştık artık bundan sonra neler yapabileceğimize odaklanacağız. Bildiğiniz gibi , ‘Get-AZSKSubscriptionSecurityStatus’ kullanılarak manuel bir tarama başlattığımızda, (otomatik olarak) açılan klasör içerisinde CSV dosyasının detaylarına baktığımız zaman AzSK ile yaptığımız taramada değerlendirilen tüm kaynaklar için elde edilmiş bir rapor ve log dosyası sağladığını unutmayalım. Elde ettiğimiz bu dosyaların tümünün detayına ve ne işe yaradıklarını bir önceki yazımızdan ulaşabilirsiniz.

AzSK ile yaptığımız güvenlik kontrollerinde, kontrol hatasını düzeltmek için gereken düzeltme(leri) otomatikleştirilebiliriz. AzSK bu senaryoyu ‘FixControls’ özelliği ile desteklemektedir. Bu özelliğin mevcut yapılan kontroller için AzSK tarafından kullanıcıların talebi ile bu düzeltmeleri uygulayabilmesi için otomatik bir şekilde oluşturabileceği Powershell Script’i yeteneğine sahiptir. Tahmin edebileceğiniz gibi pek çok yapılan kontrol için eğer sorun bulunduysa ve düzeltilmek isteniyorsa, bunların otomasyonu her zaman uygun değildir, çünkü yapılan kontrollerin düzeltilmesiyle ilgili iş akışı veya çalışan servislerin bağımlılıkları karmaşık olabilir. Sonuç olarak, bu özellik tüm kontroller için mevcut olmayabilir veya geçerli olmayabilir. Bu özelliği ‘Get-AZSKSubscriptionSecurityStatus’ komutuna ‘-GenerateFixScript’ parametresini eklediğimiz zaman bizim için abonelik içerisinde bulunan tüm kaynakları güvenlik kontrollerinden geçirir ve herhangi bir uyumsuzluk bulur ise bunlar için Powershell Script oluşturur ve bunu çalıştırmamız, bulunan sorunları düzeltmemiz için yeterlidir.



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

Secure DevOps Kit for Azure araçının kullanıma artık yavaştan girelim. Öncelikle AzSK için Powershell Module nasıl sahip olacağımıza ve ne tür ön gereksinimler olduğuna 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ü.
  • 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 bir takı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.



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

Öncelikle bu yazı serisi içerisinde DevOps ve SecOps kavramlarının ne olduklarının detaylarını girmek istemiyorum, bunların ne tür çalışma prensiplerine sahip olduklarının MsHowto üzerinden veya Internet üzerinden kolayca bulabilirsiniz. Secure DevOps Kit for Azure hakkında bilmemiz en önemli durum, bu araç/tool artık nasıl isimlendirmek isterseniz Microsoft’un geliştirmiş olduğu resmi bir ürünü değil, MS Core Services Engineering & Operations (CSEO) tarafından uygulanan en iyi pratikleri, yapılandırmaları ve güvenlik politikalarını topluluklar ile paylaşma girişimidir. Secure DevOps Kit for Azure (AzSK), Microsoft BT’nin Azure’u benimsemesini hızlandırmaya yardımcı olmak için Microsoft’taki MS Core Services Engineering & Operations (CSEO) bölümü tarafından geliştirildi ve bizlere kullanıma sunuldu. Az Secure DevOps Kit, Yönetim ve Güvenlik üzerindeki kontrolleri sıkı sıkıya korurken, DevOps kültürünün farklı aşamalarında bulut kaynaklarını hızlı bir şekilde taramak, güvenli bir şekilde dağıtmak ve yönetmek için rehberlik sağlamak üzere AzSK ve onun belgelerine herkesin kolaylıkla erişebileceği bir araç veya yol gösterici olarak kullanılmaktadır.



Custom Resource Providers ve Azure Function Kullanım Örnekleri – Bölüm 3

Bir önceki yazımızda Azure Function örneğini deploy etmiş ve içerisinde bulunan function ile nasıl etkileşim halinde olduğunu ve aksiyon aldığından bahsetmiştik. Şimdi ise Azure aboneliği üzerine Custom Resource Provider tanımlamasının nasıl olduğunu anlayamaya çalışalım. Öncelikle Custom Resoırce Provider henüz general available olmadığı için tüm Azure Region’larında kullanma şansınız yok. Bu yüzden ben sadece destekleyenlerden biri olan, ‘EastUs’ özelinde devam edeceğim. Custom Resoırce Provider kesinlikle destekleyen Region’lar da oluşturulmalıdır.



Custom Resource Providers ve Azure Function Kullanım Örnekleri – Bölüm 2

Bir önceki yazımızda Custom Resoırce Providers kavramını tanımlamak ve ona bağlı olan komponentleri anlamak ile ilgilenmiştik. Bu yazımızda ise, Custom Resource Providers tanımlamasının nasıl olduğundan bahsediyor olacağız.

Custom Resource Provider nasıl tanımlanır?

Custom Resource Providers, Azure ile endpoint (Azure Function) arasında karşılıklı ilişkileri tanımlayan bir listedir. Bu karşılıklı tanımlamalar Azure’un herhangi bir endpoint ile nasıl etkileşime girmesi gerektiğini açıklar. Custom Resource Provider’lar bir proxy gibi davranır ve belirtilen endpoint için gelen istekleri alır ve yanıtları onlara iletir. Bu kısımda endpoint arkasında çalışan bizim geliştirdiğimiz bir adet Powershell Core yazılmış Script olduğunu düşünelim ve onu Azure Function hizmetine deploy edip, endpoint olarak kullanacağız Azure Function olmasının sebebi tamamen Azure Servislerinden faydalanmak. Bir Custom Resource Provider iki tür sözleşme/tanımlar modeli belirtebilir bunlar sırasıyla;

  • resourceTypes
  • Actions

Bunlar endpoint tanımlarını belirtirken kullanılır ve her ikiside farklı API özellikleri bizlere sunar ve onlar aracılığıyla etkileşim içine geçilebiliriz.

  • name,
  • routingType
  • endpoint.



Custom Resource Provider ve Azure Function Kullanım Örnekleri – Bölüm 1

Bir süredir yazmak istediğim seri ile karşınızdayım. Öncelike seriyi okumadan önce lütfen Mshowto Blog’u üzerinde ve internette takip edebileceğiniz Azure Resource Manager Template isimli yazıları okumanızı tavsiye ederim. Eğer Azure Resource Manager az bir seviyede aşina iseniz, bununla beraber kendinizi DevOps kültürünün bir parçası olduğunuzu farkettiğiniz zaman Infrastrature As Code ile uğraşmaya başladınız demektir. Temel amacımız bu yazı seri içerisinde vermek istediğimiz veya aktarmak istediğimiz konu Azure Resource Manager’ın bir parçası olan Custom Resource Provider kullanarak ve işin içerisine son zamanlarda gözde servisimiz olan Azure Function dahil ederek bu muhteşem ikilinin aralarında bulunan çalışma ilişkisini göstermek olacak. Bu terimleri yazımızın ilerleyen kısımlarında tek tek açıklıyor olacağım.



Bulut Çözümleri ve Ötesi Programı Tanıtım – YouTube Channel

Bulut Çözümleri ve Ötesi Programı, Bulut bilişim ve bilgi teknolojileri dünyasında yer alan, bu alanlarda danışmanlık yaparak farklı bulut platformlarında kendilerini uzmanlaştırmış profesyonel kişilerin bilgi ve deneyimlerini objektif bir şekilde aktardığı, izleyicisine teknik bilgi vermeyi amaçlayan içeriklerden oluşmaktadır.  Video içerikleri; Microsoft, Amazon, DevOps ve Open Source dünyasındaki yenilikleri ve teknik uzmanların deneyimlerini aktarmayı hedeflemektedir. Video serilerinde gerçek senaryolar üzerinden gidilerek, örnek uygulamalar yapılmaktadır. Kullanıcı deneyimlerinden çok ilgili bulut platformlarının sağladığı hizmetlere ilişkin detaylı teknik açıklamalara yer vermek, platformu kurmaktaki en birincil amacımızdır.

Cloud Solutions and Beyond Programme, which is involved in the world of Cloud Informatics and Information Technologies, consists of contents that aim to share the knowledge and experience of experts who have been consultant in these fields but also improved themselves in various cloud platforms or to provide technical informations for its own spectators.The main purpose of the contents is expounding informations and experiences of technical experts in platforms such as Microsoft,Amazon,Vmware and OpenSource. With following real scenarios in video series, instance implementations are being actualized. Rather than the end-user experiences, our first priority is to sharing technical explanations about services provided by the related cloud platforms.



Powershell – Diziler hakkında bilmek istediğiniz her şey – Bölüm 1

Uzun zamandır yazmak istediğim yazının ilk adımını atmış bulunuyorum. Powershell ile çok fazla zamanı geçiyorum fakat deneyimimi aktaracak derli toplu bir yazı olmadığını farkındayım bu yüzden Level 100 bir seri ile olan Powershell ile Diziler ( Array ) konusuna değineceğim. Konuya başlamadan önce kesinlikle bir uyarı yapmam gerekiyor, bunun en başı temel programlama bilgisinde olan değişken nedir, nasıl atanır gibi konulara göz gezdirmeniz olacaktır. Bu yazı hiçbir şekilde Değişken ( Variable ) gibi detayları kapsamıyor. Sizin bildiğinizi en azından Powershell içerisinde değişken nasıl oluşturulur, nasıl atanr gibi konulara ucundan hâkim olmanız yeterlidir.

Powershell Diziler Nedir, Ne için kullanmayalıyız?

En basit haliyle ‘Diziler’ nedir bunu bir anlayalım. Diziler, birden fazla aynı veya farklı tipte veri tipinin bir araya gelmesiyle oluşur. Bu veriler String, Integer, PSObject vd. gibi tipler olabilecegi gibi, kendi yazdigimiz nesneler de olabilir. Buna ek olarak birden fazla değişkeninde bir araya gelmesiylede oluşabilir diye tanımlayabiliriz. Çok geçmise gidersek, Matematikteki sonlu dizi adında bir konu var, oraya dönüp hafızayı pekiştirebilirsiniz. Yazımında devamında artık Dizilere ( ‘Array’ ) olarak sesleniyor olacağım bu yüzden kafanız karışmasın.

Array, birden çok öğenin bir koleksiyonu olarak işlev gören bir veri yapısıdır. Koleksiyon kelimesi çok önemli bunu lütfen aklınızda yer etmesini sağlayın. Koleksiyon dediğimiz zaman aklınıza elinizde birden fazla erişebildiğiniz bir değerler bütünü olduğunu hayal ediniz. Array’ler üzerinde yeni eleman ekleyebilir veya Array içerisinden belirlediğiniz bir elemana erişebilirsiniz.

Array oluşturmaya ilk adım

Powershell içerisinden değişken bildiğiniz üzere ‘$’ işareti ile başlanarak oluşturulmaya başlanır. Vereceğiniz değişken adını ‘$’ işaretinden sonra yazarsınız ve Powershell tarafından otomatik olarak algılanır ve ‘=’ eşittir ile atamasını gerçekleştirirsiniz. Hemen aşağıdaki basit kullanım ile başlayalım.



Powershell – Diziler hakkında bilmek istediğiniz her şey – Bölüm 2

Serimizin ilk yazısında, Powershell içerisinden Array kullanımı, oluşturma ve ne şekilde oluşturabileceğimiz üzerine değindik. Şimdi kaldığımız yerden hız kesmeden devam edelim.

Array içerisindeki eleman sayısı bulmak

Oluşturduğumuz array içerisinde kaç eleman var olduğunu merak ediyorsanız bunun için ‘Count’ niteliğini çağırarak değeri bulabilirsiniz.

Görüldüğü üzere sadece tanımladığım Array çağırıp onun özelliklerine indikten sonra, kaç elema olduğunu gördüm. Noktaya bastığınız birçok nitelik ve methodlar karşınıza çıkacaktır. Tek tek ne olduğuna Microsoft Web sitesinden bakabilirsiniz.



Powershell – Diziler hakkında bilmek istediğiniz her şey – Bölüm 3

Artık Array hakkında baya bir bilgi edindiğinimizi düşünüyorum ama yetmez diyebilirim. Geliştirdiğiniz Script, Workflow vd süreçlerde kesinlikle kullanacağınız farklı modeller olacaktır. Şimdi ise, Array içerisinden filter yapma sürecine değinelim.

Array ile Where kullanımı

En basit haliyle, Where-Object veya Where olarak bilinen bu cmdlet bizlere Pipeline sürecinden gelen değerleri filtreleme yapmamıza imkân sağlar. Daha yalın haliyle, Array içerisinde birçok elemanınız var bunların içerisinde çok özel bir karakteri olan veya belirli bir değere eşit olanları bulmak isteyebilirsiniz.

Bildiğiniz gibi yukarıdaki şekilde bir Array kollekisyonumuz bulunmaktaydı. Bunun üzerinden devam ederek Where kullanımı incelleyeceğim. İlk örnek ‘$myfirstArray’ array tipindeki değişken içerisinde ‘Where’ methodunu çağırarak bir Script Block içerisinde değerimi gönderip filtreleme işlemini yapmak. Yukarıdaki örnek içerisinde sadece ‘remote-pc4’ eşit olmayan değerleri dönmesini istedik. Eğer Powershell özelinde karşılaştırma operatörlerini bilmiyorsanız lütfen göz gezdirin. Mevcut bir programlama diline göre biraz farklılıklar var. Örnek olarak ‘==’ yerine ‘-eq’ olarak kullanılmaktadır. Bunun gibi detayları için önce karşılaştırma operatörlerini öğrenmenizi tavsiye ederim.