具有扩展权限的 K8s RBAC 服务帐户
K8s RBAC serviceaccount with extended permissions
我正在寻找让 serviceaccount(不是集群管理员)能够创建新命名空间并自动获得管理员权限的选项(同时所有系统命名空间都不能被这个 serviceaccount 编辑)。
目前我绑定到 clusterrole 的 serviceaccount 包含
- apiGroups:
- ""
resources:
- namespaces
verbs:
- create
但是它不能对它创建的命名空间做任何事情。
想得到任何建议,建议。
不幸的是,仅使用 RBAC objects 是不可能的。
In the RBAC API, a role contains rules that represent a set of
permissions. Permissions are purely additive (there are no “deny”
rules).
但是有一个可能的解决方法:
您在集群级别使用具有 create-Roles+RoleBindings-permissions 的服务帐户在内部添加一个带有 Kubernetes python/go/java 客户端的 pod
然后你 运行 一个简单的代码来监视 api-server 的新命名空间并为新命名空间中的 namespace-admin 创建 RoleBinding
这个RoleBinding
指的是cluster-admin角色,赋予用户在特定命名空间的所有权限
为了区分新的命名空间和现有的命名空间,脚本还可以在命名空间上放置一个标签:namespace-admin=true
或类似的。
另外,您可以考虑使用 RBAC 管理器。 Dynamic Namespaces and Labels 更具体。
RBAC Definitions can now include namespaceSelectors in place of
namespace attributes when specifying Role Binding configuration. This
can be incredibly helpful when working with dynamically provisioned
namespaces.
如果有帮助,请告诉我。
我正在寻找让 serviceaccount(不是集群管理员)能够创建新命名空间并自动获得管理员权限的选项(同时所有系统命名空间都不能被这个 serviceaccount 编辑)。
目前我绑定到 clusterrole 的 serviceaccount 包含
- apiGroups:
- ""
resources:
- namespaces
verbs:
- create
但是它不能对它创建的命名空间做任何事情。 想得到任何建议,建议。
不幸的是,仅使用 RBAC objects 是不可能的。
In the RBAC API, a role contains rules that represent a set of permissions. Permissions are purely additive (there are no “deny” rules).
但是有一个可能的解决方法:
您在集群级别使用具有 create-Roles+RoleBindings-permissions 的服务帐户在内部添加一个带有 Kubernetes python/go/java 客户端的 pod
然后你 运行 一个简单的代码来监视 api-server 的新命名空间并为新命名空间中的 namespace-admin 创建
RoleBinding
这个
RoleBinding
指的是cluster-admin角色,赋予用户在特定命名空间的所有权限为了区分新的命名空间和现有的命名空间,脚本还可以在命名空间上放置一个标签:
namespace-admin=true
或类似的。
另外,您可以考虑使用 RBAC 管理器。 Dynamic Namespaces and Labels 更具体。
RBAC Definitions can now include namespaceSelectors in place of namespace attributes when specifying Role Binding configuration. This can be incredibly helpful when working with dynamically provisioned namespaces.
如果有帮助,请告诉我。