本卡為 FR-122 母案。建 AI 閘道(
jedi-ai-gateway套件)+檔案沙箱(guidant-sandbox容器)+背景工作行程(guidant-worker),把小幫手、動態儀表板、證據自動分類三支 AI 功能全部接上共用的資安守門與稽核。第一階段拆為 6 個子需求、21 張子任務卡,本卡只列規劃,實作在子卡。子卡清單在末段(建完後補)。
現在小幫手、儀表板、證據分類這三支功能,各自直接打外部 AI(Anthropic/OpenAI/Google),沒有共用的「安檢」與「紀錄」。這次要蓋一道共用的「AI 閘道」——所有要送去外部 AI 的內容,都先經過同一道門:先掃有沒有密碼/個資,再判斷有沒有人想偷改 AI 的行為(提示注入,prompt injection,指有心人把指令藏在資料裡想蓋過系統原本的指示),才真的打出去,最後把結果、花費、耗時都記下來。
另外,使用者上傳的檔案(例如要拿去分類的合規證據)可能藏著看不見的惡意指令(白色文字、極小字、零寬字元——肉眼看不到但程式讀得到的字)。今天這些檔案是在能連外網、帶著 AI 金鑰的環境裡直接拆開處理,等於「打開陌生包裹的房間,鑰匙插在門上還能打電話出去」。這次把「拆檔案」搬進一個沒有鑰匙(無 AI 金鑰)、也不能打電話出去(不能連外網)的隔離房間(容器)處理,拆完的內容才交給閘道去問 AI。
最後,證據分類這種要處理很多檔案、跑很久的工作,今天是在網站的 API 行程裡直接跑,重啟網站服務會把它中斷。這次把這類長工作搬到一支獨立的背景工作行程(guidant-worker),送出後立刻回覆「已受理」,工作在背景跑,網站重啟也不受影響。
討論稿(discussion.md)系統性盤點了三支 AI 功能的資安問題,共 16 項(🔴 危急 4、🟠 高 6、🟡 中 4、🟢 低 2),對照 OWASP(國際權威資安組織)LLM Top 10 2025 與歐盟 AI 法案第 50 條。最嚴重的四項:① 證據檔可藏隱形指令操縱分類結果;② 使用者輸入與系統指令混在同一段訊息可蓋掉系統指令;③ 密碼/私鑰/個資沒攔截就送外部 AI;④ 分類理由把證據原文整段抄出來存 DB/上雲端硬碟。決策者裁示優先序:資安先解、成本其次;架構要共用、預留 DDD 分層與六邊形架構(核心只定義需要什麼介面,外部技術接上去實作,方便未來換元件);有現成的開源工具就不要自己重造。
jedi-ai-gateway(內分 extract 拆檔 client 與 complete 打 AI 兩模組),不拆兩支——兩者共用型別,worker 兩個都要用。ai_call_log(AI 呼叫紀錄表)預設只存內容的指紋碼(hash)與字數,不存原文;租戶可以選擇開啟「完整保留 N 天」,到期自動清除——稽核紀錄本身不能變成新的個資外洩風險點。