SaaS 租戶隔離表示客戶只能存取其組織有權使用的紀錄與操作。介面裡有租戶選擇器並不夠。當要求、背景工作、快取與檔案下載到達底層系統,邊界仍必須有效。

使用不同組織、一般使用者角色,以及刻意跨越邊界的嘗試測試租戶隔離。依相同存取規則驗證讀取、寫入、檔案、快取回應與背景工作。導入具有敏感或重要商業紀錄的客戶前,要求來自實際執行控管的後端邊界證據。

想像客戶入口網站中,每個組織看到自己的採購訂單。列表畫面看起來正確,下載的匯出卻包含其他組織資料列。即使登入與一般頁面路徑都正常,這仍是隔離失敗。

本指南協助負責人界定驗證與修正範圍。它不主張某種資料庫布局保證安全,也不主張檢查表能取代完整應用程式評估。

選擇儲存前定義 SaaS 租戶隔離

確認產品中租戶代表什麼,可能是客戶組織、法律實體或工作空間。記錄使用者如何加入、離開與切換租戶,以及哪些支援角色能跨租戶操作。規則歧義會成為測試歧義。

OWASP 多租戶安全指引 說明資料庫、快取、儲存及運算邊界的隔離,也區分用戶端提供的租戶選擇器與伺服器驗證的授權。評估實際要求路徑時應使用這個區分。

明確定義資料歸屬。共用產品目錄可能刻意讓多個客戶可見,訂單備註卻屬租戶所有。測試需知道差別,才能辨識洩漏而不把刻意共用資訊當成缺陷。

繪出管理例外。如果支援員工能檢查客戶紀錄,說明誰授予權限、如何界定範圍及記錄使用。強大的支援路徑應作為刻意提供能力測試,不應隱藏在一般租戶模型之外。

沿要求追蹤租戶脈絡

從已驗證使用者開始,確認目前成員資格或服務授權。追蹤所選租戶進入業務邏輯與資料存取。確認改變標頭、路由值或要求本文,無法替換成另一組織的授權。

看似隨機的識別碼讓猜測更困難,但不構成權限。OWASP 授權指引 建議檢查每次要求的存取。使用從其他租戶合法取得的識別碼測試,不要依賴測試者能否猜中。

邊界示範變更嘗試可接受成果
紀錄查詢要求其他租戶已知訂單識別碼拒絕且不揭露紀錄
更新有效資料內容含其他租戶識別碼沒有未授權修改
租戶切換選擇沒有成員資格的組織伺服器拒絕要求範圍
批次端點納入不同租戶識別碼明確拒絕且沒有部分洩漏
支援動作一般角色使用高權限路徑拒絕並有實用調查證據

對搜尋、匯出與其他 API 重複同樣推理。第一個詳細畫面正確,不能證明批次報表、行動端點或舊相容路徑執行相同邊界。

傳遞已驗證租戶授權:驗證要求主體,確認所選租戶成員資格,在各資料路徑落實邊界,只回傳允許成果。
隨機識別碼不是授權控制。 檢視原尺寸圖表

以實際控制比較資料庫方式

分開資料庫、結構描述及共用資料表帶來不同維運取捨。任何方式都不能免除憑證、角色、查詢與管理路徑驗證。提案應指出邊界在哪裡落實,以及程式漏掉篩選時如何處理。

方式要檢查的邊界應納入維運工作
獨立資料庫連線與憑證授權建立、移轉與備份分離
獨立結構描述資料庫角色與命名空間選擇授權、移轉紀律及管理存取
共用資料表租戶歸屬與強制存取政策查詢覆蓋、要求角色及負向測試
混合各資料類別的書面規則清楚路由與一致事故調查

不要把移轉到獨立資料庫視為所有缺陷的預設修正。有限授權錯誤可能有針對性修復。同樣,如果匯出、工作與支援工具仍可無限制存取,在單一控制器加篩選並不足夠。

測試正式要求實際使用的角色

PostgreSQL 資料列安全文件 說明重要例外,包括特權角色與資料表擁有權。產品依賴資料列政策時,使用實際受限要求角色驗證。資料庫管理員執行的測試,不能代表一般應用程式邊界。

將部署與移轉帳戶納入盤點。它們可能合理需要較廣存取,但不應成為客戶要求的日常身分。記錄執行環境如何取得預定授權,以及部署後如何檢查。

檢查快取、檔案與衍生輸出

檢查快取鍵與結果範圍。不能因兩個要求共用方便路由或篩選,就讓一個組織建立的快取項目成為另一組織答案。第一個租戶填入快取後,再測第二個租戶。

檔案需要自己的驗收證據。驗證上傳歸屬、預覽、下載與產生報表。頁面可能正確拒絕,但附件網址仍能透過不相關路徑存取。將過期及先前發出的連結納入約定測試範圍。

檢查搜尋索引、推薦與分析匯出等衍生資料。確認系統在擷取資料時執行租戶限制,而不只是在插入時。即使來源紀錄端點受保護,資訊仍可能透過摘要跨越邊界。

使用屬於不同組織的受控測試資料。每組放入足夠可辨識內容來發現混雜,不必將真實客戶文件複製到評估。這能更容易診斷意外快取命中或混合匯出。

測試背景工作與成員資格變更

背景工作應透過佇列將已驗證租戶脈絡傳遞到操作。檢查工作延遲、重試或被其他工作節點接收的情況。網頁要求中的有效租戶範圍,不代表後續工作會保留它。

測試成員資格變更。從組織移除的使用者,不應透過快取工作階段、保存匯出或待處理操作,違反約定政策地保留一般存取。定義撤銷前已接受工作的預期行為。

測試邊界兩側:使用不同受控租戶與角色,檢查允許操作及跨租戶嘗試,重新測試缺陷與合法案例。
修復必須保留允許的客戶工作。記錄落實的角色、資源類型與排除項目。 檢視原尺寸圖表

支援身分模擬與租戶刪除也需刻意涵蓋。說明操作員如何離開高權限工作階段,以及殘留檔案、工作與參照如何處理。正確刪除政策取決於產品保留義務;評估應驗證所選政策,而非創造政策。

目前團隊無法說明這些路徑時,我們的軟體專案接管指南 很適用。恢復部署、資料存取與維運文件的掌控,可是讓邊界可維護的一部分。

訂定實用驗證報告

要求發現顯示行為者、租戶、操作與觀察影響。包含相關要求及目的證據,適當控管敏感值。只有存取控制標籤、沒有可重現路徑的發現,很難修復與重測。

OWASP ASVS 可支援較廣的應用程式安全要求。把租戶專屬驗收矩陣與該工作並存,讓審查者看到測試過的組織、角色與資源類型。

分開確認缺陷與未測路徑。如果評估者無法檢查私有儲存服務或管理匯出,就說明。誠實說明範圍限制,比毫無依據地斷言所有租戶資料都已隔離更有用。

修正後,重複原失敗案例與周邊合法案例。阻擋所有下載的修復可能阻止洩漏,卻破壞產品。驗收需要拒絕未授權存取,也需要允許的客戶工作持續。

依產品實際邊界編列預算

依資源類型、角色與營運路徑界定評估,不只看頁面數。外部檔案、快取、背景工作與支援存取可能揭露租戶資訊時,就應包含。小入口網站的邊界可能比介面顯示更廣。

工作項目交付需釐清假設
邊界對應租戶與角色模型架構知識是否可取得
驗證正向與負向存取證據受控帳戶及環境
修正正確的強制控管與回歸檢查是否需結構變更
交接可重複測試及已知排除導入後的責任歸屬

要求 GBP 提案,分開評估與修正。避免只憑登入測試或自動掃描就接受全面保證。有價值的交付是關於客戶將仰賴的存取邊界證據。

我們的應用程式安全服務 是這項範圍的起點。提供產品租戶模型與導入決定 ,討論驗證、針對性修復,以及開放下一個客戶帳戶前所需證據。


常見問題

什麼是 SaaS 租戶隔離? 它是強制分開客戶組織的資料與允許操作。邊界需跨應用程式要求、儲存、快取、檔案與背景工作有效,包括產品定義的管理例外。

獨立資料庫保證隔離嗎? 不保證。憑證、路由、支援工具、匯出與備份仍可能跨越邊界。獨立資料庫可作為設計一部分,但實際存取路徑仍需測試。

隨機紀錄識別碼足夠嗎? 不夠。它可減少簡單枚舉,但不是權限檢查。用其他受控租戶的真實識別碼測試存取,確認伺服器拒絕。

除了拒絕,也應測試允許存取嗎? 應該。拒絕所有要求的修正可能掩蓋損壞產品。驗證一般使用者保留預定操作,同時跨租戶嘗試被拒絕。

為何快取需要獨立測試? 它可不重跑原資料存取路徑就回傳資料。在一個租戶填入快取,再以另一租戶檢查結果。確認快取範圍保留預定授權,不只是共用方便的鍵。

支援存取應如何運作? 定義誰可取得、授予範圍、持續時間,以及動作如何記錄。測試進入、使用與離開高權限脈絡。設計應讓例外明確且可審查。

如果使用資料列層級安全呢? 使用應用程式實際要求角色測試,包含繞過一般控制器的操作。特權資料庫角色與其他存取路徑行為可能不同。資料列政策是需驗證的控制,不是省略評估的理由。

供應商報價前應取得什麼? 租戶與角色、資源類型、外部儲存及背景操作的說明。確認可供測試的環境與受控帳戶,以及評估必須支援的決策。