kirilurbonas/pipeline-armor

GitHub: kirilurbonas/pipeline-armor

生产级DevSecOps CI/CD安全工作流程模板库

Stars: 0 | Forks: 0

# 管道装甲 [![CI Self-Test](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5560c5b0da070701.svg)](https://github.com/kirilurbonas/pipeline-armor/actions/workflows/ci-self-test.yml) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![SLSA Level 2](https://img.shields.io/badge/SLSA-Level%202-green)](https://slsa.dev/) **生产级可重用 GitHub Actions 工作流程,将安全门嵌入 CI/CD 的每个阶段——SAST、容器扫描、IaC 扫描、秘密检测、依赖审查、SBOM 生成以及统一的部署门。** 将一个文件放入您的仓库中,调用您需要的流程,并更快地交付——因为安全是自动化的——而不是因为安全而延迟。 ## 为什么存在这个 大多数团队在每个仓库中从头开始重新发明 CI/CD 安全。 每个管道都略有不同,扫描器配置不一致,部署门是 bash 的硬币翻转。`pipeline-armor` 是一个有偏见的、包含电池的替代方案: - **可重用工作流程** — 您的仓库获得一个微小的调用文件;繁重的工作在这里完成,版本化和测试。 - **左移** — 秘密、SAST、依赖 CVE 和 IaC 错误配置都在 PR 上运行,而不是在合并后。 - **一个门** — 单一的部署门作业汇总每个扫描,应用环境特定策略,要么将构建传递到您的部署步骤,要么用详细的报告阻止它。 - **一流的 GitHub 集成** — SARIF 上传到安全标签,通过 API 发送 PR 评论,通过环境手动批准。 ## 包含内容 | 工作流程 | 目的 | | --- | --- | | [reusable-sast.yml](.github/workflows/reusable-sast.yml) | Snyk Code + Semgrep 静态分析,带有 SARIF 上传。 | | [reusable-container-scan.yml](.github/workflows/reusable-container-scan.yml) | Trivy 图像 + Dockerfile 配置扫描,CycloneDX SBOM。 | | [reusable-iac-scan.yml](.github/workflows/reusable-iac-scan.yml) | Checkov 用于 Terraform/CloudFormation/Kubernetes/Dockerfile,具有 CIS/SOC2/PCI-DSS 映射。 | | [reusable-secret-scan.yml](.github/workflows/reusable-secret-scan.yml) | Gitleaks + Trufflehog,基线感知,默认仅验证。 | | [reusable-dependency-review.yml](.github/workflows/reusable-dependency-review.yml) | GitHub 原生依赖审查 + Snyk OSS + SPDX 许可证执行。 | | [reusable-deploy-gate.yml](.github/workflows/reusable-deploy-gate.yml) | 汇总每个扫描,应用环境策略,控制部署。 | | [ci-self-test.yml](.github/workflows/ci-self-test.yml) | 在每个 PR 上对整个库进行 Dogfood 测试。 | 在 [scripts/](scripts/) 下的辅助脚本解析 Trivy/Checkov 输出并总结 SBOM。在 [policies/](policies/) 下的策略文件为您的安全团队提供了一个集中管理严重程度阈值和许可证规则的地方。 ## 快速入门 ``` # 在你的应用程序仓库中的 .github/workflows/pipeline.yml name: DevSecOps Pipeline on: push: { branches: [main, develop] } pull_request: { branches: [main] } permissions: contents: read security-events: write pull-requests: write actions: read deployments: write jobs: secret-scan: uses: kirilurbonas/pipeline-armor/.github/workflows/reusable-secret-scan.yml@v1 sast: uses: kirilurbonas/pipeline-armor/.github/workflows/reusable-sast.yml@v1 with: { language: javascript, fail_on_severity: high } secrets: { SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} } dependency-review: uses: kirilurbonas/pipeline-armor/.github/workflows/reusable-dependency-review.yml@v1 secrets: { SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} } container-scan: needs: [secret-scan] uses: kirilurbonas/pipeline-armor/.github/workflows/reusable-container-scan.yml@v1 with: { image_ref: myapp:${{ github.sha }}, enable_sbom: true } deploy-gate: needs: [sast, container-scan, dependency-review, secret-scan] uses: kirilurbonas/pipeline-armor/.github/workflows/reusable-deploy-gate.yml@v1 with: { environment: staging, required_scans: 'sast,container,secrets,dependencies' } ``` 就是这样。请参阅 [docs/getting-started.md](docs/getting-started.md) 了解完整教程。 ## 示例 三个可运行的示例应用程序位于 [examples/](examples/) 下。每个都是完整的、现实世界的消费者管道: - [examples/nodejs-app](examples/nodejs-app) — Express 服务,distroless 图像。 - [examples/python-app](examples/python-app) — FastAPI 服务,slim-bookworm 图像。 - [examples/terraform-infra](examples/terraform-infra) — 坚固的 S3 + KMS 模块。 ## 架构 ``` Developer push / PR │ ▼ ┌─────────────────────┐ │ secret-scan │ ◄── runs first, gates everything else └─────────────────────┘ │ ├──► sast ─┐ ├──► dependency-rev ─┤ ├──► iac-scan ─┤ each writes SARIF + JSON └──► container-scan ─┘ to the Security tab + artifacts │ ▼ ┌──────────────────┐ │ deploy-gate │ │ - aggregates │ │ - applies env │ │ policy │ │ - manual approval│ │ via GitHub │ │ Environments │ └──────────────────┘ │ pass │ fail ▼ your deploy job ``` ## 文档 - [入门](docs/getting-started.md) — 在不到十分钟内将 pipeline-armor 集成到仓库中。 - [配置参考](docs/configuration.md) — 每个工作流程上的每个输入。 - [安全门](docs/security-gates.md) — 分层门模型及其扩展方法。 - [故障排除](docs/troubleshooting.md) — 常见问题和解决方案。 - [策略](policies/) — 严重程度阈值和许可证允许/拒绝列表。 ## 版本和固定 发布遵循 [SemVer](https://semver.org/)。主版本标签(`v1`、`v2`)与最新的次版本号保持更新——对大多数团队来说是安全的。对于供应链关键工作负载,固定到提交 SHA。 ## 贡献 欢迎提交问题和 PR。CI 自测试 (`ci-self-test.yml`) 在每个 PR 上对每个可重用工作流程进行测试,因此更改可以快速被发现。请参阅贡献清单: - [ ] 工作流程 YAML 通过 `actionlint` 和 `yamllint`。 - [ ] 任何新的辅助脚本在 `ci-self-test.yml` 中都有一个烟雾测试。 - [ ] 文档在添加任何新的输入或输出时更新。 - [ ] 示例管道仍然可以干净地解析。 ## 许可证 Apache 2.0 — 请参阅 [LICENSE](LICENSE)。
标签:Apache-2.0, DevSecOps, GitHub Actions, GPT, IaC扫描, SAST, SBOM, SLSA Level 2, XML注入, 上游代理, 人工智能安全, 代码安全, 代码审查, 依赖审查, 可重用组件, 合规性, 安全审核, 安全报告, 安全最佳实践, 安全标签, 安全策略, 安全门, 容器扫描, 工作流模板, 左移安全, 开源框架, 开源许可证, 持续交付, 持续集成, 提示词设计, 漏洞枚举, 漏洞管理, 特权提升, 环境配置, 盲注攻击, 硬件无关, 秘密检测, 自动化部署, 自动笔记, 软件供应链安全, 远程方法调用, 集成测试