awslabs/threat-designer

GitHub: awslabs/threat-designer

AWS 开源的生成式 AI 威胁建模工具,自动分析系统架构并生成 STRIDE 威胁模型,帮助团队在设计阶段前置安全评估。

Stars: 263 | Forks: 45

Threat Designer Logo

# Threat Designer:面向安全系统设计的 AI 驱动威胁建模 **Threat Designer** 是一个由 AI 驱动的代理,可自动化并简化安全系统设计中的威胁建模流程。借助大型语言模型(LLM)的强大功能,它能够分析系统架构、识别潜在的安全威胁,并生成详细的威胁模型——从而帮助开发者和安全专业人员从开发的最早阶段就将安全性纳入考量。 ## 快速链接 - 📖 [阅读 AWS 博客文章](https://aws.amazon.com/blogs/machine-learning/accelerate-threat-modeling-with-generative-ai/) - ⭐ [为本项目加星](https://github.com/awslabs/threat-designer)以支持项目 - 📚 [入门指南](./quick-start-guide/quick-start.md) - 💻 [CLI 快速入门](./cli/README.md) — 无需部署,完全在本地运行 - 📘 [代码 Wiki](https://codewiki.google/github.com/awslabs/threat-designer) ## CLI — 无需部署 想要在不部署任何 AWS 基础设施的情况下进行威胁建模?**Threat Designer CLI** 让你能够仅使用现有的 Amazon Bedrock 或 OpenAI 凭证,完全在本地计算机上生成基于 STRIDE 的威胁模型。 ``` pip install ./cli threat-designer ``` 请参阅 [CLI 快速入门指南](./cli/README.md),几分钟即可上手运行。 ## 功能 - **架构分析** - 提交架构图并分析潜在威胁 - **交互式编辑** - 通过用户界面更新威胁建模结果 - **迭代优化** - 根据你的编辑和额外输入重放威胁建模 - **多种导出格式** - 支持导出为 PDF、DOCX 或 JSON 格式 - **AI 助手 (Sentry)** - 与内置助手交互,深入研究威胁模型 - **Spaces** - 附加自有文档的知识库(运行手册、策略、架构图),利用特定于组织的上下文来丰富威胁建模 - **威胁目录** - 探索并管理过往的威胁模型 sign in wizard processing sentry sentry sentry threat catalog ## 架构 ### 解决方案架构 solutions_diagram **使用的 AWS 服务:** - AWS Amplify - Amazon API Gateway - Amazon Cognito - AWS Lambda - Amazon Bedrock AgentCore Runtime - Amazon Bedrock Knowledge Bases - Amazon OpenSearch Serverless - Amazon DynamoDB - Amazon S3 ### Agent 逻辑流程

Threat Designer Agent Flow

## 入门指南 ### 前置条件 **所需工具:** 本地计算机上必须安装以下工具: - [Node.js](https://nodejs.org/en/download)(v18 或更高版本)和 npm - [curl](https://curl.se/) - [jq](https://jqlang.org/download/) - [Python](https://www.python.org/downloads/)(v3.12 或更高版本)和 pip - [Terraform CLI](https://developer.hashicorp.com/terraform/install) - [Docker](https://docs.docker.com/engine/install/) 运行中 - 已配置[适当凭证](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-configure.html)的 [AWS CLI](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-install.html) **AI 模型提供商:** Threat Designer 支持两种 AI 提供商。请根据你的偏好选择其一: #### 选项 1:Amazon Bedrock(默认) 你必须在你的 AWS 区域中启用对以下模型的访问权限: - **Claude 4.6 Opus** - **Claude 4.5 Sonnet** - **Claude 4.5 Haiku** 要启用 Claude 模型,请按照[此处](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)的说明操作。确保你已订阅这些模型,否则在使用应用程序时将会收到 `AccessDeniedException` 异常。 #### 选项 2:OpenAI 你需要: - 有效的 OpenAI API 密钥 - 对 GPT-5.4 或 GPT-5 Mini 模型的访问权限 系统会在部署期间提示你输入 API 密钥。 ### 安装与部署 1. **克隆代码库** ``` git clone https://github.com/awslabs/threat-designer.git cd threat-designer ``` 2. **为部署脚本添加可执行权限:** ``` chmod +x deployment.sh ``` 3. **导出 AWS 凭证** ``` # 选项 I:导出 AWS 临时凭证 export AWS_ACCESS_KEY_ID="your_temp_access_key" export AWS_SECRET_ACCESS_KEY="your_temp_secret_key" export AWS_SESSION_TOKEN="your_temp_session_token" export AWS_DEFAULT_REGION="your_region" # 选项 II:导出 AWS Profile export AWS_PROFILE="your_profile_name" ``` 4. **运行部署:** ``` ./deployment.sh ``` 在部署期间,系统会提示你: - 选择你的 AI 模型提供商(Amazon Bedrock 或 OpenAI) - 输入你的 OpenAI API 密钥(如果使用 OpenAI) - 提供用于用户凭证的有效电子邮件地址 - 选择是否启用 Sentry AI 助手 ### 访问应用程序 成功部署后,你可以在输出中找到登录 URL: ``` Application Login page: https://dev.xxxxxxxxxxxxxxxx.amplifyapp.com ``` ## 配置选项 ### AI 模型提供商选择 Threat Designer 支持在部署期间选择的两种 AI 提供商: ``` Select AI model provider: 1) Amazon Bedrock (Claude) (default) 2) OpenAI (GPT-5.4) ``` #### Amazon Bedrock 配置(默认模型) **使用的模型:** - **Claude 4.X 系列模型** **主要特征:** - **推理**:混合模型 - **推理级别**:None、Low、Medium、High、Max(映射到不同的推理 token 预算或自适应努力级别) #### OpenAI 配置 **使用的模型:** - **GPT-5 Mini**(默认)- 速度更快且更具成本效益 - **GPT-5.4** - 最强的推理能力 **主要特征:** - **推理**:始终启用(内置功能,无法禁用) - **推理级别**:Low、Medium、High(映射到 OpenAI 的推理努力程度) **要使用 OpenAI:** 1. 在部署期间提示选择模型提供商时,选择选项 `2` 2. 根据提示输入你的 OpenAI API 密钥 3. 系统将配置 Threat Designer 和 Sentry 均使用 OpenAI #### 在提供商之间切换 要在 Amazon Bedrock 和 OpenAI 之间切换: 1. 使用 `./deployment.sh` 重新部署解决方案 2. 出现提示时,选择不同的提供商 ### Web 搜索集成(可选功能) Sentry 可以使用 [Tavily](https://tavily.com/) 执行实时 Web 搜索,以研究 CVE、漏洞和安全主题。此功能为**可选**,并且需要 Tavily API 密钥。 #### 启用 Web 搜索 在部署期间,系统会提示你: ``` Enter your Tavily API key (optional, press Enter to skip): (Enables web search and content extraction in Sentry assistant) ``` - **使用 API 密钥**:Sentry 将获得对 `tavily_search` 和 `tavily_extract` 工具的访问权限,以进行实时安全研究 - **不使用 API 密钥**:Sentry 可正常运行,但无法执行 Web 搜索 #### 获取 Tavily API 密钥 1. 在 [tavily.com](https://tavily.com/) 注册 2. 导航至你的控制面板以获取 API 密钥 3. 密钥以 `tvly-` 前缀开头 #### Web 搜索功能 启用后,Sentry 可以: - 搜索 CVE 和漏洞信息 - 研究威胁情报和攻击技术 - 查找技术安全文档 - 从安全公告和研究论文中提取内容 Web 搜索专注于安全相关主题,不会搜索一般信息、人员或组织。 ### Sentry AI 助手(可选功能) Sentry 是一个由 AI 驱动的助手,可通过对话交互帮助你分析和探索威胁模型。此功能为**可选**,可以在部署期间启用或禁用。 #### 在部署期间启用/禁用 Sentry 当你运行 `./deployment.sh` 时,系统会提示你: ``` Enable Sentry AI Assistant? (y/n, default: y) ``` - **启用 (y)**:部署完整的 Sentry 基础设施,包括 Amazon Bedrock AgentCore Runtime、DynamoDB 会话表和 ECR 代码库。助手面板将在 UI 中可用。 - **禁用 (n)**:跳过 Sentry 基础设施部署。助手面板将在 UI 中隐藏,而核心威胁建模功能将继续正常运行。 #### 在现有部署中切换 Sentry **要禁用 Sentry:** 1. 更新项目根目录中的 `.deployment.config` 文件: ``` ENABLE_SENTRY=false ``` 2. 重新部署解决方案 **要启用 Sentry:** 1. 更新项目根目录中的 `.deployment.config` 文件: ``` ENABLE_SENTRY=true ``` 2. 重新部署解决方案 ## 清理 1. **清空架构存储桶**,请按照[此处](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)的说明操作 2. **为销毁脚本添加可执行权限:** ``` chmod +x destroy.sh ``` 3. **导出 AWS 凭证** ``` # 选项 I:导出 AWS 临时凭证 export AWS_ACCESS_KEY_ID="your_temp_access_key" export AWS_SECRET_ACCESS_KEY="your_temp_secret_key" export AWS_SESSION_TOKEN="your_temp_session_token" export AWS_DEFAULT_REGION="your_region" # 选项 II:导出 AWS Profile export AWS_PROFILE="your_profile_name" ``` 4. **执行脚本:** ``` ./destroy.sh ``` ## 贡献 请参阅 [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) 获取更多信息。 ## 许可证 本库基于 Apache 许可证授权。请参阅 [LICENSE](LICENSE) 文件。
标签:AI应用, Amazon Bedrock, DLL 劫持, MITM代理, OpenAI, 内存规避, 大语言模型, 威胁建模, 安全设计, 请求拦截, 逆向工具