Uygulamaların banttan indirilmesi öyle bir noktaya evrildiki başarının yegane kriteri hız oldu. Bu rekabetin içinde bir uygulama paketlenip neredeyse göz açıp kapayıncaya kadar bir sürede dağıtıma çıkıyordu. Max Verstappen bile olan bitenin arkasından baka kaldı. Kendimizle yarışır olduk. Devops araç cennetine dönüşmüş, teknolojinin tüm nimetlerinden hoyratça istifade ediyorduk. Herkes mutluydu. Geliştiricisi, sistemcisi, operasyoncusu, iş birimi, müşterisi…vb Yeni bir özellik mi geldi. Geliştir, commitle sonra sür banda bir günde üretim ortamında yerini alsın. Bu kasvetli teknoloji dünyasında üç beş gün şad olduk tabi. Ta ki ıssız acunun vebası ortaya çıkana kadar: Zafiyetler. Her fani nizam gibi bu işin de bir sonu varmış.
Önce regülasyonlar çıktı karşımıza. Sonra bilgi güvenliği saikleri. Derken uygulama güvenliği tartışılır oldu. DAST, SAST, IAST, SCA ve ASPM kavramlarının içinde bulduk kendimizi. Kodun kılcallarına kadar inen bu AST (Application Security Testing) araçları haksız da sayılmazdı. Dünyayı kasıp kavuran Log4j (CVSS 10) vebası gösterdi ki kurumların geliştirdikleri uygulamalarda ciddi zafiyet söz konusu olabiliyordu. Dolayısıyla uygulamaların geliştirmeden dağıtımına kadar ki süreç güvenlik saikleriyle yeniden değerlendirilecekti. Böylece DevOps yerini DevSecOps’a bıraktı. Artık herşeyin entegre edildiği DevOps’da güvenlik bileşenleri de nasibini aldı. Böylece güvenlik hızdan daha önemli hale geldi. Nitekim ihmal edilmiş bir güvenlik kontrolünün bedeli çok ağır olmaktaydı. DevOps’un felsefesi olan hız, DevOps’un ömrünün de çabucak tükenmesinin sebebi oldu.
Son zamanlarda sıkça yaşadığımız güvenlik olayları (Log4j, Solarwinds…vb) gösterdi ki uygulama güvenliği kurumlar için hayati bir öneme sahip. Yapılan bir araştırmaya [1] göre kurumlara ait kodların %98’i open-source bir bileşen içermektedir. Ayrıca kurumların %52’de open-source bağımlılıkları, komponent versiyonları veya kütüphaneler olmak üzere bir envanter çalışması yapılmamaktadır. Kurum içinde bu bileşenlere yönelik zafiyet kontrolleri de bulunmamaktadır. Kurum içinde geliştirilen uygulamaların geliştirmeden dağıtıma kadar farklı DevOps evrelerinde güvenlik kontrollerine tabi tutulması uygulama güvenliğinin en önemli adımıdır. Kod aşamasında xss, sql injection, buffer overflow…vb gibi zafiyetler tespit edilirken çalışan bir uygulamada kimlik doğrulama veya konfigürasyon hataları gibi uygulamanın davranışıyla alakalı zafiyet tespit edilebilmektedir. Bu nedenle uygulamanın geliştirilmesinden canlı ortamda alınmasına kadarki her aşamada AST uygulamaları ile güvenlik testlerinin yapılması önemlidir. Bu testlerin otomasyonun sağlanması ve SDLC’ye entegre edilmesi DevSecOps olarak ifade edilmektedir.
DevSecOps ile ekipler uygulama yaşam döngüleri boyunca (SDLC) sürekli olarak güvenlik uygulamaları entegre edilir.Güvenlik kontrollerini işlem hattının sol tarafına kaydırmak DevOps günlerinde olduğu gibi dağıtımı hızını arttırırken güvenliğin sağlanmasını da yerine getirir. Ayrıca bir zafiyete geliştirme aşamasında müdahale etmek en düşük maliyetli yaklaşımdır.Otomatize edilmiş politikalar ile CI/CD’de güvenlik ve hız olmak üzere her iki ihtiyaç da dinamik bir şekilde sağlanabilir.
DevSecOps Nedir?
DevSecOps, Geliştirme, Güvenlik ve Operasyonları ifade eden kelimelerin kısaltmalarından oluşturulmuş bir terminolojidir. Yöntem olarak uygulamaların geliştirilmesinden banttan indirilmesine kadar ki aşamalarda güvenlik uygulamalarını süreç içerisine entegre eden bir yaklaşımdır. DevSecOps, geliştiriciler ile güvenlik ekipleri arasında sürekli bir iş birliği ile ‘Güvenli Kod Geliştirme’ kültürünü oluşturmayı hedefler. DevOps modeli uygulama geliştirme (Dev) ve operasyonu (Ops) birleştirmeye odaklanmaktaydı. Amaç sistemlerin geliştirme yaşam döngüsünü kısaltırken iş ihtiyaçları ile sıkı bir uyum içinde özellikler (feature), düzeltmeler (fix) ve güncellemeleri (update) hızlı bir şekilde sunmaktı. DevSecOps bu modeli, geliştirme ve dağıtım süreçlerine güvenlik önlemlerini daha derinden entegre ederek geliştirir. Amaç güvenliği uygulama yaşam döngüsünün ayrılmaz bir parçası haline getirmektir.
DevSecOps Yaklaşımının Faydaları Nelerdir?
Erken Aşamada Zafiyetlerin Tespiti: Güvenlik zafiyetleri geliştirme döngüsünün daha erken aşamalarında tespit edilir ve giderilir.
Maliyet Avantajı: Güvenlik sorunlarını erken belirlemek ve düzeltmek dağıtım sonrası bunlarla ilgilenmekten genellikle daha az maliyetlidir.
Daha Hızlı ve Daha Güvenli Sürümler: Güvenliği CI/CD işlem hattına entegre etmek sürümlerin hem hızlı hem de güvenli olmasını sağlar.
Regülasyon: Veri gizliliği ve güvenliğine yönelik artan ve sıkılaşan düzenlemelere karşın kurumların uyumluluğuna yardımcı olur.
DevOps ve DevSecOps Arasındaki Fark Nedir?
DevOps’un temel ilkeleri otomasyon, sürekli teslimat ve hızlı geri bildirim döngülerini içerir. DevSecOps, güvenlik uygulamalarını uygulama geliştirme yaşam döngüsünün temel bir bileşeni olarak entegre ederek DevOps kapsamını genişletir.
DevSecOps güvenlik önlemlerini ayrı veya son adım olarak ele almak yerine planlama aşamasından dağıtıma kadar dahil etmeyi hedefler.
Sola Kaydırma (Shift-Left) Yaklaşımı
DevSecOps’un temel yaklaşımı güvenliği geliştirme sürecinin erken aşamalarında entegre etmeyi amaçlayan ‘Sola Kaydırma’ yaklaşımıdır. Bu yaklaşım, güvenlik sorunlarını çok daha erken bulmayı ve düzeltmeyi amaçlar. Genellikle bu sorunlar çözülmesi daha kolay ve daha az maliyetlidir. “Sola Kaydırma”daki amaç uygulamalara dair zafiyetin henüz kod aşamasındayken giderilmesidir. Yani geliştirmeden dağıtıma giden yolda güvenlik sorunlarını geliştirme aşamasında çözmektir.
DevSecOps, güvenliği sola kaydırarak reaktif bir güvenlik yaklaşımından ziyade proaktif bir yaklaşımı teşvik eder.
Bu otomatik güvenlik araçlarının Sürekli Entegrasyon/Sürekli Dağıtım (CI/CD) işlem hattına entegre edilmesini içerir. Böylece kod geliştirilirken otomatik tarama ve güvenlik açıklarınının test edilmesi sağlanır.
Güvenlik sadece güvenlik uzmanlarının görevi olmayıp tüm ekip üyeleri arasında paylaşılan bir sorumluluk olarak ele alınır. Bu geliştiricilerin de otomatik araçlar ve süreçler tarafından desteklenen kodlarının güvenliğinden sorumlu olduğu bir kültürü teşvik eder.
DevSecOps’un Temel Bileşenleri
- Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD)
Sürekli Entegrasyon (CI), birden çok katkıda bulunanın kod değişikliklerini tek bir projede otomatik olarak entegre etme pratiğidir.
Sürekli Dağıtım (CD), CI’ı genişleterek derleme aşamasından sonra tüm kod değişikliklerini otomatik olarak bir test veya üretim ortamına dağıtır.
DevSecOps’ta CI/CD işlem hatları güvenlik kontrollerini ve dağıtımları otomatikleştirmek için hayati öneme sahiptir.
Güvenlik testleri bu işlem hattına entegre edilir ve her kodun güvenlik açıkları için tarandığı taahhüt edilir.
Bu otomasyon takımların güvenlik sorunlarını hızlı bir şekilde tespit edip düzeltmelerini sağlar. Güvenliği feda etmeden yüksek geliştirme hızını korur.
DevSecOps’ta otomatik güvenlik testi şunları içerir:
- Statik Uygulama Güvenlik Testi (SAST)
- Dinamik Uygulama Güvenlik Testi (DAST)
- İnteraktif Uygulama Güvenlik Testi (IAST)
- Yazılım Bileşen Analizi (SCA)
- Uygulama Güvenlik Duruşu Yönetimi (ASPM)
Bu testler geliştirme sürecinin çeşitli aşamalarında farklı türdeki güvenlik açıklarını belirlemek için tasarlanmıştır.
Bu otomatik güvenlik testleri kodun güvenlik duruşunun sürekli olarak değerlendirilmesini sağlayacak şekilde CI/CD işlem hattına entegre edilir. Bu testleri otomatikleştirerek DevSecOps güvenlik değerlendirmelerinin kapsamlı olması ve geliştirme sürecini yavaşlatmaması sağlanır.
- Gerçek Zamanlı Güvenlik Takibi
Gerçek zamanlı güvenlik takibi uygulamalar, altyapı, güvenlik tehditleri ve anomaliler için sürekli olarak izlemeyi ve takibi içerir. Gerçek zamanlı izleme için kullanılan araçlar bir güvenlik ihlalini gösterebilecek olağandışı etkinlikleri tespit edebilir. Güvenlik ve operasyon ekiplerine anında uyarılar sağlar. Bu bileşen uygulamaların ve altyapının güvenlik durumuna ilişkin görünürlüğü sürdürmek için DevSecOps’ta kritik öneme sahiptir. Güvenlik gerçek zamanlı olarak izleyerek takımlar tehditlere daha hızlı yanıt verebilir.
- Otomasyon Araçları
- Konteyner Güvenliği
- Bulut Test Araçları
- Uygulama Güvenlik Testi (AST)
DevSecOps En İyi Pratikleri
DevSecOps’u uygulamak güvenlik için ortak sorumluluk anlayışı ve geliştirme yaşam döngüsüne (SDLC) güvenliği sorunsuz bir şekilde entegre etmek için otomasyonun kullanımı kritiktir. Bu nedenle güvenlik en iyi pratikleri konusunda sürekli eğitim, işbirliği ve paylaşılan sorumluluk kültürü benimsenmelidir.
DevSecOps’un sorunsuz bir şekilde uygulanmasına yardımcı olabilecek bazı en iyi pratikler şunlardır:
- Geliştirme, Operasyon ve Güvenlik Ekipleri Arasında İşbirlikçi Kültür
DevSecOps’u benimsemenin temel adımlarından biri geliştirme, operasyon ve güvenlik ekiplerinin yakın bir şekilde birlikte çalıştığı bir kültürü teşvik etmektir. Bu işbirlikçi yaklaşım güvenlik düşüncelerinin geliştirme süreci boyunca entegre edilmesini sağlar.
DevSecOps modelinde güvenlik tüm takım üyeleri arasında paylaşılan bir sorumluluktur. Bu her geliştirici, operatör ve güvenlik uzmanının uygulama güvenliğinden sorumlu olduğu anlamına gelir ve güvenlik konularında proaktif bir duruş sağlar.
- Güvenlik Uygulamalarında Düzenli ve Kapsamlı Eğitim
Güvenlik sathı ve tehdit vektörleri sürekli olarak evrim geçirmektedir. Geliştirme, operasyon ve güvenlik ekipleri için düzenli eğitim oturumları tüm üyelerin en son güvenlik uygulamaları, araçlar ve güvenlik açıkları konusunda güncel kalmasını sağlar.
Eğitim programları araçlar ve teknolojilere odaklanmalıdır. Güvenlik öncelikli bir bakış açısı sağlanmalıdır. Bu güvenliğin önemini anlama, potansiyel tehditleri tanıma ve güvenlik önlemlerini günlük görevlere nasıl dahil edilebileceğini içerir.
- Mümkün Olduğu Kadar Güvenliği Otomatikleştirme
Otomasyon özellikle CI/CD işlem hattı içinde güvenlik kontrollerini entegre eden DevSecOps’un temel ilkesidir. Kod taramayı, güvenlik açığı değerlendirmelerini ve uyumluluk kontrollerini otomatikleştiren araçlar güvenlik uygulamalarının verimliliğini ve etkinliğini önemli ölçüde artırır.
Güvenlik görevlerini otomatikleştirmek insan hatası olasılığını azaltır ve güvenlik kontrollerinin tutarlı ve sürekli olarak gerçekleştirilmesini sağlar. Bu güvenlik açıklarını erken belirlemeye yardımcı olur ve ekiplerin insan müdahalesi gerektiren daha karmaşık güvenlik görevlerine odaklanmasını sağlar.
DevSecOps’u Benimsemekteki Zorluklar
DevSecOps süreçlerini ve iş akışlarını uygularken karşılaşılan bazı zorluklar şunlardır:
- Kurumsal ve Kültürel Engeller
DevSecOps’u benimsemenin temel zorluklarından biri kurumlar içindeki değişime karşı uygulanan doğal dirençtir.
DevSecOps modeline geçiş güvenliği son adım olarak görmekten çıkıp geliştirme süreci boyunca entegre etme zihniyetinde bir değişiklik gerektirir. Bunu zorluğu aşmak yönetim desteği ve DevSecOps’un faydalarının net olarak anlaşıldığı bir vizyon gerektirir.
DevSecOps geleneksel olarak silolanmış ekipler (geliştirme, operasyon ve güvenlik) arasında iş birlikteliği gerektirir.
Bu seviyede iş birliği bu ekiplerin yıllarca bağımsız olarak faaliyet gösterdiği kurulumlarda zor olacaktır. Ekipler arası iletişimi sağlamak ve sorumlulukların paylaşılması izolasyonu kırmak için kilit konudur.
DevSecOps’u uygulamak çeşitli güvenlik araçlarını geliştirme ve dağıtım hatlarına entegre etmeyi içerir.
Bu teknik zorluk özellikle eski sistemlerin bulunduğu karmaşık ortamlarda ciddi bir efor gerektirir. Bu nedenle
mevcut iş akışlarına sorunsuz bir şekilde entegre olan ve kapsamlı güvenlik özellikleri sağlayan doğru araçları seçmek hayati önem taşır.
DevSecOps geliştirme, operasyon ve güvenlik becerilerinin bir karışımını gerektirir.
Ancak birçok ekip gerekli güvenlik bilgisine veya deneyimine sahip olmayabilir. Kurumlar tüm ekip üyelerinin DevSecOps süreçlerine etkin bir şekilde katkıda bulunabilmesi için iş gücünü eğitme ve yetkinliklerini artırmaya yönelik politika benimsemelidir.
Kapanış…
DevSecOps uygulanması ve benimsenmesi bahsedilen sebeplerden ötürü kurumlar için çok kolay değildir. Bu zorluklara karşın bir takım stratejiler ile DevSecOps’un uygulanması kolaylaştırılabilir. Öncelikle gün bir de tüm kapsamda çalışmak yerine kademeli geçiş yapmak uygundur. Küçük ve yönetilebilir projelerle başlamak, ekiplerin yeni iş akışlarına alışmasına ve DevSecOps’un değerinin daha kolay anlaşılmasına yardımcı olacaktır.
Değişime karşı direnci aşmak için tüm paydaşların beklentilerini anlamak esastır. Bu güvenliğin daha iyi sağlanması ve daha hızlı üretim ortamına çıkma gibi DevSecOps’un faydaları hakkında açık bir iletişim kurmayı gerektirir. Ayrıca paydaşların endişelerini ele almayı ve gerekli eğitimi sağlamayı da içerir.
Otomasyon, CI/CD işlem hattına güvenliği entegre etmekle ilişkili teknik zorlukları hafifletmeye yardımcı olabilir. Otomatik güvenlik araçları rutin görevleri gerçekleştirebilir, ekipler üzerindeki yükü azaltabilir ve güvenlik uygulamalarının tutarlı bir şekilde uygulanmasını sağlayabilir. Bu nedenle işlevsel ve etkin araçların kullanılması DevSecOps’un başarısı için büyük önem taşımaktadır.
https://www.synopsys.com/software-integrity/resources/analyst-reports/open-source-security-risk-analysis.html