Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

Helm β€” ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ для Kubernetes, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ apt-get для Ubuntu. Π’ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ helm (v2) с сСрвисом tiller, установлСнным ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ доступ ΠΊ кластСру.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ кластСр, для этого запустим ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

ДСмонстрация

  • Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ, helm v2 запускаСт сСрвис tiller, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ RBAC c ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора кластСра.
  • ПослС установки Π² namespace kube-system появляСтся tiller-deploy, Π° Ρ‚Π°ΠΊΠΆΠ΅ открываСтся ΠΏΠΎΡ€Ρ‚ 44134, привязанный ΠΊ 0.0.0.0. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ telnet.

$ telnet tiller-deploy.kube-system 44134

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ сСрвису tiller. Π‘ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ helm для провСдСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΈ с сСрвисом tiller:

$ helm --host tiller-deploy.kube-system:44134 version

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

  • ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСкрСты кластСра Kubernetes ΠΈΠ· namespace kube-system:

$ kubectl get secrets -n kube-system

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный Ρ‡Π°Ρ€Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ создадим Ρ€ΠΎΠ»ΡŒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ эту Ρ€ΠΎΠ»ΡŒ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΌΡƒ сСрвис Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρƒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠΊΠ΅Π½ ΠΎΡ‚ этого сСрвис Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ Π² наш кластСр.

$ helm --host tiller-deploy.kube-system:44134 install /pwnchart

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

  • БСйчас, ΠΊΠΎΠ³Π΄Π° pwnchart Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚, сСрвисная учСтная запись ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ административный доступ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сСкрСтов ΠΈΠ· kube-system

kubectl get secrets -n kube-system

Π›ΠΎΠΌΠ°Π΅ΠΌ кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Helm v2 tiller

УспСшноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого сцСнария зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ tiller, ΠΈΠ½ΠΎΠ³Π΄Π° администраторы Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΅Π³ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ namespace с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ привилСгиями. Helm 3 Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΈΠΌ уязвимостям, Ρ‚.ΠΊ. Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ tiller.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°: использованиС сСтСвых ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² кластСрС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ защитится ΠΎΡ‚ уязвимостСй ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ