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/devsecops-actions)
[](LICENSE)
[](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. **审查**:等待维护者审查并处理反馈
### 提交消息格式
```
():
标签:CI/CD安全, DevSecOps, GitHub Actions, Llama, MITM代理, SBOM生成, Web截图, 上游代理, 仓库管理, 企业级, 依赖管理, 动态应用安全测试, 可重用组件, 合规报告, 基础设施即代码安全, 安全专业人员, 安全扫描, 容器安全, 提交验证, 时序注入, 模板同步, 网络安全研究, 自动化攻击, 自动笔记, 请求拦截, 软件组成分析, 逆向工具, 静态应用安全测试