Modül 5 · Modül 5 — Domain 5: Secure Development & Compliance · ⏱ 10-15 dakika

Secret Scanning ve Push Protection

Secret Scanning & Push Protection

Bu derste neler öğreneceksin

  • Secret scanning'in nasıl çalıştığını açıklamak
  • Push protection ile secret'ların commit'e girmesini önlemeyi anlamak
  • Custom pattern tanımlama ve alert yönetimini bilmek

Secret scanning, GitHub Advanced Security (GHAS) özelliğidir ve commitlere sızan API anahtarları, token’lar ve parolaları tespit eder. Push protection ise bu tespiti commit öncesinde yapar.

Secret Scanning Nasıl Çalışır?

GitHub, 200’den fazla partner ile anlaşma yaparak token formatlarını tanır (Google API key, AWS Access Key, GitHub PAT, vb.):

  1. Bir commit veya push yapıldığında içerik taranır
  2. Bilinen token deseniyle eşleşme varsa alert oluşturulur
  3. Partner token’ları için otomatik revocation başlatılır (örn. GitHub PAT)
  4. Repo admin ve güvenlik ekibi bilgilendirilir

Push Protection

Push protection, secret içeren commit’in repo’ya ulaşmadan önce engellenmesini sağlar:

Geliştirici git push yapar
→ GitHub push içeriğini tarar
→ Secret tespit edilirse push BLOKLANIR
→ Geliştirici uyarı alır ve seçenekler sunulur:
   - Secret'ı kaldır ve yeniden push yap
   - Bypass et (gerekçe gir — audit log'a yazılır)

Push protection etkinleştirme:

Repository → Settings → Security & analysis → Push protection → Enable

Org veya enterprise düzeyinde toplu etkinleştirme:

Organization → Settings → Code security and analysis → Push protection

Custom Pattern

GitHub’ın tanımadığı dahili token formatları için custom pattern eklenebilir:

Organization → Settings → Code security → Custom patterns
→ New pattern → Regex tanımla

Örnek: Dahili servis anahtarı formatı MYAPP-[A-Z0-9]{32} için custom pattern.

Secret Scanning Alertleri

Alert geldiğinde yapılacaklar:

  1. Token’ı hemen revoke et (gecikme ciddi risk)
  2. Yeni token oluştur ve uygulamaya dağıt
  3. Commit geçmişini temizle (git filter-repo ile — bu önemli!)
  4. Commit geçmişi temizlenmezse token’ı bilen biri geçmişten alabilir

“Secret revoke ettim, yeterli mi?” — Yanıt: Hayır. Git geçmişinde kalmaya devam eder. git filter-repo veya git-filter-branch ile tarihten silinmeli, sonra force push yapılmalı.