lucashgrifoni/App-Suite-Modeling

GitHub: lucashgrifoni/App-Suite-Modeling

以版本化 YAML 模型为核心的威胁建模即代码工具包,支持多方法论分析、工程工件导入与 CI 集成,让威胁建模贴近代码仓库并可重复执行。

Stars: 0 | Forks: 0

# App Suite 建模 **面向软件交付团队的威胁建模即代码。** 在**版本化的 YAML 模型**中一次性定义架构,运行**多方法论分析**,并将输出接入**代码评审、流水线和审计工具**——无需在图表和电子表格中重复逻辑。 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![Node 20+](https://img.shields.io/badge/node-20+-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/) ## 这是什么? **App Suite 建模**是一个开源的**威胁建模**工具包,围绕**规范文档**(`.otm.yaml` / JSON)构建:包含组件、信任边界、数据流和资产。同一份文档支持: - 用于自动化的 **CLI**(`otm`), - 用于集成的 **REST API**([FastAPI](https://fastapi.tiangolo.com/)), - 以及用于向导化建模和可视化的 **Web UI**(React + Vite)。 **威胁引擎**会验证模型并生成**建议的威胁**、**结构化的可解释性说明**、**修复样式的待办事项提示**以及**导出内容**(Markdown、JSON、Mermaid、可选的 PDF)。您可以**导入**来自真实工程工件(OpenAPI、Kubernetes manifest、Terraform、Helm)的草稿,并对两个模型版本进行**差异对比**,以便进行 PR 样式的代码评审。 它面向那些希望让模型**贴近代码仓库**、**在 Git 中可评审**且**在 CI 中可重复执行**的 **AppSec**、**DevSecOps** 和**软件架构师**。 ## 为什么会有这个项目 传统的威胁建模通常**无法**随着交付节奏进行**扩展**: - 图表和电子表格会与真实系统发生**偏离**。 - 启发式逻辑存在于**单一**供应商工具或某位分析师的脑海中。 - 产出结果**难以进行版本控制**、难以进行差异对比,且在**Pull Request**或**工单**中使用十分笨拙。 本项目将威胁模型视为**类代码数据**:一套 schema,多种展现形式。您可以从终端或 API **验证**并**分析**同一个文件,将与证据友好的工件附加到评审中,并在架构发生变化时**重新运行**分析——无需在每个客户端中重新实现 STRIDE(或其他视角)。 ## 核心能力 | 领域 | 您将获得 | |------|----------------| | **模型即代码** | 基于 [`otm_core_schema`](packages/core-schema) 验证的规范化 `.otm.yaml` / JSON;契合 Git 和代码评审。 | | **多方法论引擎** | STRIDE、LINDDUN、PASTA、NIST Data-Centric、OCTAVE Allegro、CIA-DIE、**PLOT4ai**(AI/LLM 系统)。 | | **可解释性** | 伴随启发式逻辑的结构化解释记录——而不仅仅是纯文本的项目符号。 | | **语义差异对比** | 比较 models(及丰富比较),用于 **PR**、审计和发布门禁。 | | **工件导入** | 从 **OpenAPI/Swagger**、**Kubernetes YAML**、**Terraform**、**Helm** 生成草稿种子(请务必检查结果)。 | | **导出** | JSON、Markdown、Mermaid、bundles;在浏览器中为 Web UI 路径生成 **PDF**;通过可选附加组件提供高级报告路径。 | | **CI / 自动化** | 通过 **CLI** 或 **REST** 实现相同的操作(`validate`、`analyze`、`export`、`diff`、模板、导入)。 | 详细信息:[方法论矩阵](docs/features/MULTI_ENGINE_ARCHITECTURE.md) · [工件导入](docs/features/ARTIFACT_IMPORT.md) · [导出器](docs/features/EXPORTERS.md) · [差异对比](docs/features/THREAT_MODEL_DIFF.md) ## 工作原理(概述) ``` Author model (.otm.yaml) → validate → analyze (methodology / auto-recommend) → review threats + explanations + backlog hints → export artifacts → diff versions ``` 可选:**导入** OpenAPI/K8s/Terraform/Helm 以初始化草稿,然后在**向导**或编辑器中进行**增量式**完善,并通过 **API** 或 **CLI** 进行共享。 ## 架构概览(简述) | 层级 | 职责 | |--------|------| | **CLI** (`apps/cli`, Typer) | 本地和 CI 工作流:`otm validate`、`analyze`、`report`、`diff`、`import`、模板。 | | **API** (`apps/api`, FastAPI) | 通过 HTTP 访问相同功能;OpenAPI 契约已在 CI 中检查。 | | **Web UI** (`apps/web`) | 向导化流程、React Flow 图表、分析、导出,历史记录保存在**浏览器存储**中(默认不使用服务端会话数据库)。 | | **威胁引擎** (`packages/threat-engine`) | 方法论视角、启发式逻辑、PLOT4ai 信号、评分——**不**依赖 FastAPI/React。 | | **Schema** (`packages/core-schema`) | 有效 **OTM** 文档的唯一事实来源。 | | **导出器 / 图表 / 扩展包** | `packages/exporters`、`diagram-engine`、`industry-packs`、`framework-mappings` 等。 | 更深度的说明:[MONOREPO.md](docs/MONOREPO.md) · [REPOSITORY_LAYOUT.md](docs/REPOSITORY_LAYOUT.md) · [ARCHITECTURE.md](docs/architecture/ARCHITECTURE.md) ## 快速开始 **前置条件** - **Python 3.11+** - 如果您要开发 Web UI,则需要 **Node 20+**(与 CI 匹配) - 在 Linux 上,包含 PDF 处理栈的完整**开发环境**安装可能需要 **Cairo** 开发包(参见 [CONTRIBUTING.md](CONTRIBUTING.md)) **安装(CLI + API + 开发工具,推荐贡献者使用)** ``` python -m venv .venv # Windows: .venv\Scripts\activate # Linux/macOS: source .venv/bin/activate pip install -e ".[dev,cli,api]" ``` 请使用 **`[dev,cli,api]`**,以便本地运行与 CI 保持一致(API 测试需要 `slowapi` 等)。最小化的仅 CLI 安装:`pip install -e ".[cli]"`。 **自动化引导**(在 `apps/web` 中进行 venv + 可编辑安装 + `npm install`): ``` python scripts/setup_dev.py ``` **同时运行 API + Web**(设置完成后): ``` python scripts/run_dev.py ``` - API: `http://127.0.0.1:8000` · OpenAPI UI: `/docs` - Web: `http://127.0.0.1:5173` **最小化 CLI 会话** ``` otm validate examples/minimal.otm.yaml otm analyze examples/minimal.otm.yaml --methodology stride otm report examples/minimal.otm.yaml -o REPORT.md ``` ## 示例(真实场景) **输入** — 摘自 [`examples/minimal.otm.yaml`](examples/minimal.otm.yaml)(包含用户、API、worker、DB 的订单 API): ``` model: schema_version: "1.1.0" system_type: web_application industry_sector: saas metadata: title: "Exemplo — API de pedidos" summary: "Serviço REST com fila e banco." components: - id: user name: "Usuário" kind: user in_trust_boundary: internet - id: api name: "API" kind: process in_trust_boundary: vpc # … trust_boundaries, data_flows, assets (see full file in repo) ``` **命令** ``` otm validate examples/minimal.otm.yaml otm analyze examples/minimal.otm.yaml --methodology stride ``` **输出(精简版)** — 分析总结了方法论、交叉点和启发式计数(确切数字取决于引擎版本): ``` | Exemplo — API de pedidos | | Framework refs: ISO/IEC 27001 … · NIST CSF … · OWASP … | | Structural warnings: 0 | | Methodology: stride | | Cross-boundary flows: 1 | | Base heuristics: N new · 0 already covered | | Highest score (L×I): … | ``` `otm report … -o REPORT.md` 会生成一份 **Markdown 报告**,您可以将其附加到 PR 或证据包中。 ## 截图 | 产品概述 | 分析输出 | |---|---| | [![App Suite Modeling — landing page](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1e490143c1074415.png)](docs/screenshots/home.png) | [![Analysis with STRIDE threats and scoring](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/563c9ff53e074421.png)](docs/screenshots/analysis.png) | | 首页:主视觉 + 主要 CTA(新模型、导入、模板)。 | 方法论选择、模型指标,以及带有“可能性 × 影响”评分的建议威胁。 | 其他截图(向导步骤、导出/PDF 操作以及 CLI 会话)将在制作完成后发布在 [`docs/screenshots/`](docs/screenshots/README.md) 下。构图指南:[`docs/features/SCREENSHOT_GUIDE.md`](docs/features/SCREENSHOT_GUIDE.md)。 ## 使用场景 - **AppSec 计划** — 可重复的模型、用于评审的导出内容、可追溯的解释。 - **DevSecOps** — 在流水线中使用 `otm`;为工单和门禁提供 JSON/Markdown 工件。 - **架构与设计评审** — 跨架构版本进行语义**差异对比**。 - **PR 规范** — 附加或基于团队修改的同一文件生成工件。 - **审计** — 结构化输出和方法论对齐(参见框架映射文档)。 - **AI/LLM 系统** — 用于模型/prompt/RAG/agent 问题的 PLOT4ai 视角。 ## 成熟度与局限性 **明确说明本项目的定位:** 它**不是**一个具备内置组织账户、集中式模型历史记录或特定云端托管的全功能**多租户 SaaS**。 | 主题 | 预期情况 | |--------|-------------| | **核心 Schema 与引擎** | **稳定**且经过充分测试;**STRIDE** 是最成熟的视角;其他视角则各有不同(参见[发布范围](docs/internal/decisions/RELEASE_SCOPE_FREEZE.md))。 | | **CLI / OpenAPI** | 面向自动化的**稳定**契约;破坏性变更应进行版本控制并记录在 [CHANGELOG](CHANGELOG.md) 中。 | | **Web UI** | **成熟的 MVP**:包含完整流程 + 图表 + 导出;默认情况下**持久化是以浏览器/会话为中心的**——默认技术栈中没有服务端用户数据库。 | | **生产环境中的 API** | 提供可选的 **API 密钥**和**速率限制**;**面向互联网的**部署仍需您自行配置**网关、身份验证和系统加固**([部署说明](docs/architecture/DEPLOYMENT_INVARIANTS.md))。 | | **导入** | 生成的是**草稿**——必须由人工来核对信任边界和敏感数据。 | | **分析** | **启发式/辅助性**——并非对完整性保证或形式化证明。 | 完整细节:[KNOWN_LIMITATIONS.md](docs/KNOWN_LIMITATIONS.md) 测试套件(参考):安装 `.[dev,cli,api]` 后,CI 中包含 **400+** 个 Python 测试——参见 [CI 工作流](.github/workflows/github-ci-cd.yml)。 ## 项目结构(指引) - 布局与打包:[docs/MONOREPO.md](docs/MONOREPO.md) - 各层与 `otm_*` 包:[docs/REPOSITORY_LAYOUT.md](docs/REPOSITORY_LAYOUT.md) - 文档组织方式:[docs/DOCUMENTATION_STRUCTURE.md](docs/DOCUMENTATION_STRUCTURE.md) ## 文档 | 文档 | 用途 | |-----|---------| | [docs/README.md](docs/README.md) | 文档中心与新手指南(包含面向 PT-BR 的指南) | | [docs/features/CLI.md](docs/features/CLI.md) | CLI 参考 | | [docs/features/API.md](docs/features/API.md) | REST API 与可选边界 | | [docs/features/UI.md](docs/features/UI.md) | Web 应用流程 | | [docs/features/MULTI_ENGINE_ARCHITECTURE.md](docs/features/MULTI_ENGINE_ARCHITECTURE.md) | 方法论矩阵 | | [docs/features/CHOOSE_METHODOLOGY.md](docs/features/CHOOSE_METHODOLOGY.md) | 选择视角 | | [docs/features/PLOT4AI_AI_SYSTEM.md](docs/features/PLOT4AI_AI_SYSTEM.md) | PLOT4ai / AI 建模 | | [docs/features/ARTIFACT_IMPORT.md](docs/features/ARTIFACT_IMPORT.md) | 导入 OpenAPI、K8s、Terraform、Helm | | [docs/features/THREAT_MODEL_DIFF.md](docs/features/THREAT_MODEL_DIFF.md) | 模型差异对比 | | [docs/features/EXPORTERS.md](docs/features/EXPORTERS.md) | 导出格式 | | [docs/CI_AND_SECURITY_EVIDENCE.md](docs/CI_AND_SECURITY_EVIDENCE.md) | 安全工具与 CI 门禁 | | [docs/features/PRODUCT_POSITIONING.md](docs/features/PRODUCT_POSITIONING.md) | 定位叙述 | | [docs/features/BRANDING.md](docs/features/BRANDING.md) | 面向维护者的品牌标识、色调和视觉系统 | | [docs/PROJECT_DEEP_DIVE.md](docs/PROJECT_DEEP_DIVE.md) | 深度的产品与工程概述 | 发布评估(面向维护者):[FINAL_GO_NO_GO_RELEASE_ASSESSMENT.md](docs/internal/reports/FINAL_GO_NO_GO_RELEASE_ASSESSMENT.md) ## 安全 请**不要**提交包含可利用漏洞细节的公开 issue。请使用 [SECURITY.md](SECURITY.md) 中的流程(例如 GitHub Security Advisories)。 ## 版本控制 包版本记录在 `pyproject.toml` 中(目前为 **7.6.4**,与 `apps/web/package.json` 保持一致)。标签、RC 版本以及它们与历史里程碑(例如已记录的 `v0.1.0` 范围)的关系在 [docs/VERSIONING_AND_TAGS.md](docs/VERSIONING_AND_TAGS.md) 中进行了说明。发布历史:[CHANGELOG.md](CHANGELOG.md)。 ## 许可证 [MIT](LICENSE) ## 商标 *App Suite Modeling* 是本项目名称。STRIDE、LINDDUN、PASTA、NIST、PLOT4ai 及其他名称归其各自所有者所有,此处引用它们是为了描述**支持的视角**,而非表示归属关系。
标签:AV绕过, DevSecOps, FastAPI, MITM代理, Python, React, Syscalls, 上游代理, 威胁建模, 安全工程, 无后门, 网络测绘, 逆向工具