如何从 creating/deleting kubernetes 资源限制默认服务帐户

How to restrict default Service account from creating/deleting kubernetes resources

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

我正在尝试限制对使用命令行访问集群的用户的访问。我在 Google 云中应用了 IAM 角色,并为服务帐户和用户提供了查看角色。如果我们在 kubectl 命令中通过 api 或“--as”使用它,一切正常,但是当有人试图在不指定“--as”的情况下创建对象时,kubectl 仍然使用 [=20= 创建对象] 该特定命名空间的服务帐户。

为了克服这个问题,我们限制了对 "default" 服务帐户的访问,但我们仍然能够创建对象。

$ 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”标志也应该受到限制。

请注意,首先您需要查看先决条件才能使用 RBAC in GKE

另请注意,IAM 角色适用于整个 Google 云项目和该项目中的所有集群,并且 RBAC 在命名空间级别启用细粒度授权。因此,对于 GKE,这些授权方法并行工作。

更多参考,请看这篇文档RBAC in GKE

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

有一个文件位于:

~/.config/gcloud/configurations/config_default

其中 [container] 部分下有一个选项: use_application_default_credentials

设为真

给你,你学到了一些新东西..享受吧。希望你能尝试帮助而不是投票。