我们在 Google Cloud Platform 上创建了 2 个不同的 Kubernetes 集群,一个用于开发,另一个用于生产。 我们的团队成员具有"编辑者"角色(因此他们可以创建、更新删除和列出窗格)
我们希望通过使用 Kubernetes 提供的 RBAC 授权来限制对生产集群的访问。我创建了一个ClusterRole
和一个ClusterBindingRole
,如下所示:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: prod-all
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: access-prod-all
subjects:
- kind: User
name: xxx@xxx.com
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: prod-all
apiGroup: rbac.authorization.k8s.io
但用户已经具有"编辑"角色(对所有集群的完全访问权限)。所以我不知道我们是否应该分配一个简单的"查看者"角色,而不是使用 kubernetes RBAC 扩展它。
我还想知道是否有办法对某些用户完全隐藏生产集群。(我们的集群在同一个项目中)
如果您处于初始阶段,或者您可以设法移动测试集群,我建议您在两个不同的项目中设置集群。
这将创建两个完全不同的环境,您将来不会遇到任何问题,并且您会自动禁止访问一半的资源,并且您不必担心某些配置错误并且您的生产仍然可以访问。当您需要授予某些内容时,您只需将该人员添加到具有相应角色的项目
因为也许您成功地阻止了使用 IAM 和 RBAC 的集群访问,但随后您需要处理对网络组件、负载均衡程序、防火墙和计算引擎 ecc 的访问
也许一开始需要做很多工作,但从长远来看,它会为您节省很多问题。
这是官方 Google Cloud 文档的链接,介绍如何设置两个集群,其中一个集群正在生产中。