Şimdi yükleniyor

Güvenli Yazılım Geliştirme Yaşam Döngüsü (Secure SDLC)

Günümüzde siber saldırıların önemli bir kısmı uygulama katmanındaki açıklardan kaynaklanıyor.
Bu nedenle yazılımlar güvenli tasarlanmadan, test edilmeden ve devreye alınmadan kurum tam anlamıyla korunmuş sayılmaz.

Secure SDLC; yazılım geliştirme sürecinin tüm aşamalarına güvenliği dahil eden bir yaklaşımdır.

1) Secure SDLC’nin Temel Amaçları

  • Uygulamalarda güvenlik açıklarını geliştirme aşamasında tespit etmek
  • Sızma testlerine daha az yük bindirmek
  • Kod kalitesini artırmak
  • Veri sızıntısı risklerini düşürmek
  • Regülasyonlara uygunluk sağlamak (ISO 27001, KVKK, PCI DSS vb.)

2) Güvenli Yazılım Yaşam Döngüsü Aşamaları

Secure SDLC, klasik SDLC adımlarını güvenlik gereksinimleri ile zenginleştirir:

Aşamalar:

  1. Gereksinim Analizi
  2. Tasarım
  3. Geliştirme
  4. Test
  5. Yayınlama
  6. Bakım
  7. Sürekli İyileştirme

Her aşamada yapılması gereken güvenlik kontrolleri aşağıda detaylı şekilde verilmiştir.

3) Gereksinim Analizi Aşaması

Güvenli bir uygulama, güvenli gereksinimlerle başlar.

Yapılacaklar:

  • Güvenlik gereksinimleri dokümanı hazırlanmalı
  • KVKK uyumluluğu kontrol edilmeli
  • Yetkilendirme ve rol modeli belirlenmeli (RBAC)
  • Veri sınıflandırması yapılmalı
  • Giriş/çıkış doğrulama gereksinimleri tanımlanmalı
  • İş süreçlerine göre risk analizi yapılmalı
  • Güvenlik kabulleri net olarak yazılmalı

4) Tasarım Aşaması

Bu aşamada tehdit modelleme en kritik adımdır.

Yapılacaklar:

  • Tehdit modelleme (STRIDE, PASTA, LINDDUN)
  • Mimari güvenlik diyagramları hazırlanmalı
  • Saldırı yüzeyleri belirlenmeli
  • Parola saklamak için güçlü hash algoritmaları seçilmeli (bcrypt, Argon2)
  • Veri maskeleme kararları alınmalı
  • Güvenli protokoller (HTTPS, TLS 1.3) zorunlu olmalı
  • API güvenlik yapısı tasarlanmalı (Rate limiting, JWT kullanım kuralları vb.)

5) Geliştirme Aşaması (Secure Coding)

Bu aşama güvenlik açıdan en çok hata yapılan kısımdır.

Temel güvenli kodlama prensipleri:

  • Girdi doğrulama (input validation)
  • Çıktı kodlama (output encoding)
  • SQL Injection’a karşı ORM veya parametrik sorgu kullanma
  • Hard-coded parola kullanmama
  • Secrets yönetimini Vault/KeyStore ile yapma
  • Error message’larda hassas bilgi göstermeme
  • Logging yaparken kişisel ve kritik veriyi maskeleme

Güvenli kodlama standartları:

  • OWASP Top 10
  • OWASP ASVS
  • CERT Secure Coding Standards

6) Kod Analizi ve Güvenlik Testleri

Geliştirme sırasında hataları erken tespit etmek için otomasyon şarttır.

A) Statik Kod Analizi (SAST)

  • Kod yazılırken IDE içi güvenlik uyarıları
  • CI/CD’de otomatik tarama
  • Örnek araçlar: SonarQube, Checkmarx, GitLab SAST

B) Dinamik Uygulama Güvenlik Testi (DAST)

  • Uygulama çalışırken tarama
  • Örnek araçlar: OWASP ZAP, Burp Suite

C) Bağımlılık Analizi (SCA)

  • Kullanılan paketlerin zafiyet taraması
  • Örnek: Dependabot, Snyk

D) Penetrasyon Testi (İnsan Odaklı)

  • Yayına geçmeden önce dış denetim
  • OWASP metodolojisine göre test

7) Test Aşaması

Fonksiyonel testlere ek olarak güvenlik testleri zorunlu olmalıdır.

Yapılacaklar:

  • Yetkilendirme testleri
  • Oturum yönetimi testleri
  • API güvenlik testleri
  • Rate-limit testleri
  • Veri doğrulama ve maskeleme testleri
  • Business logic (mantık) zaafiyet testleri

8) Yayınlama (Deploy) Aşaması

Yayına çıkmadan önce güvenlik checklist’i tamamlanmalıdır.

Yayın öncesi kontroller:

  • Güvenlik açıkları kapatıldı mı?
  • Geliştirme modları kapalı mı?
  • DEBUG mod devre dışı mı?
  • Admin paneli gizlendi mi?
  • HTTPS zorunlu mu?
  • Güvenli CI/CD pipeline kullanılıyor mu?
  • Secrets kasada mı?
  • API anahtarlarına erişim sınırlandı mı?

9) Bakım / Monitoring Aşaması

Güvenlik süreklilik gerektirir.

Yapılacaklar:

  • Log ve SIEM entegrasyonu
  • Olağan dışı trafik izleme
  • Patch management
  • Kullanıcı davranışı analizi (UBA)
  • Yeni zafiyetlerin taranması
  • Third party entegrasyonların güvenlik denetimleri

10) Sürekli İyileştirme

SDLC tek seferlik bir operasyon değildir.

  • Retrospektif toplantılar
  • Hataların kök neden analizi
  • Süreç ve doküman güncellemeleri
  • Geliştiricilere periyodik secure coding eğitimi
  • Yeni OWASP versiyonlarının takibi

11) Secure DevOps (DevSecOps) – Modern Yaklaşım

Artık güvenlik son aşamada değil, pipeline’ın her aşamasında otomatik çalışıyor.

DevSecOps’un temel prensipleri:

  • Güvenlik otomasyonu
  • Doğru yerde doğru test (Shift-Left Security)
  • Kodla yönetilen güvenlik (Security as Code)
  • Pipeline içinde SAST + DAST + SCA
  • Geliştirici odaklı güvenlik kültürü

Bu model, CI/CD kullanan tüm kurumlarda önerilir.

12) En Yaygın Hatalar

  • Geliştirmenin başına güvenliği koymamak
  • Tüm güvenlik testini pentest’e bırakmak
  • Kod incelemesi yapmamak
  • API güvenliğini göz ardı etmek
  • Secrets’ların kodda taşınması
  • Ekibin secure coding eğitimi almaması
  • Loglamayı sadece “hata kaydı” olarak görmek

13) Sonuç

Secure SDLC, siber güvenlik olgunluğunun temel taşlarından biridir.
Güvenliği en başa koyan yazılım ekipleri hem daha az saldırı yüzeyine sahip olur hem de maliyeti düşürür.

“Güvenlik sonradan eklenen bir özellik değil, yazılımın DNA’sı olmalıdır.”

Yasin Yiğit, bilgi teknolojileri alanında çalışan ve dijital çözümler geliştiren bir BT profesyonelidir. Birçok farklı sektörlerde bilgi güvenliği, BT süreç yönetimi, envanter takibi ve dijital dönüşüm konularında uzmanlaşmıştır.