前言
同时扫描本地/远程镜像
支持宿主指定特定插件参数
基本用法
使用场景
1、前言
在不断的更新迭代中,veinmind-runner 作为宿主程序,承载的功能也不断增加:
- 扫描远程仓库
- 扫描 IaC 文件
- 扫描本地镜像/容器
- ......
因此,veinmind-runner 的使用方式也开始变得越来越复杂。我们期望能给用户提供一个更加清晰、容易记且符合大多数人习惯的命令行规范,以此提高宿主的易用性和可扩展性。基于以上想法,在 v2.0 版本中,我们对命令行进行了优化。
V2.0 命令行优化
veinmind-runner v2.0 整体架构重构为三个核心功能模块:
- scan: 运行扫描
- authz: docker 镜像阻断模式
- list: 列出插件信息
为了方便大家快速区分,并针对核心scan
功能进行进一步的细化操作。在 v2.0 版本中,我们将扫描对象进行规范,方便用户同时扫描多个不同类型的资产对象。
2、同时扫描本地/远程镜像
在之前的版本中,想要扫描主机上所有的镜像和远程仓库的镜像, 你需要这样做:
./veinmind-runner scan-host image IMAGE-A
./veinmind-runner scan-registry image IMAGE-B
不同类型的资产必须分成两个命令,通过两次扫描才能够完成,这样得到的报告也是两份。
而在 v2.0 中, 你可以直接通过协议进行扫描:
./veinmind-runner scan image IMAGE-A registry-image:IMAGE-B
扫描的结果会统计在一份报告内。
了解更多的扫描对象定义,请关注 veinmind-runner 文档:https://github.com/chaitin/veinmind-tools/tree/master/veinmind-runner
3、支持宿主指定特定插件参数
在 v1.0 中,runner 常常被吐槽:一些有自定义参数的插件无法在 runner 内配置。这也就导致,一些非标准的插件,譬如必须要使用特殊参数的用户输出( e.g. 自定义配置),无法在 runner 内运行。我们很快意识到这将会是插件使用中的常态,因为我们没办法在 runner 内确定哪些参数是必须要存在于插件内的。
对此,我们开放了插件的参数调用接口,在宿主环境下,你也可以调配运行插件时的参数了。
基本用法
指定插件参数时,需要通过 --
来分割命令。
语法格式为:
[插件名称]:[运行插件函数cmd].[参数名称]=[自定义值]
使用场景
指定弱口令插件仅检测ssh
./veinmind-runner scan image -- veinmind-weakpass:scan/image.serviceName=ssh
其中:
--
用于分割宿主命令参数和插件命令参数veinmind-weakpass
是插件名称scan/image
是运行插件函数的 cmd,对应插件独立使用时的./veinmind-weakpass scan image
, 通过/
符来分割层级关系。serviceName=ssh
是实际函数cmd的flags参数名称,对应插件独立使用时的./veinmind-weakpass scan image --serviceName=ssh
。
项目地址:https://github.com/chaitin/veinmind-tools