CodeBlanks Logo Icon CodeBlanks

Secret nedir?

Secret ile hassas verileri yönetmeyi öğrenirsin.

Secret nedir?

Secret, parola, API anahtarı, TLS sertifikası gibi gizli verileri tutan nesnedir. Kullanımı ConfigMap'e çok benzer; farkı, Kubernetes'in Secret'lara erişimi ayrı yetkilerle sınırlaması, onları node'larda yalnızca bellekte (tmpfs) tutması ve etcd'de şifrelenebilmesidir.

kubectl create secret generic db-gizli --from-literal=DB_PASSWORD=S3cr3t!
kubectl get secret db-gizli
# NAME       TYPE     DATA   AGE
# db-gizli   Opaque   1      3s

base64 bir şifre değildir

Secret YAML'ındaki değerler base64'tür ve herkes çözebilir. Bu yüzden Secret YAML'ları Git'e konmaz; erişim RBAC ile sınırlanır; gerekirse Sealed Secrets, External Secrets ya da bir kasa (Vault) kullanılır:

$ kubectl get secret db-gizli -o jsonpath='{.data.DB_PASSWORD}'
UzNjcjN0IQ==
$ echo UzNjcjN0IQ== | base64 -d
S3cr3t!

Uygulama Secret oluştur ve oku

İki komut yaz: DB_PASSWORD=gizli123 değeriyle db-gizli adlı generic Secret oluştur; ardından değeri jsonpath ile alıp base64 -d'ye aktararak çöz.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl create secret generic db-gizli --from-literal=DB_PASSWORD=gizli123
kubectl get secret db-gizli -o jsonpath='{.data.DB_PASSWORD}' | base64 -d

Beklenen çıktı

secret/db-gizli created
gizli123

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Secret'taki değerler varsayılan olarak nasıl saklanır?

  • Özetlenmiş (hash)
  • Düz metin, kodlamasız
  • base64 ile kodlanmış; şifrelenmiş değil Doğru cevap
  • AES ile şifrelenmiş

Açıklama: base64 bir şifreleme değildir; etcd şifrelemesi ayrıca açılmalıdır.

2 base64 değeri çöz.

Soru
echo UzNjcjN0IQ== | base64 ____
Cevap
echo UzNjcjN0IQ== | base64 -d

Açıklama: -d (decode) çözer.

3 Eşleştir.

Kavram Anlamı
Secret Gizli veri
base64 Kodlama, şifre değil
tmpfs Node'da yalnızca bellekte
Sealed Secrets Git'e güvenle koyma

Orta seviye bölümündeki tüm dersler