jenkinsci/secone-security-scanner-plugin
GitHub: jenkinsci/secone-security-scanner-plugin
Sec1 安全扫描器插件,用于在 CI/CD 管道中集成安全扫描,提前发现并修复安全漏洞。
Stars: 1 | Forks: 0
# Sec1 安全扫描器
[](https://sec1.io)
## 简介
将 Sec1 安全扫描集成到您的 CI/CD 管道中,使团队能够在开发生命周期早期识别漏洞和安全问题。
## 使用方法
要使用此插件,您需要按照以下步骤操作:
1. [安装 Sec1 安全插件](#1-install-the-sec1-security-plugin)
2. [配置 Sec1 API 令牌凭据](#2-configure-a-sec1-api-token-credential)
3. [将 Sec1 安全添加到您的项目](#3-add-sec1-security-to-your-project)
## 1. 安装 SEC1 安全扫描器插件
- 前往 "管理 Jenkins" > "系统配置" > "插件".
- 在 "可用插件" 下搜索 "Sec1 安全扫描器".
- 安装插件。
### 自定义端点
默认情况下,Sec1 使用以下端点:
- **API 端点**:`https://api.sec1.io`
- **仪表板端点**:`https://unified.sec1.io`
可以通过设置环境变量来配置自定义端点:
- 前往 "管理 Jenkins" > "系统配置" -> "系统"
- 在 "全局属性" 下检查 "环境变量" 选项
- 点击 "添加"
- 将 `SEC1_INSTANCE_URL` 设置为覆盖 API 端点
- 将 `SEC1_DASHBOARD_URL` 设置为覆盖仪表板端点(用于构建输出中的报告 URL)
## 2. 配置 Sec1 API 令牌凭据
- 前往 "管理 Jenkins" > "安全" > "凭据"
- 选择一个存储库
- 选择一个域
- 前往 "添加凭据"
- 选择 "秘密文本"
- 将 `` 作为 ID 并配置凭据。
- 记住 "ID",因为您在配置构建步骤时需要它。
要获取 `Sec1 Api Key`,请转到 [我的账户](https://account.sec1.io/) > "使用 GitHub 登录" > 点击右上角的个人图标 > "设置"
- 在 "API 密钥" 部分,点击 "生成 API 密钥"
- 复制密钥以供使用。
## 3. 将 Sec1 安全添加到您的项目 此步骤将取决于您是否使用 Freestyle 项目或 Pipeline 项目。 ### Freestyle 项目 - 选择一个项目 - 前往 "配置" - 在 "构建" 下选择 "添加构建步骤" 选择 "执行 Sec1 安全扫描器" - 根据需要配置。点击 "?" 图标以获取有关每个选项的更多信息。📷 显示预览

### Pipeline 项目 将 `sec1Security` 步骤作为管道脚本的一部分使用。您可以使用 "代码片段生成器" 从网页表单生成代码,并将其复制到您的管道中。📷 显示预览

您可以将以下参数传递给您的 `sec1Security` 步骤。 #### `apiCredentialsId` (必需,默认:*无*) Sec1 API 密钥凭据 ID。如 "[2. 配置 Sec1 API 令牌凭据](#2-configure-a-sec1-api-token-credential)" 中配置。 #### `scmUrl` (可选,默认:*自动检测*) 要扫描的 Git 仓库 URL。如果不提供,插件尝试从工作区的 `.git/config` 或 `GIT_URL` 环境变量中检测它。当自动检测失败时(例如,在某些管道配置中)使用此参数。 #### `runSca` (可选,默认:`true`) 是否需要为配置的 git 仓库执行 SCA(软件组成分析)扫描。 #### `runSast` (可选,默认:`true`) 是否需要为配置的 git 仓库执行 SAST(静态应用程序安全测试)扫描。 #### `sastMode` (可选,默认:`api`) SAST 扫描运行的位置。两个值: - `api`(默认)—— Sec1 服务器克隆仓库并运行扫描。现有行为。 - `cli`——扫描在 Jenkins 代理上通过 `sec1-sast` 二进制文件运行,并将报告上传到 Sec1 服务。当 Sec1 服务器无法访问您的仓库时(私有 SCM,断开连接的网络)很有用。 在 CLI 模式下 `asyncScan` 和 `sastIncrementalScan` 被忽略(CLI 同步运行,目前不支持增量扫描)。 #### `sastInstallation` (当 `sastMode: 'cli'` 时必需) Sec1 SAST 安装名称,配置在 **管理 Jenkins → 工具 → Sec1 SAST CLI** 下。每个安装要么指向代理上预安装的 `sec1-sast` 二进制文件,要么在首次使用时使用自动安装器从 sec1.io 下载它。 #### `sastIncrementalScan` (可选,默认:`false`) 以增量模式运行 SAST 扫描。仅分析更改后的代码,对于大型仓库来说更快。需要 Sec1 服务器上存在基线完整扫描。 #### `asyncScan` (可选,默认:`false`) 放任不管模式。插件提交扫描并退出,不等待结果,因此管道在扫描在 Sec1 服务器上完成时继续运行。报告 URL 将打印在构建日志中。 如果 `applyThreshold` 也为 `true`,则插件仍然轮询结果,因为阈值检查需要最终的计数。使用 `asyncScan` 而不使用 `applyThreshold` 以获得真正的放任不管行为。 #### `scanTag` (可选,默认:*分支名称*) 用于识别此扫描的标签。如果不提供,则使用分支名称。如果分支名称也不可用,则默认为 `default`。 #### `applyThreshold` (可选,默认:`false`) 是否需要在构建上应用漏洞阈值。 #### `threshold` (可选,默认:*无*) 每种类型漏洞的阈值值。示例配置: `[criticalThreshold: '0', highThreshold: '10', mediumThreshold: '0', lowThreshold: '0']` 如果扫描报告的漏洞数量超过配置的阈值,则控制台将显示错误,并且构建状态将根据 `actionOnThresholdBreached` 进行修改。 #### `actionOnThresholdBreached` (可选,默认:`fail`) 当漏洞阈值被违反时采取的操作。可能的值:`fail`、`unstable`、`continue` ## 扫描持续时间 插件每 10 秒轮询一次扫描结果,并在 30 分钟后超时。对于持续时间较长的扫描,请设置 `asyncScan: true`(不使用 `applyThreshold`),以便管道在扫描在 Sec1 服务器上完成时继续运行。 ## 在代理上运行 SAST(CLI 模式) 默认情况下,SAST 扫描在 Sec1 服务器上运行。要将其在 Jenkins 代理上运行,请设置 `sastMode: 'cli'` 并配置 Sec1 SAST 安装: 1. 前往 **管理 Jenkins → 工具 → Sec1 SAST CLI 安装**。 2. 点击 **添加 Sec1 SAST CLI** 并给它一个名称(例如 `sec1-sast`)。 3. 或者: - 将 **安装目录** 设置为包含代理上预安装的 `sec1-sast` 二进制文件的目录,或者 - 添加 **从 sec1.io 安装(最新版)** 安装程序。插件在首次使用时下载适合代理平台的正确二进制文件,并将其缓存在 `$JENKINS_HOME/tools/` 下。 4. 在您的作业中,设置 `sastMode: 'cli'` 和 `sastInstallation: 'sec1-sast'`(与上面的名称匹配)。 插件在代理上运行 CLI,将其输出流式传输到构建日志,提取报告 ID,然后轮询 Sec1 服务器以获取最终状态(因此阈值强制仍然尊重服务器端分类,如误报标记)。 ## 故障排除 要查看有关您的步骤的更多信息: - 查看特定构建的 "控制台输出"。 -- Sec1 团队📷 显示示例
``` pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } } stage('Sec1 Security Scan') { steps { script { sec1Security( apiCredentialsId: '', scmUrl: 'https://github.com/your-org/your-repo', runSca: true, runSast: true, sastIncrementalScan: false, asyncScan: false, scanTag: 'my-scan-tag', applyThreshold: true, actionOnThresholdBreached: 'unstable', threshold: [criticalThreshold: '0', highThreshold: '0', mediumThreshold: '0', lowThreshold: '0'] ) } } } stage('Deploy') { steps { echo 'Deploying...' } } } } ```
标签:API密钥, API集成, GPT, Jenkins, JS文件枚举, SAST, XML 请求, 人体姿态估计, 代码安全, 可观测性, 域名枚举, 安全开发, 安全扫描, 安全报告, 安全测试, 安全认证, 开源漏洞, 攻击性安全, 时序注入, 漏洞枚举, 漏洞管理, 环境变量配置, 盲注攻击