Mikro Servis Mimaride Uçtan Uca Güvenlik (DevSecOps)

Her firmanın IT operasyonlarının “Güvenlik” gündemi mutlaka vardır. Bu güne kadar “Güvenlik” kavramı ağırlıklı “Network” yani aslında “Erişim” üzerinden şekillenmiş bunun çevresinde odaklanmıştır. Teknoloji hızla dönüştükçe ve farklı yaklaşımlar ortaya çıktıkça burada da ciddi bir dönüşüm oluşmaktadır. Güvenlik konusunda farklı ürün ve çözümler özelinde ayrıca bir şeyler karalayacağım fakat günümüzde kafa karışıklığı sebep olan “Mikro Servis” güvenliği yada “Konteyner” güvenliği konusudur.
Öncelikle bu kavramları kafalarda netleştirmek için hepimizin bildiği, uyguladığı, dizayn ettiği geleneksel yaklaşımlarımızı bir kenara koyup kıyaslama yapmadan bu konuyu incelemek daha verimli olacağını tecrübe ettiğimi söyleyebilirim.
Mikro Servis mimarisi aslında içinde birden çok süreç ve akış barındıran devamlı yaşayan bir döngü. Bu döngünün içerisinde bizim geleneksel mimaride ayrı ayrı yaşattığımız sürdürdüğümüz bütün süreçler aslında kendi için bölümlenmiş ama tek bir çerçeve altın da birleştirişmiş diyebiliriz. Aşağıdaki görsel algoritmik olarak bu sürecin nasıl işlediğini sade bir bir biçimde aktarmaktadır.

Tarihsel olarak, uygulamaların ve altyapının güvenliğini sağlamak, geliştiriciler (uygulama yazanlar), IT operasyon mühendisleri (uygulamaları dağıtan ve yöneten) ve bilgi güvenliği analistleri (siber güvenlik uzmanları) gibi farklı paydaş türleri arasında işbirliği gerektiriyordu.
DevSecOps Nedir ? Diye bir açıklama yapmak istersek, DevSecOps güvenliği, yazılım teslim yaşam döngüsünde rol oynayan tüm paydaşların ortak sorumluluğu haline getiren bir stratejidir.
DevSecOps’un temel amacı, güvenliğin bir “Çerçevede” bırakılmak veya sonradan düşünülmek yerine, yazılım tesliminin her aşamasına entegre edilmesini sağlamaktır . Pratikte bu, güvenlik değerlendirmesi ve optimizasyonunun (yazılım tesliminde ilk aşama olan) kodlama sürecinde başladığı ve test, hazırlama, devreye alma ve yönetim süreçleri boyunca devam ettiği anlamına gelir.
Aşağıdaki görsel ile yazı başındaki görseli tamamladığımızda ise aşağıdaki gibi bir güvenlik kapsamı ve işlevleri karşımıza çıkmaktadır. Burada da hem bu yazımda faydalandığım hemde aşağıdaki görseldeki süreci işleten Sysdig ürünü örnek olarak gösterebiliriz.

DevSecOps, DevOps’un temelindeki ilkeleri temel alır . DevOps, geliştiricileri ve IT operasyon mühendislerini, uygulama kalitesini düşürebilecek veya kullanıcı deneyiminin olumsuz etkileyebilecek yanlış iletişimleri ve gecikmeleri önlemek için geliştirme döngüsünün tüm aşamalarında yazılım tesliminin ortak mülkiyetini almaya teşvik eder. DevOps ayrıca yazılım planlama, kodlama, oluşturma, test etme, devreye alma ve yönetim süreçlerini sürekli bir “sonsuzluk döngüsüne” dönüştürmeyi hedefliyor.
Ancak DevOps tek başına güvenliği kapsamaz. 2000’lerin sonlarında DevOps felsefesi ortaya çıktığında, yalnızca geliştirme ve IT operasyonlarını entegre etmeye odaklandı.
DevSecOps, denkleme güvenlik ekleyerek DevOps’u genişletir . DevSecOps’u benimseyen işletmeler, yalnızca geliştiriciler ve IT Ops ekipleri arasındaki işbirliğini değil, aynı zamanda güvenlik uzmanları arasındaki işbirliğini optimize etmeye çalışır. Ve nihayetinde, geliştirme, operasyonlar ve güvenlik arasındaki engelleri yıkmak ve bilgi yaymak için çalışırlar, böylece bu alanlar tek bir paylaşılan uzmanlık alanında birleşir.
Faydalar
Ne tür bir iş yürütürseniz yürütün, DevSecOps, güvenlik sonuçlarını iyileştiren bir dizi temel avantaj sunar:
- Proaktif güvenlik : DevSecOps, güvenlik sorunlarının önüne geçmeyi kolaylaştırır . Başından itibaren güvenli olan uygulama mimarileri tasarlayarak ve yalnızca güvenlik ekiplerini değil, aynı zamanda geliştiricileri ve BT mühendislerini de güvenlik risklerini en iyi nasıl önleyebileceklerine dair kendi bakış açılarını getirmeye hazırlayarak işletmelerin bir tespit-yanıt modelinin ötesine geçmesine yardımcı olur.
- Güvenlik üzerinde ortak mülkiyet : DevSecOps ile, hem güvenlik başarılarının hem de başarısızlıklarının sorumluluğu tüm paydaşlar tarafından toplu olarak paylaşılır . Kültürel bir bakış açısıyla, geliştiricilerin, BT mühendislerinin ve güvenlik ekiplerinin bir ihlal olduğunda birbirlerini suçlamalarından veya aslında tamamen kendi başlarına başaramadıkları güvenlik kazanımlarının hakkını vermelerinden daha sağlıklıdır.
- Kolaylaştırılmış uygulama teslimi : İşletmeler, güvenliği en baştan uygulama teslimine dahil etmek için DevSecOps’u kullandıklarında, güvenlik araçlarının veya süreçlerinin uygulama teslimini yavaşlatma riskini azaltırlar. Örneğin, DevSecOps, güvenlik analistlerinin , uygulamanın devreye alınmasından hemen önce ortaya çıkan bir güvenlik kusurunu tespit etmek için geliştiricilerden uygulama kodunu yeniden yazmalarını istemeyeceği anlamına gelir. DevSecOps ile bu tür sorunlar daha erken ele alınabilir ve bu da daha güvenilir ve tutarlı uygulama teslim döngülerine yol açar.
- Tekrarlanabilir güvenlik süreçleri : DevSecOps, çeşitli paydaşların güvenliğe yaklaşması için sistematik bir yol sağlayarak güvenlik süreçlerinin tekrarlanabilir ve güvenilir olmasına yardımcı olur . Başka bir deyişle, DevSecOps, güvenliği geçici, duruma göre bir işlemden, işletmenin herhangi bir bölümündeki herhangi bir uygulama teslim döngüsüne uygulanabilen sistematik bir süreçler grubuna dönüştürür.
- SBOM görünürlüğü : DevSecOps, güvenlik sürecindeki birden fazla paydaşın etkili bir şekilde birlikte çalışmasına yardımcı olarak işletmelerin, yazılımın tüm aşamalarında yazılım oluşturmaya giden tüm bileşenleri ve kaynakları belgeleyen Yazılım Malzeme Listeleri veya SBOM’lar oluşturmasına yardımcı olabilir.
DevSecOps Nasıl Çalışır?
DevSecOps katı bir uygulama veya araç seti değildir. Bunun yerine, işletmelerin güvenliğe yaklaşım biçimini yöneten bir kavram veya felsefedir. Ekiplerin DevSecOps’u eyleme geçirme şekli, desteklemeleri gereken uygulama türleri ve altyapı ve karşılaştıkları belirli risk türleri veya uyumluluk zorunlulukları gibi faktörlere bağlı olarak değişir. Bu nedenle, ” DevSecOps nasıl çalışır?” sorusuna verilecek evrensel bir yanıt yoktur. “
Ancak ekiplerin DevSecOps’u kullanmaya başlamasına yardımcı olabilecek eyleme dönüştürülebilir yaklaşımlar vardır. DevSecOps’un işletmenizde çalışmasını sağlamak istiyorsanız, genellikle aşağıdaki öğeleri tanımlamanız gerekir:
- DevSecOps hedeflerini belirleyin : Öncelikle, neden DevSecOps’u benimsediğinizi ve özellikle bundan ne elde etmeyi umduğunuzu belirleyin. Örneğin, güvenlik sorunları tarafından tetiklenen daha az yazılım teslim gecikmesi mi yoksa toplam güvenlik ihlallerinde bir azalma mı? DevSecOps’un hedefleri bir işletmeden diğerine değişir, bu nedenle DevSecOps’a başlamak için kendi hedefinizi belirlemek önemlidir.
- Bir DevSecOps çerçevesi oluşturun : Bir DevSecOps çerçevesi, DevSecOps’a yaklaşımınızı yönetecek belirli prosedürleri ve kuralları tanımlar. Örneğin, DevSecOps çerçeveniz, Kod Olarak Altyapı (IaC) şablonlarının içlerindeki güvenlik açıklarını önlemek için nasıl yapılandırıldığına ilişkin ilkeler oluşturabilir. Veya bir uygulamanın dağıtılmadan önce hangi otomatikleştirilmiş güvenlik testlerinden geçmesi gerektiğini tanımlayabilir.
- DevSecOps süreçlerini başlatın : Bir DevSecOps çerçevesine sahip olduğunuzda, belirli DevSecOps süreçlerinin sorumluluğunu üstlenecek belirli ekip üyelerini atayarak bunu eyleme geçirebilirsiniz .
- DevSecOps’u Ölçün : Bir DevSecOps girişimi başladıktan sonra, girişimin başarısını sürekli olarak ölçmek en iyi uygulamadır. DevSecOps hedeflerinizi ne kadar iyi karşıladığınızı belirlemek ve zaman içinde DevSecOps etkinliğindeki değişiklikleri ölçmek için ölçümler toplayın.
Güvenlik Araçları
Her kuruluşun DevSecOps yolculuğu benzersiz olduğundan, her işletmenin ihtiyaç duyduğu evrensel bir DevSecOps araçları seti yoktur. Ancak, genel olarak, çoğu DevSecOps girişimi, DevSecOps araçlarının aşağıdaki temel kategorilerinden yararlanacaktır:
- Statik uygulama güvenlik testi (SAST) : SAST çözümleri, bir uygulamanın içeriğini tarayarak ve değerlendirerek uygulama kaynak kodundaki ve ikili dosyalardaki kusurları ve güvenlik açıklarını belirlemeye yardımcı olur. SAST, bir uygulama dağıtıma doğru ilerlemeden önce riskleri yakalamak için yazılım tesliminin ilk aşamalarında en kullanışlıdır.
- Yazılım bileşimi analizi (SCA) : SCA araçları, kullandığınız açık kaynak paketleri veya modüller gibi üçüncü taraf yazılımların bileşenlerini tanımlamanıza yardımcı olur. DevSecOps için SCA, üçüncü taraf bağımlılıklarının diğer uygulamalara entegre edilmeden önce güvenli olmasını sağlamaya yönelik önemli bir araç türüdür.
- Dinamik uygulama güvenlik testi (DAST) : DAST araçları, uygulamaların statik sürümlerini incelerken ekiplerin gözden kaçırmış olabileceği güvenlik açıklarını ve zayıflıkları tespit etmek için canlı uygulamalara karşı güvenlik testleri gerçekleştirir.
- Etkileşimli uygulama güvenlik testi (IAST) : IAST, hem SAST hem de DAST öğelerini birleştiren daha yeni bir güvenlik aracı kategorisidir. Genel olarak, IAST araçları riskleri belirlemek için (bu onları DAST’a benzer kılar) dinamik güvenlik testi kullanır, ancak aynı zamanda riskleri onları tetikleyen kaynak koduna (bu da onları SAST’a benzer kılar) kadar izlemeye çalışır.
Belirli ortam türlerini destekleyen DevSecOps ekipleri ek araçlar kullanmak isteyecektir. Örneğin, bulut iş yükleri için Bulut Güvenliği Duruş Yönetimi (CSPM) araçları, bulut ortamlarına güvenlik riskleri getirebilecek yapılandırma hatalarını tespit etmek için kullanışlı araçlardır, bu araçları kullanılabilir. Aynı şekilde, Kubernetes üzerinde dağıtılan iş yükleri için DevSecOps ekipleri, ayrıcalıklı konteynerler gibi Kubernetes mimarisine özgü riskleri tespit edebilen güvenlik araçlarından yararlanmalıdır.
Sysdig Secure
Barış YILMAZ