Secret nedir?
- Docker & Kubernetes kursu
- Orta seviye
- Ders 49/82
- 4 dk
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 3sbase64 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
# buraya yazÖrnek çözüm
kubectl create secret generic db-gizli --from-literal=DB_PASSWORD=gizli123
kubectl get secret db-gizli -o jsonpath='{.data.DB_PASSWORD}' | base64 -dBeklenen çı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.
echo UzNjcjN0IQ== | base64 ____
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 |