【问题标题】:How to delete subject from cluster role binding in GKE using Cloud Shell如何使用 Cloud Shell 从 GKE 中的集群角色绑定中删除主题
【发布时间】:2020-05-12 11:48:08
【问题描述】:

我创建了一个ClusterRole

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: restricted-pods-role
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - restricted-psp
  verbs:
  - use

我已通过ClusterRoleBinding 使用以下命令将cluster-admin 权限授予用户帐户alex.pitt@xcom.net

kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user alex.pitt@xcom.net

现在我想将相同的集群管理员权限授予 dave.pot@xcom.net 而不是 alex.pitt@xcom.net。

如何从 Cloud Shell 执行此操作?

【问题讨论】:

    标签: google-kubernetes-engine


    【解决方案1】:

    我想将相同的集群管理员权限授予 dave.pot@xcom.net 而不是 alex.pitt@xcom.net。 如何从 Cloud Shell 执行此操作?

    • 您可以使用 kubectl patch 从云 shell 的单个命令中执行此操作。复制命令并将newuser@domain.com 替换为所需的用户:
    kubectl patch clusterrolebinding cluster-admin-binding -p '{"subjects":[{"apiGroup":"rbac.authorization.k8s.io","kind":"User","name":"newuser@domain.com"}]}'
    
    • 或者您可以在飞行中使用默认文本编辑器(通常是 vi)编辑清单:

    kubectl edit clusterrolebinding cluster-admin-binding


    我想评论的一件事:

    • 我注意到您创建了一个名为 restricted-pods-role 的集群角色,并且在第二部分中,您将角色 cluster-admin 分配给用户,从而可以完全控制集群。

    • 您在问题中已相当清楚地表明这是您的意图,但如果您想要实现的是将刚刚创建的角色分配给用户,则命令将是:

      李>
    kubectl create clusterrolebinding restricted-pods-binding --clusterrole restricted-pods-role --user someuser@domain.com
    
    • 值得一提的是,Cluster Role Binding 将 ClusterRole 中定义的权限授予一个用户或一组用户。它包含一个主题列表(用户、组或服务帐户),因此您可以对多个用户使用相同的绑定。

    复制:

    • 我按照您的示例部署了ClusterRoleBinding
    $ k get clusterrolebinding cluster-admin-binding -o yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      creationTimestamp: "2020-05-12T14:55:14Z"
      name: cluster-admin-binding
      resourceVersion: "48399"
      selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin-binding
      uid: 7a5055e3-e464-405c-9ed2-891eb671a948
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: alex.pitt@xcom.net
    
    • 并按照上述说明应用补丁:
    $ kubectl patch clusterrolebinding cluster-admin-binding -p '{"subjects":[{"apiGroup":"rbac.authorization.k8s.io","kind":"User","name":"newuser@domain.com"}]}'
    clusterrolebinding.rbac.authorization.k8s.io/cluster-admin-binding patched
    
    $ k get clusterrolebinding cluster-admin-binding -o yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      creationTimestamp: "2020-05-12T14:55:14Z"
      name: cluster-admin-binding
      resourceVersion: "49703"
      selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin-binding
      uid: 7a5055e3-e464-405c-9ed2-891eb671a948
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: newuser@domain.com
    

    如您所见,用户已被替换。

    如果您对此程序仍有任何疑问,请在 cmets 中告诉我。

    【讨论】:

    • 非常感谢。是的,你是对的,我已经创建了一个 Cluster 角色作为限制性 Pods-role,资源作为 podsecuritypolicy 命名为限制性 psp,但是在创建 Clusterrolebinding 时,我给出了 cluster-admin 角色只是为了测试。但我打算知道如何在集群角色绑定中更改主题。
    • 我对 Role/Clusterrole、Rolebinding/Clusterrolebinding 和 Subject 序列有另一个困惑。如果我没看错,下面是序列 1。首先我们创建 Role/Clusterrole 2。将主题和 Role/Clusterrole 添加到 Rolebinding/Clusterrolebinding。如果我错了,请纠正我,或者如果我遗漏任何东西,请补充。这会很棒..
    • 我明白了,这就是为什么我决定给你两个选择。关于您的第二条评论: Role/RoleBinding 用于授予特定命名空间中的权限,而 ClusterRole/ClusterRoleBinding 用于授予应用于集群级别的权限,从而授予对所有命名空间的访问权限。 Subject 是将被授予权限的用户/组/服务帐户。
    猜你喜欢
    • 2020-08-30
    • 2023-01-07
    • 2018-09-21
    • 1970-01-01
    • 2018-12-14
    • 2020-11-21
    • 2018-02-28
    • 2014-09-21
    • 2019-04-16
    相关资源
    最近更新 更多