我一直在阅读有关通过挂载docker套接字在docker容器中构建docker镜像的安全问题。
在我的例子中,我通过API docker-py访问docker。
现在我想知道,在普通的ubuntu主机上(而不是在docker容器中)使用docker-py构建镜像是否存在安全问题,因为它也在docker套接字上通信?
我也不明白为什么从命令行运行docker和这个sdk之间会有安全差异,因为它们都是通过套接字的?
任何帮助都是非常感谢的。
发布于 2021-08-18 17:40:42
没有区别,如果您有访问套接字的权限,您可以发送一个请求来运行一个容器,其访问权限与dockerd引擎的访问权限相匹配。该引擎通常以root用户身份直接在主机上运行,因此您可以使用API直接在主机上获得root用户访问权限。
锁定这一点的方法包括在容器内运行dockerd守护进程,但是该容器通常具有特权,而该特权本身并不安全,因此您可以在另一个容器中获得root权限,并使用特权访问在主机上获得root权限。
我所见过的最好的选择包括运行无根的引擎,并且从容器中转义只能让您访问作为守护进程运行的用户。然而,实现rootless有它的缺点,包括需要预先配置主机来支持它,并且网络和文件系统配置是在用户级别完成的,这具有功能和性能影响。第二个好的选择是在没有容器运行时的情况下运行构建,但是这也有它自己的缺点,比如没有Dockerfile RUN
语法的1:1替换,所以您的映像主要是通过在主机上运行的COPY
步骤加上运行在任何容器之外的命令来构建的。
https://stackoverflow.com/questions/68836907
复制相似问题