DevSecOps Güvenlik Kavram ve Teknolojileri

Günümüzde pek çok firma, yazılım geliştirme ve altyapı operasyonlarının birarada ve eşgüdüm halinde yürütülmesini sağlayan DevOps mimarisine geçiş yapmıştır veya bu mimariye geçiş için hazırlık yapmaktadır. Yazılım geliştirme süreçlerinin daha hızlı bir şekilde işletilmesini sağlayan bu mimaride en önemli konulardan biri de güvenliktir.

DevOps yaşam döngüsü temelde 8 farklı süreçten oluşmaktadır: Planla (Plan), Kodla (Code), Derle (Build), Test et (Test), Yayınla (Release), Dağıt (Deploy), İşlet (Operate), İzle (Monitor). Her bir süreçte farklı güvenlik kavram ve teknolojileri ortaya çıkmaktadır.

Bu teknoloji ve kavramlardan bazıları şu şekildedir:

Plan aşamasında Tehdit Modelleme, Yazılımcıların Eğitimi,

Code aşamasında IDE Güvenliği, Açık Kaynak Kod Güvenliği,

Build aşamasında Statik Uygulama Güvenlik Testi ve Bileşen Analizi,

Test aşamasında Dinamik Uygulama Güvenliği Testi, Sızma Testleri, Kırmızı Takım Aktiviteleri,

Operate aşamasında API Koruma, Container Güvenliği, Bulut Güvenliği, WAF, Uygulama Güvenliği Otomasyonu gibi konular bulunmaktadır.

Bu teknolojileri DevSecOps yaşam döngüsü üzerinde özetleyecek olursak şöyle bir tablo ortaya çıkmaktadır:

DevSecOps%20Gu%CC%88venlik%20Teknolojileri%200ef31761082647adbcea6cc04f571777

Yaşam döngüsüne entegre edebileceğimiz çok sayıda güvenlik teknolojisi olduğu görülmektedir. Ancak, bu teknolojilerin tamamını hızlı bir şekilde süreçlere entegre etmek hem insan kaynağı hem de maddi kısıtlar sebebi ile mümkün değildir. Bu yüzden bir önceliklendirme yapılması gerekir. Şu ana kadar edindiğimiz tecrübeye istinaden güvenli bir DevOps mimarisi oluşturmak için devreye alınması gereken teknolojileri şu şekilde sıralayabiliriz:

1. Yazılımcılar için Güvenli Kod Geliştirme Eğitimi (Developer Security Training)

Herşeyin başı eğitimdir. Projeler geliştirilmeye başlanmadan yazılımcıların güvenlik konusunda bilinçli olması sağlanmalıdır. Yazılımcıların eğitimi konusunda demode olmuş olan sınıf eğitimleri yerine online eğitim platformları tercih edilmelidir. Böylece yazılımcıları belirli gün saat ve içeriğe hapsetmek yerine, her yazılımcı için farklı tasarlanabilecek, gelişimin takip edilebileceği, istenilen zamanda eğitim alınabilmesini sağlayan sürdürülebilir bir yapıya geçilmiş olacaktır.

2. Tehdit Modelleme (Threat Modeling)

Tehdit Modelleme projelerin ilk başta modellenmesi ve ortaya çıkabilecek risklerin belirlenmesini kapsar. Risk ve tehditler belirlendikten sonra ilgili kontroller ve önlemler listelenir. Proje geliştirme safhasında bu kontrol ve önlemler dikkate alınır. Böylece daha sonraki aşamalarda güvenlik zafiyetleri ortaya çıkması büyük ölçüde önlenmiş olur.

Detaylar için: https://appsec.com.tr/blog/tehdit-modelleme

3. Statik Uygulama Güvenliği Testleri (Static Application Security Testing)

Geliştirilen kodların bir ürün vasıtasıyla otomatize bir şekilde taranması veya gözle kontrol edilmesini içerir. Günümüz projeleri çok fazla sayıda satırdan oluştuğu için gözle kontrol imkansız hale gelebilir. Bu yüzden otomatize ürünlerin kullanılması ve ürün çıktılarının daha sonra analiz edilmesi yöntemi takip edilmektedir. Mevcut yazılımlar, CI/CD bileşenleri ile entegre olma kabiliyetlerine sahiptir. Böylece standart DevOps yaşam döngüsü içinde SAST sürecini de otomatize bir şekilde işletmek mümkün olmaktadır.

4. Yazılım Bileşen Analizi (Software Composition Analysis)

Kodlar salt firma çalışanları tarafından geliştirilmemiş olabilir. Çeşitli amaçlarla İnternetten veya çeşitli ortamlardan alınan, geliştirilmiş hazır kod parçaları sıklıkla kullanılmaktadır. Açık kaynak kodlar olarak tanımladığımız bu bileşenlerde lisans kaynaklı veya güvenlik kaynaklı sorunlar ortaya çıkabilir. SCA süreci bu bileşenlerin analizini, lisans ile ilgili sorunlar varsa ortaya çıkarılmasını ve güvenlik zafiyetlerinin tespitini kapsar. Gerektiğinde ilgili bileşenin üst sürümleri kullanılır veya bileşenin kullanımından vazgeçilir.

5. Dinamik Uygulama Güvenlik Testleri (Dynamic Application Security Testing)

Proje geliştirme aşaması sonrasında dinamik uygulamalar ortaya çıkar. Bu uygulamalar dinamik testlerden geçirilir. Dinamik testler sızma testleri şeklinde manuel olarak yapılabileceği gibi, SAST süreçlerinde olduğu gibi otomatize taramalar yapan ürünler vasıtası ile yapılabilir. DAST süreci ile ilgili aşağıdaki makalelere de gözatabilirsiniz:

https://appsec.com.tr/blog/dosya-yukleme-file-upload-guvenligi https://appsec.com.tr/blog/input-validation

6. API Güvenliği Testleri (API Security)

Günümüzde API kullanımı gittikçe artmaktadır. API kullanımında ki bu artış aynı zamanda API Güvenliği’nin önemini de artırmaktadır. Son yıllarda ortaya çıkan API Güvenliği’ne özel ürünler, klasik DAST ürünlerinin de ötesinde kabiliyetler sunmaktadır. API uçnoktalarının keşfi, bu uçnoktaların test edilmesi, çalışan bir sistemde koruma sağlanması ve gerektiğinde önleme yapılması bu ürünlerin odaklandığı alanlardır.

7. Container Güvenliği (Container Security)

Hızlı kurulum, dağıtım ve ölçeklendirme kolaylığı sağlayan container yapılar sıklıkla kullanılmaktadır. Kullanılan container imajların güvenli olması, içerisinde ki bileşenlerin güvenlik zafiyetlerinden arındırılması ve çalışan bir ortamda ortaya çıkabilecek saldırıların engellenmesi önemli bir husustur.

Bu konuda https://appsec.com.tr/blog/docker-guvenligi-en-iyi-sikilastirma-teknikleri makalesini inceleyebilirsiniz.

8. Bulut Güvenliği

Ülkemizde regülasyonlar dolayısıyla yaygın olarak kullanılmasa da dünya genelinde bulut ortamlar hızla artmaktadır. IT sistemlerine ilişkin maliyetleri önemli ölçüde azaltan ve altyapı sistemlerinin yönetimini kolaylaştıran bulut teknolojisinde güvenlik gözardı edilemeyecek bir konudur.

9. Altyapı Zafiyet Yönetimi

Uygulamaların çalıştığı sistemlerde ve iletişimin sağlandığı network altyapsında düzenli olarak zafiyet taramaları yapılmalı ve tespit edilen zafiyetler için gerekli aksiyonlar alınmalıdır. Veritabanı sunucusu, uyguluma sunucusu, web sunucu, güvenlik duvarı vb. pek çok altyapı bileşeninde ortaya çıkabilecek zafiyetlerin tespiti ve yönetilmesi bu süreç kapsamında yapılmaktadır.

10. Uygulama Güvenliği Otomasyonu (ASOC)

Pekçok güvenlik teknolojisinden bahsettik. Maalesef bu teknolojilerin tamamını tek bir üründe toplamak mümkün değil. Bununla birlikte ortaya çıkan zafiyetlerin merkezileştirilmesi, gerekirse ticket sistemlerinde ticket açılması ve SLA takibi gibi süreçler gerekmektedir. Tüm bu süreçleri tasarlamak için ASOC ürünlerine ihtiyaç duyulmaktadır. ASOC ürünleri, remediation süreçlerinin kritik gereksinimi olan varlık yönetiminin (Asset Management) otomatize edilmesine de katkı sağlamaktadır.

Tüm bu süreçlerde adresleyebileceğimiz ve tarafımızca desteği verilen ürünleri aşağıdaki görselde özetleyebiliriz.

DevSecOps%20Gu%CC%88venlik%20Teknolojileri%200ef31761082647adbcea6cc04f571777

Bütün ürünler kendi alanlarında önemli kabiliyetlere sahiptir. ASOC kısmında bahsettiğimiz gibi bütün bu ürünlerin çıktılarını yönetmek ve merkezileştirmek önemlidir.

Written by

Oktay Şahin