如果我使用Python 3 Alpine这样的基本映像构建容器,并且遵循docker documentation中指示的强化功能,那么注入并执行Python脚本是否安全?
我的意思是,如果用户会写一些危险的东西(如使用Python函数的sudo rm -R
),那么只有容器会受到这些问题的影响,对吧?
这是一个好习惯吗?我需要执行一些对系统,模块等具有有限访问权限的小代码段。
答案 0 :(得分:2)
在这里,我不会将Docker视为安全性的“银弹”。在将代码释放到您的系统上之前,甚至在Docker下,您都至少要知道正在运行的代码“值得信赖”。
请记住,您需要具有root特权才能完全运行docker
,否则您可以轻松获得它们(docker run -v /:/host -u root ...
将使您自由编辑主机文件系统)。如果您的应用程序确实在处理不受信任的代码,请考虑是否要让特权进程能够处理它。
除此之外,Docker容器共享主机的内核和各种物理资源。如果存在内核特权提升错误,则容器中运行的某些东西可能会利用它。如果您不受信任的代码通过出站TCP调用来随机整理网络中不需要的数据,则默认情况下不受限制。如果只是“仅”使用您的CPU周期来开采比特币,那么您将无法控制。
如果所有这些听起来对您来说都是可以接受的风险,那么在Docker下运行受信任的代码肯定比不做更好:您确实获得了一些保护,可以防止更改主机上的文件和诸如网络配置之类的主机级别设置,特别是如果您认为所运行的代码不是恶意软件。