如何限制默认服务帐户创建/删除kubernetes资源

时间:2019-01-15 05:58:00

标签: kubernetes rbac google-kubernetes-engine

我正在使用Google Cloud的GKE进行kubernetes操作。

我试图将访问权限限制为使用命令行访问群集的用户。我已经在Google云中应用了IAM角色,并将视图角色赋予了服务帐户和用户。如果我们在kubectl命令中通过api或“ --as”使用它,则一切正常,但是当有人尝试做kubectl时创建一个对象而未指定“ --as”对象仍然使用该特定对象的“默认”服务帐户创建命名空间。

为解决此问题,我们限制了对“默认”服务帐户的访问,但仍然可以创建对象。

$ kubectl auth can-i create deploy --as default -n test-rbac
no

$ kubectl run nginx-test-24 -n test-rbac --image=nginx
deployment.apps "nginx-test-24" created

$ kubectl describe  rolebinding default-view -n test-rbac
Name:         default-view
Labels:       <none>
 Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  view
Subjects:
  Kind            Name     Namespace
  ----            ----     ---------
  ServiceAccount  default  test-rbac

我希望通过CLI访问群集的用户即使没有权限也不能创建对象,即使他们不使用“ --as”标志也应加以限制。

2 个答案:

答案 0 :(得分:0)

请注意,首先您需要查看使用RBAC in GKE

的先决条件

此外,请注意,IAM角色适用于整个Google Cloud项目以及该项目中的所有集群,并且RBAC可以在名称空间级别启用精细的授权。因此,使用GKE,这些授权方法可以并行工作。

有关更多参考,请查看此文档RBAC in GKE

答案 1 :(得分:0)

对于所有讨厌这个问题的人,我希望您可以尝试指出这一点:

在以下位置有一个文件

〜/ .config / gcloud / configurations / config_default

在此[容器]部分下有一个选项:     use_application_default_credentials

设置为真

在这里,您学到了一些新东西。希望您可以尝试提供帮助,而不是拒绝投票。