具有扩展权限的K8s RBAC服务帐户

时间:2019-12-18 17:01:52

标签: kubernetes rbac

我正在寻找具有serviceaccount(不是集群管理员)的选项,以便能够创建新的名称空间并自动获得对它的管理员权限(而所有系统名称空间均不能通过该serviceaccount进行编辑)。

当前我绑定到clusterrole的服务帐户包含

- apiGroups:
  - ""
  resources:
  - namespaces
  verbs:
  - create

但是,它不能对它创建的名称空间执行任何操作。 希望获得任何建议。

1 个答案:

答案 0 :(得分:0)

不幸的是,仅使用RBAC objects是不可能的。

  

在RBAC API中,一个角色包含代表一组规则的规则   权限。许可纯粹是相加的(没有“拒绝”   规则)。

但是有可能的解决方法:

  • 您可以在群集级别上使用带有create-Roles + RoleBindings-permissions的服务帐户,在其中添加带有Kubernetes python / go / java客户端的Pod

  • 然后您运行一个简单的代码,监视api-server中的新名称空间,并在新名称空间中为{-{1}}创建名称空间-admin

  • RoleBinding是指cluster-admin角色,它为用户提供了特定命名空间中的所有权限

  • 要将新名称空间与现有名称空间区分开,脚本还可以在名称空间上放置标签:RoleBinding或类似名称。

此外,您可以考虑使用RBAC管理器。 Dynamic Namespaces and Labels更具体。

  

RBAC定义现在可以包含namespaceSelectors代替   指定角色绑定配置时的名称空间属性。这个   在使用动态预配置时可能会非常有用   命名空间。

请让我知道是否有帮助。