問題タブ [kubernetes-rbac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - ユーザー "system:serviceaccount:default:flink" は、クラスター スコープで API グループ "" のリソース "ノード" を一覧表示できません
1 つの k8s ポッドで k8s API を呼び出そうとしています。ただし、次の権限の問題が発生します。
私の yaml ファイルでは、既にRole
&を指定していますRoleBinding
。ここで何が恋しいですか?
kubernetes - system:node が curl を介して apiserver からシークレットを取得できない
私はセキュリティ研究のために POC を行っており、ワーカー ノードから名前空間のシークレットに直接アクセスしようとしています。Kubernetes 1.20 を実行している GKE 上のクラスタがあります
ワーカー (非マスター) ノードから次のコマンドを実行しています。
そして、それはうまくいきます。
ただし、シークレットを取得しようとすると失敗します。
ドキュメントを見ると、ノードで実行されている kubelet がシークレットにアクセスできるはずであることがわかります: https://kubernetes.io/docs/reference/access-authn-authz/node/
私の理解では、承認はClusterRole
system:node
. それを見ると、get
秘密に対する役割があることがわかります。
kubelet と kube-apiserver 間の通信に関するその他の関連ドキュメント: https://kubernetes.io/docs/concepts/architecture/control-plane-node-communication/#node-to-control-plane
kubernetes - GKE で Google Cloud Groups RBAC を有効にすると禁止される
既存の GKE クラスタで Google Cloud Groups RBAC を有効にしています。
そのために、最初にワークスペースにすべてのグループを作成し、ドキュメントに従って必要な「gke-security-groups@ourdomain.com」も作成しました。
これらのグループは、シングル サインオン用に Active Directory と統合された Workspace で作成されます。
ドキュメントに記載されているように、すべてのグループは「gke-security-groups@ourdomain」のメンバーです。また、すべてのグループがメンバーを表示できます。
クラスタが更新され、Google Cloud Groups RBAC のフラグが有効になり、値を「gke-security-groups@ourdomain.com」に指定しました。
次に、グループの 1 つ (group_a@ourdomain.com と呼びましょう) を IAM に追加し、次へのアクセスのみを許可するカスタム ロールを割り当てました。
これは、ユーザーが Kubernetes クラスターにログインし、そこから Kubernetes RBAC を適用できるようにするための最小値です。
Kubernetes では、特定の名前空間内のポッドのリストを提供するロールと、IAM に追加したばかりのグループを指定するロール バインディングを適用しました。
今まですべてがよさそうだ。しかし、グループ「group_a@ourdomain.com」に属するユーザーでこの名前空間のポッドを一覧表示しようとすると、次のようになります。
サーバーからのエラー (禁止): ポッドは禁止されています: ユーザー "my-user@ourdomain.com" は、名前空間 "custom-namespace" の API グループ "" のリソース "ポッド" を一覧表示できません: ["container.pods. list"] パーミッション。
もちろん、container.pods.list を group_a@ourdomain が割り当てられたロールに与えると、ポッドを一覧表示できますが、GCloud でのこの権限はグローバルであるため、すべての名前空間に対して開きます。
ここで何が欠けていますか?
これが関連しているかどうかはわかりませんが、gcloud の組織はたとえば「my-company.io」と呼ばれ、SSO のグループは「...@groups.my-company.io」と呼ばれ、gke-security は-groups グループも「groups.my-company.io」ドメインで作成されました。
また、RoleBinding のグループの代わりに、ユーザーを直接指定すると機能します。