DevSecOps: Kod Güvenliğini CI/CD Pipeline’a Taşımak
Güvenlik pipeline'ın sonunda değil içinde olmalı: SAST, SCA ve Secret Scanning'i CI/CD'ye taşımanın pratik rehberi.

Modern yazılım geliştirme ekipleri artık yalnızca daha iyi yazılım üretmeye değil, daha hızlı yazılım üretmeye de odaklanıyor.
Yeni özellikler daha kısa sürede geliştiriliyor.
Kod değişiklikleri gün içerisinde defalarca repository sistemlerine gönderiliyor.
CI/CD pipeline’ları sayesinde test, build ve deployment süreçleri otomatik hale geliyor.
Bu hız işletmelere büyük avantaj sağlıyor.
Ancak güvenlik tarafında önemli bir soru ortaya çıkıyor:
Yazılım geliştirme bu kadar hızlanırken güvenlik kontrolleri aynı hızda nasıl uygulanacak?
Geleneksel yöntemde güvenlik çoğu zaman yazılım geliştirme sürecinin sonunda devreye girerdi.
Uygulama geliştirilirdi.
Testler tamamlanırdı.
Release yaklaşırdı.
Son aşamada güvenlik ekibine gönderilirdi.
Pentest yapılırdı.
Kaynak kod analizi gerçekleştirilirdi.
Kritik bir açık bulunursa uygulama yeniden geliştirme ekibine dönerdi.
Bu model yavaş release yapılan dönemlerde uygulanabilir görünüyordu.
Ancak bugün günde onlarca deployment yapan bir organizasyonda aynı model sürdürülebilir değildir.
Her deployment öncesinde manuel güvenlik testi yapılamaz.
Her Pull Request güvenlik uzmanı tarafından tek tek incelenemez.
Her dependency güncellemesi manuel olarak değerlendirilemez.
Bu nedenle güvenlik kontrollerinin yazılım geliştirme sürecinin doğal bir parçası haline gelmesi gerekir.
Tam olarak burada DevSecOps yaklaşımı devreye girer.
DevSecOps’un amacı güvenliği geliştirme ekiplerinin karşısına son aşamada çıkan bir kontrol noktası olmaktan çıkarmaktır.
Güvenliği;
Planlama → Kodlama → Commit → Build → Test → Release → Deployment → Production
zincirinin tamamına entegre etmeyi hedefler.
Bu yaklaşımın en önemli prensiplerinden biri şudur:
Güvenlik geliştirmenin hızını durdurmamalıdır; güvenli geliştirmeyi otomatik hale getirmelidir.
1. DevSecOps Nedir?
DevSecOps, Development, Security ve Operations kavramlarının birleşiminden oluşur.
Temel amacı güvenliğin DevOps süreçlerine entegre edilmesidir.
Ancak DevSecOps’u yalnızca CI/CD pipeline’a birkaç güvenlik aracı eklemek olarak değerlendirmek eksik olur.
Gerçek DevSecOps yaklaşımı üç temel bileşenden oluşur:
İnsan
Süreç
Teknoloji
İnsan tarafında geliştiriciler, güvenlik uzmanları ve operasyon ekipleri birlikte çalışır.
Süreç tarafında güvenlik gereksinimleri ve politikaları yazılım geliştirme yaşam döngüsüne dahil edilir.
Teknoloji tarafında ise güvenlik kontrolleri mümkün olduğunca otomatik hale getirilir.
Bu nedenle DevSecOps bir ürün değildir.
Bir SAST lisansı satın almak da tek başına DevSecOps değildir.
DevSecOps daha geniş bir çalışma modelidir.
2. DevOps ile DevSecOps Arasındaki Fark Nedir?
DevOps’un temel amaçlarından biri geliştirme ve operasyon ekipleri arasındaki bariyerleri azaltmaktır.
Geliştirici kod yazar.
Pipeline otomatik test gerçekleştirir.
Build oluşturulur.
Uygulama otomatik olarak ilgili ortama alınır.
DevSecOps bu sürece güvenliği dahil eder.
Örneğin klasik DevOps pipeline’ı:
Commit
↓
Unit Test
↓
Build
↓
Deploy
şeklinde olabilir.
DevSecOps pipeline’ı ise:
Commit
↓
Secret Scanning
↓
SAST
↓
SCA
↓
Unit Test
↓
Build
↓
Container Scan
↓
Security Quality Gate
↓
Deploy
şeklinde genişletilebilir.
Aradaki temel fark güvenliğin otomatik geliştirme akışının bir parçası haline gelmesidir.
3. DevSecOps Neden Gereklidir?
Modern yazılım geliştirme hızında yalnızca manuel güvenlik süreçlerine güvenmek mümkün değildir.
Örneğin 100 geliştiricisi olan bir kurum düşünelim.
Her geliştirici günde ortalama birkaç commit yapıyor olabilir.
Bu yüzlerce kod değişikliği anlamına gelir.
Güvenlik ekibinin bütün değişiklikleri manuel olarak incelemesi gerçekçi değildir.
Dolayısıyla otomasyona ihtiyaç vardır.
DevSecOps güvenlik ekibinin her kod satırını manuel incelemesini değil;
güvenlik bilgisini otomatik kontrollere dönüştürmesini
hedefler.
4. Shift Left ve DevSecOps İlişkisi
DevSecOps’un temel kavramlarından biri Shift Left Security yaklaşımıdır.
Geleneksel yazılım geliştirme akışı soldan sağa düşünülür:
Planlama → Tasarım → Geliştirme → Test → Production
Güvenlik yalnızca sağ tarafta yapılırsa sorunlar geç tespit edilir.
Shift Left yaklaşımı güvenliği daha erken aşamalara taşır.
Örneğin:
Tasarım sırasında Threat Modeling.
Kodlama sırasında Secure Coding.
Commit sırasında Secret Scanning.
Pull Request sırasında SAST.
Build sırasında SCA.
Bu sayede güvenlik problemi production’a ulaşmadan önce tespit edilebilir.
5. Shift Left Her Şeyi Sola Taşımak mıdır?
Hayır.
Shift Left bazen yanlış anlaşılır.
Amaç bütün güvenlik testlerini geliştirici bilgisayarına taşımak değildir.
Her güvenlik kontrolünün uygun olduğu aşama farklıdır.
Örneğin SAST erken aşamada çok değerlidir.
Ancak production ortamındaki gerçek WAF davranışı ancak runtime sırasında görülebilir.
Pentest de çalışan uygulama üzerinde değer üretir.
Bu nedenle ideal model:
Shift Left + Shift Right
yaklaşımıdır.
Güvenlik hem geliştirme aşamasında hem çalışma aşamasında devam eder.
6. CI Nedir?
CI, yani Continuous Integration, geliştiricilerin yaptığı kod değişikliklerinin merkezi repository’ye sık şekilde entegre edilmesini ifade eder.
Kod gönderildiğinde otomatik olarak:
- build,
- unit test,
- quality control
gibi işlemler çalışabilir.
Güvenlik kontrollerinin en önemli entegrasyon noktalarından biri CI sürecidir.
Çünkü güvenlik problemi daha ana branch’e alınmadan görülebilir.
7. CD Nedir?
CD iki farklı şekilde kullanılabilir:
Continuous Delivery
veya
Continuous Deployment
Continuous Delivery’de uygulama her zaman production’a alınabilir durumda tutulur ancak son deployment manuel onay gerektirebilir.
Continuous Deployment’da ise gerekli kontrolleri geçen kod otomatik olarak production’a alınabilir.
Her iki durumda da güvenlik kontrollerinin pipeline içinde olması kritik öneme sahiptir.
Çünkü otomatik deployment varsa güvenli olmayan kod da aynı hızla production’a gidebilir.
8. CI/CD Pipeline Nedir?
CI/CD pipeline, yazılım kodunun geliştiriciden production ortamına kadar geçtiği otomatik işlem zinciridir.
Örneğin:
Source
↓
Compile
↓
Test
↓
Build
↓
Package
↓
Deploy
şeklinde olabilir.
DevSecOps yaklaşımı bu zincire güvenlik kontrollerini ekler.
Pipeline böylece yalnızca yazılım üretmez.
Aynı zamanda yazılımın belirlenen güvenlik kriterlerini karşılayıp karşılamadığını da kontrol eder.
9. DevSecOps Pipeline Nerede Başlamalıdır?
İdeal güvenlik pipeline’ı geliştiricinin kodu remote repository’ye göndermesinden önce başlar.
Örneğin:
IDE
Kod yazılırken güvenlik uyarısı.
Pre-Commit
Secret Scanning.
Pull Request
SAST ve SCA.
Build
Full Security Scan.
Test Environment
DAST ve API Security.
Release
Security Quality Gate.
Production
Continuous Monitoring.
Bu yaklaşım güvenliği bir noktaya değil bütün yaşam döngüsüne dağıtır.
10. IDE Security Nedir?
Geliştiricinin kullandığı IDE içerisine güvenlik eklentileri entegre edilebilir.
Örneğin geliştirici güvensiz bir fonksiyon kullandığında IDE anında uyarı gösterebilir.
Bu yaklaşım son derece değerlidir.
Çünkü geliştirici güvenlik hatasını haftalar sonra raporda değil, kodu yazdığı anda görür.
Bu feedback loop ne kadar kısa olursa remediation o kadar kolaylaşır.
11. Developer Feedback Loop
DevSecOps’un en önemli hedeflerinden biri güvenlik geri bildirim süresini azaltmaktır.
Örneğin güvenlik açığı pentest sırasında iki ay sonra bulunursa geliştirici ilgili kodu unutmuş olabilir.
Aynı açık Pull Request aşamasında bulunursa kod hâlâ geliştiricinin zihnindedir.
Düzeltme çok daha hızlı yapılabilir.
Bu nedenle ideal güvenlik sistemi:
problemi mümkün olduğunca kodun oluşturulduğu ana yakın göstermelidir.
12. Pre-Commit Security
Pre-Commit Security, kod repository’ye gönderilmeden önce gerçekleştirilen güvenlik kontrolleridir.
En uygun kontrollerden biri Secret Scanning’dir.
Örneğin geliştirici yanlışlıkla production API key içeren dosyayı commit etmeye çalışır.
Pre-commit kontrolü secret’ı tespit eder.
Commit durdurulur.
Bu durumda bilgi remote repository geçmişine hiç girmez.
Bu, olay olduktan sonra credential rotation yapmaktan çok daha güçlü bir güvenlik yaklaşımıdır.
13. Pull Request Security
Pull Request veya Merge Request aşaması DevSecOps için en değerli kontrol noktalarından biridir.
Kod henüz ana branch’e alınmamıştır.
Geliştirici değişikliklerini tamamlamıştır.
Automated Security Scan çalıştırılabilir.
Örneğin:
- SAST
- SCA
- Secret Scanning
- IaC Security
kontrolleri otomatik olarak gerçekleştirilebilir.
Bulgu Pull Request ekranında geliştiriciye gösterilebilir.
14. Pull Request İçerisinde Security Review
Güvenlik bulgusunun ayrı bir PDF raporunda sunulması yerine geliştiricinin çalışma ortamına taşınması daha etkilidir.
Örneğin ilgili kod satırının yanında:
High – Potential SQL Injection
uyarısı gösterilebilir.
Altında:
- problemin açıklaması,
- CWE bilgisi,
- güvenli kod önerisi
bulunabilir.
Bu yaklaşım geliştirici deneyimini ciddi şekilde iyileştirir.
15. SAST Pipeline’a Nasıl Entegre Edilir?
SAST genellikle kod checkout edildikten sonra çalıştırılabilir.
Örnek:
Git Checkout
↓
SAST Scan
↓
Result Analysis
↓
Quality Gate
↓
Build
SAST sonucunda yeni Critical veya High bulgu varsa pipeline politika gereği durdurulabilir.
Ancak bütün bulgular nedeniyle build durdurulmamalıdır.
Risk bazlı yaklaşım gereklidir.
16. Incremental SAST Neden Önemlidir?
Büyük uygulamalarda full SAST analizi uzun sürebilir.
Her Pull Request’te 45 dakika süren tarama geliştirici deneyimini kötüleştirebilir.
Bu nedenle incremental scan kullanılabilir.
Yalnızca değişen kod ve ilişkili veri akışları analiz edilir.
Örneğin:
Pull Request → Incremental Scan
Nightly Build → Full Scan
modeli kullanılabilir.
Bu sayede hız ve güvenlik arasında denge sağlanır.
17. SCA Pipeline Entegrasyonu
SCA, dependency dosyalarını veya build çıktısını analiz etmek için pipeline içerisinde çalıştırılabilir.
Örneğin:
package-lock.json
pom.xml
requirements.txt
dosyaları kontrol edilebilir.
Kritik CVE bulunan dependency tespit edilirse geliştiriciye uyarı verilebilir.
Fixed version önerilebilir.
18. SCA Quality Gate Nasıl Olmalı?
Bütün CVE’lerde build engellenmemelidir.
Örneğin risk modeli şu kriterleri birlikte kullanabilir:
- Critical severity
- Reachable
- Public exploit
- Internet-facing application
Bu şartları karşılayan bir dependency vulnerability build’i durdurabilir.
Düşük riskli bulgular backlog’a alınabilir.
Bu, geliştiricinin yüzlerce gereksiz güvenlik uyarısıyla karşılaşmasını engeller.
19. Secret Scanning Pipeline Entegrasyonu
Secret Scanning mümkün olduğunca erken çalışmalıdır.
Ancak CI/CD pipeline içerisinde de ikinci kontrol olarak kullanılabilir.
Örneğin geliştirici pre-commit kontrolünü bypass etmiş olabilir.
Pipeline secret tespit ederse build durdurulabilir.
Özellikle:
- production API key,
- private key,
- cloud credential
bulguları otomatik bloklama için uygun olabilir.
20. Active Secret Tespit Edilirse Ne Olmalı?
Pipeline yalnızca:
“Secret bulundu.”
demekle kalmamalıdır.
Eğer aktif production credential repository’ye girdiyse olay güvenlik olayı haline gelebilir.
Bu durumda süreç:
Block
↓
Revoke
↓
Rotate
↓
Investigate
şeklinde ilerlemelidir.
Çünkü secret Git geçmişine girdiyse sadece koddan silmek yeterli değildir.
21. IaC Security Nedir?
Modern DevOps ekipleri altyapıyı da kod olarak yönetir.
Terraform, Kubernetes YAML ve benzeri Infrastructure as Code yapılandırmaları kullanılabilir.
Bu dosyalarda güvenlik yanlış yapılandırmaları bulunabilir.
Örneğin:
- public storage,
- açık firewall rule,
- privileged container,
- excessive IAM permission
gibi problemler IaC scanning araçlarıyla erken aşamada tespit edilebilir.
22. Infrastructure as Code Neden Shift Left İçin Önemlidir?
Cloud ortamında güvenlik problemi production’a çıktıktan sonra tespit edilebilir.
Ancak aynı hata Terraform dosyasında daha deployment yapılmadan bulunabilir.
Örneğin storage bucket’ın public olması IaC içerisinde görülebilir.
Pipeline deployment’ı durdurabilir.
Bu, cloud misconfiguration’ın production’a hiç ulaşmamasını sağlar.
23. Container Security Pipeline’a Nasıl Eklenir?
Container kullanan uygulamalarda build sonrasında image scanning yapılabilir.
Örneğin pipeline:
Code
↓
SAST
↓
SCA
↓
Docker Build
↓
Container Scan
↓
Sign Image
↓
Deploy
şeklinde ilerleyebilir.
Container scan sırasında hem application dependency hem de OS package açıkları tespit edilebilir.
24. Base Image Politikası
Geliştiricilerin rastgele container base image kullanması supply chain riskini artırabilir.
Kurumsal politika ile yalnızca onaylı base image’ların kullanılmasına izin verilebilir.
Örneğin internal registry içerisinde:
Approved Base Images
tutulabilir.
Image’lar düzenli olarak patch edilir.
Geliştiriciler doğrudan public registry’den bilinmeyen image çekmez.
25. Container Image Signing
Build tamamlandıktan sonra image dijital olarak imzalanabilir.
Deployment sistemi yalnızca güvenilir CI/CD pipeline tarafından imzalanmış image’ları kabul edebilir.
Bu şu saldırıyı önlemeye yardımcı olur:
Saldırgan registry’ye zararlı image yükler.
Kubernetes bu image’ı çalıştırmaya çalışır.
Signature policy:
Trusted signature yok → Deployment reddedildi.
Bu supply chain güvenliğinde güçlü bir kontroldür.
26. Security Quality Gate Nedir?
Security Quality Gate, yazılımın pipeline’ın bir sonraki aşamasına geçmesi için karşılaması gereken güvenlik kriteridir.
Örneğin politika şöyle olabilir:
- Yeni Critical SAST bulgusu yok.
- Reachable Critical dependency yok.
- Active secret yok.
- Container’da kritik exploit edilebilir CVE yok.
Bu şartlardan biri karşılanmazsa pipeline durdurulabilir.
27. Quality Gate’in Amacı Nedir?
Amaç geliştiricinin işini zorlaştırmak değildir.
Amaç kabul edilemez güvenlik riskinin production’a ulaşmasını engellemektir.
Quality Gate şu soruya cevap verir:
“Bu release kurumun kabul ettiği minimum güvenlik seviyesini karşılıyor mu?”
Bu sınır kurumun risk iştahına göre belirlenir.
28. Her Güvenlik Bulgusu Build’i Durdurmalı mı?
Hayır.
Bu DevSecOps projelerinde yapılan en büyük hatalardan biridir.
Örneğin SAST 500 Low bulgu üretiyorsa hepsi build’i durdurmamalıdır.
Aksi halde geliştiriciler güvenlik aracını devre dışı bırakmaya çalışabilir.
Quality Gate şu şekilde olabilir:
Critical → Block
High → Risk ve uygulama kritikliğine göre
Medium → Ticket
Low → Backlog
Bu yalnızca örnektir.
Kurumsal risk modeline göre özelleştirilmelidir.
29. New Vulnerability ile Existing Vulnerability Ayrımı
Legacy uygulamalarda binlerce geçmiş güvenlik bulgusu olabilir.
DevSecOps ilk devreye alındığında bunların tamamında pipeline durursa geliştirme yapılamaz hale gelebilir.
Bu nedenle New Code Policy kullanılabilir.
Temel prensip:
Yeni güvenlik açığı üretme.
Existing Security Debt ayrı backlog’da yönetilir.
Yeni kod daha sıkı güvenlik politikasına tabi tutulur.
30. Security Debt DevSecOps İçerisinde Nasıl Yönetilir?
Geçmiş güvenlik problemleri risk bazlı şekilde sınıflandırılabilir.
Örneğin:
Critical
Acil remediation.
High
Planlı sprint.
Medium
Backlog.
Yeni kodda ise farklı politika uygulanabilir:
Yeni Critical / High → Merge yok.
Bu model güvenliği iyileştirirken geliştirme sürecinin tamamen durmasını engeller.
31. Build Breaker Nedir?
Build Breaker, belirli güvenlik kriterleri sağlanmadığında CI/CD sürecini otomatik durduran mekanizmadır.
Örneğin:
SAST Critical Found
↓
Build Failed
Ancak Build Breaker dikkatli kullanılmalıdır.
Yanlış Positive nedeniyle sürekli build duruyorsa güvenlik sistemi güven kaybeder.
Bu nedenle yalnızca yüksek doğruluklu güvenlik kontrollerinde uygulanmalıdır.
32. False Positive DevSecOps’u Nasıl Etkiler?
SAST veya diğer güvenlik araçları çok fazla False Positive üretirse geliştirici ekipleri sürekli yanlış uyarılarla uğraşır.
Bu durum:
Security Alert Fatigue
oluşturabilir.
Bir süre sonra gerçek kritik bulgular da göz ardı edilebilir.
Bu nedenle DevSecOps otomasyonunun başarısı yalnızca araç sayısıyla ölçülmemelidir.
Signal-to-Noise Ratio
yani gerçek değerli bulgu oranı kritik öneme sahiptir.
33. Security Triage Otomatik Olabilir mi?
Bazı triage adımları otomatikleştirilebilir.
Örneğin:
- duplicate detection,
- reachability,
- asset criticality,
- exploit intelligence
otomatik olarak bulguya eklenebilir.
Ancak kritik durumlarda insan doğrulaması hâlâ önemlidir.
İdeal yaklaşım:
Automation First, Human Where Needed
şeklinde olabilir.
34. Developer Exception Süreci
Bazı durumlarda güvenlik bulgusu bilerek kabul edilebilir.
Örneğin geliştirici:
“Bu vulnerability bizim kullanım senaryomuzda reachable değil.”
diyebilir.
Bu durumda exception süreci bulunmalıdır.
Exception:
- gerekçeli,
- süreli,
- owner atanmış,
- audit edilebilir
olmalıdır.
Süresiz ve kontrolsüz suppress mekanizması güvenlik politikasını etkisiz hale getirebilir.
35. False Positive Suppression Nasıl Yönetilmeli?
Bir bulgu gerçekten False Positive ise sistemde suppress edilebilir.
Ancak şu bilgiler tutulmalıdır:
- kim suppress etti,
- neden,
- ne zaman,
- hangi scope için,
- expiration tarihi.
Böylece güvenlik kararı izlenebilir hale gelir.
36. Security as Code Nedir?
DevSecOps’un ileri kavramlarından biri Security as Code yaklaşımıdır.
Güvenlik politikalarının manuel doküman olmaktan çıkarılıp makine tarafından uygulanabilir kurallara dönüştürülmesini ifade eder.
Örneğin:
Production container root çalışamaz.
kuralı dokümanda yazmak yerine pipeline policy olarak uygulanabilir.
Deployment bu koşulu karşılamazsa otomatik engellenebilir.
37. Policy as Code Nedir?
Policy as Code güvenlik ve uyum politikalarının kod şeklinde yönetilmesidir.
Örneğin cloud deployment sırasında:
- public IP yasak,
- encryption zorunlu,
- privileged container yasak,
- belirli region dışında deployment yasak
gibi politikalar otomatik uygulanabilir.
Bu yaklaşım güvenlik politikasının manuel kontrol ihtiyacını azaltır.
38. Security Policy Git’te Tutulabilir mi?
Evet.
Policy as Code kuralları version control içerisinde tutulabilir.
Bu önemli avantajlar sağlar.
Kim değiştirdi?
Ne zaman değiştirdi?
Hangi kural kaldırıldı?
Pull Request review yapıldı mı?
hepsi görülebilir.
Böylece güvenlik politikası da yazılım kodu gibi yönetilebilir.
39. DevSecOps’ta Threat Modeling Nerede Yer Alır?
Her güvenlik kontrolü otomatik değildir.
Threat Modeling daha çok tasarım aşamasında yapılır.
Yeni sistem tasarlanırken:
- trust boundary,
- authentication,
- data flow,
- external integration,
- high-value asset
analiz edilir.
Buradan çıkan güvenlik gereksinimleri daha sonra pipeline kontrollerine dönüştürülebilir.
Örneğin threat model:
Bu servis yalnızca internal network’ten erişilebilir olmalı.
diyorsa IaC policy bunu otomatik enforce edebilir.
40. Security Requirement as Code
Güvenlik gereksinimleri mümkün olduğunca test edilebilir hale getirilebilir.
Örneğin gereksinim:
Bütün API endpoint’lerinde authentication zorunlu.
Bu bazı framework’lerde automated rule ile kontrol edilebilir.
Böylece security requirement dokümanda unutulmaz.
CI/CD içerisinde sürekli doğrulanır.
41. Security Champion DevSecOps’ta Neden Önemlidir?
Güvenlik ekibi bütün geliştirme ekiplerine tek başına yetişemez.
Bu nedenle ekip içerisindeki geliştiricilerden bazıları Security Champion rolü üstlenebilir.
Security Champion:
- güvenlik bulgularını anlamaya,
- geliştiricilere yardımcı olmaya,
- Secure Coding standardını yaymaya,
- AppSec ekibiyle iletişim kurmaya
yardımcı olur.
Bu model DevSecOps kültürünü güçlendirir.
42. Security Champion Güvenlik Uzmanı mıdır?
Şart değildir.
Genellikle ana rolü yazılım geliştiricidir.
Ancak güvenlik konusunda daha fazla eğitim ve sorumluluk alır.
Amaç her ekibe tam zamanlı security engineer yerleştirmek değil;
güvenlik bilgisini ekiplerin içerisine yaymaktır.
43. DevSecOps Geliştiricinin Sorumluluğunu Artırır mı?
Evet, ancak güvenliğin tamamını geliştiriciye yüklememelidir.
Geliştiricinin:
- Secure Coding prensiplerini bilmesi,
- güvenlik uyarılarını değerlendirmesi,
- doğru remediation uygulaması
beklenebilir.
Ancak AppSec ekibinin de:
- araçları yönetmesi,
- politikaları oluşturması,
- kritik bulguları doğrulaması,
- eğitim sağlaması
gerekir.
Güvenlik ortak sorumluluktur.
44. “You Build It, You Secure It”
DevSecOps kültüründe bazen:
“You build it, you run it.”
prensibine güvenlik de eklenir.
Yani:
“You build it, you secure it.”
Ancak bu ifade güvenlik ekibinin sorumluluğunu ortadan kaldırmaz.
Amaç geliştiricinin güvenliğin yalnızca başka bir departmanın işi olmadığını anlamasıdır.
45. Developer Security Training
DevSecOps otomasyonu eğitim olmadan eksik kalır.
Araç geliştiriciye:
CWE-89
uyarısı veriyorsa geliştiricinin bunun ne anlama geldiğini anlayabilmesi gerekir.
Secure Coding eğitimleri teknoloji stack’e göre özelleştirilebilir.
Örneğin:
Java geliştiricileri,
.NET geliştiricileri,
frontend ekipleri
farklı güvenlik örnekleriyle eğitilebilir.
46. Just-in-Time Security Training
Yıllık genel Secure Coding eğitimine ek olarak bulgu anında kısa eğitim verilebilir.
Örneğin geliştirici SQL Injection bulgusu aldığında:
“Parameterized Query nasıl kullanılır?”
şeklinde kısa rehber gösterilebilir.
Bu yöntem Just-in-Time Security Training olarak düşünülebilir.
Bilgi ihtiyaç anında verildiği için daha etkili olabilir.
47. Secure Code Snippet
İyi AppSec araçları yalnızca hatayı göstermekle kalmamalıdır.
Güvenli alternatif de sunmalıdır.
Örneğin:
Unsafe
String concatenation SQL.
Secure
Parameterized query.
Bu yaklaşım geliştiricinin remediation süresini azaltır.
48. Security Ticket Automation
Doğrulanmış bulgular otomatik olarak iş takip sistemine aktarılabilir.
Örneğin:
SAST bulgusu
↓
Jira ticket
↓
Application Owner
↓
SLA
↓
Remediation
↓
Retest
Bu sayede güvenlik bulgusu PDF içerisinde kaybolmaz.
49. AppSec Orchestration
Çok sayıda security scanner kullanıldığında sonuçların merkezi yönetimi zorlaşabilir.
SAST farklı sistemde.
SCA başka platformda.
DAST ayrı konsolda.
Container security farklı yerde.
Bu noktada AppSec Orchestration veya Application Security Posture Management yaklaşımları kullanılabilir.
Amaç bütün bulguları tek risk görünümünde toplamak ve önceliklendirmektir.
50. Duplicate Finding Problemi
Aynı güvenlik açığı birden fazla araç tarafından bulunabilir.
Örneğin SQL Injection:
SAST,
DAST,
Pentest
tarafından ayrı ayrı raporlanabilir.
Merkezi platform bu bulguları tek issue altında birleştirebilir.
Bu security backlog’un şişmesini engeller.
51. Asset Context Neden Önemlidir?
Aynı güvenlik açığı farklı uygulamalarda aynı riski taşımaz.
Örneğin:
Critical vulnerability
internal demo uygulamasında olabilir.
Aynı vulnerability
internet-facing ödeme sisteminde olabilir.
Risk farklıdır.
Bu nedenle DevSecOps bulgularına application context eklenmelidir.
52. Application Criticality
Her uygulamaya iş kritikliği atanabilir.
Örneğin:
Tier 1 – Kritik
Tier 2 – Yüksek
Tier 3 – Standart
Tier 4 – Düşük
Security Quality Gate buna göre farklı olabilir.
Kritik finans uygulamasında daha sıkı politika uygulanırken internal düşük riskli araçta daha esnek politika kullanılabilir.
53. Risk-Based DevSecOps
Olgun DevSecOps yaklaşımı bütün uygulamalara aynı güvenlik yükünü uygulamaz.
Risk bazlı çalışır.
Örneğin Tier 1 uygulamada:
- SAST
- SCA
- Secret Scan
- DAST
- Pentest
- Threat Modeling
zorunlu olabilir.
Tier 4 uygulamada ise:
- SAST
- SCA
- Secret Scan
yeterli görülebilir.
Bu güvenlik kaynaklarının doğru kullanılmasını sağlar.
54. DevSecOps ve API Security
API’ler modern uygulamaların ana saldırı yüzeylerinden biridir.
DevSecOps pipeline içerisinde:
- API schema validation,
- SAST,
- API DAST,
- secret scanning
uygulanabilir.
Release öncesinde manuel API pentest de gerçekleştirilebilir.
Özellikle authorization problemleri otomasyonla tamamen çözülemez.
55. DevSecOps ve Microservices
Mikroservis mimarisinde yüzlerce repository ve bağımsız deployment olabilir.
Manuel güvenlik yaklaşımı burada daha da zorlaşır.
DevSecOps sayesinde her mikroservis standart güvenlik pipeline’ından geçebilir.
Örneğin shared template kullanılabilir:
SAST
SCA
Container Scan
Sign
Deploy
Bu standardizasyon büyük ölçekli kurumlarda çok değerlidir.
56. Golden Pipeline Nedir?
Golden Pipeline, kurum tarafından onaylanmış standart CI/CD pipeline şablonudur.
Geliştirme ekipleri sıfırdan pipeline oluşturmak yerine güvenli template kullanır.
Örneğin Golden Pipeline içerisinde varsayılan olarak:
- SAST,
- SCA,
- Secret Scanning,
- container scanning,
- signing
bulunabilir.
Bu yaklaşım güvenliği “optional” olmaktan çıkarır.
57. Paved Road Yaklaşımı
Platform Engineering dünyasında kullanılan Paved Road yaklaşımı geliştiriciye güvenli ve kolay yol sunmayı hedefler.
Geliştiriciye:
“Şunları yapman zorunlu.”
demek yerine,
güvenli pipeline,
güvenli base image,
onaylı library,
hazır authentication component
sunulur.
Güvenli yol aynı zamanda en kolay yol haline gelir.
Bu başarılı DevSecOps kültürünün güçlü prensiplerinden biridir.
58. Güvenliği Kolaylaştırmak
Eğer güvenli yöntem geliştirici için çok zor ise zaman baskısı altında bypass edilme ihtimali artar.
Bu nedenle güvenlik kontrolleri mümkün olduğunca geliştirici dostu olmalıdır.
Örneğin:
Parolayı koda yazma.
yerine:
Tek satırla Secrets Manager’dan çek.
çözümü sunulmalıdır.
Güvenli yöntem kolaylaştıkça uyum artar.
59. Developer Experience ile Security Dengesi
Başarılı DevSecOps programında iki hedef dengelenmelidir:
Security
ve
Developer Velocity
Güvenlik ekibi her şeyi engellerse yazılım geliştirme yavaşlar.
Her şeyi serbest bırakırsa risk artar.
Risk bazlı automation bu dengeyi sağlar.
60. Pipeline Security’nin Kendisi Güvenli mi?
Bu kritik bir sorudur.
CI/CD pipeline’a güvenlik araçları eklemek yeterli değildir.
Pipeline’ın kendisinin de korunması gerekir.
Çünkü CI/CD sistemi genellikle:
- source code,
- production credential,
- container registry,
- cloud infrastructure
erişimine sahiptir.
Saldırgan pipeline’ı ele geçirirse bütün yazılım tedarik zincirini etkileyebilir.
61. CI/CD Access Control
CI/CD yönetim yetkileri minimum tutulmalıdır.
Örneğin her geliştirici:
- production secret,
- pipeline configuration,
- deployment approval
değiştirememelidir.
Least Privilege ve separation of duties uygulanabilir.
62. Branch Protection
Kritik branch’lerde doğrudan push yasaklanabilir.
Örneğin main branch için:
- Pull Request zorunlu,
- iki reviewer,
- security checks successful,
- signed commit
şartları uygulanabilir.
Böylece tek kullanıcının doğrudan production kodunu değiştirmesi zorlaştırılır.
63. Code Owner Nedir?
CODEOWNERS veya benzeri mekanizmalar belirli dosya ve modüller için zorunlu reviewer belirleyebilir.
Örneğin:
authentication kodundaki değişiklikler Security Champion onayı gerektirebilir.
CI/CD configuration değişiklikleri DevOps owner onayı gerektirebilir.
Bu riskli kod bölgelerinde ek kontrol sağlar.
64. Production Deployment Approval
Kritik uygulamalarda Continuous Deployment yerine approval gate kullanılabilir.
Örneğin:
Bütün otomatik kontroller başarılı.
↓
Release Manager Onayı.
↓
Production Deployment.
Bu özellikle regüle ve kritik sistemlerde faydalı olabilir.
65. Separation of Duties
Aynı kişinin:
kod yazması,
review etmesi,
production’a deploy etmesi
her ortamda istenmeyebilir.
Separation of Duties belirli kritik işlemlerde ikinci onay mekanizması sağlar.
DevSecOps otomasyon ile bu gereksinimi kolaylaştırabilir.
66. CI/CD Secrets Nasıl Yönetilmeli?
Pipeline içinde production credential açık metin tutulmamalıdır.
Merkezi secret store kullanılabilir.
Pipeline yalnızca çalıştığı anda gerekli secret’a erişir.
Mümkünse short-lived identity tercih edilmelidir.
Örneğin static cloud key yerine workload identity kullanılabilir.
67. Short-Lived Credentials
Kısa ömürlü credential DevSecOps güvenliğini ciddi şekilde artırabilir.
Örneğin CI/CD pipeline cloud’a deployment yapmak için 1 yıllık access key kullanmak yerine 15 dakikalık temporary token alabilir.
Token çalınsa bile saldırganın kullanım süresi sınırlı olur.
68. Build Reproducibility
Güvenli supply chain için aynı kaynak koddan aynı build sonucunun üretilebilmesi değerlidir.
Bu reproducible build yaklaşımı supply chain manipülasyonlarını tespit etmeye yardımcı olabilir.
Build ortamı mümkün olduğunca kontrollü ve deterministik olmalıdır.
69. Immutable Artifact
Build tamamlandıktan sonra artifact değiştirilmemelidir.
Örneğin:
Build Once → Promote Same Artifact
yaklaşımı kullanılabilir.
Test ortamında onaylanan image başka şekilde yeniden build edilmeden production’a taşınır.
Böylece test edilen artifact ile production artifact aynı olur.
70. SBOM Pipeline’a Nasıl Eklenir?
Build sırasında otomatik SBOM üretilebilir.
Örneğin:
Build
↓
SCA
↓
SBOM Generation
↓
Artifact Signing
↓
Release
Her release ile SBOM saklanabilir.
Bu ileride yeni CVE çıktığında hızlı etki analizi sağlar.
71. Provenance Nedir?
Software provenance bir artifact’ın nasıl üretildiği hakkında bilgi sağlar.
Örneğin:
- hangi repository,
- hangi commit,
- hangi pipeline,
- hangi build environment
kullanıldığı kaydedilebilir.
Bu supply chain güvenliğinde önemlidir.
Çünkü production’daki artifact’ın kaynağı doğrulanabilir.
72. DevSecOps Metrikleri
DevSecOps programının başarılı olup olmadığını ölçmek gerekir.
Örneğin şu metrikler takip edilebilir:
- Pull Request başına güvenlik bulgusu
- Critical vulnerability sayısı
- Mean Time to Remediate
- Security Gate failure oranı
- SAST kapsamındaki repository oranı
- SCA kapsamındaki uygulama oranı
- Secret leak sayısı
- Production sonrası bulunan açık sayısı
Bu metrikler AppSec olgunluğunu ölçmeye yardımcı olur.
73. Mean Time to Remediate
MTTR, güvenlik bulgusunun tespit edilmesinden kapanmasına kadar geçen ortalama süreyi ifade eder.
DevSecOps’un önemli hedeflerinden biri MTTR değerini azaltmaktır.
Çünkü bulgu geliştiriciye hızlı ulaştığında remediation daha hızlı olur.
74. Mean Time to Detect
Bir başka önemli metrik problemin ne kadar hızlı tespit edildiğidir.
Geleneksel modelde güvenlik açığı aylar sonra pentestte bulunabilir.
DevSecOps modelinde Pull Request sırasında birkaç dakika içerisinde bulunabilir.
Bu ciddi bir güvenlik avantajıdır.
75. Vulnerability Escape Rate
Bir güvenlik açığının geliştirme ve test kontrollerinden kaçıp production’a ulaşması ölçülebilir.
Amaç zaman içerisinde bu oranı azaltmaktır.
Bu metrik AppSec kontrollerinin ne kadar etkili olduğunu gösterebilir.
76. Security Coverage
Kaç repository SAST kapsamında?
Kaç uygulama SCA kullanıyor?
Kaç pipeline Secret Scanning uyguluyor?
Kaç uygulamanın SBOM’u var?
Bu oranlar güvenlik programının kapsama seviyesini gösterir.
77. Finding Count Tek Başına İyi Bir Metrik midir?
Hayır.
“Bu ay 5.000 güvenlik açığı bulduk.”
tek başına başarı göstergesi değildir.
Hatta kötü süreç göstergesi olabilir.
Daha anlamlı sorular:
- Kaçı gerçekti?
- Kaçı tekrar eden problemdi?
- Kaçı production’a ulaştı?
- Ne kadar sürede düzeltildi?
- Aynı CWE yeniden oluşuyor mu?
olmalıdır.
78. DevSecOps Olgunluk Yolculuğu
DevSecOps tek seferlik proje değildir.
Aşamalı olarak geliştirilebilir.
Seviye 1
Manuel pentest.
Seviye 2
SAST ve SCA.
Seviye 3
CI/CD automation.
Seviye 4
Security Quality Gate.
Seviye 5
Threat Modeling + Security Champions.
Seviye 6
Risk-based Continuous AppSec.
Bu yapı kurumdan kuruma farklılık gösterebilir.
79. Her Kurum Aynı DevSecOps Modelini Kullanmalı mı?
Hayır.
Küçük yazılım ekibi ile yüzlerce geliştiricisi olan finans kuruluşunun ihtiyaçları aynı değildir.
DevSecOps mimarisi:
- ekip büyüklüğü,
- teknoloji stack,
- regülasyon,
- release sıklığı,
- uygulama kritikliği
doğrultusunda tasarlanmalıdır.
Ama temel prensip aynıdır:
Güvenliği yazılım geliştirme yaşam döngüsüne entegre etmek.
80. DevSecOps Araç Projesi Değildir
DevSecOps başarısızlıklarının temel nedenlerinden biri yalnızca araç satın alınmasına odaklanmaktır.
SAST ürünü alınır.
SCA ürünü alınır.
DAST alınır.
Ama geliştirici sürece dahil edilmez.
Bulgular yönetilmez.
Quality Gate tanımlanmaz.
False Positive temizlenmez.
Bu durumda araçlar security noise üretir.
Gerçek DevSecOps:
People + Process + Technology
üçlüsünü birlikte yönetir.
SecureSys DevSecOps ve CI/CD Güvenliği Yaklaşımı
SecureSys olarak DevSecOps’u yalnızca CI/CD pipeline içerisine güvenlik tarama araçları eklemek şeklinde değerlendirmiyoruz.
Amaç güvenliği geliştirme sürecinin sonunda uygulanan bir kontrol olmaktan çıkarıp yazılım yaşam döngüsünün doğal bir parçası haline getirmektir.
Proje kapsamına göre;
Secure Coding, SAST, SCA, Secret Scanning, IaC Security, Container Security, DAST, API Security ve Pentest
kontrollerinin CI/CD süreçleriyle birlikte değerlendirilmesi mümkündür.
Ancak teknik entegrasyon kadar önemli başka bir konu daha vardır:
Doğru güvenlik kontrolünü doğru noktada çalıştırmak.
Her commit sonrasında uzun süren full scan çalıştırılması geliştirici deneyimini bozabilir.
Her Low severity bulguda pipeline durdurulması sürdürülebilir değildir.
Her güvenlik kararının manuel onay gerektirmesi DevOps hızını ortadan kaldırabilir.
Bu nedenle güçlü DevSecOps modeli:
hız + otomasyon + risk bazlı güvenlik
dengesini kurmalıdır.
Örneğin:
Developer aşamasında hızlı güvenlik geri bildirimi,
Pull Request sırasında incremental SAST,
Build sırasında SCA ve Secret Scanning,
Release öncesinde Security Quality Gate,
kritik uygulamalarda manuel pentest,
production ortamında sürekli güvenlik izleme
birlikte değerlendirilebilir.
Sonuçta DevSecOps’un gerçek başarısı:
kaç güvenlik aracı kurulduğuyla değil, güvenlik problemlerinin production’a ulaşmadan ne kadar erken engellenebildiğiyle ölçülmelidir.
Sık Sorulan Sorular
DevSecOps nedir?
DevSecOps, güvenlik kontrollerinin DevOps ve yazılım geliştirme yaşam döngüsüne entegre edilmesi yaklaşımıdır.
DevOps ile DevSecOps arasındaki fark nedir?
DevSecOps, DevOps süreçlerine güvenliği tasarım, geliştirme, build, test ve deployment aşamalarında dahil eder.
CI/CD pipeline nedir?
Kaynak kodun test edilmesi, build edilmesi ve ilgili ortama deploy edilmesi gibi işlemlerin otomatik olarak yürütüldüğü süreçtir.
SAST CI/CD pipeline’a entegre edilebilir mi?
Evet. SAST Pull Request, Merge Request veya build aşamasında otomatik çalıştırılabilir.
SCA CI/CD içerisinde kullanılabilir mi?
Evet. Dependency dosyaları ve build bileşenleri otomatik olarak bilinen güvenlik açıkları açısından taranabilir.
Security Quality Gate nedir?
Yazılımın pipeline’ın sonraki aşamasına geçebilmesi için karşılaması gereken minimum güvenlik kriteridir.
Her güvenlik bulgusu build’i durdurmalı mı?
Hayır. Risk bazlı politika uygulanmalıdır. Aksi halde güvenlik kontrolleri geliştirme sürecini gereksiz şekilde yavaşlatabilir.
Secret Scanning ne zaman çalıştırılmalıdır?
Mümkün olduğunca pre-commit aşamasından başlayarak Pull Request ve CI/CD pipeline içerisinde de çalıştırılması faydalıdır.
DevSecOps pentestin yerine geçer mi?
Hayır. DevSecOps sürekli otomatik güvenlik kontrolleri sağlarken pentest gerçek saldırgan perspektifinden derin manuel değerlendirme sağlar.
DevSecOps için mutlaka çok sayıda araç gerekir mi?
Hayır. Araç sayısından daha önemli olan doğru kontrollerin doğru aşamalarda entegre edilmesi ve bulguların sürdürülebilir biçimde yönetilmesidir.
Sonuç: Güvenlik Pipeline’ın Sonunda Değil, İçinde Olmalıdır
Modern yazılım geliştirme dünyasında güvenliğin release öncesindeki son kontrol noktası olarak kalması artık yeterli değildir.
Çünkü yazılım çok hızlı değişmektedir.
Yeni kod yazılır.
Yeni dependency eklenir.
Yeni container oluşturulur.
Yeni API yayınlanır.
Yeni cloud kaynağı devreye alınır.
Bütün bunlar birkaç saat içerisinde gerçekleşebilir.
Güvenlik bu hızın gerisinde kalırsa risk production ortamına taşınır.
DevSecOps bu nedenle güvenliği hızlandırmaya çalışır.
Güvenlik kontrolünü geliştiriciye yaklaştırır.
Manuel yapılan işlemleri otomatikleştirir.
Politikaları kod haline getirir.
SAST, SCA ve Secret Scanning gibi teknolojileri CI/CD’ye taşır.
Kritik riskleri release öncesinde durdurur.
Ve güvenlik uzmanının zamanını binlerce rutin kontrolden çıkararak gerçekten karmaşık risklere ayırmasını sağlar.
Başarılı DevSecOps’un temel prensibi şudur:
Güvenlik yazılım geliştirme hızının önünde duran bir kapı olmamalıdır.
Güvenliğin kendisi o yolun bir parçası olmalıdır.
Çünkü en güçlü güvenlik kontrolü production’da saldırıyı engelleyen kontrol değildir.
Daha güçlü olan:
güvensiz kodun production’a hiç ulaşmamasını sağlayan kontroldür.
İlgili Makaleler
Kaynak Kod Analizi (Kod Güvenliği)

Kaynak Kod Analizi Nedir? SAST ve Kod Güvenliği Rehberi
Kaynak kod analizi nedir, SAST nasıl çalışır ve kod güvenliği neden altyapıdan önce gelir? Kavramlar, yöntemler ve kurumsal yaklaşım.

Güvenlik Açıkları Daha Kod Yazılırken Başlar: Secure Coding ve Secure SDLC Rehberi
Güvenlik açığı üretimde doğmaz; tasarım ve kod aşamasında oluşur. Secure Coding, Shift Left, DevSecOps ve Secure SDLC rehberi.

SAST Nedir? Static Application Security Testing Nasıl Çalışır?
SAST nedir, nasıl çalışır? Source-Sink, taint analysis, false positive, CI/CD entegrasyonu ve araç seçimi tek rehberde.

SAST Tek Başına Yeterli mi? Otomatik Tarama ve Manuel Kaynak Kod Analizi
SAST otomasyonu neyi görür, neyi göremez? Business logic açıkları, false positive/negative ve manuel kod analizinin rolü.

Kod İçindeki Kritik Güvenlik Açıkları: CWE ve OWASP Perspektifi
Kaynak kodda en kritik güvenlik açıkları: Injection, XSS, Broken Access Control, SSRF ve daha fazlası — CWE ve OWASP perspektifiyle.

Secret, API Key ve Hassas Veri Sızıntıları: Kod Depolarında Görünmeyen Tehlike
Kod depolarındaki görünmeyen tehlike: secret, API key ve credential sızıntıları — tespit, rotation ve Secrets Management.
Bu konuda profesyonel destek mi arıyorsunuz?
Uzman ekibimiz ücretsiz danışmanlık için sizi en kısa sürede arasın.