>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
JavaScript

告别用画图软件绘制架构:OWASP Threat Dragon 入门

Threat Dragon 标志

回想一下上次安全团队要求你"创建威胁模型"的情景。你很可能打开了 Miro 或 Draw.io,随意拼凑出一些带箭头的方框,然后努力回忆 STRIDE 缩写的含义。最终得到的是一张看起来不错的图表,但发布后一周就过时了,最后在企业 Wiki 里积灰。

OWASP 开发者早就意识到了这个问题,于是创建了 Threat Dragon。这是一个开源工具,可以帮助你绘制数据流图,并将风险直接关联到架构元素上。

Threat Dragon 能做什么

该项目由 Mike Goodwin 于 2015 年创立,现已获得官方 OWASP Production 状态。这意味着该工具正在积极维护,而不是在首次提交后就被弃置。

该工具的目标是让威胁建模对普通开发团队也能上手,而不仅仅是专职的安全架构专家。

以下是值得关注的几个主要功能:

  • 数据流图(DFD)构建。你可以在画布上布局流程、数据存储、外部参与者以及信任边界。
  • 威胁生成与描述。基于图表元素,你可以快速编制潜在风险列表,并为每个风险附加具体的修复步骤。
  • Git 仓库集成。Web 版本可以通过 GitHub、GitLab 或 Bitbucket 进行授权,并将威胁模型直接保存为 JSON 文件到你的项目代码中。
  • 离线能力。如果公司政策禁止将架构图发送到外部服务,可以下载独立的桌面版本。

底层架构

最初的第一个版本很难使用,因为前端是用 AngularJS 1.x 编写的。由于该框架已经过时,作者做出了完全重写项目的合理决定。

Threat Dragon 第二版采用了全新的技术栈:Vue.js 用于用户界面,Node.js 用于后端。代码库清晰地分为两个目录:td.servertd.vue。如果你想添加自己的自定义规则或根据需要调整界面,理解这个结构并不困难。

快速入门

在本地试用该工具最简单的方法是运行一个现成的 Docker 容器。只需要一条命令:

docker pull threatdragon/owasp-threat-dragon:stable
docker run -it --rm -p 8080:3000 threatdragon/owasp-threat-dragon:stable

之后,Web 界面将在 http://localhost:8080/ 访问。

如果你更喜欢传统的从源代码构建,过程也很简单:

git clone https://github.com/owasp/threat-dragon.git
cd threat-dragon
npm install
npm start

要使用 GitHub 或 GitLab 的完整 Web 版本功能,你需要在版本控制系统的设置中注册一个 OAuth 应用程序,并通过变量将密钥传递给 .env 文件。代码库为每个流行服务都提供了详细说明。

谁会发现这个项目有用

Threat Dragon 不会取代完整的安全审计,而且它的界面看起来相当简陋。但如果你的团队需要在设计阶段早期实施 DevSecOps 实践,它是一个优秀的替代方案。

该工具非常适合在项目仓库中记录架构决策。所有图表都与代码一起存储,使它们在重构期间易于更新,并在计划中的架构审查期间进行刷新。

相关项目