使用Snyk查找Docker镜像中漏洞的最简单方法

Snyk是一种专门分析基础架构配置文件中漏洞的编辑器,包括容器和应用程序包中的漏洞。

Snyk首先提供一个cloud platform,但它提供各种产品。

Snyk OpenSource通过编辑器的CLI与Git流集成。一旦启动,软件会检测到vulnerabilities,并按敏感程度对其进行分类,并自动纠正已知的安全错误。可以将此功能合并到拉取请求周期中,以应用于发送到存储库的代码。

Snyk Infrastructure as Code则分析并修复JSON和YAML Kubernetes配置文件中的漏洞。在这里,规则引擎允许您根据管理员决定的参数配置Git存储库中检测的灵敏度。

Snyk Container允许您在创建及创建后测试链接_5及相关注册表。该程序可以集成到CLIs、SCMs、CI工具、容器注册表和Kubernetes中。

今天,我们将看看如何使用与Docker一起构建的Snyk Container来检测漏洞。

示例Docker文件

使用Snyk检测漏洞所需的第一件事是一个Docker镜像。在本例中,我们将使用以下Docker镜像:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

我们首先必须通过以下命令在本地生成镜像:

docker build -t 0xyz0/python-app.

现在我们有一个要分析的镜像。

从Docker客户端扫描镜像

Snyk服务与Docker的集成使这个过程变得非常简单。要开始扫描,您只需执行以下操作:

docker scan 0***0/python-app

这将开始分析,其中将返回更多或更少详细的输出,具体取决于它发现的漏洞,并带有最终的汇总:

Docker扫描显示镜像的所有漏洞

正如您所看到的,它不仅告诉您找到了多少漏洞。即使您向上滚动,也可以看到它们是什么以及它们的严重性,但它还有关于您应该使用的基础镜像的建议。

您还可以从Snyk Vulnerability Database中查看漏洞的详细信息。

对我来说,它提供了几个替代方案,所以我将使用第一个选项修改我的Dockerfile:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

如果我重新构建镜像并进行扫描:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

您将看到输出现在显示更少的漏洞,并且在这种情况下,它告诉您当前正在使用更安全的基础镜像:

Docker扫描确保您使用了最安全的基础镜像

如果您将生成镜像的Docker文件添加到命令中,还可以获得更详细的报告:

docker scan -f Dockerfile 0***0/python-app

甚至可以从分析中排除基础镜像,以防万一您想专注于您的错误:

docker scan -f Dockerfile --exclude-base 0***0/python-app

此服务还可以与Docker Hub存储库集成:

但是,为此,您必须拥有付费订阅之一。然而,您可以在本地启动它,并使用您仅因登录到Docker Hub而获得的免费计划(它具有明确的扫描限制),同时开发或想要检查您想要使用的第三方图像的安全性。

在Github Actions中使用Snyk

首先要做的是创建一个存储库,并在其中创建一个文件夹。

.github / workflows /

接下来,要在Github中使用Snyk容器,需要创建一个新的镜像或使用我们在Docker Hub中创建的镜像。要使用Snyk,您必须创建一个名为SNYK_TOKEN的新密钥,并且要获取该令牌,您必须在Snyk上创建一个帐户。您可以快速生成它的位置是在常规设置中,标题是API令牌。

有了令牌,您可以在Github上创建密钥并在操作中使用它。现在,您必须将其传递给在Docker Hub中创建的存储库的名称。接下来,您必须传递它必须发送的消息。您可以访问步骤的输出以作为消息中的变量使用。

with:
args: '已推送新的提交。请验证github action:
| workflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

如何运行整个工作流?只需推送Master。Github Action将检测到.github / workflows /中的文件。

结束语 👈

随着容器的日益普及,安全漏洞事件变得越来越常见,其中大部分是由于部署容器时的配置错误。Snyk提供了一款高效且简单易用的工具,可以帮助我们避免配置错误,并检测最常见的漏洞docker images

类似文章