İçindekiler
- Hızlı Karşılaştırma
- Gitleaks: Esnek kurallar, güçlü geçmiş taraması
- TruffleHog: Entropi ve regex ile derin arama
- detect-secrets: Pre-commit merkezli, politika destekli tarama
- git-secrets: Push/commit öncesi engelleme odaklı
- secretlint: Dosya bazlı linter ve eklenti ekosistemi
- Talisman: Push öncesi istenmeyen içerik tespiti
- Hangisini Seçmelisin?
- Sıkça Sorulan Sorular
Ücretsiz secret-scanning araçları, PR açmadan önce kod tabanında veya geçmiş commit'lerde kazara eklenmiş gizli anahtarları ve hassas verileri tespit etme konusunda hayat kurtarıcı olabilir. Bu rehberde CI entegrasyonu kolaylığı, tarama derinliği ve ekip iş akışına uygunluk gibi kriterlere göre en iyi ücretsiz seçenekleri topladık.
PR öncesi kontrolleri otomatikleştirmek, insan hatasını azaltır ve sızma riskini ciddi oranda düşürür. Aşağıda CLI tabanlı açık kaynaklı tarayıcılardan commit-hook çözümlerine kadar çeşitli araçlar var; her birinin avantajları ve sınırlamalarını şeffafça açıklıyoruz, böylece senin iş akışına en uygun olanı seçebilirsin.
Hızlı Karşılaştırma
| Program | Platform | En iyi olduğu iş | Ücret |
|---|---|---|---|
| Gitleaks | CLI, CI | Git geçmişi ve yeni commit'lerde geniş kurallı tarama | Açık kaynak / ücretsiz |
| TruffleHog | CLI, CI | Derin entropi/anahtar aramaları ve regex destekli tarama | Açık kaynak / ücretsiz |
| detect-secrets | CLI, CI | Pre-commit hook ve politik tabanlı tarama | Açık kaynak / ücretsiz |
| git-secrets | Git hook, CLI | Git commit/push öncesi engelleme | Açık kaynak / ücretsiz |
| secretlint | CLI, CI | Dosya bazlı linter kuralları ve eklenti mimarisi | Açık kaynak / ücretsiz |
| Talisman | Git hook, CI | İstenmeyen içerik tespiti ve push önleme | Açık kaynak / ücretsiz |
Gitleaks: Esnek kurallar, güçlü geçmiş taraması
Gitleaks, hem çalışma zamanı hem de geçmiş commit'ler üzerinde geniş kapsamlı tarama yapabilen popüler bir açık kaynak aracıdır. Regex tabanlı kuralların yanı sıra entropi ve hazır desen setleriyle birçok gizli anahtar türünü tespit etmeye çalışır; CI entegrasyonları için JSON/CSV çıktısı üretir ve GitHub Actions, GitLab CI ya da Jenkins içinde kolayca koşulabilir.
Kurallar özelleştirilebilir olduğu için şirket içi özel anahtar formatlarını ekleyebilirsin. Diğer yandan, yanlış pozitifleri azaltmak için kural setini dikkatle ele almak gerekir; özellikle büyük repo geçmişlerinde tarama kaynak tüketimi artabilir.
Artıları
- Gelişmiş kural ve istisna desteği
- Git geçmişini tarama imkanı (commit geçmişi)
- CI entegrasyonu ve çeşitli çıktı formatları
Eksileri
- Büyük repo geçmişlerinde tarama süreleri uzayabilir
- Varsayılan kurallar bazı özel durumlarda yanlış pozitif verebilir
Kimler için? Hem geçmiş taraması hem de PR öncesi otomatik kontrol isteyen takımlar için.
TruffleHog: Entropi ve regex ile derin arama
TruffleHog, yüksek entropi içeren dizeler ile regex tabanlı imzaları bir arada kullanarak gizli anahtarları tespit etmeye odaklanır. Özellikle API anahtarları veya uzun rastgele dizeler gibi gizli verileri yakalamada etkilidir. TruffleHog, eski versiyonlardan beri birçok güncelleme aldı ve farklı çalışma modları bulunuyor; bu da esneklik sağlar.
Ancak entropi tabanlı yaklaşımlar doğal olarak bazı false positive'lere yol açabilir; bu yüzden tarama sonuçlarını filtrelemek veya beyaz liste uygulamak önemlidir. CI içinde çalıştırıldığında, tarama derinliği ve hedef klasör/branch sınırlamaları ile maliyet kontrolü sağlanabilir.
Artıları
- Entropi analiziyle rastgele anahtarları iyi tespit eder
- Regex ile özelleştirilebilen imza tanımları
- CLI ve CI entegrasyonu kolay
Eksileri
- Entropi tabanlı tespitler yanlış pozitif üretebilir
- Çok büyük repo taramalarında kaynak kullanımı yüksek olabilir
Kimler için? Rastgele anahtarları ve gizli dize sızıntılarını yakalamaya öncelik veren projeler için.
detect-secrets: Pre-commit merkezli, politika destekli tarama
detect-secrets, önceki commit'lerde ve yeni değişikliklerde gizli bilgileri tespit etmek için tasarlanmış bir araçtır; pre-commit framework'ü ile sıkça kullanılır. Plugin/strategy tabanlı yaklaşımı, belirli desenleri, entropi ölçümlerini ve özel script'leri eklemeye izin verir. Ayrıca bir 'baseline' (temel tarama sonucu) oluşturup, bundan sonraki değişiklikleri izole etmek mümkün.
Dedekte edilen öğeleri bir baseline dosyası ile yönetmek, false positive'leri azaltmada yardımcı olur. Bununla birlikte baseline yönetimi ve güncellemesi takım disiplinine bağlıdır; yanlış yönetilirse gerçek sızıntılar gözden kaçabilir.
Artıları
- Pre-commit ve CI ile kolay entegrasyon
- Baseline yaklaşımıyla false positive kontrolü
- Eklenti/strategy ile genişletilebilirlik
Eksileri
- Baseline yönetimi ek operasyonel yük getirebilir
- Çok kapsamlı kurulum isteyen projelerde başlangıçta ayar gerektirir
Kimler için? Pre-commit ile yerelde tarama yapmak ve PR sürecinde temiz bir baseline sürdürmek isteyenler için.
git-secrets: Push/commit öncesi engelleme odaklı
git-secrets, özellikle commit veya push sırasında belirli desenlerin repoya girmesini engellemek için geliştirilmiş hafif bir araçtır. Git hook mekanizmasını kullanarak yerel geliştirici akışına entegre edilir ve AWS anahtarlarına özel bazı kurallar ile birlikte gelir; buna ek olarak kendi regex kurallarını ekleyebilirsin.
Basitliği ve hafifliği sayesinde küçük ekiplerde hızlı adapte olur. Ancak yalnızca hook tabanlı korunma sunduğu için, CI içinde geçmiş depo taraması veya karmaşık politikalar gerektiren durumlarda tek başına yetersiz kalabilir.
Artıları
- Hafif ve kurulumu kolay
- Yerel commit/push engellemesi ile anlık geri bildirim
- Özel regex kuralları eklenebilir
Eksileri
- Sadece hook tabanlı olduğu için geçmiş commit'leri temizlemez
- Hook'lar atlanabilir; merkezi CI taramasıyla desteklemek gerekir
Kimler için? Küçük ekipler ve yerel geliştirici akışına hızlı müdahale isteyenler için.
secretlint: Dosya bazlı linter ve eklenti ekosistemi
secretlint, metin dosyaları üzerinde linter mantığıyla çalışan ve plugin mimarisi sayesinde farklı kural setleri eklenebilen bir araçtır. YAML/JSON/JS dosyaları gibi kaynaklara özel kontroller koymak, format bazlı kurallar uygulamak ve CI'de linter olarak çalıştırmak için uygundur.
Linter yaklaşımı sayesinde takım standartlarına uygunluk ve stil benzeri kurallar yazılabilir. Dezavantajı, entropi veya geçmiş taraması gibi otomatik derin kontrolleri kendi başına sağlamayabilir; bu yüzden genelde diğer tarayıcılarla birlikte kullanılmak daha etkili olur.
Artıları
- Eklenti tabanlı kural tanımları ve linter benzeri kullanım
- Dosya tipi odaklı kontrollerde güçlü
- CI'de kod kalitesi adımına kolay eklenir
Eksileri
- Tek başına geçmiş commit taraması sağlamaz
- Entropi tabanlı tespitler için ek araç gerekebilir
Kimler için? Dosya bazlı kurallar ve takım içi politika uygulamaları arayan projeler için.
Talisman: Push öncesi istenmeyen içerik tespiti
Talisman, push aşamasında repo içerisine giren istenmeyen dosya tipleri veya desenleri tespit edip engellemeye odaklanır. Hem yerel hook hem de CI adımında çalıştırılabilecek şekilde tasarlanmıştır. Basit kurallarla hızlı sonuç verir ve özellikle sıradan dosya sızıntılarını durdurmakta etkilidir.
Bununla birlikte, Talisman daha çok genel istenmeyen içeriklere (ör. büyük dosyalar, belirli uzantılar) karşı güçlüdür; sofistike anahtar desenlerine veya entropi analizine ihtiyaç varsa ek araçlar gerekebilir.
Artıları
- Push öncesi hızlı koruma ve istenmeyen içerik tespiti
- Hem yerelde hem CI'de kullanılabilir
- Kolay kural ekleme
Eksileri
- Karmaşık anahtar desenleri ve entropi analizi sınırlı
- Büyük repo geçmişi taraması için tasarlanmamış
Kimler için? Push anında basit ve hızlı engelleme isteyen ekipler için.
Hangisini Seçmelisin?
- Yeni bir projede hızlı başlangıç istiyorsan: git-secrets veya Talisman
- Geçmiş commit'leri de temizlemek istiyorsan: Gitleaks
- Entropi ve rastgele anahtarları yakalamada önceliğin varsa: TruffleHog
- Pre-commit ile yerel tarama ve baseline yönetimi istiyorsan: detect-secrets
- Dosya bazlı politika/linter entegrasyonu arıyorsan: secretlint
- Hafif, yerel engelleme + CI katmanı istiyorsan: git-secrets + Gitleaks kombinasyonu
Sıkça Sorulan Sorular
Secret scanning araçları CI'ye kolayca nasıl eklenir?
CI entegrasyonu genelde araçların sunduğu CLI komutunu bir pipeline adımına eklemek kadar basittir; birçok araç JSON/CSV çıktısı üreterek hata kodu döner, böylece pipeline başarısız olur ve PR engellenir. Hazır GitHub Action veya GitLab CI şablonları da sıklıkla bulunur.
False positive'leri nasıl azaltırım?
False positive'leri azaltmak için beyaz liste (allowlist), baseline dosyaları veya özel regex kuralları kullan; ayrıca tarama kapsamını (sadece değişen dosyalar, belirli dizinler) daraltmak da işe yarar. Ekip içinde bir onay süreci belirlemek de faydalıdır.
Tüm bu araçların hepsini mi kullanmalıyım?
Tek bir araç bazen yeterli olur, ancak en iyi sonuç genelde birkaç katmanlı yaklaşım ile elde edilir: yerel hook (git-secrets/Talisman) + CI tarayıcısı (Gitleaks/TruffleHog) + dosya-linter (secretlint). Böylece hem anlık geri bildirim hem de merkezi tarama sağlanır.
Bu araçlar gizli verileri nasıl tespit ediyor?
Araçlar genellikle regex tabanlı imzalar, entropi analizi (rastgele görünen dizeler), dosya tipi kontrolleri ve kullanıcı tanımlı kurallar kombinasyonunu kullanır. Her yöntemin güçlü ve zayıf yanları vardır; entropi rastgele dizeleri yakalarken regex belirli formatlara odaklanır.
Açık kaynak araçlarla yeterince güvenlik sağlanır mı?
Açık kaynak secret-scanning araçları çoğu zaman çok iyi bir temel sağlar; önemli olan bunları CI'ye entegre etmek, alarm/inceleme süreçleri tanımlamak ve sekret yönetimi (rotasyon, vault kullanımı) ile birlikte uygulamaktır. Tek başına tarama yeterli değildir; süreç ve operasyonel uygulamalar da şarttır.



