如何使用Docker安全扫描
自2013年推出以来,Docker已经发展成为一种非常流行的部署应用程序的解决方案。通过允许在称为容器的孤立环境中运行的应用程序,同时避免了与虚拟机相关的大量资源开销,Docker提供了可移植性和安全性方面的优势,而不会显著降低系统效率。
但是Docker在容器之间提供的隔离并不能防止所有类型的安全风险。相反,内部可能潜藏着各种各样的漏洞码头工人的图片,它们是Docker容器所基于的“蓝图”。主要的例子包括:
- 攻击者与合法应用程序一起注入Docker容器的恶意软件。注入的恶意软件将与容器的其余部分一起执行。
- 网络配置风险,例如使用Dockerfile中的EXPOSE指令打开不安全的端口。攻击者可以滥用这些端口来访问不安全的容器。然后,他们可能会利用这个滩头阵地将攻击升级到系统的其他部分。
- 身份和访问控制(IAM)配置风险,允许容器访问不应该对它们可用的外部资源。2022世界杯阿根廷预选赛赛程
- docker镜像中暴露的凭证(例如API密钥),可以被任何访问镜像或容器的攻击者重用。
- 受特权升级攻击感染的映像设法突破容器并进入主机—例如在其入口点上运行内核特权升级漏洞的映像。
使用Docker映像扫描来保护Docker
Docker安全扫描是检测Docker映像中这些风险的主要方法。Docker图像扫描工具自动扫描Docker映像的所有层,以检查恶意软件,错误配置和其他可能导致基于Docker的应用程序环境中的安全漏洞的风险。
Docker镜像扫描通过识别Docker镜像的内容,然后检查其内容是否与已知不安全的组件相匹配。例如,Docker映像扫描工具可能会发现Docker映像中的某个开源库包含一个已知的安全漏洞。Docker映像扫描器除了扫描映像的应用程序内容之外,还可以扫描配置,它还能够检测可能引起安全问题的错误配置,例如上面描述的网络或IAM问题。
Docker图像扫描的局限性
虽然图像扫描是Docker安全策略的一个重要组成部分,但重要的是要了解图像扫描仪并不能解决所有类型的潜在Docker安全风险。
Docker映像扫描不会检测以下风险:
- 容器编排工具(如Kubernetes)的错误配置,攻击者可以利用这些工具访问容器化的应用程序环境。
- 用于承载容器的操作系统中存在的安全漏洞。
- Docker安全扫描工具使用的漏洞数据库中不包含的专有应用程序代码或库带来的安全风险。
Docker映像安全的最佳实践
在构建和部署Docker镜像时,团队可以通过遵循一组标准来帮助降低由不安全镜像引起的安全漏洞的风险Docker映像安全最佳实践,包括以下内容。
扫描所有图像
一个基本的最佳实践是在基于Docker映像运行容器之前扫描所有Docker映像。扫描器可以检测风险,比如已知存在安全漏洞的组件,或者可能导致安全问题的配置问题。
执行扫描的一种简单方法是将映像扫描集成到Docker容器注册表中,以便在映像上传到注册表时自动扫描。图像扫描器JFrog x光可以为此目的与像Artifactory这样的容器存储库集成。
避免使用:latest标签
当从一个容器注册表下载Docker镜像时,你可以使用":latest "标签来下载注册表中可用的最新镜像版本。这很方便,但从安全角度来看并不理想,因为这可能导致部署的应用程序版本与您期望的不同。例如,您可能无意中部署了一个存在安全问题的容器的测试版。
而Docker图像扫描应该保护您免受不安全的图像,即使您使用:latest标签,这是一个最好的做法,以避免这个标签。相反,请指定要使用的映像版本。
避免不必要的图像内容
在构建Docker映像时,要坚持“少即是多”的原则。换句话说,从安全角度来看,Docker映像中包含的层越少越好。选择基本镜像(作为新Docker镜像的基础),这些镜像只包含应用程序严格需要的组件,避免向镜像中添加不需要的库或命令。基本图像高山Linux是一个轻量级的Linux发行版,在这方面很受欢迎。
保护您的容器注册表
任何访问容器注册表的人都有可能向它上传不安全的Docker映像。他们还可以禁用图像扫描,使您对恶意图像无保护。
通过选择Docker注册表来防止这些风险,该注册表允许您配置粒度访问控制,以便每个用户只能访问或修改他或她需要的特定映像。你也可以考虑使用私有Docker注册表,它只能从您指定的网络端点和/或用户访问,而不是对整个世界可见的公共注册中心。
阅读更多: