- Bu içeriğin amacı Kubernetes güvenliğinin önemine dikkat çekmektir
- Secret’in saklandığı yerler
- Kullanıcı
kubectl komutuyla bir kaynak tanımladığında Kubernetes, bu kaynağı tanımlayan manifest dosyasını oluşturup etcd’ye kaydeder
- Kullanıcı bir Secret kaynağı tanımladığında Secret de
etcd’ye kaydedilir
- Kullanıcı Secret’i volume ya da ortam değişkeni olarak okuyan bir pod oluşturduğunda Secret ilgili pod’a kaydedilir
- Secret’in saklandığı
etcd ile Secret’in kullanıldığı pod hacklenirse, Secret’te saklanan parola öğrenilebilir
- Ön hazırlık
kubeadm ile küme oluşturma
- Uygulama için önceden üç kaynak oluşturma: Secret
credit-card, pod app1, pod app2
etcd hackleme
etcd: Kubernetes kümesinin durumunu saklayan bir anahtar-değer veri deposu. Kubernetes’te tanımlanan tüm bilgiler burada saklanır. Secret de etcd incelenerek öğrenilebilir
- 1.1
etcdctl ile parola bulma
kube-apiserver manifestini inceleyip etcd sunucusunun certificate authority, açık anahtar ve özel anahtarını alma
etcd’yi rahat yönetmeye yarayan etcdctl komutu üzerinden parolayı bulma
- 1.2
etcd DB’sine doğrudan erişip alma
etcd’nin çalıştığı süreci bulup, o sürecin tüm verilerini tarayarak parolayı bulma
ps aux | grep etcd - etcd PID’sini alma
ll /proc/<pid>/fd çıktısında db yazan link dosyasını görme
cat /proc/<pid>fd/<db> | grep -A10 -B10 credit-card komutuyla önceden oluşturulan parolayı bulma
- pod hackleme
kubectl exec ile alma
- Kubernetes’i sorgulamak için uygun yetki varsa
kubectl komutuyla parola alınabilir
- Konteynere doğrudan erişip alma
- Worker node üzerinde Docker komutlarını serbestçe kullanabiliyorsanız parola sızdırılabilir
- pod
app1’in planlandığı worker node’da konteyneri bulup, konteynere tanımlı ortam değişkenleri listesini çıkarabilirsiniz
crictl pods - app1’in Pod ID’sini bulma
crictl ps - Pod ID’ye karşılık gelen konteyneri bulma
crictl inspect <container id> | grep -A16 env - ilgili konteyneri ayrıntılı inceleyip ortam değişkenlerini çıkarma
- Secret’e erişim yetkisi olan ServiceAccount ile alma
- Pod’un ServiceAccount’u Secret’e erişim yetkisine sahipse pod içinden API çağrısıyla parola bulunabilir
- Yukarıda anlatılan hacklemeyi engelleme yöntemleri
- “En az ayrıcalık ilkesi”ne uyarak gereksiz yetkileri olan service account’lar oluşturmamak
- Sosyal mühendislik gibi tehditlere karşı kullanıcı kimlik bilgilerinin açığa çıkmamasını sağlamak
EncryptionConfiguration kaynağı üzerinden etcd şifrelemesi
Henüz yorum yok.