容器安全工具
Anchore Engine:镜像扫描工具
安装过程
# 环境概述
# 操作系统:Centos7
# Docker版本:18.09.6
# Docker-Compose版本:1.24.0
# 创建目录
mkdir anchore
cd anchore
# 下载镜像
docker pull docker.io/anchore/anchore-engine:latest
# 创建容器
docker create --name ae docker.io/anchore/anchore-engine:latest
# 拷贝配置文件
docker cp ae:/docker-compose.yaml docker-compose.yaml
# 删除容器
docker rm ae
# 启动容器
docker-compose pull
docker-compose up -d
# 安装anchore-cli
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip install anchorecli
anchore-cli --version
使用过程
# 查看安装状态
anchore-cli --u admin --p foobar system status
# 数据库同步状态
anchore-cli --u admin --p foobar system feeds list
# 等待同步完成,添加镜像到anchore engine进行分析
anchore-cli --u admin --p foobar image add docker.io/library/nginx:latest
# 查看进度
anchore-cli --u admin --p foobar image list
# 等待分析完成,查看详情
anchore-cli --u admin --p foobar image get docker.io/library/nginx:latest
# 查看漏洞
anchore-cli --u admin --p foobar image vuln docker.io/library/nginx:latest os
Anchore Engine账户管理
# 查看用户
anchore-cli --u admin --p foobar account list
# 设置密码
anchore-cli --u admin --p foobar account user setpassword New_Password
Anchore Engine注册仓库
anchore-cli --u admin --p foobar registry add registry_name user pass
关于Anchore Engine的密码保存问题
- 使用alias命令,在Jenkins CI/CD流程中不展示密码;
- 使用shell脚本只想anchore-cli命令;(以上两种做法都只能避免在Jenkins的界面出现账号密码)
Anchore API
打开swagger.json文件,复制全部内容到swagger在线编辑工具中
Clair:镜像扫描工具
安装过程
# 创建目录
mkdir clair
cd clair
# 下载文件
curl -L https://raw.githubusercontent.com/coreos/clair/master/contrib/compose/docker-compose.yml -o docker-compose.yml
# 创建配置文件
mkdir clair_config
curl -L https://raw.githubusercontent.com/coreos/clair/master/config.yaml.sample -o ./clair_config/config.yaml
# 修改配置文件
vim ./clair_config/config.yaml
# 注释以下这行
# source: host=localhost port=5432 user=postgres sslmode=disable statement_timeout=60000
# 添加
source: postgresql://postgres:password@postgres:5432?sslmode=disable
# 启动
docker-compose pull
docker-compose up -d
客户端安装
- clairctl:[官网地址]
- clair api:[官网地址],目前已经不能访问了。
- klar:[官网地址],只支持跟registry集成。
- yari:[官网地址],只支持跟registry集成,yair使用python写的,可以自己修改。
- analyze-local-images:[官网地址],命令行工具,已经被放弃了,只支持clair v1/v2。
使用过程
# 使用clairctl
# 在release下载最新版本:1.2.8
Trivy:镜像扫描工具
安装过程
# 使用rpm直接安装
rpm -ivh trivy_0.0.15_Linux-64bit.rpm
使用过程
# 扫描镜像,第一次扫描会很慢,因为需要更新漏洞库
trivy docker.io/library/nginx:latest
Docker Bench:容器安全基线检测工具
安装过程
git clone https://github.com/docker/docker-bench-security.git && cd docker-bench-security
bash docker-bench-security.sh
使用过程
bash docker-bench-security.sh -h
Docker Scan:镜像扫描工具
安装过程
pip3 install dockerscan
使用过程
dockerscan -h
OpenSCAP
工具对比
对比项/工具 | Anchore | Clair | Trivy | Docker-Bench | DockerScan |
---|---|---|---|---|---|
安装 | docker-compose | docker-compose | yum直接安装 | shell直接执行 | pip安装 |
语言 | Python | Go | Go | Shell | Python |
扫描方式 | CVE漏洞库扫描 | CVE漏洞库扫描 | CVE漏洞库扫描 | 基线检测规则 | 扫描or分析规则,主要用于攻击 |
扫描速度 | 几分钟 | 几分钟 | 几分钟 | 很快 | 很快 |
跨平台性 | 具备良好的跨平台性 | 同前 | 同前 | 同前 | 同前 |
推荐使用:Anchore+Docker Bench的组合
推荐理由:anchore目前已有商业版,免费版也在持续更新中,客户端使用统一使用难度也很低,同样Anchore与Gitlab-CI或者Jenkins集成友好。