erp-mafia/compliancemaxx
GitHub: erp-mafia/compliancemaxx
多框架合规编排工具,通过单个 GitHub Action 同时运行五种合规审计框架并跨框架去重映射,解决重复合规检查的效率痛点。
Stars: 4 | Forks: 0
# compliancemaxx
[](https://github.com/erp-mafia/compliancemaxx/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/compliancemaxx)
[](LICENSE)
**用于 repos 和 CI/CD 的多框架合规编排器。** 一个工具运行五个
审计视角 — **OSS 许可**、**OWASP ASVS v5**、**ISO 27001:2022**、**SOC 2**、
**GDPR** — 并在各个框架之间对发现进行去重,因此你不会看到同一个 AWS 密钥
泄露被报告四次。
## 快速入门 — 30 秒
将以下内容放入 `.github/workflows/compliance.yml`:
```
name: compliance
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
jobs:
compliance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: erp-mafia/compliancemaxx@v2
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: eu-north-1
```
打开一个 PR。在 90 秒内,你会收到一条带有详尽合规
发现(涵盖所有五个框架)的置顶评论。无需选择 `mode:`,无需配置文件,无需
Docker。默认的 `review` 模式会读取 PR diff,将其与捆绑的技能知识一起发送给 Claude,
并发布结构化的发现。
想要原生扫描器(Trivy/Semgrep/Checkov/Gitleaks)吗?添加 `mode: audit`
以同时运行它们。只想要扫描器(无 LLM 开销)?选择 `mode: scan`。
## 三种模式
| 模式 | 速度 | 成本 | LLM | Docker 扫描器 | 输出 |
|---|---|---|---|---|---|
| `review` (默认) | ~90秒 | ~$0.05 | ✅ | ❌ | 置顶 PR 评论 + JSON 评估报告 |
| `scan` | <5分钟 | $0 | ❌ | ✅ | + 变更行上的 SARIF 注解 |
| `audit` | ~10分钟 | ~$0.20 | ✅ | ✅ | 完整报告;适合夜间定时任务 |
## 你会看到什么
一个只标记一次但映射到其违反的每个框架的发现:
```
{
"framework": "asvs",
"control_ref": "V13.3",
"severity": "critical",
"location": { "file": "src/secret.ts", "line": 12 },
"message": "AWS access key in source",
"cross_framework": [
{ "tag": "soc-2", "control": "CC6.1" },
{ "tag": "iso-27001", "control": "A.8.24" },
{ "tag": "NIST 800-53", "control": "AC-3" }
],
"remediation": "Rotate the key and remove it from history (git filter-repo or BFG)."
}
```
## 配置
在你的 repo 根目录下放置可选的 `.compliance/config.yml`:
```
# yaml-language-server: $schema=https://raw.githubusercontent.com/erp-mafia/compliancemaxx/main/packages/cli/.compliance/config.schema.yml
severity_threshold_to_block: high # critical | high | medium | low | info
asvs_level: L2
soc2_categories: [security, confidentiality]
llm_provider: bedrock # or "anthropic"
suppressions:
- control_ref: A.8.24
path: extensions/example-logger/**
justification: Reference impl, never deployed
expires: '2026-12-31'
risk_id: RISK-2026-014 # required for ISO/SOC 2 controls
```
豁免项会过期 — 一旦过了 `expires` 时间,构建就会失败,直到续期。
ISO 27001 和 SOC 2 控制的豁免需要提供引用你的
风险登记册 的 `risk_id`。
完整参考请参见 [docs/configuration.md](./docs/configuration.md)。
## Action 输入
| Input | 默认值 | 描述 |
|---------------------|--------------------|-------------------------------------------------------------------|
| `mode` | `review` | `review` \| `scan` \| `audit` (或旧版 `pr` \| `swarm`) |
| `base` | PR base SHA | 用于变更文件的 Diff 基础。 |
| `config-path` | `.compliance/config.yml` | 覆盖配置位置。可选 — 默认设置是合理的。 |
| `no-llm` | `false` | 即使在使用 LLM 的模式下也跳过 LLM 调用。 |
| `llm-provider` | `bedrock` | `bedrock` 或 `anthropic`。 |
| `upload-sarif` | `true` | 将 SARIF 推送到 Code Scanning(在 `review` 模式下跳过)。 |
| `upload-dossier` | `true` | 将 JSON 评估报告归档为 artifact。 |
| `post-comment` | `true` | 置顶 PR 评论。 |
| `fail-on-findings` | `true` | 在出现阻断性发现时以非零状态退出。 |
| `working-directory` | `.` | 要扫描的 Repo 目录。 |
## GitHub Actions 之外
| 平台 | 方式 |
|--------------|--------------------------------------------------------------------------------------|
| GitLab CI | [`examples/gitlab/.gitlab-ci.yml`](./examples/gitlab/.gitlab-ci.yml) |
| pre-commit | [`examples/pre-commit/`](./examples/pre-commit/.pre-commit-config.yaml) |
| 本地 CLI | `npm i -g compliancemaxx && compliancemaxx run` (默认为 review 模式) |
## v1 → v2 迁移
如果你正在使用 v1 (`uses: erp-mafia/compliancemaxx@v1`):
| v1 | v2 等效项 | 更改原因 |
|---------------------|---------------------|-----------------------------------------|
| `mode: pr` (原必填项) | `mode: scan` | 名称更准确;`pr` 仍可作为已弃用的别名使用 |
| `mode: swarm` | `mode: audit` | 名称更准确;`swarm` 仍可作为已弃用的别名使用 |
| (原无此模式) | `mode: review` (默认) | 新增:轻量级纯 LLM diff 审查 |
只需将 `@v1` 升级到 `@v2`,即使不做其他更改,也会将你从
纯确定性的 PR 扫描切换到纯 LLM 的 diff 审查 — 这是最轻量化的
模式,非常适合首先尝试。添加 `mode: scan` 以保留 v1 的行为。
## 架构
```
orchestrator
│
┌──────────────┼──────────────┐
│ oss-license │ asvs ┐
│ runs first │ iso-27001 │ run in parallel,
│ produces SBOM│ soc-2 │ consume the SBOM
│ │ gdpr ┘
└──────────────┘
│
dedup → suppress → SARIF + markdown + JSON dossier
```
编排器本身不包含任何合规逻辑。每一次检查都存在于
[`packages/skills/`](./packages/skills/) 下的一个技能清单中 — 一个声明了
检测触发器、扫描器调用、智能体提示和跨框架
映射的 YAML 文件。要添加新框架,只需编写一个新清单。参见
[docs/writing-a-skill.md](./docs/writing-a-skill.md)。
## 能做与不能做的事
✅ 能检测出:硬编码的密钥、危险的 IaC 错误配置、copyleft 许可证
污染、缺失的 CI 门禁、PII 泄露到日志中、RoPA 偏移、失效的
访问控制模式、变更管理绕过、通过 SBOM 引入的供应链风险。
❌ 无法做到:物理安全审计、供应商合同审查、策略创建
(它只审计你已经编写的策略)、监管申报、手动
证明。标记为 `extrinsic` 或 `manual_attestation_required` 的发现
会指出需要人工判断的地方。
## 文档
- [快速入门](./docs/quickstart.md) — 5 分钟内运行起来
- [配置](./docs/configuration.md) — 所有配置选项及示例
- [豁免](./docs/suppressions.md) — 如何在不丢失审计追踪的情况下放弃发现
- [编写技能](./docs/writing-a-skill.md) — 使用新框架进行扩展
- [架构](./docs/architecture.md) — pipeline 内部工作原理
## 许可证
Apache-2.0。详见 [LICENSE](./LICENSE)。
## 贡献
欢迎提交 Issues 和 PR。该 repo 自行其道 — 每一次提交都会触发一次
自审计运行,因此破坏了编排器自身扫描的更改会被尽早
发现。
```
git clone https://github.com/erp-mafia/compliancemaxx
cd compliancemaxx
npm install
npm test
```
对于任何面向用户的更改,请添加一个 [changeset](./.changeset/README.md)。
标签:Claude, CVE检测, DevSecOps, GDPR, GitHub Actions, Gitleaks, GNU通用公共许可证, ISO 27001, LLM, LNA, MITM代理, Node.js, npm, OWASP ASVS, SARIF, SAST, Semgrep, SOC 2, StruQ, Unmanaged PE, WordPress安全扫描, 上游代理, 代码安全审计, 合规编排, 安全合规, 密钥泄露检测, 开源协议合规, 文档安全, 盲注攻击, 网络代理, 自动化合规, 自动化攻击, 自动笔记, 静态应用安全测试