L15 — Secret yönetimi: sırrı image/repo dışında tut#
Modül:
D3· Süre: ~3 saat · Kırık lab: yok
D1/D2'de uygulamayı çalıştırdın — ama parolayı nereye koydun? Bu lab sırrı image'a gömmeden ve repoya düz metin yazmadan Pod'a ulaştırır. İki gerçeği gözünle görürsün: (1) K8s Secret varsayılan olarak yalnız base64'tür, şifreleme değil; (2) bir sızıntı taraması repoya kaçmış sırrı yakalar.
Gerekenler#
- D1'deki kind cluster,
kubectl,base64. - Bir sızıntı tarayıcı:
gitleaksveyatrivy fs.
Görev#
- Sırrı repo dışında oluştur. Değeri kabuktan ver, dosyaya yazma:
- Deployment'ı Secret'a bağla (SEN).
starter/deployment.yaml'daki düz metinDB_PASSWORDTODO'sunusecretKeyRefile değiştir — değer manifestte görünmez. - base64 ≠ şifreleme'yi kanıtla. Sır düz metin çıkıyor. Demek ki etcd'ye erişen herkes okuyabilir →
report.txt'e yaz. - Sızıntı taramasını çalıştır. Repoda düz metin sır olmadığını göster: Temiz çıktıyı
report.txt'e ekle. (İstersen geçici bir sahte sır ekleyip taramanın onu yakaladığını gör, sonra sil — ama repoya commit'leme.) - GitOps'a sır taşıma (yazılı). Bir sırrı Git'e düz metin koymadan taşımanın en az bir yolunu yaz (SealedSecrets / SOPS / External Secrets Operator) ve nasıl çalıştığını bir cümleyle açıkla.
Kabul kriterleri#
-
bash verify.shsıfır hatayla geçiyor. -
deployment.yamlsırrısecretKeyRefile alıyor — manifestte düz metin parola yok. -
report.txt"K8s Secret niçin tek başına yetmez (base64, şifreleme değil)" açıklamasını içeriyor. -
report.txtbir sızıntı taraması çıktısı (temiz) içeriyor. -
report.txtsırrı GitOps'a düz metin koymadan taşımanın bir yolunu anlatıyor.
İpucu (çözüm değil)#
secretKeyRefsırrı referansla getirir; değer manifeste, dolayısıyla Git'e girmez.- base64 geri çevrilebilir (
base64 -d) — bu koruma değil, taşıma biçimidir. Gerçek koruma: etcd encryption-at-rest + RBAC + harici bir sır deposu. - GitOps'ta sır: değeri şifreli commit'lersin (SealedSecrets/SOPS) ya da cluster'daki bir operatör sırrı harici store'dan (Vault, cloud secret manager) çeker.
Takılırsan solution manifestine bak — ama önce kendin dene.