Threagile YAML模型编写教程从技术资产定义到风险跟踪完整指南【免费下载链接】threagileAgile Threat Modeling Toolkit项目地址: https://gitcode.com/gh_mirrors/th/threagileThreagile是一款强大的敏捷威胁建模工具包Agile Threat Modeling Toolkit通过YAML格式的模型文件帮助团队系统性地识别、分析和跟踪软件系统中的安全风险。本教程将带你从基础的技术资产定义开始逐步掌握完整的YAML模型编写流程最终实现有效的风险跟踪与管理。一、Threagile模型基础架构与文件结构Threagile模型采用模块化的YAML结构主要包含数据资产、技术资产、信任边界、共享运行时和风险跟踪等核心部分。项目提供了完整的示例配置文件demo/example/threagile.yaml可作为编写模板直接使用。项目的整体架构如图所示图1Threagile项目包结构示意图展示了模型解析、风险规则和报告生成的核心模块核心模块路径说明数据资产定义模型文件中的data_assets节点技术资产配置模型文件中的technical_assets节点风险规则实现pkg/risks/builtin/报告生成逻辑pkg/report/二、数据资产定义业务价值的核心载体数据资产是系统中承载业务价值的信息集合需明确其机密性、完整性和可用性CIA等级。在YAML模型中数据资产通过data_assets节点定义支持使用YAML锚点实现继承复用。基础定义示例Customer Contracts: customer-contracts # 定义锚点便于复用 id: customer-contracts description: 客户合同PDF文件 usage: business # 业务数据区别于devops数据 origin: Customer owner: Company XYZ quantity: many # 数据量规模 confidentiality: confidential # 机密性等级 integrity: critical # 完整性等级 availability: operational # 可用性等级 justification_cia_rating: 合同数据包含财务信息和个人身份信息PII其完整性和可用性对解决支付纠纷至关重要数据资产继承示例通过: *anchor语法继承基础定义并覆盖特定属性Customer Contract Summaries: : *customer-contracts # 继承客户合同基础配置 id: contract-summaries description: 客户合同摘要信息 quantity: very-few # 覆盖数据量 confidentiality: restricted # 降低机密性等级三、技术资产配置系统组件的安全画像技术资产代表系统中的硬件、软件或服务组件需描述其类型、技术栈、网络属性及数据处理行为。每个技术资产通过technical_assets节点定义包含以下关键配置维度1. 基础属性配置Apache Webserver: id: apache-webserver description: 托管API和客户端代码的Apache服务器 type: process # 资产类型外部实体/进程/数据存储 size: application # 规模系统/服务/应用/组件 technology: web-server # 技术类型 tags: [linux, apache, aws:ec2] # 标签用于分类和风险规则匹配 internet: false # 是否直接暴露在互联网 machine: container # 部署环境物理机/虚拟机/容器/无服务2. 数据处理声明明确资产处理和存储的数据资产IDdata_assets_processed: # 处理的数据资产 - customer-accounts - customer-operational-data data_assets_stored: # 存储的数据资产 - client-application-code - server-application-code3. 通信链路定义描述与其他资产的网络连接包含协议、认证方式和数据传输communication_links: ERP System Traffic: target: erp-system # 目标资产ID protocol: https # 通信协议 authentication: token # 认证方式 authorization: technical-user # 授权模式 data_assets_sent: # 传输的数据资产 - customer-accounts - customer-operational-data四、信任边界与共享运行时安全域划分1. 信任边界定义信任边界用于划分具有相同安全属性的资产集合通常对应网络分区或安全组Web DMZ: id: web-dmz type: network-cloud-security-group # 边界类型 technical_assets_inside: # 包含的技术资产 - apache-webserver - marketing-cms2. 共享运行时配置描述资产共享的基础设施环境如虚拟化平台或容器集群WebApp and Backoffice Virtualization: id: webapp-virtualization tags: [vmware] technical_assets_running: # 运行在此环境的资产 - apache-webserver - erp-system - sql-database五、风险跟踪从识别到缓解的全生命周期管理Threagile自动分析模型并生成风险报告通过risk_tracking节点可跟踪风险处理状态。风险ID格式为风险类型资产ID支持通配符*批量处理。风险跟踪配置示例risk_tracking: untrusted-deserializationerp-system: # 风险ID status: accepted # 状态未检查/讨论中/已接受/处理中/已缓解/误报 justification: 风险被评估为可容忍 ticket: XYZ-1234 # 关联工单 date: 2020-01-04 # 处理日期 checked_by: John Doe # 审核人常见风险类型missing-authentication缺失认证机制unencrypted-communication通信未加密sql-nosql-injectionSQL/NoSQL注入风险dos-risky-access拒绝服务风险六、模型验证与最佳实践1. 模型验证方法使用Threagile命令行工具验证模型完整性git clone https://gitcode.com/gh_mirrors/th/threagile cd threagile ./threagile analyze -i demo/example/threagile.yaml -o report2. 编写最佳实践ID命名规范使用简短、唯一的标识符如customer-db而非CustomerDatabase123标签使用通过标签如aws:ec2、linux增强风险规则匹配精度CIA评级基于业务影响而非技术实现确定CIA等级继承复用使用YAML锚点减少重复配置提高维护性通过本教程你已掌握Threagile YAML模型的核心编写方法。结合示例文件和最佳实践可快速构建贴合实际系统的威胁模型为安全设计提供数据支持。更多高级特性可参考官方文档docs/model.md。【免费下载链接】threagileAgile Threat Modeling Toolkit项目地址: https://gitcode.com/gh_mirrors/th/threagile创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考