Blog

DevOps ve DevSecOps: Temel İlkeler ve Farklar

DevOps Neden Yetersiz Kaldı? Güvenlik İhtiyacı ve DevSecOps’un Doğuşu

1. DevOps’un Ortaya Çıkışı

DevOps kavramı, yazılım geliştirme (Development) ile BT operasyon (Operations) ekipleri arasındaki kopukluğu gidermek amacıyla ortaya çıkmıştır. Terim ilk olarak 2009 yılında O’Reilly Velocity konferansında John Allspaw ve Paul Hammond “10+ Deploys per Day: Dev and Ops Cooperation at Flickr” sunumuyla duyuldu. Bu sunumda, Flickr ekibinin günde onlarca kez kodu canlı ortama sorunsuz biçimde deploy edebilmesi için geliştiriciler ile operasyon ekiplerinin yakın iş birliği içinde çalışması gerektiği vurgulandı. Kısacası, geleneksel silo mantığını kırıp geliştirme ve operasyon süreçlerini entegre etme fikri doğdu ve DevOps adıyla anılan bir harekete dönüştü.

2. Devops’un Temel Prensipleri

DevOps sadece bir araç veya görev tanımı değil, bir kültürel dönüşüm ve prensipler bütünüdür. Bu yaklaşımın temel prensipleri kısaca şöyledir;

  • İş Birliği ve Ortak Sorumluluk: Geliştirme ve operasyon ekipleri arasında yakın iş birliği kurularak ürünün sorumluluğunun birlikte paylaşılması. Amaç, herkesin “biz” bilinciyle aynı hedefe yönelmesidir.
  • Otomasyon (Automation): Tekrarlayan görevlerin mümkün olduğunca otomatikleştirilmesi. Otomasyon, hataları azaltmak ve verimliliği artırmak için sürekli entegrasyon, sürekli teslimat gibi araç ve tekniklerin kullanımı içermektedir. Özellikle bu çerçevede İş Süreci Otomasyonu, Endüstri 4.0 , ERP gibi konulara göz atabilirsiniz.
  • Yalınlık (Lean): Değer katmayan veya teslimatı yavaşlatan gereksiz süreçlerin ortadan kaldırılması. Yalın prensipler benimsenerek geliştirme-işletim süreçleri mümkün olan en sade hale getirilir.
  • Ölçüm: Süreçlerin ve sistemlerin performansının ölçülmesi ve izlenmesi. Veriye dayalı karar alabilmek için metriklerin toplanması ve analiz edilmesi esastır.
  • Paylaşım (Şeffaflık): Ekipler arasında bilgi ve deneyimlerin paylaşılması, iletişim artırılması. Başarıların ve başarısızlıkların şeffafça paylaşılması, sürekli öğrenmeyi ve iyileştirmeyi teşvik eder.

Bu prensipler lüteratürde kısaca CAMS (Culture, Automation, Measurement, Sharing) olarak anılır; bazı kaynaklar “Lean” ilkesini de ekleyerek CALMS şeklinde genişletir. Lean de kendi çerçevesinde bir yönetim ilkesi olarak değerlendirilir Lean Management felsefesi altında 4 ilkeye sahiptir (Pull, One Piece Flow, Zero Defects, Continuous Improve Process). Böylece temel olarak DevOps’un temelinde, kültür değişimi ile ekipler arası bariyerleri kaldırmak, süreçleri otomasyon ve ölçümlerle destekleyerek hızlı ve kaliteli yazılım teslimatı yapabilmek yatar.

3. DevOps’un SDLC’deki Rolü

 Yazılım Geliştirme Yaşam Döngüsü (SDLC), yazılım geliştirme sürecinin sistematik ve aşamalı bir şekilde yürütülmesini sağlayan bir çerçevedir.

SDLC, yazılımın fikir aşamasından canlı ortama alınmasına ve bakımına kadar olan tüm süreçleri kapsamaktadır.

DevOps ve DevSecOps, SDLC’nin farklı aşamalarına etki ederek yazılım teslimatını hızlandırmayı ve güvenli hale getirmeyi amaçlar. SDLC’nin DevOps ve DevSecOps’taki rolünü şu şekildedir;

3.1 Geleneksel SDL Modelinde Yaşanan Zorluklar

Klasik SDLC modellerinde (Örneğin Waterfall Modeli), yazılım geliştirme süreci genellikle aşağıdaki aşamalardan oluşur:

  • Gereksinim Analizi: İş ihtiyaçları belirlenir.
  • Tasarım: Sistem mimarisi oluşturulur.
  • Geliştirme: Yazılım kodlanır.
  • Test: Yazılımın hatasız çalıştığı doğrulanır.
  • Dağıtım: Ürün canlı ortama alınır.
  • Bakım ve Destek: Çalışan sistemin performansı izlenir ve iyileştirmeler yapılır.

Bu modelde her aşama sıralı bir şekilde ilerlediğinden dolayı geri dönüşler ve düzeltmeler zor ve zaman alıcıdır. Özellikle güvenlik testleri en sona bırakıldığı için tespit edilen güvenlik açıklarının düzeltilmesi maliyeti artırır ve teslimat süresini uzatır.

3.2 DevOps ve SDLC

DevOps, SDLC’nin her aşamasını hızlandırarak ve sürekli entegrasyon (CI/CD) yaklaşımı ile süreci otomatize ederek geliştirme döngüsünü optimize eder.

  • Geliştirme ve Test Aşamaları Arasındaki Duvarları Kaldırmak: Geleneksel SDLC’de geliştirme ve test ekipleri birbirinden ayrıdır. DevOps, bu iki ekibin birlikte çalışmasını sağlayarak kodun daha hızlı test edilmesine ve sorunların erken yakalanmasına olanak tanır.
  • Otomatikleştirilmiş Sürekli Entegrasyon (CI) ve Sürekli Teslimat (CD): DevOps yaklaşımı, SDLC’de manuel süreçleri kaldırarak yazılım değişikliklerinin otomatik olarak test edilmesini ve hatta bunu modernizasyona uyarak otomatize edilmiş yapay zeka temelli olan araçlarla test edilmesini sağlamak mümkündür.
  • Sürekli İzleme: Dağıtım sonrası performans izleme yapılmaktadır.
  • Hızlı Geri Bildirim Döngüsü: Yazılımın her aşamasında hızlı geri bildirim sağlanarak müşteri taleplerine daha hızlı yanıt verilir.

Sonuç olarak, DevOps SDLC’yi daha çevik ve otomatik hale getirir, böylece yazılım geliştirme süreçleri daha hızlı ve verimli olur.

3.3 DevSecOps ve SDLC

DevSecOps, SDLC’nin her aşamasına güvenliği entegre eder. Geleneksel SDLC’de güvenlik, son aşamada test edildiği için kritik güvenlik açıkları geç fark edilir ve düzeltilmesi uzun zaman alır. DevSecOps, “Shift Left” yaklaşımını benimseyerek güvenliği en baştan itibaren sürecin içine dahil eder.

  • Gereksinim Analizi: Güvenlik gereksinimleri en baştan belirlenir.
  • Tasarım: Tehdit modelleme yapılır, güvenli yazılım mimarisi oluşturulur.
  • Geliştirme: Kod yazılırken statik kod analizi (SAST) gibi güvenlik testleri uygulanır.
  • Test: Otomatikleştirilmiş güvenlik taramaları ve sızma testleri yapılır Veya dinamik olarak    test etmek gibi (DAST çerçevesinde Probely , ZAP vb.)
  • Dağıtım: Güvenlik kontrollerinden geçmeyen kod üretim ortamına alınmaz.
  • Bakım & İzleme: Canlı ortamda güvenlik açıklarını sürekli izleyen ve raporlayan sistemler devreye girer (DAST vb.).

Bu entegrasyon sayesinde DevSecOps, SDLC’yi sadece hızlı değil, aynı zamanda güvenli hale getirir.

4. DevSecOps’un Ortaya Çıkışı

DevOps’un benimsenmesiyle geliştirme – işletim süreçleri hız kazandı ve daha sık dağıtım yapma yeteneği kazanıldı. Ancak bu yüksek hız ve sıklık, beraberinde yeni bir sorun alanı getirdi:

Güvenlik.

Geleneksel olarak yazılım güvenliği testleri ve kontrolleri, geliştirme döngüsünün sonucunda veya dağıtımdan hemen önce gerçekleştiriliyordu. DevOps kültürüyle yazılım haftalar yerine günler, hatta saatler içinde canlıya alınabilir hale gelince, güvenlik ekiplerinin eski yöntemlerle bu tempoya ayak uydurması zorlaştı.

İşte bu noktada “güvenliği baştan entegre etme” ihtiyacı doğdu. Yazılımın güvenli olup olmadığını en son aşamada kontrol etmek yerine, en baştan itibaren güvenliği sürece dahil etmek gerektiği anlaşıldı. Literatürde bu yaklaşıma “shift-left” (güvenlik kontrollerini süreç içinde daha sola, yani geliştirme döngüsünün erken safhalarına kaydırma) adlı verilir. Böylece güvenlik, geliştirme döngüsünün en başından itibaren birincil vatandaşı haline gelir. Bu ihtiyaçlar sonucunda DevSecOps kavramı ortaya çıktı.

DevSecOps terimi, Development (Geliştirme), Security (Güvenlik) ve Operations (Operasyon) kelimelerinin birleşiminden oluşur ve DevOps hareketinin doğal bir evrimi olarak görülebilir. 2010’ların ortalarından itibaren dillendirilmeye başlanan bu yaklaşım, geliştirme operasyon süreçlerine güvenliği entegre etmeyi amaçlar. Yani DevOps’un “hızlı ve birlikte çalış” felsefesine “Güvenliğe önden önem ver” felsefesi eklenmiştir. Sonuç olarak DevSecOps, güvenliğin yazılım yaşam döngüsü (SDLC) boyunca izole bir adım olmaktan çıkıp her adımda gömülü olmasını sağlar. Bu sayede güvenlik, sonradan eklenen bir denetim değil, en baştan düşünülen ve uygulanan bir unsur haline gelir.

4.1 DevSecOps’un Güvenlik Açısından Katkısı ve Modern Süreçlerde Dönüşüm

DevSecOps, ortaya çıktığı boşluğu doldurarak günümüzün hızlı yazılım süreçlerinde güvenlik ile hız arasındaki dengeyi kurmuştur. Güvenlik ihtiyaçları açısından doldurduğu boşluk, DevOps dünyasında sıklıkla yaşanan güvenlik taramaları, sorun bulunduğunda dağıtımı geciktirebiliyor veya pahalı düzeltmelere yol açabiliyordu. DevSecOps sayesinde güvenlik kontrolleri en baştan sürekli uygulandığı için, açıklar daha erken yakalanır ve giderilir, böylece son dakika sürprizleri en aza iner.

Modern yazılım geliştirme süreçlerinde DevSecOps’un getirdiği dönüşüm çok boyutludur;

  • Kültürel Dönüşüm: DevSecOps, DevOps’un iş birliği kültürünü bir adım ileri taşıyarak güvenliği paylaşılan bir sorumluluk haline getirir​. Artık sadece güvenlik ekibinin değil, geliştiriciden sistem yöneticisine herkesin güvenlik konusunda rolü vardır. Ekipler içinde “Security Champion” (Güvenlik Elçisi) gibi yeni roller ortaya çıkabilir veya her ekip üyesi temel güvenlik bilgileriyle donatılır. Sonuç olarak, bir güvenlik açığı tespit edildiğinde “bu güvenlikçinin işi” demek yerine, tüm ekip proaktif şekilde sorumluluk alır.

  • Süreç Entegrasyonu: DevSecOps, güvenlik işlemlerini (test, tarama, izleme vb.) yazılım geliştirme sürecinin doğal bir parçası haline getirir. Örneğin, kod yazılır yazılmaz statik kod analizi (SAST) araçları potansiyel güvenlik zafiyetlerini tarar; uygulama çalışır hale getirildiğinde dinamik testler (DAST) önemli açıkları kontrol eder; derleme sırasında kullanılan kütüphaneler için bağımlılık taramaları yapılır; konteyner tabanlı bir mimari varsa imajlar zafiyet taramasından geçer. Tüm bu adımlar CI/CD boru hattına entegre edilerek her yeni sürümün otomatik olarak güvenlikten geçmesi sağlanır. Böylece güvenlik, modern sürekli teslim süreçlerine ayak uydurarak bir engel değil, içkin bir kalite standardı haline gelir.
  • Araçlar ve Otomasyon: DevSecOps dönüşümü, pek çok yeni nesil güvenlik aracının yazılım yaşam döngüsüne dahil edilmesiyle mümkün olur. Örneğin, sürekli entegrasyon sistemine entegre edilen bir sızma testi aracı veya kod deposuna entegre edilmiş bir güvenlik açığı tarayıcı her kod gönderiminde tetiklenerek insan gözüyle yakalanması zor zafiyetleri tespit eder. Bu durum, ekiplerin başlangıçta kurulum ve eğitim yatırımı yapmasını gerektirebilir ancak uzun vadede otomatikleştirilmiş güvenlik kontrolleri sayesinde süreç hem hız kazanır hem de güvenilirlik artar​.

  • İyileştirilmiş Uyumluluk ve Risk Yönetimi: DevSecOps, sadece hataları değil uyumluluk (compliance) gereksinimlerini de süreç içinde denetlemeyi mümkün kılar. Örneğin, bir finans uygulaması geliştirilirken KVKK/GDPR gibi veri gizliliği kurallarına uygunluk otomatik test senaryolarıyla sürekli izlenebilir. Güvenlik politikalarına uymayan bir yapılandırma (örneğin hatalı ayarlanmış bir sunucu veya zayıf bir şifreleme) kod yazım aşamasında bile uyarı verecek şekilde kural setleri oluşturulur. Bu proaktif yaklaşım, modern devops süreçlerinde güvenliği “sonradan denetlenen” bir kaygı olmaktan çıkarıp, yazılımcıların günlük iş akışının bir parçası yaparak riski en baştan yönetilebilir hale getirir.

Özetle, DevSecOps günümüz hızlı ve sürekli teslimat odaklı geliştirme ortamlarında güvenliği sürekli kılarak bir dönüşüm gerçekleştirmiştir. Bu sayede yazılım ekipleri hem hızlı hem de güvenli yazılım teslim edebilir hale gelmiştir. Güvenlik açıkları ürünün yayınlanmasından çok önce yakalanıp düzeltildiği için, sonradan çıkabilecek büyük çaplı güvenlik krizlerinin ve bunların yol açabileceği maddi/manevi zararların önüne geçilir. Modern dünyada sıkça duyduğumuz veri ihlalleri ve siber saldırılara karşı, DevSecOps yaklaşımı kuruluşların savunmasını erken safhada güçlendirmesini sağlar.

5. DevOps ve DevSecOps Arasındaki Temel Farklar

Güvenlik Entegrasyonu: DevOps yaklaşımında güvenlik genellikle ayrı bir ekip tarafından, geliştirme döngüsünün sonunda (yani ürün neredeyse kullanıma hazırken) ele alınır. DevSecOps ise güvenliği en baştan itibaren yazılım sürecine dahil eder; geliştirme aşamalarına yayar. Örneğin, DevSecOps uygulayan bir ekipte kod yazılır yazılmaz otomatik güvenlik taramaları çalışır ve olası açıklar anında tespit edilir (bu yaklaşım literatürde “güvenliği sola kaydırma” olarak geçer).

Süreçlere etkisi: DevOps’ta ürün bitiminde yapılan güvenlik kontrolleri, DevSecOps’ta her bir entegrasyon/delivery adımının içine gömülüdür. Bu da güvenlik bulgularının sprint sonunda birikmesi yerine sürekli akış içinde çözülmesini sağlar. Ancak bu entegrasyon, CI/CD boru hattına ek adımlar (tarama, test) eklediği için başlangıçta süreçlerin yeniden düzenlenmesini ve bazı ekstra süre maliyetlerini gerektirebilir. Uzun vadede ise güvenlik entegre bir parça olduğu için sonradan ortaya çıkan büyük gecikmelerin ve revizyonların önüne geçilir​.

Ekip İşbirliği ve Kültürü: DevOps, geliştirme ve operasyon ekipleri arasındaki iş birliğini vurgular, siloları yıkar ve ortak sorumluluk bilincini aşılar​. DevSecOps ise bu kültüre güvenlik ekiplerini de dahil ederek genişletir. Yani artık güvenlik uzmanları, geliştiriciler ve operasyon mühendisleri projenin başından itibaren beraber çalışır, kararları birlikte alırlar.

Süreçlere etkisi: Bu kültürel genişleme sayesinde güvenlik, projenin “dışarıdan denetleyen” bir birimi olmaktan çıkar; ekip içinde herkesin paylaştığı bir sorumluluk haline gelir​. Pratikte, geliştiriciler güvenlik konusunda daha fazla bilgi ve beceri sahibi olmak durumundadır, güvenlik ekipleri de geliştirme süreçlerine daha erken aşamada dâhil olup rehberlik ederler.

Sonuç olarak, sorunları yakalama ve çözme yükü paylaşıldığı için daha az çatışma yaşanır ve güvenlikle ilgili gereksinimler proje boyunca sürekli göz önünde bulundurulur.

Otomasyon ve Araç Kullanımı: DevOps ortamlarında otomasyon, kodun derlenmesi, test edilmesi ve dağıtılması süreçlerini kapsar. Amaç, CI/CD boru hatları kurarak hızlı ve tekrarlanabilir sürüm çıkmaktır. DevSecOps ise otomasyonu güvenlik adımlarını da içerecek şekilde genişletir. Örneğin, DevOps sürecinde birim testler ve entegrasyon testleri otomatik çalışırken, DevSecOps sürecinde buna ek olarak otomatik güvenlik testleri (ör. bağımlılık zafiyet taraması, statik kod analizi) de çalışır.

Otomasyon kapsamının genişlemesi başlangıçta pipeline’a ek aşamalar ekleyerek süreci biraz uzatabilir. Fakat bu araçlar olgunlaştıkça ve ekip tecrübe kazandıkça, güvenlik testlerinin de aynı diğer testler gibi hızlı ve düzenli çalışması sağlanır. Böylece DevSecOps, otomasyon sayesinde güvenliği hızla birlikte yürütmeyi mümkün kılar. Ayrıca bu fark, ekiplerin araç setine güvenlik odaklı yeni araçlar eklemesini gerektirir; örneğin bir DevOps mühendisi artık yalnızca CI aracı değil, aynı zamanda SAST/DAST araçlarıyla da çalışmayı öğrenir.

Öncelikler ve Hedefler: DevOps’un temel hedefi, yazılım teslimatının hızını ve verimliliğini artırmak, piyasaya yeni özellikleri daha hızlı sunabilmektir​. DevSecOps ise hız ve verimlilik hedefini korumakla birlikte buna güvenlik ve uyumluluğu sağlama hedefini eşit ağırlıkla ekler​.

Bu, karar alma ve planlama süreçlerinde kendini gösterir. Örneğin, yalnızca DevOps odaklı bir yaklaşımda bir özelliği olabildiğince çabuk canlıya almak öncelikliyken, DevSecOps bakış açısıyla özelliğin güvenli olması da aynı derecede önceliklidir. Bu nedenle, güvenlik testlerini geçemeyen bir sürüm yayınlanmaz, gerekirse yayın takvimi biraz ertelenip açıklar giderilir. Kısa vadede bu durum bazen teslim tarihlerini öteleyebilir; ancak uzun vadede güvenlik açığından doğabilecek bir veri ihlali, yasal ceza veya itibar kaybının önüne geçilerek büyük kazanç sağlanır. Bir başka deyişle, DevSecOps’da “önce güvenlik” ilkesi, hızlı teslimat arzusuyla dengelenir ve ürünün hem hızlı hem güvenli olması hedeflenir.

Yukarıdaki farklar özetle şunu gösterir:

Her DevSecOps takımı aslında bir DevOps takımıdır (aynı kültürel değerleri ve otomasyon tutkusunu paylaşırlar), ancak her DevOps takımı bir DevSecOps takımı değildir (güvenlik entegrasyonu olmayabilir). DevSecOps, DevOps’un evrimleşmiş bir formu gibi düşünülebilir; hız ve iş birliğini temel alıp güvenliği merkeze alarak geliştirir. Uygulamada bu farklar, ekiplerin günlük çalışma biçiminden kullandıkları araçlara, yazdıkları kodun kalitesinden teslim ettikleri ürünün güvenilirliğine kadar geniş bir etki yelpazesine sahiptir.

6. Regüle Sektörlerde DevSecOps’un Önemi

Belirli sektörler, güvenlik ve uyumluluk açısından diğerlerine göre çok daha akatı gereksinimlere sahiptir. Örneğin finans sektörü, sıkı düzenlemelerin ve hassas müşteri verilerinin olduğu bir alan olarak DevSecOps’un önemini net biçimde ortaya koyar. Finans/bankacılık uygulamalarında hem hızlı yenilik yapabilmek hem de üst düzey güvenlik sağlamak zorunludur. Bu nedenle finans alanında faaliyet gösteren birçok kuruluş, DevOps süreçlerini DevSecOps’a evriltiyor.

Finans sektöründe DevSecOps yaklaşımı, geliştirmenin erken aşamalarına düzenli güvenlik kontrolleri entegre ederek daha önce ayrı bir aşama olan güvenlik testlerini sürecin içine alır. Bu sayede geliştiriciler, güvenlik ekipleri ve operasyon birimleri arasında eskiden var olan gecikme ve iletişim kopuklukları giderilir​. Örneğin bir bankanın CI/CD hattına entegre edilen statik analiz ve güvenlik testi araçları, yeni bir kod değişikliğinde olası bir açığı anında saptayarak canlıya alınmadan önce düzeltilmesini sağlar. Böylece hem yasal düzenlemelere uyum (ör. PCI-DSS, KVKK) otomatik olarak denetlenmiş olur, hem de son kullanıcıların finansal verilerini riske atabilecek bir zafiyet erkenden önlenir. Nitekim DevSecOps, hızla değişen ve güçlü regülasyonları olan finans ortamında uygulamaların başarılı bir şekilde geliştirilebilmesi için kritik öneme sahiptir​. Benzer şekilde sağlık sektörü gibi yüksek gizlilik ve güvenlik gerektiren alanlarda da DevSecOps, sürekli teslimat ile hasta verisi mahremiyetini bir arada sağlamanın anahtarı haline gelmiştir.

DevOps ve DevSecOps, modern yazılım dünyasında birbirini tamamlayan fakat odak alanları farklı iki yaklaşımdır. DevOps, yazılım geliştirme ve operasyon ekiplerini birleştirerek hız, verimlilik ve kaliteyi artırırken; DevSecOps bu kazanımlara güvenlik boyutunu ekleyerek güvenilir yazılımların hızlıca sunulmasını mümkün kılar. Kuruluşlar ihtiyaçlarına ve içinde bulundukları sektörün gereklerine göre bu yaklaşımları uygularlar. Ancak genel eğilim, güvenliğin ihmal edilemeyeceği günümüz ortamında DevOps’tan DevSecOps’a doğru bir evrim yaşandığı yönündedir. Bu dönüşümü benimseyen ekipler, hem hızlı inovasyon yapabilmenin hem de kullanıcı güvenini sağlamanın rekabette kritik bir fark yarattığını deneyimlemektedir.

İlgili Makaleler

Bir yanıt yazın

Başa dön tuşu