ChatGPT软件排障修复AI 评分 · 待评分AI 辅助编辑·未发现明显提示词注入风险n8n.io

自动修复 Neo4j 安全图中的高危攻击路径

输入:Neo4j 安全图 + GitHub IaC 仓库;处理:定时扫描→路径评分→AI 生成修复→Jira 工单→GitHub PR;输出:修复后的 IaC 文件与关联工单

经验丰富步骤流程提示词贴士
给谁
有 n8n 经验的安全运维或平台工程师,需维护 Neo4j 安全图、Jira 和 GitHub 仓库
你会得到
自动发现从互联网暴露面到核心资产的高危攻击路径,生成修复方案并创建 Jira 工单和 GitHub PR
你需要
n8n · neo4j · jira · github

硬约束

前置条件:n8n 实例(建议自托管或企业版);Neo4j 数据库(含 Asset 节点,属性包括 name, exposure, criticality, exposedPorts, iacResourceAddress, iacFilePath, resourceType);GitHub 仓库(含可修改的 IaC 文件);Jira Software Cloud 项目;OpenAI API 密钥。凭证:Neo4j HTTP Basic Auth、GitHub API(repo 权限)、Jira Software Cloud API(邮箱+令牌)、OpenAI API。费用:OpenAI 按 token 计费;n8n/GitHub/Jira 按各自平台计费。风险:AI 生成的修复需人工复核后再合并;continueOnFail 在多个节点启用,失败不会中断流程但需检查日志。

他们做了什么

模板作者 oneclick-ai 在 n8n 中构建了一个 26 节点的工作流,集成 Neo4j 安全图、OpenAI GPT-4.1-mini、Jira 和 GitHub API。工作流可定时或手动触发,查询 Neo4j 中从互联网暴露面到核心资产的最短路径,提取并评分后,对超过阈值的高危路径自动获取对应 IaC 文件,由 AI 生成修复方案,随后创建 Jira 工单、GitHub 修复分支与 PR,并将 PR 链接回写至 Jira。

效果如何

来源声称该模板可自动识别并修复最高风险的攻击路径(author_report)。模板在 n8n.io 发布,有 15 次查看记录,无独立运行日志或修复案例报告。

值得知道

1) 多个 HTTP Request 和 Code 节点设置了 continueOnFail=true,单点失败不会中断整体流程,但可能导致下游节点处理空数据,需检查执行日志;2) AI 生成的 updatedFileContent 为完整文件替换,建议在启用自动提交前先在测试仓库验证;3) 评分逻辑中的 high_risk_ports 为硬编码集合(22, 3389, 445 等),若组织环境使用非标准端口需调整;4) 未提供 Neo4j 图 schema 的初始化脚本,Asset 节点属性需自行维护;5) 模板使用 gpt-4.1-mini,实际可切换为同系列其他模型,但需测试输出格式兼容性。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • Post to Security Graph API 节点:绑定HTTP Basic Auth 凭证。
  • Retrieve IaC File from GitHub 节点:绑定GitHub API 凭证。
  • OpenAI GPT-4.1 Mini Agent 节点:绑定OpenAI API 凭证。
  • Submit Jira Issue API 节点:绑定jiraSoftwareCloudApi 凭证。
  • Fetch GitHub Base Branch Reference 节点:绑定GitHub API 凭证。
  • Create New GitHub Branch 节点:绑定GitHub API 凭证。
  • Update IaC File on Branch 节点:绑定GitHub API 凭证。
  • Propose Pull Request on GitHub 节点:绑定GitHub API 凭证。
  • Post PR Link to Jira 节点:绑定jiraSoftwareCloudApi 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #18096(约 26 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-25

步骤

  1. 配置凭证与全局参数

    在 n8n 中导入模板后,先完成以下配置:1) 在「Post to Security Graph API」节点添加 Neo4j HTTP Basic Auth 凭证;2) 在所有 GitHub HTTP Request 节点添加 GitHub API 凭证(需 repo 权限);3) 在两个 Jira HTTP Request 节点添加 Jira Software Cloud 凭证(邮箱 + API 令牌);4) 在「OpenAI GPT-4.1 Mini Agent」节点添加 OpenAI API 密钥;5) 在「Set Configuration Parameters」节点修改 neo4jUrl、riskScoreThreshold、jiraBaseUrl、jiraProjectKey、repoOwner、repoName、baseBranch、defaultIacPath 等值。

  2. 触发扫描并查询安全图

    工作流通过「When Daily Graph Scan Starts」(默认 cron 0 5 * * *,每日 05:00)或「When Test Run Initiated」(手动触发)启动。触发后进入「Set Configuration Parameters」加载全局配置,然后「Post to Security Graph API」向 Neo4j /db/neo4j/tx/commit 发送 Cypher 查询:MATCH shortestPath 从 internet-facing Asset 到 criticality 为 crown-jewel/critical 的 Asset,返回路径、源/目标名称、跳数,限制 25 条。

  3. 解析攻击路径

    「Parse and Extract Attack Paths」节点(Code, JS)解析 Neo4j 事务响应,为每行数据构建候选攻击路径对象,提取 sourceAsset、targetAsset、targetCriticality、hopCount、exposedPorts、misconfigResourceAddress、misconfigResourceType、misconfigFilePath、nodeCount,并合并上游配置参数。

  4. 评分并判断是否高危

    「Analyze and Rank Attack Paths」节点(Code, Python)对所有候选路径进行复合风险评分:目标关键性(40 分)+ 端口暴露/可利用性(25 分)+ 跳数接近度(20 分)+ 影响密度(15 分)。按风险分降序排列,取最高分路径,若 riskScore >= riskScoreThreshold(默认 50)则标记 isCriticalPath=true。随后「If Critical Path Detected」节点检查该布尔值,为 true 时进入修复分支。

  5. 获取 IaC 文件并生成修复计划

    若存在高危路径:1)「Retrieve IaC File from GitHub」通过 GitHub API 获取 misconfigFilePath 对应的文件内容(base64);2)「Remediation Strategy Agent」(AI Agent, define prompt)接收攻击路径详情和 base64 编码的 IaC 内容,要求 AI 识别导致路径的具体资源块,输出 JSON 包含:remediationSummary、remediationSteps、updatedFileContent(完整修正后文件,纯文本)、cvssEstimate、jiraSummary、jiraDescription、prBranchName、prTitle、prBody、commitMessage;3)「OpenAI GPT-4.1 Mini Agent」提供语言模型;4)「Parse AI and Build Payloads」(Code, JS)解析 AI 输出,清理 markdown 围栏,准备 Jira 和 GitHub 载荷,并将修正后文件转为 base64。

    运行提示词 · 来源原文。Remediation Strategy Agent 节点的 text 字段(define prompt)

    =You are a cloud security remediation expert. An attack path was found in the security graph and needs a concrete fix.
    
    Attack Path:
    - Source (internet-facing): {{ $('Analyze and Rank Attack Paths').item.json.sourceAsset }}
    - Target ({{ $('Analyze and Rank Attack Paths').item.json.targetCriticality }}): {{ $('Analyze and Rank Attack Paths').item.json.targetAsset }}
    - Hop count: {{ $('Analyze and Rank Attack Paths').item.json.hopCount }}
    - Exposed ports on the entry point: {{ $('Analyze and Rank Attack Paths').item.json.exposedPorts }}
    - Risk score: {{ $('Analyze and Rank Attack Paths').item.json.riskScore }}/100 ({{ $('Analyze and Rank Attack Paths').item.json.severity }})
    - Misconfigured resource: {{ $('Analyze and Rank Attack Paths').item.json.misconfigResourceAddress }} ({{ $('Analyze and Rank Attack Paths').item.json.misconfigResourceType }})
    
    Current IaC file ({{ $('Analyze and Rank Attack Paths').item.json.misconfigFilePath }}), base64-encoded content:
    {{ $json.content }}
    
    Decode the base64 content mentally, identify the specific resource block causing this attack path (overly permissive security group rule, wildcard IAM policy, public S3/network ACL, missing MFA/role trust condition, etc.), and:
    1. Write a remediationSummary (2-3 sentences) explaining why this path exists.
    2. Write remediationSteps: an array of 3-6 short, concrete steps.
    3. Produce updatedFileContent: the COMPLETE corrected file content (plain text, not base64) applying least-privilege / closing the exposure — keep all unrelated content unchanged.
    4. cvssEstimate: a number 0-10 estimating severity.
    5. jiraSummary: a short ticket title.
    6. jiraDescription: a 2-4 sentence ticket description.
    7. prBranchName: a short kebab-case branch name.
    8. prTitle: a concise PR title.
    9. prBody: a markdown PR description including the attack path, the fix, and the risk score above.
    10. commitMessage: a concise commit message.
    
    Return ONLY a JSON object with keys: remediationSummary, remediationSteps, updatedFileContent, cvssEstimate, jiraSummary, jiraDescription, prBranchName, prTitle, prBody, commitMessage. No markdown fences, no commentary.
  6. 创建 Jira 跟踪工单

    「Submit Jira Issue API」节点向 Jira REST API v3 创建 Issue,字段包括:project key、summary(来自 AI 的 jiraSummary)、issuetype(默认 Bug)、description(Atlassian Document Format,含攻击路径详情和 riskScore/severity)、labels(attack-path, auto-remediation)。

  7. 准备 GitHub 修复分支与 PR

    1)「Fetch GitHub Base Branch Reference」获取 baseBranch 的 git ref sha;2)「Create New GitHub Branch」基于该 sha 创建修复分支(refs/heads/prBranchName);3)「Update IaC File on Branch」将 base64 编码的修正后文件提交到新分支;4)「Propose Pull Request on GitHub」创建 PR,标题/正文来自 AI 输出,并附加 Jira ticket 链接。

  8. 回写 PR 链接到 Jira

    「Post PR Link to Jira」节点等待 PR 创建完成后,向对应 Jira Issue 添加评论,内容为「Auto-remediation PR opened:」+ PR 的 html_url,实现工单与代码变更的闭环关联。

可复制提示词

搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限

这一段是提示词,页面不会在这里插入广告。

你是一个云安全自动化助手。用户想要基于 n8n 模板搭建「Neo4j 攻击路径自动修复」工作流。请先确认用户已具备:1) 可访问的 Neo4j 实例(含 Asset 节点及指定属性);2) GitHub 仓库的写权限和 API 凭证;3) Jira Software Cloud 项目和 API 凭证;4) OpenAI API 密钥。然后协助用户导入模板、配置凭证、修改 Set 节点中的 URL/项目/仓库参数,并建议先用「When Test Run Initiated」手动触发验证连通性,再启用定时触发器。

搭建前请确认 Neo4j 图 schema 已包含 Asset 节点的 name、exposure、criticality、exposedPorts、iacResourceAddress、iacFilePath、resourceType 属性。

来源

Remediate critical attack paths with Neo4j, OpenAI, GitHub and Jira · oneclick-ai · n8n.io · 2026-08-12

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例