DevSecOps nedir?
Güvenlik uygulamalarını çoklu bulut ortamınızda yazılım geliştirme yaşam döngüsünün her aşamasına tümleştirmeyi öğrenin.
DevSecOps tanımlandı
Geliştirme, güvenlik ve operasyonlar için kullanılan DevSecOps, güvenliği yazılım geliştirme yaşam döngüsünün tüm aşamalarına tümleştiren bir çerçevedir. Kuruluşlar, güvenlik açıkları olan bir kodu kullanıma sunma riskini azaltmak için bu yaklaşımı benimser. İşbirliği, otomasyon ve net süreçler aracılığıyla, ekipler güvenliği sorunlarla başa çıkmanın daha zor ve maliyetli olduğu son aşamaya bırakmak yerine güvenliğin sorumluluğunu paylaşır. DevSecOps, çoklu bulut güvenliği stratejisinin kritik bir bileşenidir.
DevSecOps - DevOps karşılaştırması
Geleneksel yazılım geliştirmede projeler ayrı planlama, tasarım, geliştirme, tümleştirme ve test aşamalarına bölünür ve bu aşamalar birkaç ay, hatta yıllar içinde sırayla gerçekleşir. Bu çok sistemli bir yaklaşım olsa da, birçok kuruluş bunun çok yavaş olduğunu ve sürekli ürün geliştirmeleri için müşterilerin beklentilerini karşılamayı zorlaştırdığını düşünmektedir. Bunun yanı sıra, güvenlik genellikle en son aşamada kilitlenir ve bu da şirketlere güvenlik ihlali riski oluşturur.
Rekabet gücünü korumak için birçok şirket zengin özellikler içeren ve daha uzun süren projeler yerine yüksek kaliteli kod içeren daha küçük paketlerin teslimine öncelik veren bir DevOps modelini benimsemiştir. Bu çerçevede yazılım geliştirme ve operasyon ekipleri süreç boyunca test ve tümleştirme işlemlerini birleştirmek için işbirliği yapar. Otomasyon, standart süreç ve işbirliği ekiplerin kaliteden ödün vermeden hızla ilerlemesine yardımcı olur.
DevSecOps, sürecin tüm yönlerine güvenlik getiren DevOps’ta yapılan bir geliştirmedir. Hedef, projenin en başında güvenlik sorunlarını gidermektir. Bu çerçevede ekibin tamamı yalnızca kalite denetimi ve kod tümleştirmesinin değil güvenliğin de sorumluluğunu üstlenir. Uygulamada bu, ekiplerin planlama sırasında güvenlik uygulamalarını tartıştığı ve projenin sonunu beklemeden, geliştirme ortamlarında güvenlik sorunlarını test etmeye başladığı anlamına gelir. Bu yaklaşımın bir diğer adı da güvenliği sola kaydırmadır.
DevSecOps neden önemlidir?
Saldırganların bir kuruluşun verilerine ve varlıklarına erişim elde etmek için kullanabileceği birçok yöntem vardır; yaygın taktiklerden biri de yazılımın güvenlik açıklarını kötüye kullanmaktır. Bu tür ihlaller maliyetlidir, zaman alıcıdır ve önem derecesine bağlı olarak şirketin saygınlığına zarar verir. DevSecOps çerçevesi, hatalı yapılandırmalar ve kötü niyetli aktörlerin yararlanabileceği diğer güvenlik açıkları içeren yazılımları dağıtma riskini azaltır.
DevSecOps’un Temel Bileşenleri
Başarılı bir DevSecOps süreci aşağıdaki bileşenleri içerir:
-
Sürekli tümleştirme
Sürekli tümleştirme sayesinde, geliştiriciler kodlarını günde birden çok kez merkezi bir depoya işler. Ardından kod otomatik olarak tümleştirilir ve test edilir. Bu yaklaşım ekiplerin çözülmesi gereken çeşitli sorunların olabileceği son aşamaya kadar beklemek yerine tümleştirme sorunlarını ve hatalarını sürecin erken aşamalarında yakalamasına olanak tanır.
-
Sürekli teslim
Sürekli teslim, kodu derleme ortamından hazırlık ortamına taşıma sürecini otomatikleştirmek için sürekli tümleştirmenin üzerine uygulanır. Hazırlık aşamasına gelindiğinde, birim testlerine ek olarak kullanıcı arabiriminin çalıştığından, kodun başarıyla tümleştirildiğinden, API’lerin güvenilir olduğundan ve yazılımın beklenen trafik hacmini kaldırabileceğinden emin olmak için yazılım otomatik olarak test edilir. Bu yaklaşımın amacı müşterilere değer sunan, üretime hazır bir kodu tutarlı bir şekilde teslim etmektir.
-
Sürekli güvenlik
Yazılım geliştirme yaşam döngüsünün tamamına güvenlik uygulamak, DevSecOps'un önemli bileşenlerinden biridir. Bu, sürecin erken aşamalarında tehdit modellemesi gerçekleştirmeyi ve geliştiricilerin kendi ortamlarından başlayarak tüm yaşam döngüsü boyunca otomatik güvenlik testleri yapmayı içerir. Kuruluşlar, yazılımda güvenlik sorunları için erken aşamalarda ve sık sık kapsamlı testler yaparak, en az sorun içeren yazılımları verimli bir şekilde teslim edebilir.
-
İletişim ve işbirliği
DevSecOps, büyük ölçüde bireylerin ve ekiplerin yakın bir çalışma sürdürmesine bağlıdır. Sürekli tümleştirme koddaki çakışmaları çözmek için kişilerin işbirliği yapmasını gerektirir ve ekiplerin aynı hedefler çevresinde birleşmek için etkili bir iletişim kurması gerekir.
DevSecOps uygulaması
DevOps sürecinize güvenlik eklemek için dikkatli planlama gerekir. Ekip açısından en az soruna neden olan ve en büyük güvenlik getirisi sağlayan süreçlerle yavaş bir başlangıç yapın. Aşağıda tipik bir DevOps sprint’ine güvenlik eklemenin birkaç yolunu bulabilirsiniz.
-
Planlama ve geliştirme
Geliştirme sprint’lerinin erken aşamalarında güvenliğin eklenmesi daha sonraki güvenlik açıklarını azaltmaya yardımcı olacağı gibi zaman da kazandırır çünkü sorunları kod derlenip tümleştirilmeden önce çözmek daha kolaydır. Planlama ve geliştirme sırasında, uygulamaya yönelik olası tehditleri belirlemek ve azaltmak için tehdit modellemesini kullanın. Bu, uygulamaya en baştan güvenlik eklemenize yardımcı olur. Kod paylaşılan depoya işlenmeden önce güvenlik sorunlarını ortaya çıkarmak için, geliştiricilere yazdıkları kodda olası bir güvenlik riski olup olmadığı konusunda anında geri bildirim sağlayan tümleşik geliştirme ortamı güvenlik eklentileri gibi otomatik denetimler kullanın. Kod incelemesi sırasında güvenlik uzmanlığına sahip birinin geliştirmeler yapma konusunda önerilerde bulunmasını sağlayın.
-
Kodu işleme
Başarılı bir DevSecOps sürecinin en önemli özelliklerinden biri sürekli tümleştirmedir. Geliştiriciler genellikle tümleştirme sorunlarının erkenden yakalanmasını sağlamak için kodlarını günde birkaç kez merkezi bir depoya işler. Bu aşamaya otomatik güvenlik denetimleri eklemek önemlidir. Bu, üçüncü taraf kitaplıklarını ve bağımlılıklarını tarama, birim testleri ve statik uygulama güvenlik testlerini içerebilir. Sürekli tümleştirme ve sürekli teslim altyapınızı kötü amaçlı kod çalıştırmayı veya kimlik bilgilerini çalmayı amaçlayan saldırganlardan korumak için rol tabanlı erişim denetimleri dağıtmak da önemlidir.
-
Derleme ve test etme
Test ortamında otomatik güvenlik betikleri çalıştırmak, daha önce algılanmamış olası sorunları ortaya çıkarmanıza yardımcı olur. Bu aşamada çalıştırabileceğiniz bazı güvenlik testleri dinamik uygulama güvenlik testi, altyapı taraması, kapsayıcı taraması, bulut yapılandırma doğrulaması ve güvenlik onay testlerini içerir.
-
Üretim
Uygulama üretime dağıtıldıktan sonra bazı kuruluşlar canlı ortamda zayıf noktaları bulmak için sızma testleri yapar. Sızma testleri sırasında kişiler bir saldırganın anlayışını benimser ve uygulamayı ihlal etme yollarını arar.
-
Operasyon
En iyi DevSecOps süreçleri bile her şeyi yakalayamaz, dolayısıyla uygulamaları güvenlik açıkları ve tehditlere karşı sürekli izlemek kritik önem taşır. Analiz verileri, güvenlik duruşunuzun gelişip gelişmediğini değerlendirmenize ve iyileştirme alanlarını vurgulamanıza yardımcı olabilir.
-
DevSecOps Araçları ve Teknolojileri
Güvenlik araçlarını seçerken mevcut DevOps teknolojinize uygun olanları belirlemek önemlidir. Bu şekilde tüm sürecinize güvenliği daha kolay dahil edebilirsiniz. İhtiyacınız olabilecek araç türlerinden birkaçı aşağıda verilmiştir:
-
Kod olarak altyapı taraması
DevSecOps ekipleri, verimliliklerini artırmak için ağlar, sanal makineler ve yük dengeleyiciler gibi altyapı öğelerini el ile yönetmek ve hazırlamak yerine, genellikle Terraform gibi açık kaynak araçları kullanarak bu işlemleri kod aracılığıyla gerçekleştirir. Terraform, altyapının yüzlerce veya binlerce sunucu üzerinde tutarlı bir şekilde ayarlandığından ve güncelleştirildiğinden emin olmaya yardımcı olur. Üretim ortamına hatalı yapılandırmaların dağıtılma riskini azaltmak için, kod olarak altyapı tarama araçları altyapıyı kod düzeyinde güvenlik ilkeleri ve standartlarıyla uyumsuzluk açısından otomatik olarak denetler.
-
Statik uygulama güvenlik testleri
DevSecOps geliştiricileri, kodları derlenmeden önce özel kodlarını güvenlik açıkları için test etmeye başlar. Bu sayede derlemeyi etkilemeden sorunları giderebilirler. Statik uygulama güvenlik testi araçları, otomatik denetimler ve gerçek zamanlı geri bildirimlerle bu süreci kolaylaştırır. Birçok araç tam olarak hangi kodun riskli olduğunu tespit eder ve düzeltme önerileri sunar.
-
Yazılım birleştirme analizi
Ekiplerin uygulamaları ve özellikleri daha verimli bir şekilde oluşturmasının yollarından biri, üçüncü taraf eklentileri ve çerçeveleri kullanmaktır. Önceden oluşturulmuş bu araçlar zaman kazandırır ama lisanslama sorunları, kötü yazılmış kod veya güvenlik açıkları gibi risklere neden olabilir. Yazılım birleştirme analizi araçları uygulamalardaki açık kaynak bileşenleri belirler ve lisans ihlalleriyle güvenlik ve kalite sorunlarını algılamak için özel veya ücretsiz veritabanlarını kullanarak bunları değerlendirir.
-
Etkileşimli uygulama güvenlik testleri
Kalite denetimi testleri sırasında veya uygulama kullanılırken, etkileşimli uygulama güvenlik araçları güvenlik açıklarını bulmak için kodu tarar ve kodun içinde sorunun konumunu belirleyen raporlar sağlar.
-
Dinamik uygulama güvenlik testleri
Dinamik uygulama güvenlik testleri, kötü niyetli bir aktörün uygulamaya saldırmak için kullanabileceği yöntemlere öykünür. Bu testler, uygulama çalışırken gerçekleştirilir ve önceden tanımlanmış kullanım örneklerini temel alır.
-
Kapsayıcı taraması
Kapsayıcılar DevSecOps'ta yaygın olarak kullanılır çünkü geliştiricilerin bağımsız kod birimlerini kolayca dağıtmasına yardımcı olur. Kapsayıcının içinde, kapsayıcı işlemlerini çalıştıran kodu içeren bir kapsayıcı görüntüsü vardır. Öte yandan bu görüntüler genellikle mevcut görüntüler kullanılarak derlenir veya genel depolardan çekilir. Kapsayıcı tarama araçları kapsayıcıları tarar ve olası güvenlik sorunlarını ortaya çıkarmak için bunları genel veya özel güvenlik açığı veritabanlarıyla karşılaştırır.
DevSecOps En İyi Yöntemleri
DevSecOps, süreç ve araçlar kadar kültürel değişimle de ilgilidir. Aşağıda bu çerçevenin mümkün olduğunca sorunsuz benimsenmesini sağlayacak en iyi bazı yöntemleri bulabilirsiniz.
-
Kültürel değişim
Kişilerin çalışma yöntemini değiştirmekte zorlanabileceğini ve anlaşmazlıklar olabileceğini kabul edin. Uyum sağlamalarına yardımcı olmak için kuruluşun hedefleriyle beklentilerini net bir şekilde iletin, açık iletişim için bol bol fırsat sağlayın ve ekipler kendilerine en uygun araçları, süreci ve tempoyu bulana kadar esnek davranmanız gerekebileceğini hesaba katın.
-
Gereksinimleri ve ölçümleri tanımlama
Bir güvenlik temeli alt sınırı oluşturun. Rehberlik için sektör ve mevzuat gereksinimlerine veya web uygulamalarında Open Worldwide Application Security Project® (OWASP) İlk Onkritik risk ve SANS İlk 25 yazılım hatası belgelerine bakın. Gereksinimleri tanımladıktan sonra ilerlemenizi izlemeye yardımcı olması için hangi ölçümleri izlemek istediğinizi belirleyin.
-
Küçükten başlama
Güvenlik otomasyonu araçları koddaki sorunları denetlemek için birçok seçenek sunar ama özellikle DevSecOps'u benimsemenizin erken aşamalarında bunların tümünün açılması takımınızı bunaltabilir. Hangi araçları uygulayacağınız ve kaç sorunu tarayacağınızı konusunda makul davranın.
-
Tehdit modellemesi gerçekleştirme
İhtiyacınızı karşılayacak kadar basit veya ayrıntılı ve teknik bir tehdit modelleme süreci geliştirin. Uygulamanızın aşağıdakileri içeren gerçekçi bir güvenlik görünümünü belgelemek için bu yaklaşımı kullanın:
- Saldırganların uygulama tasarımını nasıl kötüye kullanabileceği.
- Güvenlik açıklarının nasıl düzeltileceği.
- Farklı sorunların önceliği.
-
Otomasyonu uygulama
Otomasyon, DevSecOps sürecinde hem kalite hem de hız sağlamak açısından çok önemlidir. Sürekli tümleştirme ve sürekli teslim yaşam döngüsünün tüm aşamalarına otomatik güvenlik taramalarını ekleyerek, süreci fazla yavaşlatmadan uygulamalarınızın güvenliğini geliştirebilirsiniz.
-
Bağımlılıkları yönetme
Geliştiricilerin çoğu uygulamaları verimli bir şekilde derlemek için üçüncü taraf paketleri ve kitaplıkları kullanır. Sorun, bu çözümlerden bazılarında güvenlik açıklarının bulunması ve geliştiricilerin bu çözümlerin güncelliğini korumaya her zaman özen göstermemesidir. Riskinizi azaltmak için, kullanmakta olduğu bileşenlerin güvenlik riskleri açısından incelendiğinden emin olun ve bunları güncelleştirmek için standartlaştırılmış bir süreç geliştirin.
-
Değerlendirme ve geliştirme
Sürecin nasıl çalıştığını düzenli olarak değerlendirin ve kuruluşunuzun hedeflerine uygun olduğundan emin olmak için gereken ayarlamaları yapın. Sprint tamamlandıktan sonra yapılacak suçlamasız bir son durum incelemesi, geliştirme fırsatlarını ortaya çıkarmanıza yardımcı olabilir. Analiz verileri ve tehdit analizi de, mevcut yaklaşımınızın karşılamadığı güvenlik ihtiyaçları olup olmadığını belirlemenize yardımcı olabilir.
-
Buluta özel uygulamalar için DevSecOps
Buluta özel uygulamalar bulut için tasarlanmıştır ve genellikle satıcıdan bağımsızdır, bu sayede bir buluttan diğerine taşınabilir. Geliştirme ekipleri son derece ölçeklenebilir ve dayanıklı olacak şekilde tasarlanan bu uygulamaları genellikle mikro hizmetler, kapsayıcılar ve otomasyon kullanarak derler ve ideal olarak DevSecOps sürecine uygun hale getirir. Buluta özel uygulamalara sürekli güvenlik, sürekli tümleştirme ve sürekli teslimi dahil etmek, güvenlikten ödün vermeden ölçeklenebilirlik sağlamaya olanak tanır. Kodunuzun ve DevOps işlem hattının tamamının güvenliğini sağlamanıza yardımcı olması için DevOps için Microsoft Defender gibi otomatik güvenlik çözümlerini kullanın. Uygulamanızı bulutta dağıttıktan sonra riskler için izlemeye devam edin. Bulut iş yükü koruma platformları (CWPP), çoklu bulut ortamlarda iş yüklerine yönelik tehditleri algılayarak ve azaltarak bu uygulamaların ve temel verilerin korunmasına yardımcı olur. Bulut güvenlik duruşu yönetimi (CSPM) çözümleri ortamınız genelinde hatalı yapılandırmaları ve güvenlik açıklarını bulur ve giderir.
Microsoft Güvenlik hakkında daha fazla bilgi edinin
Bulut için Microsoft Defender
Kapsamlı bir bulutta yerel uygulama koruması ile geliştirme aşamasından çalışma zamanına kadar çoklu bulut ve hibrit ortamları koruyun.
Microsoft Defender for Cloud Apps
Bu hizmet olarak yazılım çözümüyle uygulamalarınızın güvenliğini sağlama, verilerinizi koruma ve uygulama güvenlik duruşunuzu geliştirme yöntemlerinizi modernleştirin.
Bulut Güvenlik Duruşu Yönetimi için Microsoft Defender
Bağlamsal bulut güvenlik duruşu yönetimiyle çoklu bulut ortamınız genelinde en kritik risklerinize odaklanın.
DevOps için Microsoft Defender
Çoklu bulut ve çoklu işlem hattı ortamlarında birleşik DevOps güvenlik yönetimi elde edin.
Sık sorulan sorular
-
DevSecOps, yazılım geliştirme yaşam döngüsünün tamamına güvenliği tümleştiren bir süreçtir. Kuruluşlar, güvenlik açıkları olan bir kodu kullanıma sunma riskini azaltmak için bu yaklaşımı benimser. İşbirliği, otomasyon ve net süreçler aracılığıyla, ekipler güvenliği sorunlarla başa çıkmanın daha zor ve maliyetli olduğu son aşamaya bırakmak yerine güvenliğin sorumluluğunu paylaşır.
-
DevSecOps geliştirme, güvenlik ve operasyonlar anlamına gelir. Bu, güvenliği yazılım geliştirmenin tüm aşamalarına tümleştirme sürecini ifade eder.
-
Sola kaydırma, DevSecOps'ta geliştirme sürecinin en başından itibaren güvenlik uygulamalarını dahil etmeyi ifade eden bir kavramdır.
-
DevSecOps çerçevesi sürekli tümleştirme, sürekli teslim ve sürekli güvenlik içerir. Bu yöntemde güvenlik ve operasyon ekipleri birlikte çalışır ve güvenlik açıklarını azaltırken hızlı bir şekilde kaliteli yazılım sunma sorumluluğunu paylaşır.
-
Tek bir DevSecOps süreci yoktur ama bu projeleri yürütmenin yaygın bir yolu, çalışmayı her biri şu bileşenleri içeren sprint'lere bölmektir: planlama ve geliştirme, derleme ve test ve üretim. Sprint boyunca ekipler kalite güvencesi sorunlarını sürekli olarak gidermek, sürekli tümleştirmek ve güvenlik risklerini sürekli test etmek için otomasyonu kullanır.
Microsoft Güvenlik'i takip edin