如何使用Chainguard保护您的容器部署

本文介绍了如何使用Chainguard和DockerScout来管理容器镜像的安全性,特别是在模板化和快速部署带来的潜在漏洞风险。作者通过示例展示了如何扫描官方和自定义镜像,强调了定期检查和使用维护良好的镜像版本的重要性。
摘要由CSDN通过智能技术生成

你不需要说服我,容器绝对是虚拟化革命中最棒的东西。我几乎每天都会使用各种类型的容器。

但是,只需一次模板化并到处部署的美妙之处伴随着一个成本:如果模板中的一个单独层包含安全漏洞怎么办?如果那里藏着一个漏洞,你又怎么知道呢?

在本文中,我将向您展示如何使用Chainguard(和Docker Scout)来管理所有您的镜像的安全性。

(本文内容参考:java567.com)

当您传统方式在物理服务器上构建软件基础架构时,您将手动获取并安装每个堆栈元素的每一部分。有可能您会直接从官方源中拉取最新版本的所有内容。至少您会考虑到每一层。

但是,大多数现代容器都是从复杂的模板构建的。复制粘贴代码并启动容器很容易。您可能甚至不知道支持您的应用程序的所有软件。即使您知道,也需要花费数小时研究每个元素,才能了解您的情况。

这就是Chainguard存在的问题。Chainguard提供了许多最受欢迎的容器镜像的维护良好的自定义版本。

当然,您可以自由地拉取,比如,官方的MariaDB镜像到您的Dockerfile中,但是选择Chainguard版本将是一个更安全的选择。这是因为Chainguard不断分析他们的镜像层中的漏洞,并构建尽可能最新和安全的镜像。

让我们看看所有这些在现实世界中是如何运作的。在开始构建新镜像之前,我应该告诉您我们将如何可视化每个镜像的漏洞,以便量化Chainguard的优势。

首先,我应该解释一下基础架构漏洞通常是使用Common Vulnerabilities and Exposures(CVE)系统定义的,该系统基于美国国家标准与技术研究所(NIST)维护的国家漏洞数据库。 CVE系统已经确定并分类了数十万个CVE定义,每个定义根据严重程度进行评级。这个数据库的存在以及一些重要的相关工具允许我们自动化我们的安全评估。

Docker Scout就是其中之一。此页面提供了在Docker Engine上使用Scout的安装说明,但如果您使用Docker Desktop,它应该可以直接运行。curl命令将简单地下载install-scout Bash脚本,这将使一切发生。

curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main install.sh -o install-scout.sh

如何选择正确的镜像

我创建了一个Dockerfile,它将从Docker Hub拉取官方的MariaDB镜像:

FROM mariadb:latest

ENV MYSQL_ROOT_PASSWORD=my_root_password
ENV MYSQL_DATABASE=my_database

ENV MYSQL_USER=my_user
ENV MYSQL_PASSWORD=my_user_password

我们假设该镜像将用于多层部署,因此我们将创建一个根数据库和密码,以及一个具有自己密码的新用户帐户。可能会有一个应用程序层实例在某个时候使用这些凭据来访问数据库。

无论如何,我将以通常的方式构建镜像,给它命名为mariadb_standard。

docker build -t mariadb_standard .

还有另一个Dockerfile,与第一个相同,只是我们从Chainguard拉取了MariaDB的特殊镜像。

FROM chainguard/mariadb

ENV MYSQL_ROOT_PASSWORD=my_root_password
ENV MYSQL_DATABASE=my_database

ENV MYSQL_USER=my_user
ENV MYSQL_PASSWORD=my_user_password

该镜像来自Docker Hub,但我们也可以轻松地从Chainguard的存储库中拉取它:

docker pull cgr.dev/chainguard/mariadb:latest

以与官方镜像相同的方式构建此镜像。扫描这两个镜像时,您将看到以下内容:

$ docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
mariadb_cg         latest    50a484d1ded3   7 days ago    556MB
mariadb_standard   latest    67949ccf8eb5   6 weeks ago   405MB

正如您所看到的,Chainguard镜像要大得多。但请注意,它实际上要新得多。

如何扫描您的镜像

现在是时候让docker scout开始工作了。下面是如何进行的。首先我将Scout指向mariadb_standard镜像:

$ docker scout qv mariadb_standard

qv是quickview的简称。

以下是输出的样子:

在这里插入图片描述

docker scout output

标准镜像由三个层组成,首先是Ubuntu 23.10,然后是Ubuntu 22.04长期支持版,最后是MariaDB。Ubuntu有10个低和9个中等漏洞。令人担忧的是,MariaDB层有2个严重和28个高问题。

这应该足以让管理员熬夜了。并且筛选出所有那些确定是阻碍并且哪些对您的环境来说并不是那么重要的漏洞将花费您大量时间。

现在我将Scout运行到Chainguard镜像上:

在这里插入图片描述

首先,我们可以看到这里只有一个层。我怀疑这是Chainguard控制其镜像的一种方式。那两个关键漏洞仍然存在,但是只有5个高严重性漏洞,没有任何中等或低严重性漏洞。

如果您愿意,您可以深入研究以显示所有个别漏洞。以下是使用输出的摘录执行此操作的命令:

$ docker scout cves local://mariadb_cg
    ✗ CRITICAL GHSA-xfg6-62px-cxc2 [OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities]
      https://scout.docker.com/v/GHSA-xfg6-62px-cxc2
      受影响范围: <42.2.8                                         
      修复版本: 42.7.2, 42.6.1, 42.5.5, 42.4.4, 42.3.9, 42.2.8  
      CVSS分数: 10.0                                            
      CVSS向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H    
    
    ✗ CRITICAL CVE-2024-1597 [Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')]
      https://scout.docker.com/v/CVE-2024-1597
      受影响范围: <42.2.28                                      
      修复版本: 42.2.28                                       
      CVSS分数: 10.0                                          
      CVSS向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H 

我们可以使用标准CVE工具和数据库研究每个漏洞,以更好地了解它们。但是相对于研究标准MariaDB镜像中的28个高严重性漏洞,这将会容易得多。

结论

因此,如果您担心容器镜像的安全性 - 而且您最好担心 - 那么Docker Scout是一个维护您的堆栈可见性的优秀工具。而Chainguard的清洁镜像可以让您获得显着的先机。

(本文内容参考:java567.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值