Kubernetes RBAC:如何只允许exec部署创建的特定Pod

时间:2018-10-23 07:08:47

标签: kubernetes rbac

我有一个包含30个服务的应用程序名称空间。大多数是无状态部署,与某些StatefulSet等混合在一起。是相当标准的东西。

我需要授予一个特殊用户一个只能在特定Pod中执行的角色。目前,RBAC将exec权限授予名称空间中的所有pod,但是我需要将其收紧。

问题是Pod是由部署configurator创建的,因此Pod名称是“生成的” configurator-xxxxx-yyyyyy。由于您不能使用glob(即configurator-*),并且Role无法直接为部署授予exec。

到目前为止,我已经考虑过:

  • 将部署转换为StatefulSet或普通的Pod,因此Pod具有已知的非生成名称,并且不需要glob
  • 将Deployment移到单独的命名空间中,因此全局执行权限不成问题

这两种方法都可以,但是都不是最优的。有没有办法为此编写适当的角色?

1 个答案:

答案 0 :(得分:2)

到目前为止,

RBAC不允许使用除名称空间和资源名称之外的其他属性来过滤资源。讨论开放here

因此,名称空间是授权访问Pod的最小组件。服务必须在命名空间中分开,以考虑哪些用户可能需要访问它们。

目前的最佳解决方案是将该部署移动到另一个名称空间,因为它需要与原始名称空间中的其他部署不同的访问规则。