garretpatten/security-guardrails

GitHub: garretpatten/security-guardrails

一套可复用的 GitHub Actions 安全门禁工作流,为拉取请求提供 SAST、密钥检测和供应链合规检查。

Stars: 1 | Forks: 0

Security Guardrails shield logo

Security Guardrails

用于拉取请求的高信号、可复用 GitHub Actions 安全门禁。

OpenGrep SAST,仅限已验证的 TruffleHog 密钥,依赖审查,Trivy 漏洞与许可证审计,以及 CycloneDX SBOM 构件 — 经过调优以实现 低噪声且具可操作性的结果。

License: MIT SAST: OpenGrep Secrets: TruffleHog verified only Supply chain: Trivy and CycloneDX SBOM

Test workflow status Quality checks workflow status

✓ PR 范围内的 SAST   ✓ 仅限已验证密钥   ✓ CRITICAL/HIGH CVE   ✓ Copyleft 许可证防护   ✓ CycloneDX SBOM 构件

## 概述 **Security Guardrails** 是一个[可复用的 GitHub Actions 工作流](https://docs.github.com/en/actions/using-workflows/reusing-workflows), 运行在使用者仓库的拉取请求中。它专注于**变更的 文件和依赖项**,展示**高置信度的结果**,并 为下游工具上传机器可读的结果(JSON / CycloneDX)。 | 任务 | 工具 | 识别内容 | | ------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | | **OpenGrep – SAST** | [OpenGrep](https://opengrep.dev/) | PR diff 中的 ERROR 级别安全模式(`p/security-audit`, `p/owasp-top-ten`) | | **TruffleHog – 密钥** | [TruffleHog](https://github.com/trufflesecurity/trufflehog) | 仅限**已验证的**凭证(`--results=verified`),JSON 输出 | | **供应链** | Dependency Review + [Trivy](https://github.com/aquasecurity/trivy) | 新的易受攻击依赖、CRITICAL/HIGH CVE、禁用的 Copyleft 许可证、CycloneDX SBOM | ## 快速开始 在你的仓库中添加一个工作流(例如 `.github/workflows/security-guardrails.yaml`): ``` name: 'Security Guardrails' on: pull_request jobs: security-guardrails: uses: garretpatten/security-guardrails/.github/workflows/security-guardrails.yaml@master with: opengrep_run: true trufflehog_run: true supply_chain_run: true secrets: inherit ``` 为了进行供应链控制,请**固定 commit SHA** 来代替 `@master`: ``` uses: garretpatten/security-guardrails/.github/workflows/security-guardrails.yaml@ ``` ## 工作流输入 | 输入 | 类型 | 默认值 | 描述 | | ------------------ | ------- | --------------- | ------------------------------------------------ | | `opengrep_run` | boolean | `true` | 对变更的文件运行 OpenGrep 静态分析 | | `trufflehog_run` | boolean | `true` | 对 PR diff 运行 TruffleHog 密钥扫描 | | `supply_chain_run` | boolean | `true` | Dependency Review,Trivy 漏洞/许可证扫描,SBOM | | `opengrep_version` | string | `v1.22.0` | 固定的 OpenGrep 发布标签 | | `trivy_severity` | string | `CRITICAL,HIGH` | Trivy 最小漏洞严重级别 | Dependabot PR 会被自动跳过。 ## 扫描器 ### OpenGrep (SAST) [OpenGrep](https://github.com/opengrep/opengrep) 是 Semgrep CE 的一个开源分支,具有兼容的规则和 SARIF/JSON 输出。该工作流: - 通过官方安装脚本安装**固定的发布版本** - 仅扫描**在 PR 中变更的文件** - 使用规则集 `p/security-audit` 和 `p/owasp-top-ten` - 仅在出现 **`ERROR` 严重级别**结果时失败,以减少噪声 - 将 `opengrep-results.json` 作为工作流构件上传 ### TruffleHog (密钥) - 扫描 PR diff(`base` → `HEAD`) - **`--results=verified`** — 仅限由提供商 API 确认处于活跃状态的密钥 - **`--json`** — 作为构件上传的结构化输出 - 遵循使用者仓库中的 **`.truffleignore`** ### 供应链 1. **GitHub Dependency Review** — 阻止引入带有 **高严重性**安全通告或**禁用许可证**(GPL、AGPL、SSPL、 BUSL 及相关标识)依赖的 PR。 2. **Trivy filesystem 扫描** — lockfile/manifest 中的 CRITICAL/HIGH CVE; **`ignore-unfixed: true`** 避免在遇到没有补丁的问题时失败。 3. **Trivy 许可证审计** — 通过完整的许可证文本匹配,标记 **HIGH 严重性(禁用的/copyleft)** 许可证。 4. **CycloneDX SBOM** — 每次 PR 上传 `sbom.cyclonedx.json`,用于审计和 合规流水线。 在你的仓库中添加一个 **`.trivyignore`** 以排除路径(参见本仓库的 示例)。 ## 迁移 ### 从 `security-checks` 重命名 该项目被重命名为 **Security Guardrails**(`security-guardrails`)。请更新 使用者工作流: ``` # 之前 uses: garretpatten/security-checks/.github/workflows/security-checks.yaml@master # 之后 uses: garretpatten/security-guardrails/.github/workflows/security-guardrails.yaml@master ``` ### 从 Semgrep **`semgrep_run`** 输入已被替换为 **`opengrep_run`**。OpenGrep 使用 相同的 registry 规则集,对于 Semgrep CE 扫描来说,是一次直接的引擎替换。 ``` # 之前 with: semgrep_run: true # 之后 with: opengrep_run: true supply_chain_run: true # disable if you only want SAST + secrets ``` ## 理念:高信号,低噪声 | 选择 | 理由 | | ------------------------------ | --------------------------------------------------------- | | 仅限 ERROR 的 OpenGrep | 警告通常反映代码风格或较低置信度的模式 | | 仅限已验证的 TruffleHog | 未验证的熵匹配会导致警报疲劳 | | CRITICAL/HIGH + ignore-unfixed | 专注于可利用、可修补的 CVE | | 禁用的许可证列表 | 在新依赖中揭示 copyleft / 商业风险许可证 | | PR 范围内的 SAST | 更快的反馈;与审查中的代码保持一致 | ## 维护者 [@garretpatten](https://github.com/garretpatten/) 请使用 [问题模板](./.github/ISSUE_TEMPLATE/) 反馈 Bug 和提出增强建议。 ## 许可证 该项目基于 [MIT License](./LICENSE) 授权。
标签:GitHub Actions, LLM防护, StruQ, 代码安全, 漏洞枚举, 自动笔记, 静态应用安全测试