使用 Kubernetes RBAC 命名空间角色?

使用 Kubernetes RBAC 命名空间角色?

我正在尝试授予服务帐户 my-service-account 访问权限,以便在运行 Kubernetes 1.14 的 Google Kubernetes Engine 集群中的命名空间 my-namespace 内应用部署。

我的角色绑定如下:

$ kubectl describe rolebinding -n my-namespace --context my-cluster
Name:         my-namespace-service-account-policy
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  edit
Subjects:
  Kind            Name                                 Namespace
  ----            ----                                 ---------
  ServiceAccount  my-service-account                   my-namespace

但是,当我的服务帐户去应用清单时,我收到一个错误,结尾是:

deployments.apps "my-namespace" is forbidden: User "system:serviceaccount:my-namespace:my-service-account" cannot get resource "deployments" in API group "apps" in the namespace "my-namespace": RBAC: role.rbac.authorization.k8s.io "edit" not found

我还尝试使用“admin”而不是 edit。如果我改为使用 cluster-admin 为同一服务帐户创建 clusterrolebinding,则一切正常。如何授予帐户对命名空间的访问权限?

答案1

预定义edit名称ClusterRole,因此将其作为 来引用Role并不是指同一个实体。

该声明的 godoc 似乎暗示创建到是安全的,ClusterRoleBinding因为edit ClusterRole它的范围是命名空间级别的编辑,但我还没有深入研究过该策略,也不是 RBAC 专家

相关内容