Bulut Altyapı

GitHub MCP Server’da Secret Scanning GA: Sahadan Notlar

Şöyle başlayayım: geçen sene bir müşteride yaşadığımız tatsız bir olayı anlatayım önce. İstanbul’daki bir e-ticaret firmasıydı, junior bir geliştirici production veritabanının connection string’ını yanlışlıkla bir test commit’ine eklemişti. Halbuki repo public değildi, neyse ki. Ama yine de credential rotate etmek, audit log’ları taramak, ekibe “neden böyle öldü” toplantısı yapmak… iki günümüzü yedi. İki gün.

O an aklımdan şu geçti: “Bu adam commit’i atmadan önce uyarılsaydı keşke”. İşte GitHub’ın MCP Server üzerinden sunduğu secret scanning özelliği — geçenlerde GA öldü — tam da bu boşluğu dolduruyor. Public preview’da Mart’tan beri vardı zaten, ama artık production’a hazır deniyor.

Bakın şimdi, teknik tarafa dalmadan önce bir şeyi net söyleyeyim. Bu kabiliyetin devrim falan değil. GitHub zaten push protection sunuyordu, secret scanning servisi de uzun süredir var (kendi tecrübem). Yeni olan şey şu: bu kontrol artık commit yapılmadan, hatta dosya kaydedilmeden, doğrudan AI ajanın çalışma alanında devreye giriyor (inanın bana). Ufak bir nüans gıbı duruyor ama pratikte baya fark ediyor (evet, doğru duydunuz)

MCP nedir, neden GitHub bunu önemsiyor?

MCP yanı Model Context Protocol — Anthropıc’in başlattığı, sonra Microsoft’un, GitHub’ın ve başka oyuncuların da sahiplendiği bir standart. Kabaca şöyle düşünün: AI ajanların (Copilot CLI, Cursor, Claude Desktop, VS Code agent mode, vs.) dış dünyayla nasıl konuşacağını tek tipe sokan bir protokol. REST API gıbı ama AI tooling için tasarlanmış.

Kısa bir not düşeyim buraya.

GitHub MCP Server, GitHub’ın kendi API’sını bu protokol üzerinden ajanlara açıyor. Yanı Copilot CLI’a “şu issue’yu kapat”, “PR aç”, “şu dosyayı tara” diyebiliyorsunuz. Eskiden custom plugin yazıyordunuz, şimdi standart bir interface var. Bu işin politik tarafı da var tabi; herkes Anthropıc’in standardına yanaşınca oyun dengesi de değişiyor — ama o ayrı konu (yanlış duymadınız)

İnanın, Secret scanning de bu MCP server’ın sunduğu tool’lardan biri (yanlış duymadınız). Yanı siz IDE’nizde kod yazarken ajan, henüz dosyayı kaydetmediniz bile, “dür bakalım, şurada bir AWS access key var” diyebiliyor.

Push protection ile farkı ne?

İyi soru. Push protection sunucu tarafında çalışıyor — siz git push yaptığınızda GitHub tarafında tarama yapıp engelliyor. MCP scanning işe istemci tarafında, ajanla konuşurken çalışıyor. İkisi birbirini dışlamıyor; tam tersine tamamlıyor. Üstelik yeni gelen güzel taraflardan biri şu: MCP scanning artık repo veya org seviyesinde tanımladığınız push protection özelleştirmelerine uyuyor. Yanı bypass kurallarınız, custom pattern’leriniz, hepsi aynen geçerli.

Kısaca: defansta katman ekledik. Önce ajan uyarıyor (commit öncesi), sonra git hook (yerel), sonra push protection (sunucu). Üçü de devredeyse sızıntı yapmak baya zorlaşıyor.

Kurulum: beş dakikada nasıl ayağa kaldırılır?

Açık konuşayım, ilk denediğimde authentication tarafında biraz kafam karıştı. Dokümantasyon net hissettirmiyordu (yanlış duymadınız). Ama bir kere oturtunca iş aslında çok uzamıyor.

Hmm, bunu nasıl anlatsamdı…

Önce GitHub Secret Protection’ın repo’nuzda aktif olması lazım. Bu zaten Advanced Security paketinin parçası. Kurumsal müşterilerimde genelde GHAS lisansı oluyor; bireysel ya da küçük ekiplerde işe çoğu zaman yok — ona birazdan geleceğim. Maintainer Month 2025: Kodun Arkasındaki İnsanlar Önemli yazımızda bu konuya da değinmiştik.

Copilot CLI kullanıyorsanız

# Önce GitHub MCP server'ı tanımla
gh auth login
gh extension install github/gh-copilot
# Sonra advanced-security plugin'i ekle
/plugin install advanced-security@copilot-plugins
# Hazır. Şimdi sor:
> Scan my current changes for exposed secrets before I commit

VS Code’da

Şöyle ki, VS Code tarafı biraz daha grafiksel gidiyor. Extension marketplace’ten “advanced-security” agent plugin’ını kuruyorsunuz. Sonra Copilot Chat’te /secret-scanning slash komutunu kullanıyorsunuz. Ben şahsen VS Code’da daha rahat ediyorum çünkü inline diff görüntüsü iyi iş görüyor; CLI’da o görsel kısım eksik kalıyor. Daha fazla bilgi için github konusundaki yazımız yazımıza bakabilirsiniz.

Ha bu arada, Copilot CLI tarafında daha derinlemesine konuşmak isterseniz GitHub Copilot CLI: Interactive vs Non-Interactive Mod Farkı yazımda CI/CD entegrasyonu için ipuçları var (şaşırtıcı ama gerçek)

Gerçek bir senaryo: ne işe yarıyor pratikte?

Geçen ay Logosoft’ta bir bankacılık projesinde yaşadık bunu. Ekipte 8 backend developer var, hepsi GitHub Copilot kullanıyor. Sprint sonunda code review’larda hep aynı şikayet dönüyordu: “kardeşim,.env dosyasını commit’ledin yine!” Halbuki.gitignore’a yazılmıştı. Bazen yeni servis eklenince yeni env dosyası çıkıyor; kimse fark etmiyor.

Ne yalan söyleyeyim, MCP secret scanning’i devreye aldıktan sonra — o zaman henüz preview’daydı — şöyle bir alışkanlık geliştirdik: PR açmadan önce ajana “scan my changes” diyoruz. Ajan diff’leri tarayıp varsa uyarıyor. İlk hafta 3 farklı geliştiricide gerçek leak yakaladık. Birinde Azure Storage account key vardı; diğerinde test ortamı için tutulmuş ama production’la aynı pattern’e sahip JWT secret vardı. Bu konuyla ilgili mcp konusundaki yazımız yazımıza da göz atmanızı tavsiye ederim.

Bir şey dikkatimi çekti: Şimdi açık konuşayım: bu özellik olmasa da yakalardık o secret’ları. Çünkü push protection zaten devredeydi. Ama şu farkı yarattı — geliştirici daha commit’i atmadan haberdar öldü. Bu da mental yükü azaltıyor, hem de az buz değil. Push’ladıktan sonra “ay şimdi credential rotate etmem lazım, history’yi rewrite mı edeyim acaba” derdi yok; daha temiz akış oluyor.

Bakın, burayı atlarsanız yazının kalanı anlamsız kalır.

Türkiye’deki şirketler için durum biraz daha karışık

Açıkçası, Burada işin acı tarafına geleyim biraz. Bu özellik GitHub Secret Protection bir düşüneyim… gerektiriyor; o da Enterprise lisans ya da en azından Advanced Security add-on istiyor. Türkiye’de orta ölçekli yazılım şirketlerinin çoğu hâlâ Team plan’da dolaşıyor yanı bu özelliği bedavaya alamıyorsunuz.

Maliyet tarafına bakalım şimdi de. GitHub Advanced Security committer başına aylık $19 civarı (kur oynadığı için TL karşılığını siz hesaplayın artık). 20 kişilik bir ekipte yıllık kabaca $4500’a yakın ekstra maliyet çıkıyor. Küçük bir startup için ciddi para bu; Enterprise için işe çok ses çıkaracak kadar büyük değil.

Senaryo Önerim Neden
2-5 kişilik startup Pre-commit hooks + gitleaks (open source) GHAS pahalı kalıyor, gitleaks işin %80’ını yapıyor
10-30 kişilik scale-up GHAS + MCP scanning Bir leak’in maliyeti GHAS’tan fazla
Enterprise/Banka GHAS + MCP + Defender for Cloud Süreçler ve compliance zaten bunu itiyor
Açık kaynak proje GitHub’ın ücretsiz secret scanning’i Public repo’larda zaten ücretsiz

Bak şimdi, Eğer enterprise tarafındaysanız GHAS’ı Defender entegrasyonuyla birlikte düşünmeniz gerekiyor zaten mesela ben bu konuyu Defender for Cloud + GHAS Entegrasyonu: Code-to-Cloud GA yazısında detaylıca işlemiştim; oraya göz atın derim.

Bütçesi kısıtlı olanlar için alternatif yol

İşin garibi, Eğer GHAS lisansınız yoksa dünya bitmedi tabii ki. Şunları yapabilirsiniz:

  • gitleaks: Açık kaynak, hızlı, pre-commit hook olarak çalışıyor. CI’da da kullanılabiliyor.
  • tagger? nope->trufflehog:> Daha agresif davranıyor ve entropy-based detection da yapıyor; false positive oranı biraz yüksek ama bulduğunu bulduruyor.
  • detect-secrets (Yelp):

Kişisel olarak küçük projelerde gitleaks’i pre-commit hook olarak kuruyorum ben mesela.pre-commit-config.yaml’a eklediğiniz tek bir blok yetiyor: (inanın bana)

?
repos:
— repo: https://github.com/gitleaks/gitleaks
rev: v8.

Sıkça Sorulan Sorular

GitHub MCP Server secret scanning ücretsiz mi?

Bence, MCP Server’ın kendisi ücretsiz. Ama secret scanning’i kullanabilmek için repo’nuzda GitHub Secret Protection aktif olması gerekiyor — hani bu GitHub Advanced Security paketinin bir parçası. Peki bunu neden söylüyorum? Public repo’larda temel tarama zaten ücretsiz geliyor, private repo’larda işe lisans almanız şart.

Push protection zaten varken MCP scanning’e neden ihtiyaç duyalım?

Aslında ikisi farklı noktalarda devreye giriyor. Neyse, push protection sunucu tarafında çalışıyor, yanı push anında. Daha açık söyleyeyim, mCP scanning işe çok daha erken — ajanla konuşurken, commit’i bile atmadan. Secret hiç git geçmişine girmeden (söylemesi ayıp) uyarı alıyorsunuz, bence bu büyük fark. Siz ne dersiniz? Yanı birbirinin rakibi değil, katman katman savunma.

Hangı IDE’ler ve ajanlar destekliyor?

Bilmem anlatabiliyor muyum, Resmî destek GitHub Copilot CLI ve VS Code Copilot agent mode için var. Ama MCP standart bir düşüneyim… bir protokol olduğu için, mesela Cursor veya Claude Desktop gıbı MCP-uyumlu istemcilerde de teorik olarak çalışabiliyor. Advanced-security plugin’i söz konusu olduğunda öncelik yine VS Code ve Copilot CLI’da.

Custom secret pattern’lerim çalışacak mı?

Evet, çalışıyor. Repo ya da organization seviyesinde tanımladığınız custom pattern’ler MCP scanning tarafından da kullanılıyor. Açıkçası bu GA ile gelen en önemli iyileştirmelerden biri. Bypass kurallarınız da aynı şekilde geçerli.

False positive aldığımda ne yapmalıyım?

İki yolunuz var. Birinçisi .github/secret_scanning.yml dosyasıyla path exclusion tanımlamak. İkincisi işe ajana direkt “ignore this match, it’s a test fixture” demek — ama dikkat, bu audit log’a düşüyor. Tecrübeme göre mümkünse ilk yolu tercih edin, çok daha temiz.

Kaynaklar ve İleri Okuma

GitHub Blog: Secret Scanning with GitHub MCP Server GA Duyurusu

GitHub Docs: Secret Scanning Resmî Dokümantasyonu

Model Context Protocol Resmî Sitesi

GitHub MCP Server GitHub Reposu

Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.

← Onceki Yazi
Kubernetes v1.36 Declarative Validation: GA'ya Ulaştı
Sonraki Yazi →
Microsoft Agent Framework'te Durable Workflow'lar: Saha

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İçindekiler
← Kubernetes v1.36 Declarative V...
Microsoft Agent Framework̵... →