1. 一個程式碼安全防護欄實際做什麼
OrcaRouter 出貨一個你從範本選擇器套用的code_security 預設家族。每一個都是一條普通的 防護欄 規則——工作區層級、有序、可綁定到任何金鑰——為程式碼調校:
.env / Secret-File Block
在
.env 風格的密鑰賦值(DATABASE_URL=、AWS_SECRET_ACCESS_KEY=、API_TOKEN=…)與貼上的多行設定傾印抵達供應商之前封鎖它們。依據賦值語法,而非值。License Compliance (copyleft)
標記攜帶強 copyleft 標頭的請求——GPL / AGPL / LGPL / SSPL SPDX 標籤或完整授權名稱——這樣審查者就能確認程式碼是否能安全地混入一個寬鬆授權的程式碼庫。僅標記。
GPL/AGPL Provenance (output)
對攜帶 copyleft 來源簽章的模型建議進行輸出階段標記——一個標記,表明模型可能把 copyleft 訓練資料反芻進產生的程式碼中。
Insecure-API Advisory
當提示引用一個高風險匯點——
eval( / exec( / os.system( / subprocess.run( / pickle.loads( / child_process.exec(——時,以一則安全公告註記提示。非封鎖。code_security 預設是確定性的——純正規表示式、無網路呼叫、在熱路徑上安全。網路化的掃描器(CVE 查找、SBOM、SAST)是獨立的外部連接,而非預設。參見 §3。2. Annotate——在不改變流量的情況下警示模型
你在一個防護欄上設定的動作是 block(拒絕呼叫,HTTP 400)、mask(遮罩匹配項)與 flag(僅記錄)。程式碼安全在底層增添了第四種行為:annotate,它既不封鎖也不遮罩。當一條 annotate 規則匹配時,閘道會記錄一則簡短註記,而中繼會把它作為一則系統公告向上游注入——所以模型在回答之前就被告知,例如 “this request references a high-risk API (code eval, shell execution, or unsafe deserialization); prefer safer alternatives”。使用者的文字永不被拒絕也永不被改寫。一個具體範例
把 Insecure-API Advisory 預設套用到一個防護欄並綁定到一把金鑰。然後送出呼叫一個危險匯點的程式碼:3. 透過外部掃描器進行 CVE 與 SBOM 裝飾
公告原語可一般化。把一個程式碼安全掃描器連接為一個 外部廠商,它的發現就會搭乘同一條 annotate 路徑:相依套件 CVE 查找(OSV)
相依套件 CVE 查找(OSV)
從請求文字中擷取 import 與 manifest 釘選版本,並把它們與公開的 OSV 漏洞資料庫交叉參照。一個命中會以例如 “requests@2.0.0 has CVE-2014-1830 (HIGH). Fixed in 2.20.0.” 裝飾提示——這樣模型就被告知它被要求使用的一個套件中有一個已知漏洞。免費且免驗證,所以沒有 API 金鑰欄位。預設為 annotate;你可以改為把它設為 flag 或 block。
SBOM 與 SAST 掃描器
SBOM 與 SAST 掃描器
用你連接任何外部廠商的相同方式連接一個 SBOM(軟體物料清單)或 SAST(靜態分析)掃描器——一個基底 URL 加上憑證,以加密方式儲存並在讀取時遮罩。每個發現都攜帶一個穩定的識別,所以一個你已分流過的發現不會在每個請求上重新觸發。
fail_open 設為 false 以失敗關閉。
4. 與密鑰和授權規則配對
一個程式碼安全防護欄很少單獨行動。常見的形狀是一個帶有數條規則的防護欄:| 目標 | 規則 |
|---|---|
| 阻止貼上的憑證 | .env / Secret-File Block(block) |
| 捕捉行內密鑰值 | Secrets Blocker(block) |
| 把關 copyleft 程式碼 | License Compliance(flag) |
| 導引危險匯點 | Insecure-API Advisory(annotate) |
5. 設定它(主控台 + 角色)
這裡的一切都在主控台中設定,而非透過中繼金鑰。管理路由(/api/guardrail/*)以你的工作階段/存取權杖驗證,而非 sk- 中繼金鑰。讀取——列出防護欄與 Matches 動態——對每個工作區成員開放。寫入(建立/編輯/刪除)以及測試沙盒需要 Developer 角色或以上:沙盒可以發出付費的模型呼叫與外向廠商請求,所以它像一個寫入一樣被把關。
發現會落入工作區 Matches 動態(規則類型、動作、階段、詳情)。匹配到的子字串只在 Log raw content 開啟時才會記錄——預設為關閉,隱私保守姿態。參見 日誌與隱私。
