İçeriğe geç
Muhammet Şafak
en
Soran: Çağrı Cevaplandı:

Hassas finansal veriyi şifrelerken anahtarı .env'de tutmak neden riskli — KMS/Vault ne sağlar?


Soru

Kullanıcıların DB'deki T.C. Kimlik No veya kredi kartı token'larını KVKK/GDPR gereği şifreli tutmalıyız; DB'yi ele geçiren saldırgan bu veriyi okuyamamalı. Uygulama katmanında simetrik şifreleme (AES-256) kullanırken şifreleme anahtarını uygulama sunucusunda bir `.env` dosyasında tutmanın riskleri neler? AWS KMS veya HashiCorp Vault entegrasyonu mimariyi nasıl güvenli kılar?

Cevap

Kısa cevap: Alanı AES-256 ile şifrelemek doğru, ama anahtar uygulamanın yanındaki .env’de duruyorsa sunucuya ulaşan saldırgan hem veriyi hem anahtarı alır — şifreleme sana neredeyse hiçbir şey kazandırmaz. KMS/Vault’un olayı anahtarı veriden ayırmaktır.

Sorunun özü şu: şifreli veri ve onu açan anahtar aynı yerde duruyorsa, o ikisi pratikte tek bir sırdır. Güvenlik, anahtarı veriden fiziksel/yetkisel olarak koparmaktan gelir.

  1. .env’deki anahtar tek noktada toplanmış risktir. Sunucuyu ele geçiren (ya da bir backup/.env sızıntısı yaşatan) saldırgan, şifreli DB ile anahtarı aynı anda eline geçirir. Ayrıca anahtar dosyada düz metin durur, rotasyonu zor ve kimin ne zaman çözdüğüne dair hiçbir iz yoktur.
  2. KMS/Vault ham anahtarı uygulamaya hiç vermez. Uygulama şifreleme/çözme için KMS’i çağırır ya da envelope encryption kullanır: master anahtar KMS’te durur, her kayıt için ayrı bir data key’i o şifreler. Böylece DB’yi hatta uygulama sunucusunu ele geçirmek bile düz metni teslim etmez — çünkü master anahtar hiç orada değildir.
  3. Merkezi rotasyon, audit ve IAM erişimi kazanırsın. KMS/Vault anahtarı merkezî olarak rotate eder, her çözme işlemini audit loguna yazar ve erişimi IAM/policy ile sınırlar. “Hangi servis, ne zaman, hangi veriyi çözdü” sorusu artık cevaplanabilir; uyumluluk (KVKK/GDPR) denetiminde bu kritik.
  4. TC kimlik/kart için tokenization’ı tercih et. Mümkünse hassas değeri hiç tutma: gerçek değeri bir vault/sağlayıcıda sakla, sistemde yalnızca bir token dolaş. Böylece sistemin büyük çoğunluğu hassas veriyi hiç görmez — sızsa bile ele geçen şey anlamsız bir token olur.

Sonuç: KMS ya da Vault ile envelope encryption; anahtar asla .env’de değil, rotate + audit edilen bir yerde. Mümkün olan her yerde tokenize et. Ek not: full-disk şifreleme ya da tek başına pgcrypto yeterli değildir — canlı bir DB bağlantısı düz metni yine de okur. Asıl koruma, anahtarı veriden ayırmaktan ve uygulamaya ham anahtarı hiç vermemekten gelir.

Etiketler: #veritabanı#güvenlik#altyapı
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

Diğer Sorular

Tüm sorular

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi