Secrets Management
Sır Yönetimi
- Okunuşu
- sikrits menicmınt
Kısaca
Secrets management, parola, API anahtarı ve token gibi hassas kimlik bilgilerini güvenle saklama, dağıtma, döndürme ve denetleme pratiğidir.
Secrets management nedir?
Sır (secret), bir şeye erişim veren her değerdir: veritabanı parolası, API anahtarı, özel bir şifreleme anahtarı veya bir OAuth istemci sırrı. Secrets management, bu değerleri kaynak kodun dışında tutan, kimlerin ve nelerin onları okuyabileceğini sınırlayan ve değiştirmeyi kolaylaştıran araçlar ve alışkanlıklar bütünüdür. Amacı basittir: sızan bir depo, günlük dosyası veya dizüstü bilgisayar, bir saldırganın eline production'ın anahtarlarını vermemelidir.
Tipik bir kurulumda sırlar, kimi zaman vault olarak da adlandırılan özel bir secrets manager'da yaşar; bu servis onları beklemede şifreler ve erişimi kimlik doğrulama ve ince taneli politikalarla denetler. Uygulamalar sırları başlangıçta veya çalışma zamanında kendi iş yükü kimlikleriyle (workload identity) çeker ya da dağıtım platformunun enjekte ettiği ortam değişkenleri veya bağlanmış dosyalar olarak alır. İyi sistemler her erişimi günlüğe kaydeder, sırları belirli aralıklarla döndürür ve otomatik sona eren kısa ömürlü dinamik kimlik bilgileri verebilir; böylece çalınan bir değer yalnızca dakikalar veya saatler boyunca işe yarar.
Paspasın altındaki yedek anahtar yerine bir otel oda kartı sistemini düşünün. Kartlar yalnızca kayıtlı misafirlere verilir, sadece kendi odalarında ve kalış süreleri boyunca çalışır, anında iptal edilebilir ve her kapı kimin açtığını kaydeder. Secrets management, aynı denetimi uygulamaların, CI/CD hatlarının ve infrastructure-as-code araçlarının kullandığı kimlik bilgilerine getirir.
Yaygın bir karışıklık, sırlar ile sıradan yapılandırma arasındadır. Günlük düzeyi veya feature flag gibi ayarlar açığa çıksa zararsızdır; sır ise sızarsa tehlikelidir, bu yüzden şifreleme, erişim denetimi ve döndürme gerektirir. Ortam değişkenleri bir teslim mekanizmasıdır, kendi başına güvenli bir depolama değildir: Git'e commit edilmiş bir .env dosyası ya da çökme günlüğünde yazdırılmış bir değişken hâlâ bir sızıntıdır.
Önemli noktalar
- Sırlar arasında parolalar, API anahtarları, token'lar, sertifikalar ve özel anahtarlar bulunur.
- Sırları asla koda gömmeyin veya sürüm kontrolüne commit etmeyin.
- Sırları, erişim politikaları ve denetim günlükleri olan şifreli bir secrets manager'da saklayın.
- Sırları düzenli olarak döndürün ve kısa ömürlü, otomatik sona eren kimlik bilgilerini tercih edin.
- Commit'lerdeki ve CI günlüklerindeki sızıntıları erken yakalamak için secret scanning kullanın.
Örnek
// Bad: the secret is in source code and stays in Git history forever
// const dbPassword = "s3cr3t-p@ssw0rd";
// Good: the platform or secrets manager injects the value at runtime
const dbPassword = process.env.DB_PASSWORD;
if (!dbPassword) {
// Fail fast, and never log the secret's value
throw new Error("DB_PASSWORD is not set");
}Sık sorulan sorular
Yanlışlıkla Git'e bir sır commit ettiysem ne yapmalıyım?
Onu ele geçirilmiş sayın: hemen iptal edin veya döndürün, ardından koddan kaldırın. Dosyayı yeni bir commit'te silmek yeterli değildir; çünkü değer Git geçmişinde kalır ve otomatik tarayıcılar tarafından zaten kopyalanmış olabilir.
Ortam değişkenleri sırlar için yeterince güvenli midir?
Sırları bir uygulamaya iletmenin yaygın ve makul bir yoludur, ancak bir depolama sistemi değildir. Değerler bir secrets manager'dan veya platformun sır deposundan gelmeli; bunları günlüklere yazdırmaktan veya ihtiyacı olmayan süreçlere geçirmekten kaçınmalısınız.
Sır döndürme (secret rotation) nedir?
Sır döndürme, bir sırrı belirli aralıklarla ya da şüpheli bir sızıntıdan sonra yeni bir değerle değiştirmek, ardından eskisini devreden çıkarmak demektir. Otomatik döndürme ve kısa ömürlü kimlik bilgileri, çalınan bir sırrın ne kadar süre işe yarayacağını sınırlar.
İlgili sayfalar
- API AnahtarıGüvenlik, s. 2API anahtarı, API çağrılarında uygulamayı veya projeyi tanımlayan, erişim denetimi, kullanım takibi ve hız sınırı için kullanılan benzersiz gizli bir dizedir.
- Ortam DeğişkeniDevOps ve Bulut, s. 36Ortam değişkeni, programın dışında işletim sistemi ya da çalışma zamanınca ayarlanan, programın davranışını yapılandırmak için okuduğu adlandırılmış değerdir.
- ŞifrelemeGüvenlik, s. 42Şifreleme, veriyi bir anahtarla karıştırarak yalnızca doğru anahtara sahip olanın onu özgün ve okunabilir hâline geri çevirebilmesini sağlama işlemidir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- .gitignoreSürüm Kontrolü, s. 1.gitignore, Git'in izlememesi gereken bağımlılık, derleme çıktısı, günlük ve gizli bilgi gibi dosya ve klasörlerin kalıplarını listeleyen düz metin dosyadır.
- Zero TrustGüvenlik, s. 49Zero trust, varsayılan olarak hiçbir kullanıcı, cihaz veya ağa güvenmeyip her isteği kimliğe, cihaz sağlığına ve bağlama göre doğrulayan güvenlik modelidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin