Cloudflare AI Search 租戶隔離,在同一應用開始為擁有私有文件的多個組織提供服務時就非常重要。生成答案之前,檢索結果就可能洩露資訊;即使可見答案看似無害,引用也可能暴露文件。權限邊界必須覆蓋整個搜尋流程。
根據已認證應用身分推導租戶範圍,再選擇允許的搜尋執行個體,或應用由伺服器控制的強制過濾器。讓匯入、檢索、引用和快取遵循同一存取設計。透過負面測試證明隔離,包括租戶切換、過時工作階段,以及直接開啟其他租戶來源的嘗試。
設想一個 SaaS 產品,讓經銷商上傳供應商協議。每家經銷商都希望助手解釋自己的交付和折扣條款,產品還可能提供所有人共享的公開手冊。只有私有材料絕不越過預期邊界,組合這些來源才有用。
本文提供建議的應用設計和驗收方法,不聲稱單靠名稱空間或過濾器就能滿足所有安全要求。
Cloudflare AI Search 租戶隔離始於檢索之前
Cloudflare 的多租戶指南 介紹了獨立執行個體和共享執行個體的租戶搜尋方案。選擇架構前,需要先建立應用身分模型,確定租戶代表什麼,以及哪些使用者可以在其中操作。
從已驗證工作階段或等價可信上下文取得租戶。請求參數可以表示使用者希望選擇什麼,但伺服器必須確認該選擇被允許。絕不能讓模型提供權威租戶範圍。
對於屬於多個經銷商的同事,應明確目前組織。切換組織時,應更改允許的來源集及相關對話上下文。切換前檢索到的私有段落,不應悄悄留在下一次回答中。
| 邊界 | 可信輸入 | 應拒絕的不可信替代項 |
|---|---|---|
| 租戶選擇 | 已認證成員資格及目前範圍 | 瀏覽器提供的任意租戶識別碼 |
| 執行個體路由 | 伺服器控制的對映 | 模型編造的執行個體名稱 |
| 文件範圍 | 已驗證來源歸屬與權限 | 上傳檔案自稱所屬租戶 |
| 引用存取 | 開啟文件時的目前授權 | 僅持有結果 URL |
比較獨立執行個體與強制過濾
獨立執行個體可能讓資料邊界更易檢查,但增加生命週期管理和佈建工作。共享執行個體可以減少這些開銷,但每條相關檢索路徑都必須應用正確範圍,不得有可選繞過。
Cloudflare 的名稱空間文件 解釋了執行個體如何分組,並透過繫結存取。仔細檢查繫結範圍。邏輯分組不能證明應用已正確路由每位呼叫者。
| 設計選擇 | 待評估的維運收益 | 仍需承擔的責任 |
|---|---|---|
| 獨立租戶執行個體 | 來源與生命週期分離更清晰 | 正確路由及成員資格檢查 |
| 帶租戶過濾的共享執行個體 | 共享匯入和索引管理 | 所有檢索路徑強制應用範圍 |
| 獨立公開集合 | 明確共享材料 | 防止私有內容匯入該集合 |
| 受限文件子集 | 租戶內部更精細存取 | 目前文件級權限 |
根據權限模型和維運要求選擇,而不只看租戶數量。不論執行個體如何佈局,內部存在受限團隊的租戶,都可能需要組織級邊界之外的控制。
匯入和查詢都應應用範圍
內容進入系統時就必須確定文件歸屬。使用可信應用後設資料,將每個來源關聯到租戶和預期可見性。未經呼叫者權限檢查,不要接受上傳檔案自稱的歸屬。
更新期間保持來源識別碼穩定。替換協議應更新目標租戶的材料,刪除應針對正確來源和衍生內容。租戶之間識別碼衝突,即使搜尋尚未執行,也可能破壞隔離。
分開公開和私有匯入決策。共享手冊可以有意設為公開,但供應商協議不應僅因副檔名或資料夾名稱像手冊,就進入公開集合。
記錄哪種匯入身分可以讀取每個來源位置。應用可能正確過濾結果,但權限過大的來源聯結器仍匯入本不該處理的材料。範圍複核必須覆蓋管道兩端。
將過濾作為不可選的應用策略
Cloudflare 提供檢索過濾文件 。將目前應用權限轉化為選定過濾契約,並測試伺服器實際生成的請求。
不要暴露可由普通用戶端替換的通用過濾物件。同樣,不要新增“範圍內查詢沒有結果就取消過濾重試”的便捷回退。對於未授權或不存在的資訊,沒有結果是有效且必要的結果。
將應用範圍與文件型別、語言等使用者偏好分開。使用者可以請求更窄的搜尋,但不能透過更改搜尋選項移除強制存取條件。
測試所有能到達檢索的路徑:搜尋結果、生成答案、匯出、智慧體工具和管理預覽。搜尋頁面安全,不能彌補查詢同一集合但沒有過濾的工具端點。
保護引用、快取與對話歷史
生成答案可能省略私有段落,卻返回暴露其他租戶資訊的引用標題或 URL。檢查所有返回欄位,而不只檢查答案文字。
按目前文件授權開啟引用。如果來源透過應用提供,返回前先驗證呼叫者;如果使用外部文件系統,確認連結保留該系統存取規則。
任何應用快取設計都應包含租戶與相關權限上下文。不能僅因問題文字相同,就將適合某組織的快取答案變成共享答案。
使用者更換組織或失去權限後,對話歷史仍可能保留檢索段落。決定哪些歷史可重新開啟,哪些上下文可提供給模型。撤銷應明確影響衍生副本,而不只是即時搜尋查詢。
用負面測試發現真實洩露
使用帶有獨特、清晰標記的合成租戶文件。讓不同組織的使用者提問同一問題,並斷言另一組織的標記絕不出現在段落、答案、後設資料或引用中。
| 測試 | 預期結果 |
|---|---|
| 修改請求的租戶識別碼 | 伺服器拒絕或保持允許範圍 |
| 查詢另一租戶已知短語 | 不返回私有段落、答案或引用 |
| 開啟另一租戶文件 URL | 拒絕存取 |
| 切換目前組織 | 檢索和模型上下文遵循新允許範圍 |
| 工作階段期間移除成員資格 | 後續存取遵循目前授權 |
| 跨租戶重複快取問題 | 不跨租戶重用答案 |
將已授權多租戶管理員與普通使用者分開測試。管理排查需要獨立權限和證據。不要把管理員的廣泛結果當成普通使用者驗收標準。
路由、匯入、過濾和快取變化後,重複隔離測試集。單純搜尋相關性測試無法發現權限迴歸;非常相關的結果,可能恰好就是使用者絕不該看到的文件。
為權限生命週期編制預算
開發工作取決於成員資格、文件權限、來源整合與檢索路徑數量。簡單租戶過濾演示,沒有包含真實 SaaS 產品需要的大量生命週期工作。
要求 GBP 方案報價,包含佈建、租戶變化、刪除、撤銷與驗收。說明隔離是止於組織邊界,還是包括組織內的團隊和單獨文件。
| 工作領域 | 應要求的證據 |
|---|---|
| 身分 | 租戶成員資格與切換規則 |
| 匯入 | 已驗證歸屬與來源存取對映 |
| 檢索 | 每條路徑由伺服器控制範圍 |
| 衍生內容 | 快取、引用和歷史策略 |
| 維運 | 佈建、刪除和事故手冊 |
範圍明確的 AI 整合試點 可以在引入私有資料之前,測試合成組織與代表性文件。請提供成員模型和來源權限,索取租戶搜尋方案 。讓隔離成為可測試契約,而不只是架構圖上令人安心的標籤。
常見問題
每個租戶都需要獨立 AI Search 執行個體嗎? 不一定。Cloudflare 文件介紹了獨立執行個體與共享執行個體方案。選擇前應比較權限模型、佈建工作和強制過濾的可靠性。兩種方案都不能取消應用授權。
瀏覽器可以傳送租戶識別碼嗎? 可以請求某項選擇,但伺服器必須根據已認證成員資格驗證。不能將任意瀏覽器參數或模型生成值視為存取權限來源。
名稱空間是授權系統嗎? 名稱空間透過文件規定的繫結模型組織執行個體存取。應用仍需要認證呼叫者並正確路由。檢查繫結範圍,用普通使用者負面測試證明邊界。
過濾搜尋為空時應該去掉過濾器重試嗎? 不應該。為了獲得答案而移除強制範圍,會暴露另一租戶材料。應返回有用的無結果狀態,或調查索引與權限設定,而不是擴大使用者存取。
引用會洩露資訊嗎? 會。即使生成答案省略了私有資訊,標題、URL、摘錄和文件下載仍可能洩露。測試完整回應,並在開啟來源時要求目前授權。
使用者失去租戶成員資格後會怎樣? 後續存取應遵循目前權限。除即時檢索外,還應定義對開啟工作階段、快取答案、對話歷史及衍生副本的影響。在活動工作階段中測試撤銷。
隔離試點應該證明什麼? 證明普通使用者不能檢索其他租戶私有來源,不能透過返回後設資料推知私有資訊,也不能開啟來源。包含範圍篡改、租戶切換、快取重用、來源更新與撤銷。