簡體   English   中英

如何將GCP用戶與GKE Kubernetes用戶相關聯,以進行身份​​驗證和后續授權?

[英]How do I relate GCP users to GKE Kubernetes users, for authentication and subsequent authorization?

我在GCP中使用GKE Kubernetes。 我是GCP,GKE和kubectl的新手。 我正在嘗試創建新的Kubernetes用戶以為其分配ClusterRoleBindings,然后以這些用戶身份登錄(kubectl)。

我看不到GCP用戶和Kubernetes“用戶”之間的關系(我知道Kubernetes中沒有User對象類型)。

根據https://cloud.google.com/kubernetes-engine/docs/concepts/security-overview的說法,Kubernetes用戶帳戶是Google帳戶。

因此,我創建了一些Google帳戶,然后通過IAM將它們與我的GCP帳戶相關聯。 我可以在IAM中看到這些帳戶很好。

然后,我對這些新用戶執行了gcloud auth登錄,然后可以在gcloud auth列表中看到它們。 然后,我嘗試以各種用戶身份訪問gcloud資源(gcloud計算磁盤列表)。 這按預期工作-遵守了GCP用戶權限。

然后,我創建了一個Kubernetes UserRole。 下一步是使用UserRoleBinding將這些用戶綁定到那些角色。

ClusterRole.yaml(可以正常創建):

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  # "namespace" omitted since ClusterRoles are not namespaced
  name: cluster-role-pod-reader-1
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

ClusterRoleBinding.yaml(可以正常創建):

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cluster-role-binding-pod-reader-1
subjects:
- kind: User
  name: MYTESTUSER@gmail.com  # not real userid
  apiGroup: rbac.authorization.k8s.io
roleRef: 
  kind: ClusterRole
  name: cluster-role-pod-reader-1
  apiGroup: rbac.authorization.k8s.io

在Kubernetes中,我可以創建綁定,但是我的第一個問題是我可以在現有UserRole和存在的用戶之間創建UserRoleBinding。 我以為那會失敗。 這意味着我缺少重要的東西。

我的第二個問題是我不知道如何以新用戶之一身份登錄kubectl。

總體而言,我缺少GCP / IAM用戶和GKE用戶之間的聯系。 幫助將不勝感激!

Kubernetes沒有用戶數據庫。 用戶生活在集群之外,通常由雲提供商控制。

如果您使用的是GKE,則用戶由GCP IAM控制。 因此,您無法使用kubectl列出用戶。

但是您可以創建服務帳戶 但是,了解服務帳戶和用戶之間的區別很重要。 用戶是真實人,服務帳戶是kubernetes內部和外部的進程。

創建ClusterRoleBinding時,這意味着對kubernetes:

如果用戶名為MYTESTUSER@gmail.com的用戶進入集群, 請將其綁定到ClusterRole cluster-role-pod-reader-1

要將kubernetes與GCP IAM用戶一起使用,您必須執行以下操作:

  • 將用戶添加到IAM
  • 將他添加到角色roles/container.viewer
  • 創建您選擇的RoleBinding / ClusterRoleBinding

您可以使用以下命令列出相應的IAM角色(不要誤認為RBAC角色):

gcloud iam roles list | grep 'roles/container\.' -B2 -A2

考慮到最小特權原則,您應該僅向用戶授予最小權限才能登錄到群集。 其他IAM角色( roles/container.clusterAdmin除外)將自動向您的項目所有群集內的對象授予具有更高特權的訪問權限。

RBAC僅允許添加特權,因此您應該選擇具有最少特權的IAM角色,然后通過RBAC添加所需的特權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM