跳轉到主要內容
如果你的代理處理客戶資料,PII 洩漏的兩個地方是 你送往上游的提示你保留的日誌。本配方串接起 PII 安全的日誌 端對端:一條 PII 遮罩規則在模型之前 洗刷請求、原始匹配內容預設不進你的 match 動態,且 request-log 保留期被收緊,這樣就沒有東西滯留。下方的一切都是 主控台中的工作區設定——你的應用持續不變地呼叫 /v1/chat/completions
每個設定步驟都有角色管控。撰寫一條防護欄需要 Developer+; 更改保留期或合規駐留地需要工作區 Admin。 讀取 Matches 動態對任何 Member 開放。

1. PII 安全日誌管線的三個招式

一個 PII 安全的管線是三個獨立的控制,每一個都是你 為整個工作區翻動一次的開關:

在邊緣遮罩

一條 pii 防護欄規則會在上游模型看見請求之前,把電子郵件、SSN、卡號等 遮蔽為帶型別的標籤。

不記錄原始內容

防護欄的 Log raw content 開關預設關閉,所以 match 動態記錄一條規則觸發了,絕不記錄匹配到的子字串。

收緊保留期

Request-log 保留期預設為 30 天,並在伺服器端被收緊到 180 天的硬性上限——設計上短命。
本頁的其餘部分用一個具體範例把這三個串在一起。

2. 在模型看見 PII 之前遮罩它

建立一條防護欄,帶一條在輸入階段與 mask 動作上的單一 pii 規則。在一個 mask 動作上,每個匹配都會被一個帶型別的標籤替換—— 一個電子郵件變成 [EMAIL],一個 SSN 變成 [SSN]——所以上游模型 收到一個淨化過的請求,而非原始的。
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "ssn", "credit_card", "ip"]
}
在主控台中:Guardrails → New guardrail,加入上方的規則(或從 PII 類別下的 PII Shield 預設集開始),然後儲存。透過 金鑰的 Guardrail 下拉選單把它附加到一把 API 金鑰,或把它設為 工作區預設值,這樣每把金鑰都繼承它。
想要某些實體被遮罩但其他的被直接拒絕?一條規則可以攜帶 逐實體覆寫——遮罩 email/phone 但對 ssn/credit_card block ——透過 entity_actions。關於完整的 PII 實體集、自訂 regex 實體, 以及逐實體覆寫語法,參見 防護欄
用那把金鑰送出一個請求,電子郵件就會在飛行途中被遮蔽:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Draft a reply to jane@acme.com about her SSN 123-45-6789"}
    ]
  }'
模型看到 Draft a reply to [EMAIL] about her SSN [SSN]。原始 值永遠不會離開閘道。
輸入階段遮罩是一個 PII 安全管線所依賴的——它在上游呼叫之前 洗刷請求。輸出階段遮罩在 非串流與串流回應上都運作(串流會就地重寫每個區塊), 所以你也可以遮蔽模型發出的 PII。

3. 讓原始內容遠離你的日誌

每條觸發的規則都會記錄一筆 match——它的型別、動作、階段,以及一個 細節字串。該 match 是否也儲存匹配到的子字串(那個 實際的電子郵件地址、那個實際的 SSN)受防護欄的 Log raw content 開關管控,它預設關閉——隱私保守的姿態。
Log raw content 關閉時,Matches 動態顯示 一條 pii 規則在 input 階段遮罩了一個 email,但絕不顯示地址 本身。那正是你為一個 PII 安全管線所要的:對什麼觸發了的完整 可稽核性、零保留的 PII。在生產環境中讓它保持關閉; 僅為短命的分流,逐防護欄把它開啟。這個開關是 非追溯性的。
Guardrails → MatchesGET /api/guardrail/match, Member)讀取動態。按防護欄、規則型別與動作分組與篩選,以查看你的 遮罩率,而絕不浮現一個真實值。把一個 match 標記為誤判 是一個 Admin 動作(POST /api/guardrail/match/:id/mark-fp)。

4. 收緊 request log 存活多久

Request-log 擷取是一個可選加入的疑難排解功能,而當它開啟時, 保留期是有界的:
設定行為
預設保留期30 天在沒有設定逐工作區值時套用。
硬性上限180 天任何更長的值都會在伺服器端被收緊下來。
你無法超過 180 天的上限——它在寫入時被強制執行,而非一個 建議。結合 §2 的遮罩,即使被擷取的日誌也只持有 淨化過的文字,而且它們會在一個固定的時鐘上逐漸老化淘汰。
把被擷取的 request log 當作一個除錯槓桿,而非一個資料儲存。在一次事件期間啟用 擷取、讓保留視窗保持緊湊,並依賴 Matches 動態(當 Log raw content 關閉時它絕不持有原始 PII) 做穩態的可觀測性。

5. 被遺忘權與駐留地

另外兩個控制讓一個合規的管線更完整:
一次使用者自我刪除進入一個 30 天寬限視窗,之後 PII 會被洗刷,而一次級聯清除會把那個使用者的 request logguardrail matchesfirewall events 一起移除——所以沒有 任何產物比抹除請求活得久。
透過 PUT /api/compliance/residencyAdmin)設定你的合規 報告產物所固定的區域(useuukapcnglobal)。對一個 報告的跨區讀取會被扣留。這固定的是報告產物區域——它不是 推論資料的地理固定。

6. 在出貨前驗證

在任何流量依賴它之前,證明遮罩做你預期的事:
1

沙盒測試規則

開啟防護欄編輯器中的 Test 分頁,貼上帶一個 擬真電子郵件與 SSN 的樣本文字,挑選 input 階段,並運行。沙盒 回傳裁決與渲染後的文字([EMAIL][SSN]),不帶任何 上游呼叫或任何配額消耗。
2

對照一個語料庫 eval

Eval 分頁會在捆綁或自訂的 JSONL 語料庫上運行政策,這樣 你就能在上線之前衡量捕捉率與誤判。
3

確認動態保持乾淨

送出一個真實請求,然後開啟 Matches 並確認該條目顯示 規則觸發了卻沒有匹配到的子字串——證明 Log raw content 是關閉的。

相關

防護欄參考

完整的 PII 實體集、自訂實體、逐實體覆寫,以及 Matches 動態。

保護一個 RAG 管線

為檢索增強代理設定的接地與 PII 控制。

SOC 2 證據

把防護欄與防火牆活動轉化為簽署的稽核報告。

資料外洩

讓 PII 遠離線路與日誌背後的威脅模型。