Kubelet Authentication & Authorization
Kubelet Kimlik Doğrulama
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
--anonymous-auth=true
olarak ayarlayın veya yapılandırmayı kullanın:
Webhook: Bu, kubectl API taşıyıcı belirteçlerini yetkilendirme olarak etkinleştirecektir (herhangi bir geçerli belirteç geçerli olacaktır). Aşağıdaki adımları izleyerek bunu etkinleştirin:
API sunucusunda
authentication.k8s.io/v1beta1
API grubunun etkin olduğundan emin olunkubelet'i
--authentication-token-webhook
ve--kubeconfig
bayraklarıyla başlatın veya aşağıdaki ayarı kullanın:
Kubelet, yapılandırılmış API sunucusuna TokenReview
API'sini çağırarak taşıyıcı belirteçlerden kullanıcı bilgilerini belirler.
X509 istemci sertifikaları: X509 istemci sertifikaları aracılığıyla kimlik doğrulamasına izin verir.
Daha fazla ayrıntı için apiserver kimlik doğrulama belgelerine bakın.
Kubelet'i
--client-ca-file
bayrağıyla başlatın ve istemci sertifikalarını doğrulamak için bir CA paketi sağlayın. Veya yapılandırmayla:
Kubelet Yetkilendirme
Başarılı bir şekilde kimlik doğrulanan herhangi bir istek (anonim bir istek dahil) ardından yetkilendirilir. Varsayılan yetkilendirme modu AlwaysAllow
'dur ve tüm isteklere izin verir.
Ancak, diğer olası değer webhook
(genellikle orada bulabileceğiniz değerdir). Bu mod, bir eyleme izin vermek veya izin vermemek için kimlik doğrulanmış kullanıcının izinlerini kontrol eder.
Unutmayın ki, anonim kimlik doğrulama etkin olsa bile, anonim erişimin herhangi bir eylem gerçekleştirmek için herhangi bir izni olmayabilir.
Webhook aracılığıyla yetkilendirme, --authorization-mode=Webhook
parametresi kullanılarak veya yapılandırma dosyası aracılığıyla yapılandırılabilir:
kubelet, her isteği yetkilendirip yetkilendirmediğini belirlemek için yapılandırılmış API sunucusunda SubjectAccessReview
API'sini çağırır.
Kubelet, apiserver ile aynı istek öznitelikleri yaklaşımını kullanarak API isteklerini yetkilendirir:
Eylem
HTTP fiili | istek fiili |
---|---|
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 koleksiyonu için) |
PUT | güncelle |
PATCH | yama |
DELETE | sil (bireysel kaynaklar için), deletecollection (koleksiyonlar için) |
Kubelet API'sine yönelik kaynak, her zaman nodes ve alt kaynak, gelen isteğin yolundan belirlenir:
Kubelet API | kaynak | alt kaynak |
---|---|---|
/stats/* | nodes | stats |
/metrics/* | nodes | metrics |
/logs/* | nodes | log |
/spec/* | nodes | spec |
diğerleri | nodes | proxy |
Örneğin, aşağıdaki istek, izin olmadan kubelet'in pod bilgilerine erişmeye çalıştı:
Yasaklandı hatası 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ını (bu durumda belirteçten) görebiliriz.
Kaynağın düğümler olduğunu ve alt kaynağın proxy olduğunu kontrol edin (bu önceki bilgilerle uyumlu).
Referanslar
Last updated