Sırları yönetmek: projelerde parolaları ve anahtarları güvende tutmak
Kısaca: API anahtarları, parolalar ve sertifikalar Git deposuna ait değildir; ortam değişkenlerinde veya sır yöneticilerinde saklayın ve düzenli olarak döndürün (rotate).
Biraz daha ayrıntılı: Bir sır (secret), erişim sağlayan her bilgidir: veritabanı parolası, API anahtarı, belirteç, özel anahtar. Hemen her gün anahtarlar herkese açık depolardan toplanır (botlar GitHub’ı saniyeler içinde tarar) ve kötüye kullanım için kullanılır (bulut faturaları, veri sızdırma).
Ayrıntılı
Neler işe yaramaz
- Kaynak kodda veya depodaki yapılandırma dosyalarında sırlar.
- Docker imajlarında veya ön yüz kodunda (her kullanıcı görür).
- Sohbet, e-posta, biletler, ekran görüntüleri içinde.
- Geliştirme ve üretim için, tüm hizmetler için aynı anahtarlar.
- Kalıcı geçerli, fazla güçlü anahtarlar.
Nasıl daha iyi yapılır
- Ortam değişkenleri (yerelde
.envdosyası,.gitignoreiçinde), CI sırları (GitHub Actions secrets), barındırma ayarları (Vercel, Netlify). - Sır yöneticileri: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Secret Manager, 1Password/Bitwarden Secrets, Doppler, SOPS (depoda şifreli dosyalar).
- En az ayrıcalık: asgari izinli anahtarlar, ortamlar ve hizmetler için ayrı.
- Döndürme (rotation): düzenli yenileme, kısa ömürlü belirteçler, şüphede derhal iptal.
- Erişimi günlüğe kaydedin ve izleyin.
- İki erişim düzeyi (her şey için tek anahtar olmasın).
Sızıntılara karşı koruma
- Pre-commit hook’ları ve tarayıcılar: gitleaks, trufflehog, GitHub secret scanning ve push koruması.
- Yanlışlıkla bir commit durumunda: anahtarı derhal iptal edin/yenileyin (geçmişten silmek yetmez, veriler zaten kopyalandı); sonradan geçmişi temizlemek (
git filter-repo) yalnızca ek bir önlem olarak. - Sırların çıktıya yazılmaması için günlükleri denetleyin; hata iletilerini fazla ayrıntılı yapmayın.
- Gerçek değerler olmadan örnek dosyalar (
.env.example) sağlayın.
Küçük projeler için uygulama
Yerelde .env, üretim için barındırma platformunun ayarlarını kullanın. Hizmet başına ayrı anahtarlar oluşturun, bunları parola yöneticisine (dosyalara değil) not edin, bulut hizmetlerinde bütçe uyarıları ayarlayın ve mümkünse API anahtarları için IP kısıtlamaları veya alan adı bağlama kullanın. Herkese açık bir tarayıcı anahtarı (örneğin haritalar için) kendi alan adınıza kısıtlanmalıdır.
Ayrıca bak: env dosyaları, En az ayrıcalık, Parola yöneticisi