Tag: 安全

对于Docker容器,SELinux比AppArmor更安全吗?

我的理解是,AppArmor和SELinux都实现了一个强制访问控制(MAC)系统,该系统在容器之间提供了一个额外的安全隔离层,并且Docker带有两个默认策略。 但是,SELinux专门可以使用多类别安全性(MCS)来强制系统上的每个单独的容器只能访问为特定容器标记的主机上的文件(更多详细信息: 文章 , 演示文稿 )。 也就是说,如果两个Docker容器A和B在单个主机上分离,那么Doc​​ker附带的默认SELinux安全策略实际上会强制在发生中断时,容器A中的Linux进程将无法访问属于容器B的文件。不仅如此,文件可以从主机装入容器的唯一方式是如果卷后缀为“:Z”,因此告诉Docker确保将相关的MCS标签添加到该path上的主机上的文件,以便容器可以访问它们。 相反,我无法在AppArmor中find任何类似机制的引用。 相反,Docker的默认AppArmorconfiguration文件似乎主要是关于拒绝访问特定的文件系统path和主机资源,而不是拒绝访问容器。 我的问题是,如果我使用Docker的默认AppArmorconfiguration文件,我将获得与使用上述SELinux相同的有效保护吗? AppArmor会阻止从一个容器访问另一个容器的文件吗? 如果是的话,它是如何实现的?

限制访问挂载的/var/run/docker.sock

我目前正在使用docker-compose和Docker开发一个webapp。 目前,在一个容器中有一个前端Nginx反向代理服务器,在另一个容器中有一个Rails应用程序。 有时,Rails应用程序需要对Nginxconfiguration文件进行更改。 我已经通过在两个容器中将configuration目录挂载为共享卷来实现这一点。 但是,要强制Nginx在Rails应用修改后重新载入configuration文件,需要发送一个HUP信号给Nginx进程。 目前,我通过将主机的/var/run/docker.sock挂载到Rails应用程序容器中并使用gem来请求主机Docker将信号发送到正确的容器来实现此目的。 这工作正常,但现在我担心安全 。 如果Rails容器受到攻击,攻击者将拥有对主机的root权限。 我想创build另一个容器谁是唯一的工作是中介访问套接字和暴露有限的API到主要的Rails应用程序。 但是,我们遇到了同样的问题,当经纪人也受到威胁时会发生什么。 不仅如此,但肯定有一个更简单的方法? 我search了一些解决scheme,以限制哪些API可以在/var/run/docker.sock上调用,但我无法find任何解决scheme。 有没有人有任何想法? 也许还有一些其他方法可以重新加载Nginxconfiguration文件,而无需通过Docker API?

作为未知用户标识运行的Docker镜像可以删除根文件

它是否正确? 随机用户ID可以删除root拥有的文件? docker run -ti -u 1001 debian:stretch I have no name!@2af53be18a40:/$ rm -f /etc/passwd I have no name!@2af53be18a40:/$ ls /etc/passwd ls: cannot access '/etc/passwd': No such file or directory 我认为这曾经工作(即拒绝许可),虽然我没有尝试过去的确切顺序的命令。 以上结果来自Docker version 1.12.2, build bb80604在Stretch上运行Docker version 1.12.2, build bb80604 。

在Docker中采用内容摘要有什么好处?

随着Docker 1.10中引入CAS(Content Addressable Storage) 1.1为什么以及如何改进数据检索 1.2安全性在什么情况下得到改善 (据说数据及其副本的物理位置对用户是隐藏的。 有人可以请详细解释这一点。 CAS(内容可寻址存储)是否也使用映射表将散列索引映射到存储数据的物理位置? 我不明白如何提高安全性) 1.3使用内容摘要的优点是什么? (因为如果内容相同,则返回相同的散列值,这样可以防止在共享全局存储库ID的Docker Hub中下载重复图层,但不确定其他优点。 我不明白以下说法:“CAS使用基于内容的数据search的概念,而不是根据目录存储和search数据”是否有任何其他方式来search数据,而不是使用目录? 据说“使用内置的方法可以避免Docker Image ID碰撞”。 这是什么内置的方法详细? (这是常见的开放寻址或closures寻址?)

从头开始非特权执行

我从头开始在图像上构build/部署go / golang微服务。 是否有可能在这种方式构build的图像上指定非特权执行 – 图像上只有两个文件 – 可执行文件和根证书文件 – 因此在容器中似乎没有任何特权的概念。 我也使用只读容器和–selinux-enabled = true –icc = false –iptables = true,但是如果我知道可执行文件是作为“普通”非特权用户运行的话,会感觉更加温暖和模糊。

拦截Docker容器https请求stream量与mitmproxy

如何configurationdocker与mitmproxy ? 我已经find了这篇文章 ,但作为docker和mitmproxy的初学者很难理解它。 我知道mitmporxy doc。 包含教程, 透明地代理虚拟机 ,但如何与docker容器做到这一点? 我find的链接,但不知道他们是否对我有帮助: link1 , link2 我已经在我的机器上安装了mitmproxy(在后面我提到mitmproxy在docker容器中运行)。 (背景:我想在Magento devbox中使用mitmproxy进行集成testing,这是docker容器。我想运行mitmproxy stream.py示例来传输docker容器响应。)对不起,我知道这个问题相当广泛,但我不知道其他地方,我可以得到一些帮助。

如何安全扫描docker图像?

我知道像Clair,Open SCAP等工具,似乎基于安装的软件库进行安全扫描容器映像,并将它们与CVE数据库进行比较。 一个开发人员用户显然可以撤销图像中以前图层的良好工作,无论是恶意还是遗漏,从而暴露一个容器(例如,添加的用户帐户,端口打开等)。 有没有一种方法(除了图像构build文件的明显的手动代码审查),将允许自动扫描图像,可以检测到这样的事情? 我对如何在CI / CD阶段扫描容器图像感兴趣。 我想在非启用Internet的环境中执行此操作。 不包括基于云的解决scheme。

入口点周围的Docker安全问题

我正在尝试使用Docker并理解使用卷的概念。 我有一个将文件写入特定卷的tomcat应用程序。 我写了一个入口ENTRYPOINT为“ ENTRYPOINT ”的ENTRYPOINT 我有入口点脚本的问题是.. 在“ dosomething.sh ”中,我可能有一个恶意代码来删除卷上的所有文件! 有没有办法来防止它,特别是因为,我打算与我的开发团队共享这个dockerfile和脚本,我必须把生产angular色的照顾看起来吓人! 一个想法是,对于所有有容量的容器,都不要有“ ENTRYPOINT ”。 有经验的人,请告诉你如何处理这个…

集装箱作为服务的访问控制

如果我有一个容器作为服务平台,为不同租户的用户提供容器。 一个主机可以托pipe不同租户的容器。 我怎样才能允许通过HTTP访问,同时确保用户只能访问他的租户的容器? Kubernetes解决了吗? 有更轻量级的解决scheme吗?

如何让Docker容器中的非root用户访问主机上挂载的卷

我正在Docker容器中以非root用户身份运行我的应用程序。 我做了这个,因为这是最好的做法之一。 但是,在运行容器时,我将一个主机卷挂载到它-v /some/folder:/some/folder 。 我这样做是因为我的应用程序在泊坞窗容器内运行需要写入文件到挂载的主机文件夹。 但是由于我以非root用户的身份运行我的应用程序,因此它没有写入该文件夹的权限 题 是否有可能让托pipe容器中的非root用户访问托pipe的卷? 如果没有,是我唯一的select,以root用户身份在docker容器中运行进程?