跳转到主要内容

容器质量保证的命令行工具

项目描述

Singularity容器工具

PyPI version

这些是用于Singularity容器的工具,针对与持续集成一起使用进行安全和质量检查进行了优化。有关包在持续集成环境中使用的示例,请参阅stools-clair存储库。

asciicast

在此工作中,我们将使用Clair OS与持续集成(travis和circle)结合,以扫描Singularity容器中的安全漏洞。

标签

请注意,在第一次发布之后,版本号与PyPI上的发布相对应,而不是与Singularity版本相对应。

背景

Clair旨在作为服务器连续扫描Docker 中的漏洞。由于以下原因,这不太适用于研究领域:

  • Docker容器以层(.tar.gz文件)的形式出现,而Singularity镜像则是单个二进制文件,无法很好地与Clair“连接”。
  • 大多数研究人员都无法支持此类服务的持续运行。

另一方面,一个典型的研究人员确实会使用像TravisCICircleCI这样的服务来运行他们的代码库进行测试。由于这些服务现在提供了运行容器和其他服务类型的功能,我们实际上可以这样做

  • 在测试期间启动Clair服务器
  • 构建一个Singularity镜像,并扫描文件系统内容(在镜像最终确定之前)。

虽然这不是一个持续运行的服务,但我们至少可以确保每次构建容器时都对其进行扫描(然后很可能合并到生产中使用)。如果用户利用Singularity HubSingularity注册服务器,在通过这些各种测试后,镜像将被推送到或构建用于生产。

这个实验基于这个线程中的早期讨论。

基本用法

首先需要克隆仓库

git clone https://github.com/singularityhub/stools
cd stools

构建容器

如果您愿意,可以构建容器(或使用来自Docker Hub的标记版本)。

$ docker build -t vanessa/stools-clair .

使用docker compose启动应用程序。请注意,您应该将想要扫描的镜像放在$PWD中,这些镜像将被映射到容器的/code中(参见docker-compose.yml文件)。您可以更改这些设置,只要确保您想要添加的容器都放在这里即可。

$ docker-compose up -d

确保您的容器已启动并运行!有一个clair服务器我们将与之交互,还有一个用于数据库。

$ docker-compose ps
    Name                   Command               State                            Ports                          
-----------------------------------------------------------------------------------------------------------------
clair-db        docker-entrypoint.sh postgres    Up      0.0.0.0:5432->5432/tcp                                  
clair-scanner   /clair -config=/config/con ...   Up      0.0.0.0:6060->6060/tcp, 6061/tcp, 0.0.0.0:8080->8080/tcp

此外,请注意,由于reports文件夹位于挂载的当前工作目录中,因此它将出现在容器的/code/reports中。我们稍后会需要知道这一点。

扫描镜像

让我们扫描一个本地镜像,它在容器中的/code映射到$PWD。首先从您选择的注册表中拉取一个

$ singularity pull shub://vsoch/singularity-images

现在让我们开始扫描!我们通过向clair-scanner容器执行命令来完成这项工作。最基本的用法将只是打印报告到stdout,如下所示

$ docker exec -it clair-scanner sclair singularity-images_latest.sif
...

CVE-2016-9843 (Low)
http://people.ubuntu.com/~ubuntu-security/cve/CVE-2016-9843
The crc32_big function in crc32.c in zlib 1.2.8 might allow context-dependent attackers to have unspecified impact via vectors involving big-endian CRC calculation.

保存报告

但是,如果您想将报告保存到文件(json),可以添加--report参数,指向您选择的现有输出目录。例如,由于reports提供在我们的当前工作目录中,并且已经绑定到容器的/code/reports,我们可以将其指定为参数

$ docker exec -it clair-scanner sclair --report /code/reports singularity-images_latest.sif

使用--report参数不会禁用打印到stdout。但是,如果您想禁用它,可以添加--no-print选项。一个示例JSON报告可以在reports文件夹中找到。

$ docker exec -it clair-scanner sclair --report /code/reports --no-print singularity-images_latest.sif

有关打印到stdout的完整示例(使用具有已知漏洞的容器),请参阅示例测试文件夹。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

stools-0.0.13.tar.gz (12.0 kB 查看哈希值)

上传时间:

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页