告别用画图软件绘制架构:OWASP 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.server 和 td.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 实践,它是一个优秀的替代方案。
该工具非常适合在项目仓库中记录架构决策。所有图表都与代码一起存储,使它们在重构期间易于更新,并在计划中的架构审查期间进行刷新。
相关项目