「容器安全」10多个用于Docker安全性的顶级开源工具

简介: 「容器安全」10多个用于Docker安全性的顶级开源工具

对于容器安全性,你会发现许多开源工具可以帮助防止像特斯拉那样遭受Kubernetes集群破坏的另一场崩溃。但容器安全性仍然很棘手,因此您需要知道要添加到您的库中的实用程序。

如果您花时间选择最佳的应用程序安全测试工具并确保您的应用程序尽可能安全,那么您不希望它在不安全的容器上运行。幸运的是,那里有商业容器安全产品,但开源项目也可以带你走得很远。许多人专注于审计,跟踪由CIS,国家漏洞数据库和其他机构建立的常见漏洞和暴露(CVE)数据库和基准。然后,工具扫描容器图像,显示其内容,并将内容与已知漏洞的这些清单进行比较。

通过帮助团队在构建管道的早期捕获问题,自动化容器审计以及使用其他容器安全流程可以为企业带来巨大的好处。

虽然有很多开源容器安全工具,但这里有最好的,最成熟的用户社区。

1. Docker Bench for Security

用于根据安全基准审核Docker容器的脚本

面向使用Docker社区版管理容器的开发人员,Docker Bench for Security是Docker的开源脚本,用于审核容器以防止常见的安全最佳实践。

Docker Bench的测试基于行业标准的CIS基准测试,帮助实现手动漏洞测试的繁琐过程自动化。

Docker的安全负责人DiogoMó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_security \ docker/docker-bench-security

结果会为每个安全配置基准测试发出Info,Warning和Pass日志。您也可以从Docker主机运行此实用程序,通过Docker Compose克隆它,或直接从基本主机运行它。

一个缺点是输出结果缺乏机器可读性。许多社区软件包,如Docker Bench Test,drydock和Actuary,都在Docker Bench上得到改进。

2. Clair

API驱动的静态容器安全性分析,具有庞大的CVE数据库

Clair由CoreOS构建,对容器漏洞进行静态分析。它也用在Quay.io中,这是一个替代Docker Hub的公共容器注册表。

Clair引入了许多漏洞数据源,例如Debian Security Bug Tracker,Ubuntu CVE Tracker和Red Hat Security Data。由于Clair消耗了如此多的CVE数据库,因此其审计非常全面。

Clair首先索引容器图像中的功能列表。然后,使用Clair API,开发人员可以在数据库中查询与特定映像相关的漏洞。

要开始使用Clair,请参阅Running 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.yaml

Clair的功能集非常灵活。它允许您添加自己的驱动程序以用于其他行为。此外,对审计特定容器映像进行单独的API调用是一种流畅的,机器驱动的替代方法,可以通过大量的报告日志进行搜索。

3. Cilium

内核层的API感知网络和安全性

Cilium致力于保护网络连接。Cilium与Linux容器平台(如Docker和Kubernetes)兼容,增加了安全可见性和控制逻辑。

它由BPF(以前称为Berkeley数据包过滤器)提供支持,这是一种Linux内核技术。其低级实现的有趣方面是您可以在不更改应用程序代码或容器配置的情况下应用和更新Cilium安全策略。

CoreOS开发了Cilium,以响应现代微服务开发和快速容器部署的不稳定生命周期。将它与Kubernetes集成是很简单的;以下是如何使用本地更改部署Cilium:

$ 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

Cilium周围的支持和社区非常棒。你会找到大量的指南和文档,一个专门的Slack频道,甚至每周一次与项目维护人员进行环聊。

4. Anchore

使用CVE数据和用户定义的策略检查容器安全性的工具

Anchore Engine是一种用于分析容器图像的工具。除了基于CVE的安全漏洞报告之外,Anchore Engine还可以使用自定义策略评估Docker镜像。

策略导致通过或失败结果。策略基于白名单或黑名单,凭据,文件内容,配置类型或其他用户生成的提示。

Anchore打包为Docker容器映像,可以独立运行,也可以在Kubernetes等业务流程平台上运行。它还有用于CI / CD的Jenkins和GitLab集成。

Anchore命令行界面(CLI)是一种操作Anchore Engine的简便方法。例如,此CLI命令返回有关图像内容的详细信息:

anchore-cli image content INPUT_IMAGE CONTENT_TYPE

此示例命令将对映像执行漏洞扫描:

anchore-cli image vuln docker.io/library/debian:latest os

Anchore输出漏洞详细信息,威胁级别,CVE标识符和其他相关信息的列表。由于用户定义的规则是使用Anchore Cloud Service图形用户界面(GUI)创建的,因此它的运行方式与SaaS类似。

5. OpenSCAP Workbench

用于为各种平台创建和维护安全策略的环境

OpenSCAP是IT管理员和安全审核员的生态系统,包括许多开放式安全基准指南,配置基线和开源工具。

在Fedora,Red Hat Enterprise Linux,CentOS或Scientific Linux上运行的人可以将OpenSCAP Workbench安装为GUI,以在虚拟机,容器和映像上运行扫描。使用以下命令安装OpenSCAP Workbench:

#yum install scap-workbench

要根据SCAP策略指南和CVE验证容器,请使用OpenSCAP附带的oscap-docker实用程序。

OpenSCAP以NIST认证的安全内容自动化协议(SCAP)为中心,并提供许多机器可读的安全策略。OpenSCAP安全指南指出,该项目的目标是“允许多个组织通过避免冗余来有效地开发安全内容”。

由于OpenSCAP比此列表中的其他人更广泛,因此对于希望为整个平台创建安全策略的团队而言,它是一个不错的选择。

6. Dagda

用于扫描Docker容器中的漏洞,特洛伊木马,病毒和恶意软件的工具

Dagda是另一种用于容器安全性静态分析的工具。它的CVE源包括OWASP依赖性检查,Red Hat Oval和攻击性安全漏洞利用数据库。

要使用Dagda扫描Docker容器,首先要使用漏洞数据填充Mongo数据库。执行此命令以分析单个Docker镜像:

python3 dagda.py check --docker_image jboss/wildfly

您可以远程运行它,也可以不断调用它来监视活动的Docker容器。输出显示漏洞数,严重性级别和其他详细信息以帮助修复。

Dagda的一个好处是可以广泛覆盖漏洞数据。这意味着可以直接访问大量更新,全面的漏洞利用集合。它也很灵活,您可以通过CLI和REST API来控制它。

7. Notary

用于通过加密方式委派责任的服务器来提高容器安全性的框架

公证人是事实上的Docker图像签名框架,现在开源其他实现。Docker开发了它,然后在2017年将其捐赠给了Cloud Native Computing Foundation。

公证就是责任分离;使用Notary,开发人员可以委派角色并在容器之间定义职责。该软件包提供服务器和客户端,以提供发布和验证内容的加密安全方法。

要在本地部署Notary,请通过克隆repo来开始。接下来,使用Docker Compose部署本地配置:

$ docker-compose build $ docker-compose up -d $ mkdir -p ~/.notary && cp cmd/notary/config.json cmd/notary/root-ca.crt ~/.notary

依赖于Update Framework和Go语言作为依赖关系,Notary可以验证容器应用程序映像的加密完整性。

8. Grafaes

用于帮助管理内部安全策略的元数据API

Grafaes可以极大地帮助您创建自己的容器安全扫描项目。该容器安全工具于2017年底宣布,由IBM和Google开发。

开发人员可以使用Grafaes(称为“组件元数据API”)来定义虚拟机和容器的元数据。IBM的Vulnerability Advisor也集成到项目中。

有关可靠的案例研究,请参阅Shopify如何使用Grafaes管理500,000个容器图像的元数据。与Kritis合作,该团队在使用Grafeas元数据的Kubernetes集群上实施安全策略。

能够快速获取容器元数据有助于加快补救尝试,从而减少从利用到解决的窗口。虽然Grafaes是开源的,但它由大型软件提供商维护 - 这对长期支持是有益的。

9. Sysdig Falco

提供深度容器可见性的行为活动监控

Falco是一种由Kubernetes识别的安全审计工具,由Sysdig开发,强调对容器,主机和网络活动的行为监控。使用Falco,开发人员可以对其基础架构进行连续检查,检测异常情况,并为任何类型的Linux系统调用设置警报。

Falco文档建议用户将Falco作为Docker容器运行。可以使用这些命令安装它。实施后,标准输出Falco警报如下所示:

stdout_output: enabled: true 10:20:05.408091526: Warning Sensitive file opened for reading by non-trusted program

使用Falco监视shell在容器中运行的时间,容器已安装,敏感文件的意外读取,出站网络尝试或其他可疑调用。Sysdig在此提供了更多容器故障排除材料。

10. Banyanops Collector

Docker容器图像的静态分析框架

在Banyanops的支持下,Collector是一个开源实用程序,可用于“窥视”Docker容器图像文件。使用Collector,开发人员可以收集容器数据,实施安全策略等。

首先,Banyanops可以在私有注册表上运行,也可以作为Docker Hub上的容器运行。Banyanops还提供可提供更深入数据分析的SaaS产品,因此如果您遇到有限的功能,请注意向上销售。

尊敬的开源

  1. Dockscan:具有少量提交的安全漏洞扫描程序
  2. Batten:类似于Docker Bench的审计工具包,但具有非活动支持
  3. BlackDuck Docker安全性:作为Web服务构建的容器映像安全扫描工具。遗憾的是,目前的形式并未建议使用生产
  4. Inspec:具有Docker容器测试功能的审计和测试框架

你的旅程可能会改变

由于容器化已经发展成为一种流行的部署方式,因此需要使用适当的安全控制来扩充这些容器是至关重要的。值得庆幸的是,您将找到一个强大的开源安全解决方案生态系统,这些解决方案已针对许多不同的环境进行了定制。

这些工具的整体强度取决于所进行的检查的深度。有效性还取决于CVE数据库和基准本身继续使用新漏洞更新数据并发布新的最佳实践。值得庆幸的是,正在努力缩短零日漏洞利用和容器漏洞检测之间的时间。

开发人员还将倾向于使用具有更好体验的工具,这将减少日志结果中的噪音和重复。这种粒度偏好只能通过反复试验来确定,具体取决于您的构建例程和个人偏好。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
10天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
158 93
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
263 77
|
13天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
85 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
24天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
112 35
|
11天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
40 17
|
23天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
12天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
74 12
|
13天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
77 11
|
29天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
138 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1月前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
61 3
实战~如何组织一个多容器项目docker-compose