๐Authentication
Last updated
Last updated
Kubernetes kimlik doฤrulama eklentileri arayฤฑcฤฑlฤฑฤฤฑyla API isteklerinin kimliฤini doฤrulamak iรงin, istemci sertifikalarฤฑ, tarayฤฑcฤฑ belirteรงleri bir kimlik doฤrulama proxy veya HTTP temel kimlik doฤrulamasฤฑ iรงin kullanฤฑr.
API 'da bir kullanฤฑcฤฑ objesi bulunmamasฤฑna raฤmen, Cluster 'ฤฑn Certificate authority tarafฤฑndan imzalanmฤฑล geรงerli bir sertifika sunan herhangi bir kullanฤฑcฤฑ (CA) kimliฤi doฤrulanmฤฑล olarak kabul edilir. Bu yapฤฑlandฤฑrmada kubernetes sertifikanฤฑn konu kฤฑsmฤฑndaki ortak ad alanฤฑndan, kullanฤฑcฤฑ adฤฑnฤฑ belirler. Misal, "/CN=bob"
Oradan rol tabanlฤฑ eriลim denetimi (RBAC) alt sistemi, kullanฤฑcฤฑnฤฑn bir kaynak รผzerinde, belirli bir iลlemi gerรงekleลtirme yetkisine sahip olup, olmadฤฑฤฤฑnฤฑ belirler.
รoฤu Enterprise uygulama 'da kullanฤฑcฤฑ yรถnetiminin, uygulama iรงerisinden yรถnetildiฤine ลahit olmuลsunuzdur. Hemen hemen her platformun ayrฤฑ bir kullanฤฑcฤฑ oluลturma ve yรถnetme bรถlรผmรผ bulunur. Sistem yรถnetimi ile uฤraลan kiลiler de, buradan yeni kullanฤฑcฤฑlar oluลturabilir ve her yeni kullanฤฑcฤฑ birer obje ลeklinde oluลturulur.
Fakat bu iล, Kubernetes de bรถyle deฤildir. Kubernetes normal kullanฤฑcฤฑ hesaplarฤฑnฤฑn yaratฤฑp, yรถnetebileceฤimiz bir altyapฤฑ sunmaz. Yani Kubernetes รผstรผnde gidip, ali,ayse,ahmet vb.. ลeklinde kullanฤฑcฤฑlar yaratamayฤฑz.
Pod gibi yada servis gibi oluลturabileceฤimiz bir user objesi de bulunmaz. Kubernetes de kullanฤฑcฤฑ oluลturma ve kimlik doฤrulama iลi, cluster dฤฑลฤฑnda halledilecek ลekilde tasarlanmฤฑลtฤฑr.
Kubernetes X509 client certs-Static token file-OpenID connect tokens-webhook token- authentication proxy gibi altyapฤฑlardan birini yada birkaรงฤฑnฤฑ kullanarak, bu iลin dฤฑลarฤฑda halledilmesine imkan saฤlar.
Kubernetes kurulumunda, kube api server ayarlarฤฑnda, bu altyapฤฑlardan hangilerini kullanacaฤฤฑmฤฑzฤฑ belirleriz ve bu kimlik doฤrulama iลini, bu altyapฤฑlara havale ederiz. Bunun yanฤฑnda, her kubernetes cluster 'ฤฑnda bir kรถk sertifika yetkilisi, yani Root Certificate authority altyapฤฑsฤฑ da bulunur.
Bu Root Certificate authority tarafฤฑndan imzalanan x509 client sertifika authentication iรงin kullanฤฑlฤฑr. Kubernetes bu ve diฤer altyapฤฑlar tarafฤฑndan kimliฤi doฤrulanmฤฑล kullanฤฑcฤฑlarฤฑn kubernetes ile gรถrรผลmesine imkan verir.
Fakat iล burada elbette bitmez, kimliฤin doฤrulanmasฤฑ bir kullanฤฑcฤฑnฤฑn cluster รผstรผnde, her ลeyi yapabilmesi-yapabileceฤi anlamฤฑna gelmez. Burada yetkilendirme yani, authorization kavramฤฑ devreye girer. ฤฐlerleyen yazฤฑlarda bahsedeceฤiz.
Az รถnce belirttiฤim gibi, biz bu kimlik doฤrulama altyapฤฑsฤฑnฤฑn ne olacaฤฤฑnฤฑ kubernetes kurulumunda belirlememiz gerekir. Fakat manuel bir kubernetes kurmak yerine, kubernetes daฤฤฑtฤฑmlarฤฑ yada Cloud servis saฤlayฤฑcฤฑlarฤฑn sunduฤu yรถnetilen kubernetes servisleri kullanฤฑyorsanฤฑz, bu iลlemler bizim adฤฑmฤฑza otomatik olarak yapฤฑlฤฑr.
รrneฤin, minikube varsayฤฑlan olarak, x509 client sertifikalarฤฑ ile kimlik doฤrulama yapacak ลekilde ayarlanฤฑr. Biz minikube start dediฤimiz zaman, admin yetkisine sahip bir kullanฤฑcฤฑ olan minikube kullanฤฑcฤฑsฤฑ iรงin, sertifikalar hazฤฑrlanฤฑr ve kubectl config dosyamฤฑzฤฑn iรงerisine bu bilgiler girilir. Biz de kubectl command line ile kubernetes cluster 'mฤฑzda eriลmek istediฤimiz zaman, her seferinde bu sertifikalar ile kimliฤimizi doฤrulanmฤฑล olarak istek gรถndeririz.
Yada Azure รผzerinde EKS kurduฤumuz zaman, kurulumda seรงenekleri belirleyerek, hem x509 client sertifikalarฤฑ hem de, Azure active directory รผzerinden authenticated olma imkanฤฑ sunuyor. Uzun lafฤฑn kฤฑsasฤฑ, kubernetes kullanฤฑcฤฑ oluลturma ve kullanฤฑcฤฑ doฤrulama iลlemlerini, kendi รผzerinde barฤฑndฤฑrmaz. Bunu dฤฑลarฤฑda halledebileceฤimiz seรงenekler olarak sunar. Kendi รผzerinde barฤฑndฤฑrmazdan kasฤฑt ลudur; biz gidip bir pod oluลturur gibi, bir servis objesi oluลturur gibi, veya herhangi bir obje oluลturur gibi kullanฤฑcฤฑ oluลturamayฤฑz.
Yeni bir firmada developer olarak iลe baลladฤฑk ve firmanฤฑn kubernetes clusterฤฑna baฤlanmak istiyoruz. ฤฐlk olarak developer rolรผnรผ oynuyoruz. Ben ekibe yeni katฤฑlmฤฑล bir developerฤฑm ve Kubernetes cluster'a baฤlanarak iลlemler yapmak istiyorum.
Kubernetes cluster'ฤฑ yรถneten admine gittim ve bu isteฤimi sรถyledim. O da bana, Kubernetes cluster'ฤฑn, X509 Client sertifiklarฤฑ ile authenticated olacak ลekilde รงalฤฑลtฤฑฤฤฑnฤฑ sรถyledi. Ve eฤer ben, bir private key ve CSR dosyasฤฑ oluลturup, admine iletirsem, o Kubernetes Certificate authority kullanarak, bunu imzalayacak ve bana sertifika yaratabileceฤini sรถyledi.
ลimdi bu Key ve CSR dosyamฤฑzฤฑ oluลturalฤฑm;
-subj : Daha รถnce sรถylediฤimiz รผzere, kubernetes kendi iรงerisinde bir kullanฤฑcฤฑ objesi tutmaz, sizin hangi kullanฤฑcฤฑ olduฤunuzu x509 sertifikalarฤฑnda, bu alanlardan algฤฑlar. Bu nedenle bizler hangi kullanฤฑcฤฑ adฤฑna sahip olmak istiyorsak ve bu kullanฤฑcฤฑyฤฑ eklemek istediฤimiz gruplar varsa, bunlarฤฑ CSR oluลturma aลamasฤฑnda " -subj " parametresinde belirtiyoruz.
Yukarฤฑdaki komutlarla hem CSR hem de key dosyasฤฑnฤฑ oluลturduk ve artฤฑk developer olarak iลimiz bitti. Bu oluลturduฤumuz CSR dosyasฤฑnฤฑ kubernetes admine gรถndereceฤiz ve sonraki iลleri Kubernetes admin halledecek.
Temel olarak, developer'ฤฑn ilettiฤi CSR 'ฤฑ kullanarak bir sertifika รผreteceฤiz. CSR'ฤฑ kopyaladฤฑฤฤฑmฤฑz dizine geรงiyoruz, Bu noktada bir kubernetes objesi yaratacaฤฤฑz. " CertificateSigningRequest " adฤฑnda bir obje oluลturacaฤฤฑz. Bu obje ile, Developer'ฤฑn bize verdiฤi CSR'ฤฑ kubernetes'e gรถndereceฤiz ve kubernetes de bize sertifika oluลturacak.
Biz bu sertifikayฤฑ kullanarak kubectl config'de context oluลturmalฤฑyฤฑz.
Bรถylelikle cluster'a yeni context (yeni kullanฤฑcฤฑ) bilgileriyle baฤlanabiliriz. Fakat bu bilgilerle uzak bir cluster'a baฤlanacaksak,
Yeni kullanฤฑcฤฑ ile cluster'a baฤlandฤฑฤฤฑmฤฑzda hiรง bir iลlem yapamayฤฑz. Bunun iรงin yetkilendirme yapฤฑlmasฤฑ gerekir. (RBAC)
ลu ana kadar yaptฤฑฤฤฑmฤฑz iลlemler, bir kullanฤฑcฤฑnฤฑn kimlik doฤrulamasฤฑ yapฤฑlarak kubernetes 'e baฤlanmasฤฑnฤฑ saฤlamak ile alakalฤฑydฤฑ. Kimliฤi desteklenen ve ayarlanan yรถntemlerle doฤrulanan her kullanฤฑcฤฑ kubernetes cluster'a eriลebilir. Fakat her kullanฤฑcฤฑ varsayฤฑlan olarak sฤฑfฤฑr yetkiyle gelir. Listeleme dahil hiรงbir iลlem yapamaz. Kullanฤฑcฤฑ authenticated oldu fakat, authorization 'ฤฑ kฤฑsฤฑtlฤฑ. Bir sonraki yazฤฑda buna deฤineceฤiz.