TrustSource/ts-scan
GitHub: TrustSource/ts-scan
ts-scan 是一款命令行工具,用于扫描多生态软件依赖、生成与分析 SBOM,并执行漏洞和许可证合规性检查。
Stars: 7 | Forks: 3
 [](https://scorecard.dev/viewer/?uri=github.com/TrustSource/ts-scan) 
# TrustSource Scanner
**ts-scan** 扫描器是一款功能强大的命令行工具,专为扫描软件包依赖项、生成软件物料清单 (SBOM) 文件以及分析现有 SBOM 以获取安全性和合规性洞察而设计。它支持多种 SBOM 格式,包括 SPDX 和 CycloneDX,允许用户将其无缝集成到软件供应链工作流中。
## 描述
**ts-scan** 扫描项目的依赖项,并使用其内部格式或受支持的 SBOM 格式之一(SPDX 或 CycloneDX)存储结果。它目前支持 **PyPI**、**Maven**、**NuGet** 和 **NPM**,但也可以利用 [Syft](https://github.com/anchore/syft) 作为后端,从而扫描 Docker 容器。
收集依赖项后,**ts-scan** 可用于将结果上传到 [TrustSource](https://www.trustsource.io) 应用程序,通过识别已知漏洞对组件进行安全分析,或者对每个软件包进行深入分析。深入分析的目标是提取许可证和版权信息、检测加密算法、识别代码片段,或通过应用其自身的分析器或集成 [scancode-toolkit](https://github.com/aboutcode-org/scancode-toolkit)、[SCANOSS](https://www.scanoss.com) 和 [YARA](https://virustotal.github.io/yara/) 等外部工具来检测恶意软件。
**ts-scan** 可以无缝集成到 CI/CD 管道中,从而实现持续的自动化安全和合规性检查。可以将其配置为在检测到漏洞或法律问题时中断构建,从而在开发过程的早期确保合规性。此外,它还可以与开发人员机器上的 SCM 钩子一起用于预提交检查,或者在发布构建期间远程执行长时间的深入分析。
## 安装
**ts-scan** 以 *PyPI* 软件包的形式提供。要安装它,您需要安装较新版本的 *Python (>= 3.10)* 和 *pip (>=22.0)*。通常 *pip* 已包含在您的 *Python* 发行版中,但如果没有,请遵循 pip 的[安装说明](https://pip.pypa.io/en/stable/installing/)。
### 从 PyPI 仓库安装
```
pip install ts-scan
```
### 从本地文件夹安装
```
git clone https://github.com/trustsource/ts-scan.git
cd
pip install ./ --process-dependency-links
```
### 作为 Docker 镜像安装
在某些情况下,您可能希望在 Docker 容器内提供 **ts-scan**,例如为了防止版本冲突引起的问题。
#### 构建包含 ts-scan 的 Docker 镜像 (x86-64)
```
cd
docker build -t ts-scan .
```
#### 构建包含 ts-scan 的 Docker 镜像 (ARM)
```
cd
docker buildx build --platform linux/amd64 -t ts-scan .
```
原因是,加密扫描器 pyminr 可能无法在 ARM 芯片上安装。
#### 从 Docker 镜像使用 ts-scan 进行扫描
```
docker run -it --rm -v :/project trustsource/ts-scan scan -o /project/scan.json /project
```
## 使用方法
**ts-scan** 的功能根据预期目标分为一组命令。以下命令可用:
| 命令 | 描述 |
|-----------------------|---------------------------------------------------------------------------|
| [init](#init) | 初始化一个 TrustSource 项目 |
| [scan](#scan) | 扫描软件包依赖项 |
| [analyse](#analyse) | 对扫描或 SBOM 文件执行深入分析 |
| [check](#check) | 检查软件包是否存在法律问题和漏洞 |
| [upload](#upload) | 将扫描和分析结果上传到 TrustSource 应用程序 |
| [import](#import) | 将 SPDX 和 CycloneDX 文件直接导入 TrustSource 应用程序 |
| [convert](#convert) | 在支持的格式 (TS, SPDX, CycloneDX) 之间转换 SBOM
要显示所有可用命令的列表,请使用:
```
ts-scan --help
```
要获取有关特定命令的详细信息,请使用:
```
ts-scan --help
```
## 用户设置
首次执行 **ts-scan** 时,会在主目录 **$HOME/.ts-scan/config** 中创建一个用户设置文件。它包含一个空的 ```[default]``` 配置文件。
用户设置文件可用于存储传递给 **ts-scan** 的任何选项。选项组可以分组到配置文件中。
用户设置文件的一个示例是:
```
[default]
api_key=""
[dev]
api_key=""
project_name="TrustSource default Project in the Dev account"
```
该格式是一个字典,以 snake-case 格式的选项名称作为键,以值作为值。例如,如果项目名称的 **ts-scan** 选项是 ```--project-name```,则用户设置文件中的相应键是 ```project_name```。
执行 **ts-scan** 时,```default``` 配置文件中的所有选项都会作为命令行选项的默认值加载。如果在命令行上显式传递了一个选项,它将覆盖默认值。
要选择配置文件,请使用 ```-p\--profile``` 选项。例如,要使用 ```dev``` 配置文件,请使用:
```
ts-scan -p dev upload MyScan.json
```
在这种情况下,**ts-scan** 将使用 ```dev``` 配置文件中的 ```api_key``` 和 ```project_name``` 进行上传。
## Init
**init** 命令初始化一个 TrustSource 项目。它在提供的目录中创建一个配置文件,该文件可用于存储项目名称和 API 密钥以供将来使用。这对开发人员特别有用,因为您可能希望避免在每次上传新扫描时都将 API 密钥和项目名称作为命令行参数传递。
要初始化项目,请使用:
```
ts-scan init --project-name --api-key
```
这两个参数都是可选的,例如,可以只在项目中存储项目名称,而将 API 密钥存储在[用户设置文件](#user-settings)中。
**注意**:项目设置会覆盖用户设置文件,而显式传递的命令行选项会覆盖项目设置。例如,如果在命令行上传递了 API 密钥,它将覆盖存储在项目设置文件中的 API 密钥。
## Scan
**scan** 命令在您的项目中搜索软件包依赖项。
通过提供项目目录或项目文件的路径——取决于包管理器是基于文件的(例如 .NET 解决方案、Maven)还是基于目录的(例如 NPM、Gradle)——ts-scan 会自动检测受支持的软件包管理系统并提取完整的依赖树。扫描结果可以使用内部 TS 格式或受支持的 SBOM 格式之一(SPDX 或 CycloneDX)保存到文件中。
要执行扫描并将结果存储到文件中,请使用:
```
ts-scan scan -o [-f
标签:Cilium, CycloneDX, DevSecOps, Docker扫描, LNA, Maven, NPM, NuGet, PyPI, Python, SBOM生成, SPDX, Web截图, YARA, 上游代理, 云安全监控, 云资产可视化, 容器安全, 数据集, 文档安全, 无后门, 漏洞验证, 自定义DNS解析器, 许可证分析, 请求拦截, 逆向工具, 静态分析