Docker映像安全:6个必须知道的提示
Docker映像安全:6个必须知道的提示
随着Docker越来越受欢迎,所以新闻码头工人的安全问题。例如,今年早些时候,Doki后门被用来利用配置错误的Docker API端口,安装加密程序或其他恶意软件。最初被描述为无法检测目前VirusTotal上只有36/61扫描器正常将Doki标记为恶意软件.Doki只是众多潜在威胁中的一个例子。去年,cve - 2019 - 5736容器安全漏洞,使攻击者能够获得主机的根访问权限。
当然,这些消息并不意味着Docker不适合生产使用。相反,它为我们提供了一些例子,说明为什么认真对待Docker安全性很重要。因为码头工人的图片是那些刚刚熟悉Docker的人的起点,它们也是开始学习Docker安全的好地方。在这里,我们将回顾6个Docker映像安全提示,以帮助您保持项目的安全。
1 .应用更新和补丁
这一点很简单,但我们不能夸大它的重要性:你必须保持Docker映像、Docker引擎和主机的更新。总会出现新的漏洞和补丁来解决这些漏洞。养成定期使用它们的习惯。如果在关键的安全补丁发布后不应用它们,那么这里的其他提示很快就会成为毫无意义的要点。
#2:只使用经过验证的Docker映像
的主要好处之一Docker Hub - Docker的官方Docker注册中心-是可供下载的大量可用图像。来自世界各地的个人和组织将图像上传到您可以使用的Docker Hub。确实,Docker最近的一些改变限制了免费层的使用,从而减慢了开发的速度。然而,有无成本解决方案——比如使用JFrog Artifactory的免费层作为缓存代理——可以让您获得Docker Hub的优点,而无需过度限制速率。不管您使用什么方法提取图像,如何知道哪些图像可以信任?
这就是概念Docker内容信托(DCT)出现的原因。使用DCT,图像发布者对图像进行数字签名,以便您可以验证图像来自可信的来源。在高层次上,这些数字签名可与网站的SSL证书相媲美。就像有SSL证书的网站一样,经过验证的图片并不一定安全。不良行为者可以在图像上签名或签发SSL证书。数字签名只是让您知道内容来自您所期望的源。这就是为什么只从你信任的来源提取图像很重要。
默认情况下,Docker内容信任是禁用的。您可以使用命令export来启用它DOCKER_CONTENT_TRUST = 1。
johnnyo@LAPTOP-5V55HON5: ~出口DOCKER_CONTENT_TRUST = 1美元
设置了这个环境变量后,让我们看看如果我们试图拉出一个无符号图像会发生什么:
johnnyo@LAPTOP-5V55HON5:~$ docker pull riyaz/unsigned-img
使用默认标签:latest
错误:docker远程信任数据不存在。docker. docker.io没有docker.io/riyaz/unsigned-img的信任数据
注意:如果你“sudo”你的Docker pull命令,一定要使用-E选项,以确保你设置的环境变量被使用。sudo -E docker pull your_image_name。
#3:尽可能使用最小的Docker映像
挪威研究人员在2020年6月的一项“2500个Docker Hub图像的漏洞分析”研究中证明,Docker Hub上的图像存在大量漏洞。甚至验证图片被发现至少有一个高评级漏洞超过50%的时间。
在某种程度上,这可以归因于许多容器的膨胀超过了它们提供核心功能所需的容量。虽然把用户可能需要的所有特征都塞进一张图片中很好,但这样做会大大增加攻击面。
使用最小的映像-像Ubuntu官方映像-并且只安装你需要的在上面可以减少很大的风险。
4 .遵循最小特权原则
最小特权原则是信息安全的黄金法则之一。想法很简单:只给用户和流程完成所需的特定任务所需的特权。如何将此应用到Docker安全性中呢?下面是一些最常见的方法:
使用-命令运行映像-security-opt = no-new-privileges选项防止特权升级
避免了- - - - - -享有特权的标志。-享有特权的Flag授予正在运行的容器对底层主机资源的更多访问权,这意味着如果一个特权容器受到威胁,那么整个系统很快就会成为下一个攻击对象。2022世界杯阿根廷预选赛赛程
使用- - - - - -cap-drop和- - - - - -cap-add微调的Linux的能力授予容器。理想情况下,您应该使用t他-cap-drop =选项在默认情况下删除所有功能,然后仅显式添加所需的功能-cap-add。
按照Docker的建议使用用户名称空间隔离容器.将容器应用程序配置为作为无特权用户运行。如果应用程序必须作为根用户运行,则将用户映射到主机上的无特权用户。
以非根用户的身份运行Docker容器。最简单的方法之一是将非根用户添加到容器的Dockerfile中。
#5:扫描Docker映像的漏洞
漏洞扫描是信息安全的重要组成部分,Docker安全也不例外。当然,扫描和验证您的生产可交付成果的安全态势是重要的。然而,为了确保安全被嵌入到CI/CD管道中,采用DevSecOps的“左移”方法是至关重要的。
你怎么能这么做?通过扫描所有容器、软件工件和依赖项来查找现有的漏洞。我们自己的JFrog Xray在构建时就考虑到了这种“左移”方法。Xray持续审计所有工件,包括码头工人的图片,针对已知的漏洞和许可证问题。此外,它是唯一的软件组合分析(SCA)解决方案能够与Artifactory和我们的本地集成码头工人注册表.通过使用Xray审计和分析整个CI/CD管道,您可以更快地捕获漏洞,减少将脆弱的Docker映像部署到生产环境的可能性。
#6:加固Docker主机
纵深防御是信息安全的另一个黄金法则。您可以将此概念应用到Docker安全中,确保您的Docker主机得到了加固。除了使用SSH密钥、强密码和防火墙之外,帮助保护系统调用的解决方案在这里也很重要。像Selinux、AppArmor和Seccomp这样的Linux模块可以在系统上的给定容器被破坏的情况下添加一个强大的防御层。
最后的想法:Docker安全性的下一步
我们在这里介绍的6个技巧是一个很好的基础,可以帮助你开始安全使用Docker。在构建下一个项目时,请记住这些提示,这样可以改善您的整体安全状况。在Docker映像级别将它们付诸实践后,您可以通过使用Kubernetes扩展它们来更深入地自动化DevSecOps工作到时候我们也会帮你搞定的.
