Kubelet Authentication & Authorization
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Varsayılan olarak, diğer yapılandırılmış kimlik doğrulama yöntemleri tarafından reddedilmeyen kubelet'in HTTPS uç noktasına yapılan istekler, anonim istekler olarak kabul edilir ve system:anonymous
kullanıcı adı ve system:unauthenticated
grubu verilir.
3 kimlik doğrulama yöntemi şunlardır:
Anonim (varsayılan): Parametreyi ayarlayarak --anonymous-auth=true
veya yapılandırmayı kullanın:
Webhook: Bu, kubectl API bearer token'larını yetkilendirme olarak etkinleştirecektir (herhangi bir geçerli token geçerli olacaktır). Bunu şu şekilde etkinleştirin:
authentication.k8s.io/v1beta1
API grubunun API sunucusunda etkin olduğundan emin olun
kubelet'i --authentication-token-webhook
ve --kubeconfig
bayraklarıyla başlatın veya aşağıdaki ayarı kullanın:
Kubelet, bearer token'larından kullanıcı bilgilerini belirlemek için yapılandırılmış API sunucusunda TokenReview
API'sini çağırır.
X509 istemci sertifikaları: X509 istemci sertifikaları aracılığıyla kimlik doğrulamaya izin verir
Daha fazla ayrıntı için apiserver kimlik doğrulama belgelerine bakın
İstemci sertifikalarını doğrulamak için bir CA paketi sağlayarak --client-ca-file
bayrağı ile kubelet'i başlatın. Ya da yapılandırma ile:
Başarıyla kimlik doğrulaması yapılmış (anonim bir istek dahil) herhangi bir istek yetkilendirilir. Varsayılan yetkilendirme modu AlwaysAllow
olup, tüm istekleri izin verir.
Ancak, diğer olası değer webhook
'dur (bu, dışarıda en çok bulacağınız şeydir). Bu mod, kimlik doğrulaması yapılmış kullanıcının izinlerini kontrol ederek bir eylemi onaylar veya reddeder.
Anonim kimlik doğrulaması etkinleştirilse bile, anonim erişim herhangi bir eylemi gerçekleştirmek için hiçbir izne sahip olmayabilir.
Webhook aracılığıyla yetkilendirme, parametre --authorization-mode=Webhook
kullanılarak veya yapılandırma dosyası ile yapılandırılabilir:
The kubelet, yapılandırılmış API sunucusunda SubjectAccessReview
API'sini çağırarak her isteğin yetkilendirilip yetkilendirilmediğini belirler.
Kubelet, API isteklerini apiserver ile aynı istek özellikleri yaklaşımını kullanarak yetkilendirir:
Eylem
POST
oluştur
GET, HEAD
al (bireysel kaynaklar için), listele (koleksiyonlar için, tam nesne içeriği dahil), izle (bireysel bir kaynak veya kaynak koleksiyonunu izlemek için)
PUT
güncelle
PATCH
yaman
DELETE
sil (bireysel kaynaklar için), koleksiyonsil (koleksiyonlar için)
Kubelet API'si ile konuşan kaynak her zaman düğümlerdir ve alt kaynak gelen isteğin yolundan belirlenir:
/stats/*
düğümler
istatistik
/metrics/*
düğümler
metrik
/logs/*
düğümler
günlük
/spec/*
düğümler
spesifikasyon
diğer tüm
düğümler
proxy
Örneğin, aşağıdaki istek, kubelet'in pod bilgilerine izinsiz erişmeye çalıştı:
Yasaklandı aldık, bu yüzden istek Kimlik Doğrulama kontrolünü geçti. Aksi takdirde, sadece bir Yetkisiz
mesajı alırdık.
Kullanıcı adı (bu durumda token'dan) görebiliyoruz.
Kaynağın düğümler olduğunu ve alt kaynağın proxy olduğunu kontrol edin (bu önceki bilgilerle mantıklı).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)