关于IaC Scan Runner
IaC Scan Runner是一款针对IaC(基础设施即代码)的安全漏洞扫描工具,在该工具的帮助下,广大安全开发人员可以轻松扫描IaC(基础设施即代码)中的常见漏洞。
IaC Scan Runner本质上是一个REST API服务,可以扫描IaC包并执行多种代码检测,以识别和发现其中潜在的安全漏洞和可提升安全性的地方。
工具要求
Python 3
Docker
MongoDB
工具运行
Docker运行
广大研究人员可以使用一个公共Docker镜像(xscanner/runner)来运行REST API:
代码语言:javascript复制# 在一个Docker容器中运行IaC Scan Runner REST API
# 导航至localhost:8080/swagger或localhost:8080/redoc即可使用
$ docker run --name iac-scan-runner -p 8080:80 xscanner/runner
除此之外,我们也可以在本地构建并运行镜像:
代码语言:javascript复制# 构建Docker容器(需要等待一些时间)
$ docker build -t iac-scan-runner .
# 在Docker容器中运行IaC Scan Runner REST API
# 导航至localhost:8080/swagger或localhost:8080/redoc即可使用
$ docker run --name iac-scan-runner -p 8080:80 iac-scan-runner
命令行接口CLI运行
广大研究人员还可以在本地安装IaC Scan Runner,并通过命令行接口CLI工具调用IaC Scan Runner的功能:
代码语言:javascript复制# 安装命令行接口CLI
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install iac-scan-runner
# 打印OpenAPI规范
(.venv) $ iac-scan-runner openapi
# 安装工具依赖组件
(.venv) $ iac-scan-runner install
# 运行IaC Scan Runner REST API
(.venv) $ iac-scan-runner run
源码安装
源码本地运行:
代码语言:javascript复制# 导出环境变量
export MONGODB_CONNECTION_STRING=mongodb://localhost:27017
export SCAN_PERSISTENCE=enabled
export USER_MANAGEMENT=enabled
# 配置MongoDB
$ docker run --name mongodb -p 27017:27017 mongo
# 安装工具依赖组件
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install -r requirements.txt
(.venv) $ ./install-checks.sh
# 运行IaC Scan Runner REST API
(.venv) $ uvicorn src.iac_scan_runner.api:app
一级标题包含的REST API节点
工具使用
常规使用
首先,我们需要使用下列命令将该项目源码克隆至本地,并运行API:
代码语言:javascript复制$ git clone https://github.com/xlab-si/iac-scan-runner.git
$ docker compose up
接下来,我们就可以通过访问localhost:8000来使用不同的API节点了。除此之外,我们还可以导航至localhost:8080/swagger或localhost:8080/redoc并测试所有的API节点。
在下面的例子中,我们将使用curl调用API节点。
1、创建一个名为test的项目:
代码语言:javascript复制curl -X 'POST'
'http://0.0.0.0/project?creator_id=test'
-H 'accept: application/json'
-d ''
此时将返回项目ID给我们,该项目ID为“1e7b2a91-2896-40fd-8d53-83db56088026”。
2、假设我们需要初始化所有测试(但ansible-lint除外):
代码语言:javascript复制curl -X 'PUT'
'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/checks/ansible-lint/disable'
-H 'accept: application/json'
3、项目配置完成后,我们就可以选择需要扫描的文件并压缩,因为IaC Scan Runner的目标工作文件是压缩文档(.zip文件)。响应数据为JSON格式数据,但也可以将其改为HTML:
代码语言:javascript复制curl -X 'POST'
'http://0.0.0.0:8000/projects/1e7b2a91-2896-40fd-8d53-83db56088026/scan?scan_response_type=json'
-H 'accept: application/json'
-H 'Content-Type: multipart/form-data'
-F 'iac=@YOUR.zip;type=application/zip'
命令行使用
首先运行下列命令安装相关的依赖组件:
代码语言:javascript复制$ sudo apt update
$ sudo apt install -y python3-venv python3-wheel python-wheel-common
然后安装并配置IaC Scan Runner CLI:
代码语言:javascript复制$ mkdir ~/iac-scan-runner && cd ~/iac-scan-runner
$ python3 -m venv .venv && . .venv/bin/activate
(.venv) $ pip install --upgrade pip
(.venv) $ pip install iac-scan-runner
可选参数命令如下:
代码语言:javascript复制iac-scan-runner openapi:打印OpenAPI规范;
iac-scan-runner install:安装IaC Scan Runner依赖组件;
iac-scan-runner run:运行IaC Scan Runner REST API;
注意,所有的CLI命令都可以使用-h/--help参数查看帮助选项。
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可证协议。
项目地址
IaC Scan Runner:
https://github.com/xlab-si/iac-scan-runner