我们在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来扩展它。
我还想知道是否有办法从某些用户那里完全隐藏生产群集。 (我们的集群在同一个项目中)
答案 0 :(得分:2)
如果您处于初始阶段,或者您可以设法移动测试群集,我建议您在两个不同的项目中设置群集。
这将创建两个完全不同的环境,您将来不会遇到任何问题,并且您自动禁止访问您的一半资源,并且您不必担心某些内容配置错误以及您的生产仍然可以到达。当您需要授予某些内容时,只需将该人员添加到具有相应角色的项目
即可因为您可能成功使用IAM和RBAC阻止群集访问,但是您需要处理保护对计算引擎ecc的网络组件,LoadBalacers,防火墙的访问权限
也许在开始时它是很多工作,但从长远来看它会为你节省很多问题。
这是关于如何设置两个正在投入生产的群集的官方Google云端文档的link。