Modül 2 · Secret Scanning · ⏱ 14 dakika

Custom secret scanning patterns yazma

Writing custom secret scanning patterns

Bu derste neler öğreneceksin

  • Custom pattern'ın ne zaman gerekli olduğunu anlamak
  • Regex tabanlı custom pattern yazım sözdizimini öğrenmek
  • Before/after match ve additional requirements kullanımını kavramak
  • Custom pattern'ı test etmek ve yayınlamak için adımları bilmek

Neden custom pattern?

GitHub’ın partner programı 100’den fazla sağlayıcıyı kapsar; ancak organizasyona özgü internal token’lar, API anahtarları veya özel format credential’lar partner programında yer almaz. Bunları tespit etmek için custom patterns gerekir.

Örnekler:

  • İç API gateway token’ları (MYCO- prefix’li)
  • Şirket içi SSH anahtarı formatları
  • Özel servis hesabı şifre kalıpları

Custom pattern bileşenleri

Custom pattern üç parçadan oluşur:

AlanAçıklamaZorunlu?
Secret formatAna regex (secret’ın kendisi)Evet
Before secretAna regex’ten önce gelmesi beklenen içerikHayır
After secretAna regex’ten sonra gelmesi beklenen içerikHayır
Additional requirementsEk regex koşulları (AND mantığı)Hayır

Örnek custom pattern

Şirket içi API token formatı: MYCO_TOKEN_[A-Z0-9]{32}

Secret format: MYCO_TOKEN_[A-Z0-9]{32}
Before secret: (token|key|secret)\s*[:=]\s*['"]*
After secret:  ['"]*\s*$

Bu pattern şunları yakalar:

api_key = "MYCO_TOKEN_ABCDEF1234567890ABCDEF1234567890"

Şunları atlar:

# MYCO_TOKEN_ABCDEF — bu kısa, format uymuyor

Custom pattern oluşturma adımları

Repository seviyesi:

Repo → Settings → Security → Secret scanning → Custom patterns → New pattern

Organization seviyesi:

Org → Settings → Security → Secret scanning → Custom patterns → New pattern

Enterprise seviyesi:

Enterprise → Settings → Advanced Security → Custom patterns → New pattern

Enterprise seviyesinde tanımlanan pattern tüm organizasyonlara uygulanır.

Test aşaması — dry run

Pattern’ı kaydetmeden önce “Dry run” ile mevcut commit geçmişinde test et:

  1. Pattern’ı yaz
  2. “Save and dry run” tıkla
  3. Kaç eşleşme bulundu, yanlış pozitif var mı incele
  4. Pattern’ı gerekirse düzelt
  5. “Publish pattern” ile aktive et

Sınırlamalar

  • Custom patterns regex tabanlı — semantic analiz yapılmaz (CodeQL değil)
  • Pattern performansı büyük repo’larda tarama süresini etkileyebilir
  • Enterprise seviyesinde maksimum custom pattern sayısı sınırlıdır (GitHub dokümantasyonuna bak)

Sıravda ne var?

Validity check ve partner programıyla secret’ların gerçek zamanlı doğrulanmasını ele alacağız.