DevOps, yazılım geliştirme sürecinde kod geliştiren programcılar ve sistem yöneticileri arasında daha verimli ve etkin iş birliği kurmayı amaçlayan bir metodolojidir. Bir DevOps mühendisinin bu iki grubun kesişiminde ekiplerin koordinasyonuna odaklanan bir uzman olarak birincil hedefi, yazılım geliştirmenin öngörülebilirliğini, verimliliğini ve güvenliğini mümkün olan en üst seviyeye çıkarmaktır.
DevSecOps, DevOps kavramının daha da gelişmiş şekliyle bu süreçlere ek olarak otomasyonun yanı sıra kod güvenliğinin etkinliği ve sürekliliği ile kod kalitesi konularını uygulama yazılımlarının zafiyet yönetimi ve orkestrasyonu bütünleştirmesiyle ele alır.
DevOps metodolojisini açıklamak istediğimizde, yazılım geliştirme, kalite güvencesi, plana göre konuşlandırma ve entegrasyon ile ilgili tüm süreçlerin eşgüdümü anlaşılmalıdır. Aslında DevOps, genellikle birbirinden izole edilmiş olarak çalışan ekipler arasında bir eşgüdüm kültürü oluşturmayı amaçlayan bir felsefe olarak adlandırılabilir. Yazılım geliştirme ve plana göre konumlandırma işlemleri geleneksel olarak iki farklı kavram (kişi) veya departman tarafından yürütülür. DevOps, yazılım geliştirmenin bu iki aşaması arasındaki sınırları ortadan kaldırarak verimliliği artırmayı amaçlar. Bu bağlamda DevOps daha etkin üretkenlik, daha etkin kavrama ve daha etkin eğitim için zaman ve kaynakları optimize etmede kritik önem taşıyan bir faktördür.
DevOps şunları içerir:
- Yazılım Geliştirme, yaratma, entegrasyon ve test süreçlerinin gerçekleştirildiği sürekli entegrasyon.
- Sürekli entegrasyon içeren, ancak esas olarak ürün (Yazılım) teslimine odaklanan süreklilik.
- Proje dağıtımlarını otomatikleştirmeyi amaçlayan süreç.
DevOps mühendisi nedir?
Bu iş unvanı son yıllarda ortaya çıktığı için, henüz kesin bir tanımı yok olmakla birlikte genel kabul gören tanımı; DevOps mühendisinin, bir kuruluşun DevOps yöntemini kuruluşunun benimsemesi ve DevOps ’un uygulanmasının sorumlusu olan bir uzman olduğudur.
Bir DevOps mühendisinin yetkin olması gereken alanlar nedir? – Versiyon kontrol sistemleri: Bir DevOps mühendisinin özgeçmişinde Git, SVN, Mercurial vb. tecrübe birikimi mutlaka bulunmalıdır. – Docker veya Vagrant gibi Container bilgi ve deneyimi gereklidir. – Sürekli entegrasyon deneyimi (CI-Continues Integration): Jenkins ve TeamCity bilgi ve tecrübesi. Bununla birlikte, burada hepsini yazabilmek olası olmadığı için pek çok DevOps aracı olduğunu hatırlayalım. – Çerçeve otomasyon araçları. Python, Shell veya Bash hakkında iyi bilgi sahibi olmak. Bu deneyim otomasyonun belirgin faydalarını sağlamanın yanı sıra DevOps mühendislerinin çok zaman kazanması için önem arz eder. – Bulut hizmetleri. DevOps mühendisinin mutlaka sahip olması gereken en temel becerilerden biridir. Örneğin Microsoft Azure, Amazon Web Services, Google Cloud vb gibi. – Test deneyimi. DevOps mühendisinin önemli görevlerinden biri, yazılımın son kullanıcıya teslimini güvenli olarak hızlandırmaktır. Bu bağlamda, kaynak kodu güvenliği test deneyimi DevOps mühendislerinin işinin önemli bir parçası haline gelmiştir. – İletişim ve liderlik Yeteneği. Bir DevOps uzmanı empati sahibi olmalıdır, çünkü farklı ekip ve kişilerle çok fazla iletişimi olacaktır. Kendisini karşısındaki kişinin yerine koyarak olaylara onun bakış açısıyla bakması, o kişinin duygularını ve düşüncelerini doğru olarak anlaması, hissetmesi ve bu durumu sakince ona iletmesi gerekecektir.
DevSecOps nedir ve DevOps ‘tan farkı nedir?
DevSecOps, güvenlik uygulamalarını DevOps sürecine entegre etme felsefesidir. DevSecOps, Yazılım Geliştirenler ve güvenlik ekipleri arasında sürekli ve esnek iş birliği ile bir ‘Kod Olarak Güvenlik’ kültürü oluşturmayı hedefler. DevSecOps hareketi, DevOps ‘un kendisi gibi, çevik bir çerçeve içinde karmaşık yazılım geliştirme süreçleri için yeni çözümler yaratmaya odaklanmıştır.
DevSecOps, eski güvenlik modellerinin modern sürekli dağıtım boru hattı üzerindeki darboğaz etkisine doğal ve gerekli bir yanıttır. Amaç, kodun hızlı ve güvenli bir şekilde teslim edilmesini sağlarken BT ve güvenlik arasındaki geleneksel boşlukları kapatmaktır. Kodun teslim sürecinin tüm aşamalarında artan iletişim ve güvenlik görevlerinin ortak sorumluluğuyla muhtemel çatışmaları çözme ve verimli müzakereler yapma yetenekleri, güvenli uygulamalar oluşturmada çok önemli bir rol oynar.
Yazılım Geliştirme Yaşam Döngüsünün ilk aşamasından itibaren DevSecOps, çeşitli güncel güvenlik teknikleri uygulayarak uygulamayı güvenli hale getirmek için çalışır. DevSecOps büyük ölçüde otomasyona dayanır. Özellikle güvenlik denetimleri de dahil olmak üzere her yönü otomatikleştirmeyi amaçlayan bir metodolojidir. DevSecOps ile gelen pek çok avantaj vardır.
- Güvenlik ekipleri için daha fazla hız ve çeviklik sağlanır.
- Değişime ve ihtiyaçlara hızlı cevap verme becerisi artar.
- Ekipler arasında çok daha iyi işbirliği ve iletişim gerçekleşir.
- Otomasyon ve kalite güvence testleri için daha fazla fırsat ortaya çıkar.
- Uygulama Yazılımının Kod güvenlik açıklarının erken belirlenmesi sağlanır.
- Ekip üyeleri verimlilik açısından daha yüksek katma değerli işlerde çalışmak üzere kendilerine zaman bulurlar.
DevSecOps’un uygulanmasında genelde altı temel unsur önerilmektedir. DevSecOps yaklaşımına kültürel ve teknik geçiş, işletmelerin güvenlik tehditlerini gerçek zamanlı olarak daha etkin bir şekilde ele almasına yardımcı olur. Güvenlik ekiplerini çevikliğe engel olmaktan ziyade süreçteki yavaşlamaları önlemeye yardımcı olan değerli varlıklar olarak görmek önemlidir. Örneğin, ölçeklenemeyen iyi tasarlanmamış bir uygulamanın erken tespiti; zaman, kaynak ve bilgi işlem maliyetlerinden ciddi tasarruf sağlar. Teknoloji odaklı işletmeler hızlı bir şekilde geliştikçe, sürekli tehdit modellemesi ve sistem yapılarının yönetimi gerekecektir.
DevSecOps yaklaşımının altı önemli bileşeni şunlardır:
- Kod analizi: Güvenlik açıklarının hızlı bir şekilde tanımlanabilmesi için kodu küçük parçalar halinde iletmek. – Statik Uygulama Güvenlik Testi (SAST), kodu derlemeden ( compile etmeden önce ) gerçekten yürütmeden zafiyetleri yakalamak için kullanılır. SAST, kaynak kodda olası güvenlik açıklarının bulunmasına yardımcı olarak, olası güvenlik açıklarını önler. Geliştirme sürecinin bir parçası olarak statik bir analiz aracı kullanmak, yazılım hatalarının bir sonraki seviyeye CVE (Common vulnerabilities and exposures) ulaşmasını önlemeye yardımcı olur. CVE (Yaygın Güvenlik Açıkları ve Etkilenmeler), bilinen yazılım hatalarının sıralı bir listesini yapmaya çalışmak için geliştirilmiş, yaygın olarak bilinen bilgi güvenliği güvenlik açıklarının bir veritabanıdır. – Yazılım Kompozisyon Analizi, SCA, açık kaynak bileşenlerindeki güvenlik açıklarını belirleyebilir ve uygulamaları güvenlik açıkları içerdiği bilinen bileşenleri içerip içermediklerini görmek için analiz edebilir.
- Değişiklik yönetimi “Change management” herkesin değişiklik göndermesine izin vererek hızı ve verimliliği artırmak, ardından değişikliğin iyi mi kötü mü olduğunu belirlemek.
- Uyumluluk izleme “Compliance monitoring” – herhangi bir zamanda bir denetime hazır olmak ( GDPR, PCI, KVKK uyumluluğu vb. gibi ). 4-Tehdit soruşturması, “Threat investigation” – her bir kod güncellemesiyle ortaya çıkan potansiyel tehditleri belirlemek ve hızlı bir şekilde yanıt vermek. 5-Güvenlik açığı değerlendirmesi “ Vulnerability assessment”- Kod analizi ile yeni güvenlik açıklarını belirlemek, ardından ne kadar hızlı yanıtlandıklarını ve düzeltildiklerini / yamalandıklarını analiz etmek. 6-Güvenlik eğitimi – ayarlanmış rutinler için yönergeleri olan yazılım ve BT mühendislerini eğitmek
Sürece henüz başlamadıysanız, şimdi güvenlik hedeflerinizi DevOps ile birleştirmenin ve “Kod Olarak Güvenlik” yaklaşımıyla DevSecOps’u uygulama zamanıdır. DevOps’tan DevSecOps’a geçiş, yazılım güvenliğini sağlayan belirli tekniği ve uygulamaları anlamayı gerektirir. Bu yönü daha ayrıntılı olarak tartışılmalı ve tam olarak hangi teknolojilere ihtiyaç duyulacağı tespit edilmelidir.
Sonuç :
DevSecOps, güvenlik hedeflerini DevOps metodolojisine entegre etme pratiğidir. DevSecOps’ta güvenlik otomasyonu, yeni yaklaşımlar, güncel yeni teknolojiler ve araçlar gerektiren bir özelliktir. DevSecOps, DevOps üzerine kurulduğu için DevOps metodolojisinin bir uzantısı olarak görülebilir.
Dr.Cüneyt KALPAKOĞLU
8 Temmuz 2020 deki Webinar’imizde misafirimiz olun. Webinar Katılım Linki