Kubernetes RBAC:如何只允许exec访问由Deployment创建的特定Pod



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

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

问题是 Pod 是由部署configurator创建的,因此 Pod 名称是"生成"的,configurator-xxxxx-yyyyyy。由于您不能使用 glob(即。configurator-*(,并且角色不能直接为部署授予执行。

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

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

这两种方法都有效,但都不是最佳的。有没有办法为此编写合适的角色?

RBAC,正如它现在的意思,不允许按命名空间和资源名称以外的其他属性过滤资源。讨论在这里开放。

因此,命名空间是授权访问 Pod 的最小部分。服务必须在命名空间中分离,考虑用户可能需要访问它们的内容。

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

最新更新