限制访问Google云平台上的kubernetes群集

时间:2018-01-13 20:50:49

标签: kubernetes google-cloud-platform rbac google-kubernetes-engine kubernetes-security

我们在Google Cloud Platform上创建了2个不同的Kubernetes集群,一个用于开发,另一个用于生产。 我们的团队成员具有“编辑”角色(因此他们可以创建,更新删除和列表窗格)

我们希望使用Kubernetes提供的RBAC授权来限制对生产群集的访问。我创建了ClusterRoleClusterBindingRole,如下所示:

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来扩展它。

我还想知道是否有办法从某些用户那里完全隐藏生产群集。 (我们的集群在同一个项目中)

1 个答案:

答案 0 :(得分:2)

如果您处于初始阶段,或者您可以设法移动测试群集,我建议您在两个不同的项目中设置群集。

这将创建两个完全不同的环境,您将来不会遇到任何问题,并且您自动禁止访问您的一半资源,并且您不必担心某些内容配置错误以及您的生产仍然可以到达。当您需要授予某些内容时,只需将该人员添加到具有相应角色的项目

即可

因为您可能成功使用IAM和RBAC阻止群集访问,但是您需要处理保护对计算引擎ecc的网络组件,LoadBalacers,防火墙的访问权限

也许在开始时它是很多工作,但从长远来看它会为你节省很多问题。

这是关于如何设置两个正在投入生产的群集的官方Google云端文档的link