iT邦幫忙

2026 iThome 鐵人賽

DAY 29
0
AI 自動化

從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報系列 第 29 篇

Day 29 | 完美收尾 :實作 SOAR 一鍵生成 PDF 資安事件報告

  • 分享至 

  • xImage
  •  

大家好!歡迎來到鐵人賽第二十九天。

我們的鐵人賽即將進入尾聲。在過去將近一個月的時間裡,我們從零到有打造了一套具備告警監控、AI 分析、多節點聯防、沙箱解析與自動化封存的企業級 SOAR 系統。

在資安維運(SecOps)的實務中,當一次嚴重的資安事件(如伺服器遭暴力破解、或發現高風險漏洞)處理完畢後,通常還有一項無法逃避的例行公事:「撰寫結案報告」。這份報告需要呈交給主管、甚至是未來的稽核人員審查。

既然我們的 SOAR 系統已經掌握了從發生到解決的所有數據,何不讓它連報告也一起寫好?今天,我們將實作這套系統的最後一塊拼圖:運用 n8n 與 Google Docs 範本,在一鍵審批結案後,自動生成並派發 PDF 格式的資安事件完整報告。


第一步:建立 Google Docs 結案報告範本

與其在 n8n 裡面辛苦地排版 HTML 轉 PDF,實務上更聰明且好維護的做法是:使用 Google Docs 作為動態範本。

  1. 打開 Google 雲端硬碟,建立一個新的 Google 文件,命名為 【範本】資安事件結案報告。
  2. 在文件中設計好你公司專屬的報告版面(可以加入公司 Logo、表格、標題等)。
  3. 將需要由 n8n 動態填入的資料,使用 {{變數名稱}} 的格式寫在文件中。

範例版面:

資安事件自動化處理結案報告

事件基本資訊

  • 報告生成時間:{{Report_Date}}
  • 受害主機:{{Agent_Name}}
  • 攻擊來源 / 漏洞編號:{{Threat_Source}}
  • 嚴重程度:{{Severity}}

AI 威脅分析摘要
{{AI_Analysis}}
處置與審批紀錄

  • 處理狀態:已完成自動化聯防封鎖
  • 授權時間:{{Approval_Time}}

完成後,請將這份 Google 文件的網址 ID(/d/ 後面到 /edit 前面的那串英數字)複製下來,我們馬上會用到。


第二步:在結案流程加入 Google Docs 節點

回到我們 Day 18 的「多節點聯防」或是 Day 17 的「資安工單」工作流,在最後一個節點(Google Sheets 更新結案狀態)的後方,我們要啟動報告生成機制。

新增一個 Google Docs 節點:

  • Authentication:選擇你的 Google 憑證。
  • Resource:選擇 Document。
  • Operation:選擇 Create From Template(從範本建立)。
  • Template Document ID:貼上你剛剛複製的範本 ID。
  • Title:為這份新報告動態命名,例如:
    [結案] 資安事件報告 - {{ $('Webhook').item.json.body.data.srcip }} - {{ $now.toFormat('yyyy-MM-dd') }}
  • Values to Fill:在這裡,n8n 會自動抓取範本裡的 {{變數}},請將對應的資料映射上去:
  • Report_Date ➡ {{ $now }}
  • Agent_Name ➡ {{ $('Webhook').item.json.body.agent_name }}
  • Threat_Source ➡ {{ $('Webhook').item.json.body.data.srcip }}
  • AI_Analysis ➡ {{ $('Google Gemini').item.json.text }}

執行這個節點後,n8n 就會在一秒鐘內,把所有的變數完美填入範本,並產生一份全新的 Google 文件。


第三步:取得 PDF 下載連結

為了讓主管能在手機上直接點開閱讀,而不需登入 Google Docs,我們可以直接利用 Google Docs 的內建機制,將文件網址轉換為 PDF 下載連結。

在 Google Docs 節點後方,新增一個 Code 節點,用來組合出 PDF 專屬網址:

// 取得剛剛建立的新文件 ID
const docId = $input.item.json.documentId;

// 組合出 Google Docs 專屬的 PDF 匯出網址
const pdfUrl = `https://docs.google.com/document/d/${docId}/export?format=pdf`;

return {
  json: {
    documentId: docId,
    pdfDownloadUrl: pdfUrl
  }
};

(小提示:要讓這個連結能被順利下載,請確保你存放生成的 Google 文件的「資料夾權限」,已經設定為「知道連結的人皆可檢視」或「限公司網域內檢視」。你可以透過 n8n 的 Google Drive 節點來動態調整權限,或是直接將範本放在一個已經公開分享的備份資料夾中。)


第四步:透過 LINE 發送結案報告

最後一步,我們將這份精美的 PDF 報告連結發送到 LINE 的維運群組中,為這次的資安事件畫下完美句點。

新增最後一個 LINE HTTP Request 節點:

  • Method: POST
  • URL: [https://api.line.me/v2/bot/message/push](https://api.line.me/v2/bot/message/push)
  • Body (JSON):
{
  "to": "你的_LINE_群組_ID",
  "messages": [
    {
      "type": "text",
      "text": " 【資安事件已結案】\n\n系統已完成自動化聯防封鎖,並生成完整的 PDF 結案報告。\n\n 點此下載結案報告 (PDF):\n{{ $json.pdfDownloadUrl }}\n\n感謝您的授權,SOAR 系統將持續為您監控安全態勢。"
    }
  ]
}


今天的成果

今天,我們打通了資安維運的最後一個環節——「合規與報告」。

傳統的流程中,事件處理完後,工程師還要花 20 分鐘截圖、排版、寫報告。而現在,這一切在管理員於 LINE 上按下「同意授權」的那一瞬間,從 SSH 封鎖、Google Sheets 歸檔到生成 PDF 報告,全都在 3 秒內自動完成。

這就是 SOAR(資安協調、自動化與回應)最強大的魅力所在:它不僅抵禦了外部的威脅,更解放了內部的人力。

明天(Day 30),我們將迎接鐵人賽的最終回!我將帶大家回顧這 30 天來我們親手建立的這套龐大架構,總結 SOAR 帶給企業的價值,並探討未來可以繼續擴充的資安藍圖。我們明天見!


上一篇
Day 28 | 抽絲剝繭 : 實作 SOAR 可疑檔案自動化沙箱分析
下一篇
Day 30 | 從告警到自動化處置 : 30 天 SOAR 實戰總結
系列文
從漏洞告警到 AI 決策:Wazuh × RAG × n8n 實作自動化資安漏洞驗證與智慧通報 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言