ministryofjustice/devsecops-actions

GitHub: ministryofjustice/devsecops-actions

一个用于在GitHub Actions中标准化DevSecOps安全扫描的可复用操作集合。

Stars: 12 | Forks: 2

# 🔐 DevSecOps 操作 企业级可复用 GitHub Actions 安全自动化解决方案 [![司法部仓库合规徽章](https://github-community.service.justice.gov.uk/repository-standards/api/devsecops-actions/badge)](https://github-community.service.justice.gov.uk/repository-standards/devsecops-actions) [![MIT 许可证](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![OpenSSF 记分卡](https://api.scorecard.dev/projects/github.com/ministryofjustice/devsecops-actions/badge)](https://scorecard.dev/viewer/?uri=github.com/ministryofjustice/devsecops-actions) ## 概述 一套全面的生产就绪、企业级 GitHub Actions 集合,用于在软件开发生命周期中标准化和自动化 DevSecOps 安全实践。该套件提供一流的扫描、依赖项管理、模板同步和合规报告功能。 **核心能力:** - **软件成分分析** - 多工具依赖项漏洞检测 - **密钥扫描** - 双引擎凭据暴露预防 - **静态应用安全测试与代码分析** - 语义安全漏洞检测 - **模板同步** - 自动化 Cookiecutter/Cruft 更新 - **SBOM 生成** - 用于供应链透明的软件物料清单 - **仓库管理** - 不活跃仓库检测与归档工作流 - **提交验证** - 签名验证与规范提交强制执行 - **合规报告** - 安全态势评估与审计追踪 ## 📋 目录 ## 🏗️ 架构 ### 关键架构概念 1. **复合操作**:专用目录中的可复用复合操作提供模块化功能 2. **显式权限**:工作流必须遵循最小权限原则显式声明所有必需权限 3. **版本固定**:使用 `@vx.x.x` 获取最新更新,或使用 `@` 以获得最大稳定性 4. **集中维护**:由司法部 OCTO 网络安全团队开发和管理 5. **零配置**:提供合理的默认设置,并可通过配置文件进行可选定制 ## 🚀 可用操作 ### 🔍 SCA - 软件成分分析 **路径**:`ministryofjustice/devsecops-actions/sca` 企业级复合操作,用于全面的软件成分分析、依赖项管理和整个软件供应链的安全审查。 #### 简介 协调 9 个专业安全步骤: 1. **📦 仓库检出** - 安全代码检索 2. **📊 依赖项审查** - PR 漏洞扫描 3. **🔎 OWASP Dependency-Check** - CVE 检测(CVSS ≥7.0 则失败) 4. **🔁 Renovate** - 自动化依赖项更新 5. **🔑 MOJ 密钥扫描器** - 自定义密钥模式 6. **🐷 TruffleHog** - 基于熵的密钥检测(700+ 检测器) 7. **⚙️ CodeQL** - 静态应用安全测试语义分析(包含 SLSA/Safe-Chain) 8. **🛡️ OpenSSF 记分卡** - 安全态势(18+ 项检查) 9. **📋 SBOM 生成器** - 符合 CycloneDX 的物料清单 #### 代码 ``` - uses: ministryofjustice/devsecops-actions/sca@9af7935ef39312305084f720326ffb0e6779b1d8 # v1.5.0 with: token: ${{ secrets.GITHUB_TOKEN }} ``` #### 功能 - ✅ **零配置** - 开箱即用 - ✅ **多语言支持** - JavaScript, Python, Java, .NET, Go, Ruby, Swift, Kotlin, C/C++ - ✅ **容器扫描** - Docker 镜像 SBOM 生成 - ✅ **GitHub 集成** - 结果显示在安全选项卡中 - ✅ **合规就绪** - 符合 NTIA SBOM 和 EO 14028 **[📖 完整 SCA 文档](sca/README.md)** ### 🚀 Cruft - 模板同步 **路径**:`ministryofjustice/devsecops-actions/cruft` 自动化模板同步操作,用于维护从 Cookiecutter/Cruft 模板创建的仓库与其上游源之间的一致性。 #### 简介 协调 4 个专业组件: 1. **⚒️ 安装** - Python 环境和 Cruft 设置 2. **🔑 认证** - 用于私有模板的 HTTPS 令牌认证 3. **🔎 检查** - 模板更新检测和可用性检查 4. **✏️ 创建** - 使用模板更新创建拉取请求 #### 代码 **公共模板:** ``` - uses: ministryofjustice/devsecops-actions/cruft@9af7935ef39312305084f720326ffb0e6779b1d8 # v1.5.0 with: token: ${{ secrets.GITHUB_TOKEN }} ``` **私有模板:** ``` - uses: ministryofjustice/devsecops-actions/cruft@9af7935ef39312305084f720326ffb0e6779b1d8 # v1.5.0 with: private: "true" github-app-id: ${{ secrets.CRUFT_APP_ID }} github-app-private-key: ${{ secrets.CRUFT_APP_PRIVATE_KEY }} github-app-owner: "${{ github.repository_owner }}" github-app-repositories: "${{ github.event.repository.name }},template-repository" ``` #### 功能 - ✅ **自动同步** - 检测上游模板变更 - ✅ **PR 自动化** - 自动创建拉取请求 - ✅ **私有支持** - 通过 HTTPS 令牌认证支持私有仓库 - ✅ **GitHub App 集成** - 通过 GitHub App 进行验证提交 - ✅ **智能命名** - 基于日期的分支命名 **[📖 完整 Cruft 文档](cruft/README.md)** ### 🔎 GitHub - 仓库管理 **路径**:`ministryofjustice/devsecops-actions/github` 仓库健康监控、生命周期管理和提交验证操作,用于自动化治理、合规和质量工作流。 #### 可用 GitHub Actions 1. **📦 仓库归档检查** - 识别适合归档的不活跃仓库 2. **🔐 提交验证** - 强制执行提交签名和规范提交消息 #### 📦 仓库归档检查 **路径**:`ministryofjustice/devsecops-actions/github/repository/archive` 自动化仓库健康监控,扫描提交历史以识别不活跃仓库。 **主要功能:** - ✅ **可配置阈值** - 自定义不活跃时间段 - ✅ **邮件通知** - 集成 GOV.UK Notify - ✅ **提交分析** - 深入扫描仓库活动 - ✅ **非破坏性** - 仅分析,不自动归档 - ✅ **审计追踪** - 完整的检查日志 **代码:** ``` - uses: ministryofjustice/devsecops-actions/github/repository/archive@9af7935ef39312305084f720326ffb0e6779b1d8 # v1.5.0 with: token: ${{ secrets.GITHUB_TOKEN }} notification-email: "team@example.gov.uk" gov-notify-key: ${{ secrets.GOV_NOTIFY_API_KEY }} gov-notify-template-id: ${{ secrets.GOV_NOTIFY_TEMPLATE_ID }} ``` **[📖 完整归档检查文档](github/repository/archive/README.md)** #### 🔐 提交验证 **路径**:`ministryofjustice/devsecops-actions/github/commit` 全面的提交验证,根据安全和质量标准验证 Git 提交。 **主要功能:** - ✅ **签名验证** - 确保提交经过密码学签名(GPG/SSH) - ✅ **规范提交** - 强制执行标准化的提交消息格式 - ✅ **零配置** - 使用合理的默认设置即可工作 - ✅ **可定制** - 支持自定义 commitlint 配置 - ✅ **快速验证** - 轻量级验证流程 **代码:** ``` - uses: ministryofjustice/devsecops-actions/github/commit@9af7935ef39312305084f720326ffb0e6779b1d8 # v1.5.0 ``` **[📖 完整提交验证文档](github/commit/README.md)** ## 🛠️ 开发 ### 前置条件 | 工具 | 版本 | 用途 | | -------- | ----- | ---------------------------------- | | Node.js | 24.x | 验证脚本运行时 | | npm | 10.x | 包管理 | | Docker | 24.x+ | 基于容器的安全扫描 | | Git | 2.40+ | 版本控制 | ### 本地开发设置 ``` # 克隆仓库 git clone https://github.com/ministryofjustice/devsecops-actions.git cd devsecops-actions # 安装依赖 npm install # 运行所有验证检查 npm run validate:all # 运行单个验证 npm run lint:ts # ESLint checks npm run validate:ts # TypeScript type checking npm run validate:yml # YAML linting npm run validate:md # Markdown linting npm run validate:renovate # Renovate config validation npm run spellcheck # Spell checking ``` ### 质量保证 ``` # 运行全面维护 npm run housekeeping # 更新所有依赖并验证 npm update && npm run validate:all # 运行安全审计 npm audit # 检查过时的软件包 npm outdated ``` ### 本地测试操作 ``` # 测试单个 SCA 组件 cd sca/ # 验证 YAML 语法 npm run validate:yml # 使用 act (GitHub Actions 本地运行器) 进行测试 brew install act act -W .github/workflows/sca.yml --container-architecture linux/amd64 -s GITHUB_TOKEN= ``` ## 🤝 贡献 我们欢迎社区的贡献!无论是错误修复、功能添加、文档改进还是安全增强,您的输入都非常有价值。 ### 贡献指南 1. **Fork 并克隆**:Fork 仓库并在本地克隆 2. **创建分支**:创建一个功能分支(`git checkout -b feature/amazing-feature`) 3. **预提交钩子**:安装 MoJ [预提交钩子](https://github.com/ministryofjustice/devsecops-hooks) 以进行自动验证 4. **规范提交**:遵循 [Conventional Commits](https://www.conventionalcommits.org/) 以自动生成变更日志 git commit -m "feat: add new secret detection pattern" git commit -m "fix: resolve CodeQL configuration issue" git commit -m "docs: update SBOM usage examples" 5. **测试**:确保所有验证检查通过 npm run validate:all npm run spellcheck 6. **拉取请求**:提交包含清晰变更描述的 PR 7. **审查**:等待维护者审查并处理反馈 ### 提交消息格式 ``` ():
``` **类型:** - `feat`: 新功能 - `fix`: 错误修复 - `docs`: 文档变更 - `refactor`: 代码重构 - `perf`: 性能改进 - `test`: 添加或更新测试 - `chore`: 维护任务 - `ci`: CI/CD 变更 **示例:** ``` feat(sca): add support for custom SBOM formats fix(codeql): resolve timeout issue for large repositories docs(readme): add enterprise configuration examples chore(deps): update renovate to v43.31.1 ``` ### 开发工作流 1. **开一个问题**:对于重大变更,先开一个问题进行讨论 2. **获取反馈**:在进行重要工作前等待维护者反馈 3. **实施**:按照我们的编码标准进行修改 4. **文档**:为任何面向用户的更改更新文档 5. **测试**:确保所有检查通过 6. **提交**:创建包含详细描述的拉取请求 ### 代码审查流程 - 所有 PR 需要至少一位维护者批准 - 自动检查必须通过(YAML 验证、代码检查、拼写检查) - 安全扫描必须通过且不引入新漏洞 - 功能变更必须更新文档 ## 📄 许可证 本项目采用 **MIT 许可证** - 详见 [LICENSE](LICENSE) 文件了解完整详情。 ## 📞 支持 ### 获取帮助 - **📖 文档**:查阅此 README 和内联操作文档 - **🐛 错误报告**:[GitHub Issues](https://github.com/ministryofjustice/devsecops-actions/issues) - **✨ 功能请求**:[GitHub Issues](https://github.com/ministryofjustice/devsecops-actions/issues) - **🔒 安全问题**:参见 [Security](https://github.com/ministryofjustice/devsecops-actions?tab=security-ov-file) 了解负责任的披露 ### 问题模板 报告问题时,请使用相应的模板: - 🐛 **错误报告**:用于可重现的操作问题 - 💡 **功能请求**:用于新功能或增强 - 📖 **文档**:用于文档改进或更正 - 🔒 **安全**:用于安全漏洞(使用私密报告) ### 响应时间 - **关键安全问题**:24 小时内 - **错误**:3-5 个工作日内 - **功能请求**:1-2 周内 - **文档**:1 周内 ### 社区 - **维护者**:司法部 OCTO 网络安全团队 - **积极开发**:✅ 积极维护 - **支持**:社区驱动,由 MoJ 维护者监督 ## 📊 项目统计 ![GitHub stars](https://img.shields.io/github/stars/ministryofjustice/devsecops-actions?style=social) ![GitHub forks](https://img.shields.io/github/forks/ministryofjustice/devsecops-actions?style=social) ![GitHub watchers](https://img.shields.io/github/watchers/ministryofjustice/devsecops-actions?style=social) ![GitHub last commit](https://img.shields.io/github/last-commit/ministryofjustice/devsecops-actions) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/ministryofjustice/devsecops-actions) ![GitHub contributors](https://img.shields.io/github/contributors/ministryofjustice/devsecops-actions) 由英国司法部 - OCTO 网络安全团队用 ❤️ 制作
标签:CI/CD安全, DevSecOps, GitHub Actions, Llama, MITM代理, SBOM生成, Web截图, 上游代理, 仓库管理, 企业级, 依赖管理, 动态应用安全测试, 可重用组件, 合规报告, 基础设施即代码安全, 安全专业人员, 安全扫描, 容器安全, 提交验证, 时序注入, 模板同步, 网络安全研究, 自动化攻击, 自动笔记, 请求拦截, 软件组成分析, 逆向工具, 静态应用安全测试