「在 LLM Agent 走向 Production 的過程中,資安防禦不能只寄望於模型本身的『自我約束』。最穩健的 Defense-in-Depth,必須結合 API 端點長度校驗、Prompt 系統語言隱藏以及 OS 層級的低權限與金鑰隔離。」
先前,我們陸續介紹了三階段分析 pipeline、Prompt 強制執行規則、後處理淨化、Telegram Byte-Safe 推播、Google Sheets 自動追蹤以及 systemd 服務託管。
當系統進入正式運行階段後,資安威脅便成為不可忽視的隱患。許多開發者以為只需接入 LLM API 即可,卻忽略了 Prompt Injection、系統語言暴露以及金鑰洩漏等風險。
今天我們將彙整 Angelina Agent 專案中散落於各個模組的真實防禦機制,剖析如何在 Code Level 與Infrastructure Level 打造縱深防禦體系!
在 app/routes/chat.py 中,為了防止攻擊者輸入過長的 Malicious Prompt 進行 DDoS 攻擊或 Context Window 爆破,在 API 入口實作了強制的邊界校驗:
Python
# app/routes/chat.py 輸入邊界校驗實作
@router.post("/chat", response_model=ChatResponse)
async def chat_endpoint(request: ChatRequest):
# 1. 檢查空白或無效輸入
if not request.message or not request.message.strip():
raise HTTPException(
status_code=400,
detail="請輸入有效的對話內容。"
)
# 2. 硬性限制輸入長度,防止 Prompt 爆破與異常 Token 消耗
if len(request.message) > 2000:
raise HTTPException(
status_code=400,
detail="訊息長度超過 2000 字元限制,請分段輸入。"
)
1. 阻斷大量 Token 消耗:限制最高 2000 字元,防止惡意使用者貼上數萬字的無效文本消耗 Gemini API 配額。
2. 降低 Prompt Injection 成功率:極大幅度壓縮了複雜越獄指令的寫入空間。
當請求進入 LLM 生成階段時,攻擊者常試圖誘導模型吐出內部 System Prompt 或系統內部架構(如「根據知識庫...」、「新聞列表為選單...」)。
在 daily_analysis.py 的 Core Execution Rules 中明確寫入了硬性的系統語言隱藏與防護指令:
Python
# daily_analysis.py 中的 Core Execution Rules
"5. 隱藏系統語言:絕對禁止提及「知識庫」「投資框架」「新聞列表為選單」「無具體新聞」等。新聞不足時直接以「從量價結構與籌碼動向觀察」帶過。\n"
1. 徹底防堵系統露餡:當 RAG 檢索失敗或新聞數據不足時,指令強制要求模型不得輸出「無新聞」或「知識庫無資料」,而是自動替換為專業的金融觀點:「從量價結構與籌碼動向觀察」,確保對外輸出的資訊安全與專業度。
軟體層級的防禦完成後,最底層的資安威脅來自於宿主機的存取權限。我們在 Day 20 的 angelina.service 中實作了兩項關鍵的基礎設施資安設定:
[Service]
User=angelina
WorkingDirectory=/opt/angelina
絕不使用 root 運行 Python 服務。即便 FastAPI 未來發生未知的漏洞,攻擊者也僅能取得低權限帳號 angelina 的受限權限,無法危害 Linux 宿主機核心。
[Service]
EnvironmentFile=/opt/angelina/.env
所有 API Key(如 Telegram Bot Token, Gemini API Key)統一存放在 /opt/angelina/.env,檔案權限設為 chmod 600。專案 .gitignore 寫死排除 .env,徹底杜絕金鑰誤 Commit 上 GitHub 版控庫的風險。
透過 Angelina Agent 專案中的三層縱深防禦設計,實現了:
1. 輸入邊界控管:API 層級阻斷長文本攻擊與配額浪費。
2. 輸出安全純化:Core Execution Rules 強制隱藏系統內部語法,維持分析報告安全性。
3. 基礎設施防護:systemd 低權限帳號與 .env 金鑰隔離,保護伺服器主機安全。
明天(Day 22)我們將進入 離線評測體系:如何為 LLM 金融 Agent 建立客觀的 Evaluation 指標!
明日預告:【Day 22】離線評測體系:如何為 LLM 金融 Agent 建立客觀的 Evaluation 指標