如何使用Docker安全扫描

自2013年推出以来,Docker已经发展成为一种非常流行的部署应用程序的解决方案。通过允许在称为容器的隔离环境中运行的应用程序Docker在不显著降低系统效率的情况下,提供了可移植性和安全性优势,同时避免了与虚拟机相关的大量资源开销。

但是Docker在容器之间提供的隔离并不能防范所有类型的安全风险。相反,内部可能潜伏着各种各样的漏洞码头工人的图片,它们是Docker容器所基于的“蓝图”。主要例子包括:

  • 攻击者将恶意软件与合法应用程序一起注入Docker容器。注入的恶意软件将与容器的其余部分一起执行。
  • 网络配置风险,例如使用Dockerfile中的EXPOSE指令打开不安全端口。攻击者可以滥用这些端口来访问不安全的容器。然后,他们可能会利用这个滩头阵地将攻击升级到系统的其他部分。
  • 身份和访问控制(IAM)配置风险,允许容器访问不应该对其可用的外部资源。2022世界杯阿根廷预选赛赛程
  • 在docker映像中暴露的凭证(例如API密钥),可以被任何访问映像或容器的攻击者重用。
  • 受特权升级攻击感染的映像设法突破容器并进入主机——例如在其入口点上运行内核特权升级利用程序的映像。

使用Docker图像扫描来保护Docker

Docker安全扫描是检测Docker映像中这些风险的主要方法。Docker图像扫描工具自动扫描Docker镜像的所有层,以检查恶意软件、错误配置和其他可能导致基于Docker的应用程序环境中的安全漏洞的风险。

免费扫描您的Docker映像!
扫描任何图像的安全漏洞在3个简单的步骤,与x射线CLI

扫描码头图像

Docker映像扫描的工作原理是识别Docker映像的内容,然后检查内容是否与已知的不安全组件匹配。例如,Docker映像扫描工具可能会发现Docker映像中的某个开源库包含已知的安全漏洞.除了扫描映像的应用程序内容之外,Docker映像扫描器还能够检测可能引发安全问题的错误配置,例如上面描述的网络或IAM问题。

Docker图像扫描的局限性

虽然图像扫描是Docker安全策略的一个重要组成部分,但重要的是要理解图像扫描并不能解决所有类型的潜在Docker安全风险。

Docker图像扫描不会检测到以下风险:

  • 容器编排工具(如Kubernetes)的错误配置,攻击者可以使用这些工具访问容器化的应用程序环境。
  • 用于承载容器的操作系统中存在的安全漏洞。
  • 来自Docker安全扫描工具使用的漏洞数据库中不包括的专有应用程序代码或库的安全风险。

Docker映像安全性的最佳实践

在构建和部署Docker映像时,团队可以通过遵循一组的方法来帮助降低由不安全映像引起的安全漏洞风险Docker映像安全最佳实践,包括以下内容。

扫描所有图像

一个基本的最佳实践是在基于Docker映像运行容器之前扫描所有Docker映像。扫描器可以检测风险,比如已知存在安全漏洞的组件,或者可能导致安全问题的配置问题。

执行扫描的一个简单方法是将图像扫描集成到Docker容器注册表中,这样每当图像上传到注册表时就会自动扫描。像图像扫描仪JFrog x光可以为此目的与Artifactory等容器库集成。

避免使用:latest标签

当从容器注册中心下载Docker映像时,你可以使用":latest "标签来下载注册中心中可用的最新映像版本。这很方便,但从安全角度来看并不理想,因为这可能导致部署的应用程序版本与您所期望的不同。例如,您可能无意中部署了存在安全问题的容器的beta版本。

而Docker图像扫描应该即使您使用:latest标记,也要保护您不受不安全图像的影响,最好避免使用此标记。相反,请指定要使用的映像版本。

扫描您的Docker映像!
扫描任何图像在3个简单的步骤

现在扫描

避免不必要的图像内容

当您构建Docker映像时,请坚持“少即是多”的原则。换句话说,Docker映像中包含的层越少,从安全角度看就越好。选择只包含应用程序严格需要的组件的基本映像(作为新Docker映像的基础),避免向映像中添加不需要的库或命令。基本图像像高山Linux这是一个轻量级的Linux发行版。

保护容器注册表

任何能够访问容器注册表的人都有可能将不安全的Docker映像上传到注册表中。他们也可以禁用图像扫描,使您免受恶意图像。

为了防止这些风险,可以选择允许您配置粒度访问控制的Docker注册表,以便每个用户只能访问或修改他或她需要的特定映像。你也可以考虑使用专用Docker注册表,它只能从您指定的网络端点和/或用户访问,而不是对全世界可见的公共注册中心。

阅读更多: