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:
| Alan | Açıklama | Zorunlu? |
|---|---|---|
| Secret format | Ana regex (secret’ın kendisi) | Evet |
| Before secret | Ana regex’ten önce gelmesi beklenen içerik | Hayır |
| After secret | Ana regex’ten sonra gelmesi beklenen içerik | Hayır |
| Additional requirements | Ek 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:
- Pattern’ı yaz
- “Save and dry run” tıkla
- Kaç eşleşme bulundu, yanlış pozitif var mı incele
- Pattern’ı gerekirse düzelt
- “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.