MeterianHQ/meterian-scanner-docker

GitHub: MeterianHQ/meterian-scanner-docker

Meterian Scanner 的 Docker 容器化客户端,无需本地安装依赖即可在隔离环境中对项目进行安全漏洞、稳定性和许可证合规三维度自动化扫描。

Stars: 0 | Forks: 1

# Meterian Scanner 容器化(又名 "dockerized client") [![CircleCI](https://circleci.com/gh/MeterianHQ/meterian-scanner-docker/tree/master.svg?style=svg)](https://circleci.com/gh/MeterianHQ/meterian-scanner-docker/tree/master) | [![Meterian Scanner Docker](https://img.shields.io/docker/pulls/meterian/cli.svg)](https://hub.docker.com/r/meterian/cli) 使用作为 Docker 容器的 Meterian Scanner(又名 "dockerized client")来扫描您项目中的漏洞。 您无需安装 Meterian Scanner 客户端运行所需的任何依赖即可执行此操作,并且扫描会在一个隔离的环境中进行,即在 Docker 容器内部。 Meterian Scanner 的 Docker 容器可在 [Docker Hub](http://hub.docker.com) 上的 Docker 组织 [meterian](https://hub.docker.com/u/meterian) 下找到,名称为 [meterian/cli](https://hub.docker.com/r/meterian/cli)。 ## 如何使用 dockerized client - 就像运行以下命令一样简单: ``` PWD=$(pwd) docker run -it --rm \ --volume ${PWD}:/workspace \ --env METERIAN_API_TOKEN="${METERIAN_API_TOKEN}" \ meterian/cli:latest ``` - 设置一个名为 `METERIAN_API_TOKEN` 的环境变量,包含您的 Meterian API 密钥 token: - 在 https://www.meterian.com 上创建一个账户或登录您的账户 - 从仪表板创建一个新的 API 密钥 token - 在启动文件(`~/.bashrc`)中创建一个名为 `METERIAN_API_TOKEN` 的环境变量并包含此 token,然后执行它以使更改生效(`source ~/.bashrc`) - 这是一次性设置 - 进入您想要扫描的项目所在的文件夹 - 运行上述 docker 命令 #### 指向其他位置的项目 ``` WORK_DIR=~/your-project-dir docker run -it --rm \ --volume ${WORK_DIR}:/workspace \ --env METERIAN_API_TOKEN="${METERIAN_API_TOKEN}" \ meterian/cli:latest ``` #### 使用便捷脚本 如果您不想显式运行 docker,可以使用便捷脚本 [`meterian-docker`](scripts/meterian-docker) 通过 docker 容器执行项目扫描。在项目文件夹中按如下操作执行 ``` meterian-docker ``` 或者,您可以设置环境变量 `METERIAN_WORKDIR` 以从外部指定项目文件夹路径 ``` export METERIAN_WORKDIR=/project-folder meterian-docker ``` 该脚本的一个特殊版本未使用交互模式,可供 CI/CD 使用,请参阅 [`meterian-docker-ci`](scripts/meterian-docker-ci)。 ##### 脚本选项 | 选项 | 描述 | |--------|-------------| | --unbound | 避免将标准库缓存文件夹绑定到 docker 容器中 | | --image:<您选择的 image tag> | 允许使用 `meterian/cli` 镜像的[特定 tag](https://hub.docker.com/r/meterian/cli/tags)(默认 tag 是:latest)
例如,使用 `--image:latest-python` 将指示脚本使用 `latest-python` tag | ##### 脚本环境变量 | 环境变量 | 描述 | |-----------------------|-------------| | METERIAN_WORKDIR | 允许直接通过环境变量设置用于扫描的项目文件夹。未设置时,当前文件夹将被视为项目文件夹 | | CLIENT_AUTO_UPDATE | 允许启用或禁用执行扫描前 Meterian 客户端的自动更新。
`export CLIENT_AUTO_UPDATE=true`
`export CLIENT_AUTO_UPDATE=false`
未设置时,默认启用自动更新操作 | ##### 已知问题 在某些情况下,使用便捷脚本扫描 Swift 项目会导致以下失败 ``` Swift scan - running pod 1.10.1 locally... - swift: pod dependencies generation failed!... Execution was unsuccessful: Pod install failed - exit code: 1 Please make sure your build is working correctly, Uploading dependencies information - 0 found... Done! Overall execution was unsuccessful: Pod install failed - exit code: 1 Please make sure the project is building correctly ``` 这是由于 `pod` 中的[内部问题](https://github.com/segiddins/atomos/issues/7)导致的。 要在继续使用 `meterian-docker` 脚本的同时解决此问题,只需注释掉以下[这行](scripts/meterian-docker#L83) ``` # docker_run_data="${docker_run_data} --mount type=bind,source=/tmp,target=/tmp " ``` 如果出于任何原因您在扫描 Python 项目时遇到问题,请考虑使用我们专门针对 Python 的镜像 `meterian/cli:latest-python`。 主镜像基于 Alpine Linux,它不使用 Python 等 C 程序所需的 GNU 版本标准 C 库,因此根据您项目 libc 依赖的深度,您经常会遇到问题。 使用便捷脚本时,只需传入 `--image:latest-python` 标志即可使用专用的 Python 镜像。 ### CircleCI 入口点脚本 使用 `circleci_entrypoint.sh` 脚本辅助需要通过 SSH 从 CircleCI 工作流下载非公开依赖的扫描。可以在[这里](https://docs.meterian.io/ci-server-integrations/circle-ci#docker-executor)找到一个示例。 ### 故障排除 新安装的 Docker 实例可能一开始无法运行镜像,请通过运行以下命令确保您可以以非 root 用户身份运行 Docker ``` sudo setfacl --modify user::rw /var/run/docker.sock ``` ### 在项目上运行 docker 容器后的输出示例 #### 成功执行:
点击查看 ``` © 2017-2020 Meterian Ltd - dockerized version 1.0.0.000 Meterian Client v1.2.7.4, build 7a87b89-307 All rights reserved - running locally: yes - interactive mode: on - minimum security: 90 - minimum stability: 80 - working on folder: /workspace - autofix mode: off Checking folder... Folder /workspace contains a viable project! Authorizing the client... Client successfully authorized Loading build status... No build running found! Requesting build... Build allowed Project information: - url: tmp - branch: head - commit: n/a Java scan - running gradle locally... - gradle: gradle dependencies generated... Execution successful! Uploading dependencies information - 1 found... Done! Starting build... Current build status: in preparation Current build status: process advices at 2020-02-05T11:48:46.802 Final results: - security: 100 (minimum: 90) - stability: 100 (minimum: 80) - licensing: 100 (minimum: 95) Full report available at: https://www.meterian.com/projects.html?pid=... Build successful! ```
#### 失败执行
点击查看 ``` © 2017-2020 Meterian Ltd - dockerized version 1.0.0.000 Meterian Client v1.2.7.4, build 7a87b89-307 All rights reserved - running locally: yes - interactive mode: on - minimum security: 90 - minimum stability: 80 - working on folder: /workspace - autofix mode: off Checking folder... Folder /workspace contains a viable project! Authorizing the client... Client successfully authorized Loading build status... No build running found! Requesting build... Build allowed Project information: - url: tmp - branch: 1.0 - commit: n/a Java scan - running maven locally... - maven: loading dependency tree... - maven: dependencies generated... Execution successful! Uploading dependencies information - 5 found... Done! Starting build... Current build status: in preparation Current build status: process advices at 2020-02-05T13:46:58.335 Final results: - security: 35 (minimum: 90) - stability: 99 (minimum: 80) - licensing: 0 (minimum: 95) Full report available at: https://www.meterian.com/projects.html?pid=... Build unsuccessful! Failed checks: [security, licensing] ```
上述执行的退出码分别为 `0` 和 `5`。可以通过在执行后立即在终端中输出退出码(`echo $?`)来验证这些代码,它们反映了 [PDF 手册](https://www.meterian.com/documents/meterian-cli-manual.pdf)中记录的正确 Meterian 客户端退出码: ## dockerized scanner 的其他可用选项 dockerized client 接受所有 `[Meterain CLI Options]`。 您可以在 [Meterian 文档](https://docs.meterian.io/)中了解更多关于这些选项的信息,或者通过[下载客户端](https://www.meterian.com/downloads/meterian-cli.jar)并运行 `java -jar meterian-cli.jar --help` 来查看。
标签:API Token, Cutter, DevSecOps, Docker, Docker Hub, JS文件枚举, Meterian Scanner, NIDS, StruQ, URL发现, 上游代理, 后台面板检测, 安全检测, 安全防御评估, 容器化, 开源框架, 持续集成, 搜索语句(dork), 文档安全, 请求拦截, 逆向工具, 隔离环境, 静态安全测试