我們有一個多租戶Asp.Net MVC 4 Web應用程序,每個租戶都有自己的文件存儲庫(文件系統中的文件夾)。我們採用共享數據庫,共享模式方法,並通過他們的子域來識別租戶。多租戶物理隔離
確保租戶只能訪問他的存儲庫文件夾並且不能訪問文件系統中的其他文件夾的最佳方法是什麼?我們在應用程序業務邏輯中檢查它,但如果我們犯了一個錯誤...?
運行應用程序時,所有租戶都在同一用戶(在IIS應用程序池中定義)下運行。
我們是否需要爲每個租戶提供獨立的用戶 - 使用模擬?每次向服務器發出請求時,我們是否需要模擬 - 爲了填充它?
我聽說這有性能上的缺點,不是最好的方式,但是什麼?
我們還有一個windows服務,它在後臺填充請求(對於所有租戶),通過MSMQ發送給它。每次獲得請求時,此服務是否也需要更改其身份?
編輯: 另外,我們需要一種隔離的,如果有人上傳感染了病毒文件,該文件 - 它只會影響該租戶的文件,而不是服務器上的每個租戶。我們使用殺毒軟件,但是如果防病毒軟件不識別病毒,我們也需要這種分離。
謝謝
謝謝理查德。我們不想爲每個租戶創建不同的網站和應用程序池,因爲我們需要將應用程序部署到服務器上的多個網站,每個租戶都有一個網站。你認爲冒充不是一種選擇嗎?謝謝 – Yaron
@Yaron Windows和IIS將在一臺服務器上處理大量獨立的應用程序池(ISTR,我們的生產服務器上有> 30個)。如果可能,我肯定會走這條路線(有開銷,但不一定太多:只有你可以測試你的情況)。 – Richard
@Yaron自從Win2k以來,設置模擬並不是我需要做的事情,但是當然,如果適用的話,需要在AD和站點配置中都有工作。並且僅限於使用Windows身份驗證。 – Richard