
Helm — správca balíkov pre Kubernetes, niečo ako apt-get pre Ubuntu. V tejto poznámke si pozrieme predchádzajúcu verziu helm (v2) so službou tiller, nainštalovanou ako predvolenou, cez ktorú získame prístup k clustru.
Pripravíme cluster, na to spustíme príkaz:
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash![]()
Demonštrácia
- Ak nič ďalšie nenastavíme, helm v2 spúšťa službu tiller, ktorá má RBAC s úplnými administrátorskými právami k clustru.
- Po nainštalovaní v namespace
kube-systemsa objavítiller-deploy, sa otvorí aj port 44134, viazaný na 0.0.0.0. To je možné overiť pomocou telnetu.
$ telnet tiller-deploy.kube-system 44134
- Teraz sa môžeme pripojiť k službe tiller. Budeme používať binárku helm na vykonávanie operácií pri komunikácii so službou tiller:
$ helm --host tiller-deploy.kube-system:44134 version![]()
- Skúsime získať tajomstvá clustru Kubernetes z namespace
kube-system:
$ kubectl get secrets -n kube-system![]()
- Teraz môžeme vytvoriť svoj vlastný chart, v ktorom vytvoríme rolu s administrátorskými právami a pridelíme túto rolu predvolenému servisnému účtu. Použitím tokenu tohto servisného účtu sme získali plný prístup do nášho clustru.
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- Teraz, keď je
pwnchartnasadený, predvolený servisný účet má úplný administrátorský prístup. Skontrolujeme ešte raz získanie tajomstiev zkube-system
kubectl get secrets -n kube-system
Úspešné vykonanie tohto scenára závisí od toho, ako bol nasadený tiller, niekedy ho administrátori nasadzujú v samostatnom namespace s inými privilégiami. Helm 3 nie je náchylný na takéto zraniteľnosti, pretože neobsahuje tiller.
Poznámka prekladača: použitie sieťových politík na filtrovanie prevádzky v clustru pomáha chrániť pred zraniteľnosťami tohto typu.
Zdroj: habr.com
