值得推荐的 Docker 安全开源工具

在容器安全方面,有很多使用开源工具阻止安全灾难的故事,例如前不久发生的特斯拉 Kubernetes 集群入侵事件 。容器的安全性一直是一件很棘手的事情,因此如何巧妙使用开源工具就成为一件重要的事情 。
如果你已经花了大量精力找到了最佳的应用程序安全性测试工具,并确保你的应用程序尽可能安全,那么你肯定不希望运行它的容器是不够安全的 。幸运的是,有一些商业版的容器安全产品可供选择,但是有许多开源项目也很不错 。其中有许多项目侧重于审计、跟踪公共漏洞和通用披露数据库(CVE)以及由 CIS 网络安全智能系统、国家漏洞数据库和其他机构建立的安全基准 。这些工具会对容器镜像进行扫描,并将扫描后的结果与这些已知的漏洞清单进行交叉比对 。
通过使用自动化容器审计或者容器安全流程,可以帮助团队在项目早期捕获问题,从而为企业带来巨大的好处 。
目前有很多开源容器安全工具,这里列出了一些最好的、最成熟的、拥有广大用户群体的工具 。
Docker Bench for Security(Docker 安全工作台)Docker Bench 是一个根据安全基准对 Docker 容器进行审计的脚本 。
该工具面向的是使用 Docker 社区版本进行容器管理的开发者,Docker Bench for Security 是一个根据通用的安全最佳实践设计的开源脚本,用于对 Docker 容器进行安全审计 。
Docker Bench 的测试基于行业的 CIS 基准,可以自动完成繁琐的手工漏洞测试过程 。
Docker 安全主管 Diogo Mónica 将其描述为“一个测试容器的容器” 。你可以按照如下操作对容器进行初始化:
?复制代码
docker run -it --net host --pid host --userns host --cap-add audit_control-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST-v /var/lib:/var/lib-v /var/run/docker.sock:/var/run/docker.sock-v /usr/lib/systemd:/usr/lib/systemd-v /etc:/etc --label docker_bench_securitydocker/docker-bench-security运行结果会将每个安全配置基准的日志分为普通信息、警告信息以及通过信息 。你可以直接在 Docker 容器中运行这个工具,也可以通过 Docker Compose 来克隆或者直接在你的 Docker 宿主机上运行这个脚本 。
这个工具有一个缺点,它的输出结果在机器可读性上有所欠缺 。社区有许多工具包实现了对 Docker Bench 的改进,比如,Docker Bench Test、drydock 以及 Actuary 。
ClairClair 是一个 API 驱动的基于庞大的 CVE 数据库的静态容器安全分析工具 。
Clair 是由 CoreOS 开发的静态容器漏洞分析工具 。在 Quay.io 上也可以使用这个工具,Quay.io 是一个公共容器注册中心,是 Docker Hub 的一个 替代品 。
Clair 从许多漏洞数据源获取信息,比如 Debian 安全漏洞跟踪库、Ubuntu CVE 跟踪库以及 Red Hat 安全数据库 。由于 Clair 涵盖了大量的 CVE 数据库,所以它的审计是非常全面的 。
Clair 首先会为容器镜像中的特性列表建立索引 。然后通过 Clair API,开发人员可以查询与特定镜像相关的漏洞数据库 。
你可以通过 Clair 入门文档来开始使用 Clair 。在 Kubernetes 集群上部署也是很简单的:
?复制代码
git clone https://github.com/coreos/clair cd clair/contrib/helm cp clair/values.yaml ~/my_custom_values.yaml vi ~/my_custom_values.yaml helm dependency update clair helm install clair -f ~/my_custom_values.yamlClair 的一大特性就是它的灵活性 。它允许你为一些行为添加自己的驱动 。此外,通过单独的 API 调用来审计特定的容器镜像是一种漂亮的、机器驱动的替代方法,可以代替对大量的日志报告进行搜索的方法 。
CiliumCilium 是一个内核层的 API 感知网络和安全工具 。
Cilium 专注于解决安全网络连接,与 Docker、Kubernetes 等 linux 容器平台有良好的兼容性,它增加了安全可视化以及控制逻辑 。
它基于 Linux 内核技术 BPF(以前被称为 Berkeley packet filter) 。其功能在底层进行实现的有趣之处在于,你可以直接应用和更新 Cilium 安全策略,无需更改应用程序代码或容器配置 。CoreOS 开发 Cilium 的目的是为了响应现代微服务开发和快速容器部署的易变生命周期 。它可以与 Kubernetes 直接进行集成,你可以使用下面的命令进行部署:
?复制代码
$ kubectl create -f ./cilium.yaml clusterrole "cilium" created serviceaccount "cilium" created clusterrolebinding "cilium" created configmap "cilium-config" created secret "cilium-etcd-secrets" created daemonset "cilium" created $ kubectl get ds --namespace kube-system NAME DESIRED CURRENT READY NODE-SELECTOR AGE cilium 1 1 1 <none> 2m


推荐阅读