Yanlışlıkla bir API anahtarını veya şifreyi repoya commit edip push ettiniz. Ne yaparsınız?

Cevap

İlk ve en önemli adım: secret'ı hemen iptal edip yenisini oluşturmak (rotate). Push edildiği anda secret sızmış kabul edilir; GitHub'daki public repolar dakikalar içinde botlar tarafından taranır. Git geçmişini temizlemek ikinci adımdır ve tek başına yeterli değildir.

Adımlar

  1. Rotate: ilgili servisin panelinden anahtarı iptal et, yenisini oluştur, uygulamada (secret manager / ortam değişkeni) güncelle.
  2. Etki analizi: anahtar bu sürede kullanılmış mı? Servisin erişim loglarına ve faturaya bak. Gerekirse güvenlik ekibine bildir.
  3. Kodu düzelt: secret'ı koddan çıkar, ortam değişkeninden oku, ilgili dosyayı (.env) .gitignore'a ekle.
  4. Geçmişi temizle (gerekirse): git filter-repo veya BFG Repo-Cleaner ile secret'ı tüm geçmişten sil, ardından force push yap.
  5. Ekibi bilgilendir: geçmiş yeniden yazıldığı için herkes depoyu yeniden klonlamalı veya dallarını yeni geçmişe taşımalı. GitHub'da önbellekteki commit görünümleri ve fork'lar için destek ekibine başvurmak gerekebilir.
# git-filter-repo ile belirli bir metni tüm geçmişte değiştir
echo 'sk_live_ABC123==>REMOVED' > replacements.txt
git filter-repo --replace-text replacements.txt
git push --force --all

# Bir dosyayı tüm geçmişten tamamen sil
git filter-repo --path config/secrets.json --invert-paths

Son commit henüz push edilmediyse iş çok daha kolaydır: git reset HEAD~1 veya git commit --amend ile düzeltilir; yine de dikkatli olmak için rotate etmek iyi bir alışkanlıktır.

Önleme

  • Pre-commit hook'ta secret taraması: gitleaks, detect-secrets, trufflehog.
  • GitHub secret scanning ve push protection özelliğini açmak (bilinen formatlardaki anahtarlar push anında engellenir).
  • .env.example dosyası commit edilir, gerçek .env asla commit edilmez.
  1. git merge ile git rebase arasındaki fark nedir?OrtaGitFull Stack
  2. git reset ile git revert arasındaki fark nedir?OrtaGitFull Stack
  3. İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?KolayGitFull Stack
  4. Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?ZorGitFull Stack
  5. git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?OrtaGitFull Stack
  6. Merge conflict nedir ve nasıl çözülür?KolayGitFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle