【发布时间】:2018-05-21 10:41:32
【问题描述】:
我们在 Kubernetes 中运行 docker 容器。 Docker 允许在主机系统级别以不同用户运行容器。
我正在查看几个 Helm 图表,例如,Prometheus 似乎以“nobody”身份运行,而Grafana 正在使用 Dockerfile 中的 useradd 创建其用户(硬编码 id)。
有什么方法可以标准化 Kubernetes 中的行为,可能确保只有容器需要系统上的用户存在?并且一旦容器被安排在别处就被移除。
我也担心我们会得到 userId 冲突,导致意外的行为,这将很难测试......
【问题讨论】:
-
如果我理解正确,您需要类似 rbac 的东西来限制用户。这在 kubernetes 中得到支持 kubernetes.io/docs/admin/authorization/rbac
-
RBAC afaik 仅解决了对 K8s 资源的限制(它的 API、Pod、谁可以进行部署/更改等)。我要解决的是操作系统级别的权限,因为容器和主机共享相同的内核、用户和组。如果一个容器被入侵,攻击者可以将攻击升级到给定主机上的其他容器。
-
你认为它与 Docker 容器化的关系比与 Kubernetes 更相关吗?这篇文章可能会有所帮助:medium.com/@mccode/…
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。
-
实际上将基础架构中的用户作为代码处理是一个开发问题。我不是在问用户如何在 *nix 系统中工作,我有一些想法。我在问,应用程序级别的合理自动化是什么。它是 IaC 中的一些构造,是额外的 init pod 吗? grafana 方法是正确的吗?一旦我将代码部署到生产中,这将造成最少的麻烦。 sw 开发的世界并非非黑即白。并且一旦包含系统用户,就不一定是服务器管理问题...
标签: linux docker kubernetes