在 Aqua Security,我们最近发布了一个开源项目,以帮助容器用户管理与其容器映像关联的元数据。它被称为 Manifesto,它将自由格式的元数据与图像本身一起存储在注册表中。
构建后元数据的需求
我对容器元数据感兴趣已经有一段时间了,致力于 MicroBadger 和 label-schema 标准。这些项目解决了您可以在构建时通过标签添加到映像的元数据,但它们并没有真正帮助您获得有关您可以在构建后(可能在其整个生命周期内)更新的映像的信息。
构建映像后需要更新的元数据的几个用例包括:
-
在部署之前,当映像通过一组“入口”时,跟踪映像的测试结果和审批状态
-
保存您希望此映像在其下运行的 Seccomp/AppArmor 或其他安全配置文件
-
存储映像的最新漏洞扫描报告。
在所有这些情况(以及更多情况)中,都可以将信息存储在其他地方,但将其与它相关的图像联系起来是一件令人头疼的事情。Manifesto 项目旨在消除这种痛苦,并使您的图像存储和检索数据变得无缝。
命令行工具
借助 Manifesto,我们构建了一个原型命令行界面 (CLI),允许用户添加、列出和获取特定图像的任意元数据。
用于自动化的元数据
上面的演示显示了如何检索特定图像的 seccomp 配置文件并将其存储在文件中。然后,这可以轻松地传递到命令中以部署容器 — 例如在 Docker 中:
$ manifesto get myorg/myimage:v1.1 seccomp > seccomp.json
$ docker run --security-opt seccomp=seccomp.json myorg/myimage:v1.1
更一般地说,CLI 可用于许多自动化脚本,例如,将测试结果和映像的最重要的漏洞扫描存储为 CI/CD 管道的一部分。
利用 Notary 实现数据安全
保持元数据的安全性和完整性非常重要 — 您不希望不良行为者能够扰乱您的漏洞报告以掩盖漏洞利用或篡改您的安全配置文件。Docker 团队在通过 Notary 确保图像的来源方面做得非常出色,通过 Manifesto,我们的目标是将 Notary 用于图像元数据以及图像本身。事实上,有一个关于标准化漏洞报告的 Moby 项目提案,其中讨论了使用类似方法的方法。
宣言的未来
我们的目标是将 Manifesto 从目前的原型阶段发展成为一个强大、安全和有用的工具。我们在 Puppet 的朋友已经在他们的项目 Lumogon 中实施了 Manifesto,这是一个用于检查基于容器的应用程序的工具。我们收到了一些有用的反馈,亲爱的读者,我们欢迎您的想法、评论、PR 和 GitHub 星标!
原文始发于微信公众号(菜鸟小新):Manifesto:一种新的开源容器元数据工具
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论