我在 google kubernetes 引擎中有两个属于同一项目的集群。我怎样才能允许我的一些合作伙伴访问一个集群,并拒绝他们访问另一个集群?谢谢!
答案1
如果您希望仅向用户授予对 GKE 项目中的一个集群的访问权限,则必须使用云端 IAM和RBAC。
正如 GKE IAM 中提到的:
Kubernetes 的原生基于角色的访问控制 (RBAC) 系统也管理对集群的访问。RBAC 在集群和命名空间级别控制访问,而 Cloud IAM 在项目级别工作。
Cloud IAM 和 RBAC 可以协同工作,并且实体必须在任一级别拥有足够的权限才能使用集群中的资源。
关于 GKE 中的访问控制的更多详细信息可以在这里找到这里。
Kubernetes RBAC 内置于 Kubernetes 中,可向 Kubernetes 集群内的对象授予细粒度的权限。权限以 ClusterRole 或 Role 对象的形式存在于集群内。RoleBinding 对象向 Kubernetes 用户、Google Cloud 用户、Google Cloud 服务帐号或 Google 群组(测试版)授予角色。
Cloud IAM 管理 Google Cloud 资源,包括集群以及集群内的对象类型。权限分配给 Google Cloud、G Suite 或 Cloud Identity 中的 Cloud IAM 成员。
实现此目的的第一步是授予新用户至少具有查看者角色的项目访问权限,如上所述这里(您已经这样做了)。
虽然在几乎所有情况下都可以使用 Kubernetes RBAC 代替 Cloud IAM,但 GKE 用户至少需要在包含集群的项目中拥有 container.clusters.get Cloud IAM 权限。此权限包含在 container.clusterViewer 角色以及其他更高权限的角色中。
下一步是访问您要向其他用户授予权限的集群。如果您只想授予对一个命名空间的访问权限,则应创建Role
,但是如果您想授予对所有命名空间的访问权限,则必须创建ClusterRole
,如上所述这里。
您还需要根据您的需要创建RoleBidning
/ 。ClusterRoleBinding
概括:
授予新用户对 GKE 项目 (Cloud IAM) 的访问权限。
创建
Role/ClusterRole
(资源、动词)并RoleBinding/ClusterRoleBinding
取决于您的需要。