Güvenlik denetimi yaptırmak, dişçiye gitmek gibi bir şeydir: herkesin yapması gerektiğini bilir, kimse acımadan önce randevu almak istemez. Oysa sorun dişçinin kendisinde değil, randevuların insan hatırasına bırakılmasında. Çözüm de aynı mantıkla basit: denetimi, unutulamayan bir yere — sürekli entegrasyona gömün. Her istek kolu, her derleme, taramayı siz istemeden de çalıştırır. Bu yazıda, bağımlılık ve kod taramalarını boru hattına gömmenin ucuz ve etkili yolunu anlatıyoruz.

Notu şimdiden verelim: amaç, güvenlik ekibi kurmak değil, mevcut geliştirme akışına en az sürtünmeyle otomatik bir denetim katmanı eklemektir. Ekip büyüklüğü bir kişi bile olsa bu kurulum çalışır.

Nereden başlamalı?

Sıfırdan başlayan bir ekip için üç katman yeterlidir. Birincisi bağımlılık taraması: kilit dosyasındaki sürümleri bilinen açıklık veritabanlarıyla karşılaştırır. İkincisi statik analiz: kaynak koda bakıp "bu sorgu kullanıcı girdisiyle birleşiyor mu" sorusunu sorar. Üçüncüsü gizli anahtar taraması: repoya yanlışlıkla bırakılmış API anahtarlarını, belirteçlerini yakalar. Üçü de dakikalar içinde kurulur, ücretsiz ya da düşük maliyetli araçlarla çalışır.

# .github/workflows/security.yml — her istek kolunda çalışır
jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci --ignore-scripts
      - run: npm audit --audit-level=high
      - run: npx @socketsecurity/cli npm install --lockfile-only
      - uses: gitleaks/gitleaks-action@v2

Gürültü, düşmanınızdır

Taramayı kurmak kolaydır; zor olan sürdürülebilir kılmaktır. İlk hafta yüzlerce uyarı üreten bir araç, ikinci hafta sessizce yoksayılmaya başlanır. Bu yüzden eşiği akıllıca seçin: yüksek ve kritik seviye açıklar bloklayıcı, orta seviye uyarı, düşük seviye ise yalnızca rapor. Her istisnayı, gerekçesi ve son kullanma tarihiyle kaydedin; "bizde zaten çalışmıyor" notu olmayan istisna, altı ay sonra gündemi zehirler. Unutulmamalı: taramanın amacı sıfır uyarı değil, okunabilir bir uyarı akışıdır.

Gürültüyü kontrol etmenin bir yolu da sahipliktir: her bulgunun bir sahibi, her sahibin bir süresi vardır. İnsan adı taşımayan bulgu, ekranda dans eden bir kalp atışından farksızdır; kırmızı ikonlar, kimseyi harekete geçirmeyi bırakın, yorulmuş gözlerden kaçar. Bulgunun yanında "kim ne zaman kapatacak" yazmıyorsa, o bulgu hâlâ bir rızadır.

Rapor, bilgiyi doğru yere götürür

Taramanın değeri, çıktısının doğru yere gitmesiyle ortaya çıkar. Kritik bir açık, bir e-posta listesinde değil, sorumlunun ekranında olmalıdır. Süreklilik de önemlidir: her gece çalışan tam tarama, her istek kolunda çalışan hızlı taramadan farklı bilgi verir; ikisini birleştirmek, hız ile kapsamı dengelemenin ucuz yoludur. Sonuçlar, ekip konuştuğunda "bizde açık var mı" sorusunun cevabını otomatik veren bir panoda toplanır. Panonuzun ilk satırında üç sayı yeter: açık istek kolu, kritik bulgu, ortalama kapanma süresi. Bu üç sayı, güvenlik olgunluğunun en dürüst göstergesidir.

Bir de geçiş dönemi taktiği: mevcut depoya ilk kez tarama koyuyorsanız, boru hattını kırmayın. İlk hafta yalnızca rapor modunda çalıştırın, çıkan bulguları önceliklendirin, kritik olanları kapatın ve sonra bloklamayı açın. Gürültüyle değil, sessizlikle başlayan boru hattı saygı kazanır.

Otomatik tarama, güvenliği kimseye hatırlatmadan sürekli kılan bir disiplindir. Kurulması bir gün, alışması bir hafta, getirdiği huzur ise yılların işidir. Randevuyu takvime gömün; diş, kodun kendisine kalsın.