为什么在Docker容器中以root身份运行应用程序是不安全的?

时间:2018-03-09 11:57:00

标签: linux security docker

有很多消息来源告诉我们在Docker容器中运行根目录下的应用程序是不好的,但是他们总是引用这个链接:https://blog.docker.com/2014/06/docker-container-breakout-proof-of-concept-exploit/很久以前修复了问题,因为较新的Docker版本将内核功能列入白名单。

因此:

  • 是否有任何其他Docker漏洞在容器root用户下工作但在容器非root用户下无效?
  • 是否有任何Linux内核漏洞在容器root用户下运行但在容器非root用户下无效?

1 个答案:

答案 0 :(得分:2)

所以,这是一个问题,但我会尽力为您提供一个信息丰富且深入的答案,以帮助您了解以root身份运行应用程序所涉及的问题。

首先,这不是100%明确禁止。您可以以root身份运行应用程序,在某些情况下您可能需要。但在软件方面,我们有一些被称为Principle of Least Privilege的东西,在某些领域也被称为最小权威原则。这是计算机安全中的一个重要概念,它根据用户的工作需要在计算机上提供最低限度的权限。每个系统组件或过程应具有履行其职责所必需的最少权限。这有助于通过消除可能导致网络漏洞和计算机危害的不必要特权​​来减少计算机的“攻击面”。您可以将此原则应用于您所工作的计算机,通常在没有管理权限的情况下运行。

以root身份不必要地运行应用程序会赋予程序执行不需要执行的操作的权限 - 例如执行系统功能和管理各种操作系统的配置设置。如果您的应用程序是一个充满烹饪食谱的基本网站,则无需访问系统配置文件。

应用程序旨在与非管理安全性(或仅仅是凡人)一起运行,因此您必须提升其权限才能修改底层系统。这就是一般安全模型多年来的工作方式。

它还使应用程序更易于部署,并增加了一层可伸缩性。通常,应用程序所需的权限越少,在更大的环境中部署就越容易。安装设备驱动程序或需要提升安全权限的应用程序通常会在部署中涉及其他步骤。例如,在Windows上,没有设备驱动程序的解决方案可以直接运行而无需安装,而设备驱动程序必须使用Windows安装程序服务单独安装,以便为驱动程序授予提升权限。

如果这不能解答您的问题我很抱歉,但我已尽力解释您为什么不应该以root身份运行应用程序。我希望这有帮助!