【问题标题】:K8s RBAC serviceaccount with extended permissions具有扩展权限的 K8s RBAC 服务帐户
【发布时间】:2020-04-11 07:02:57
【问题描述】:

我正在寻找让服务帐户(不是集群管理员)能够创建新命名空间并自动获得其管理员权限的选项(而所有系统命名空间都不能由此服务帐户编辑)。

目前我绑定到 clusterrole 的 serviceaccount 包含

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

但是它不能在它创建的命名空间上做任何事情。 想得到任何建议,建议。

【问题讨论】:

    标签: kubernetes rbac


    【解决方案1】:

    很遗憾,仅使用RBAC objects 是不可能的。

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

    但是有一个可能的解决方法:

    • 您在集群级别使用具有 create-Roles+RoleBindings-permissions 的服务帐户添加一个带有 Kubernetes python/go/java 客户端的 pod

    • 然后您运行一个简单的代码来监控新命名空间的 api-server 并为新命名空间中的命名空间管理员创建 RoleBinding

    • 这个RoleBinding 指的是集群管理员角色,它赋予用户在特定命名空间中的所有权限

    • 为了区分新命名空间和现有命名空间,脚本还可以在命名空间上放置标签:namespace-admin=true 或类似名称。

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

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

    如果有帮助,请告诉我。

    【讨论】:

    • 谢谢,RBAC Manager 似乎正在做我想要的。
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2019-07-04
    • 2019-05-23
    相关资源
    最近更新 更多