1

既存の 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 に追加し、次へのアクセスのみを許可するカスタム ロールを割り当てました。

"container.apiServices.get",
"container.apiServices.list",
"container.clusters.getCredentials",
"container.clusters.get",
"container.clusters.list",

これは、ユーザーが Kubernetes クラスターにログインし、そこから Kubernetes RBAC を適用できるようにするための最小値です。

Kubernetes では、特定の名前空間内のポッドのリストを提供するロールと、IAM に追加したばかりのグループを指定するロール バインディングを適用しました。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: test-role
  namespace: custom-namespace
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-rolebinding
  namespace: custom-namespace
roleRef:
  kind: Role
  name: test-role
  apiGroup: rbac.authorization.k8s.io
subjects:
  - kind: Group
    name: group_a@ourdomain.com

今まですべてがよさそうだ。しかし、グループ「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 のグループの代わりに、ユーザーを直接指定すると機能します。

4

2 に答える 2