使用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
这将开始分析,其中将返回更多或更少详细的输出,具体取决于它发现的漏洞,并带有最终的汇总:
正如您所看到的,它不仅告诉您找到了多少漏洞。即使您向上滚动,也可以看到它们是什么以及它们的严重性,但它还有关于您应该使用的基础镜像的建议。
您还可以从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 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。