我读过很多关于这方面的文章,可以追溯到2013年,但我无法确定的是,是否已经设计了一个可靠的方法来审核容器内的流程。这个问题主要适用于Linux,因为我不太熟悉其他平台上的容器化。
问题本质上是:如何跟踪操作,如Linux系统对创建容器的用户的调用?
对于Docker,这些信息会丢失,因为容器是由守护进程启动的,而且Docker没有用于识别用户的身份验证机制。
Podman采用创建容器作为进程分叉的方法,而不是使用客户机/守护进程来保存loginuid,但是跨集群如何处理呢?
Kubernetes具有审计功能,但我无法从文档中确定这是否适用于在容器中运行的进程,还是只适用于K8s API调用。
这样做似乎是可能的:
1-要求用户在启动容器时进行身份验证。
2-在每个节点上启动容器时发送用户名。
3-在进程属性中保留用户ID。
要使2正常工作,每个主机都必须知道用户,而不仅仅是容器守护进程。
3的一个简单例子是容器中的用户具有相同的UID,而授权阶段可以强制执行这一点。但这是相当有限的。
是否有人成功地解决了这一问题,还是仍然是一个悬而未决的问题?要么是一个全局解决方案,要么是一个特定的集装箱化技术/调度器。
下面是一些关于在内核中实现这一点的建议的链接:
发布于 2019-02-24 23:30:01
我认为在docker上有一种方法可以做到这一点:
从Docker 1.10开始,码头守护进程直接支持用户名称空间。此特性允许将容器中的根用户映射到容器外部的非uid-0用户,这有助于减少容器泄漏的风险。此工具可用,但默认情况下未启用。
您可以将docker容器中的根用户映射到主机(uid)中的特定用户。
https://devops.stackexchange.com/questions/6445
复制相似问题