RBAC ClusterRole 权限仅限于命名空间并创建集群角色

时间:2021-06-30 14:15:12

标签: kubernetes rbac

他们是一种使用 ClusterRolebinding 创建 ClusterRole 的方法,它可以提供创建 ClusterRoles/ClusterRolebindings 的权限,并以某种方式添加一个条件,它可以限制在一个命名空间中,而不能在其他命名空间中创建资源?

由于 ClusterRole 和 ClusterRolebinding 没有命名空间,我正在寻找一种专门用于提供创建 ClusterRole 和 ClusterRolebinding 权限的方法,然后限制特定于命名空间的其他资源创建。

RoleBinding 无法实现这一点,因为它只能限制到命名空间,而不能提供创建非命名空间资源的权限。

1 个答案:

答案 0 :(得分:1)

据我所知,这就是您想要实现的目标:

  1. 您拥有集群管理员权限
  2. 您想使用此集群管理员访问权限来创建命名空间管理员
  3. 您希望这些命名空间管理员能够向其他主体(例如用户、群组或服务帐户)授予对该命名空间中资源的访问权限。

如果是,那么您可以尝试一下。

默认情况下,您的 Kubernetes 集群带有一组默认的 ClusterRole 对象。特别是,您将关注两个默认集群角色:

  1. 编辑
  2. 管理员

通过使用 editRoleBindingClusterRoleBinding 集群角色绑定到主题,授予主题访问权限以编辑最常见的资源,如 pod、部署、秘密等。

然而,admin 集群角色包含 edit 集群角色所包含的访问权限以及对其他命名空间资源的访问权限,特别是对管理命名空间有用的两个资源:

  1. 角色
  2. 角色绑定

如果您使用 admin 将此 RoleBinding 集群角色绑定到特定命名空间内的主题,则您有效地赋予该主题管理命名空间的能力,包括在该命名空间内创建另一个 RoleBinding命名空间,让其他主体可以访问该命名空间。

举例说明:

You --(RoleBinding to admin ClusterRole)--> NamespaceAdmin
NamespaceAdmin --(RoleBinding to some Role or ClusterRole)--> OtherSubjects

由于 RoleBinding 仅限于特定命名空间,因此命名空间管理员只能在该命名空间内拥有 admin 访问权限,而不能在其他命名空间或集群级别造成严重破坏。