我有一個JSP/MySQL Web服務用戶與「進程」交互 - 他們可以爲給定進程上傳數據,配置,查看報告等。他們還可以創建新的流程或運行比較幾個流程的報告。在MySQL應用程序中的安全多租戶
當前,進程ID是在URL(GET參數)中指定的,因此任何用戶都可以與任何進程交互。 我被要求爲此服務添加安全性和多租戶。爲了簡單起見,假設每個租戶都可以完全訪問一組進程,但進程可以由多個租戶訪問。
我的首選方法:
- 添加存儲的Tenant_Id用戶表(PK_User_Id,password_hash,姓名等)
- 增加接入表(FK_User_Id,FK_Process_Id)
- 的SSL登錄頁面在會議
- 一個過程選擇頁面,讓你選擇,你可以使用一個PROCESS_ID,並存儲在會話
- 幾乎每一頁C會不會reate我的老闆認爲這是不安全的「,足以基於會話的PROCESS_ID
- 「跨進程」頁面,如創建,選擇和比較將致力於關閉Session的USER_ID代替
它的SQL查詢「以滿足外部代碼審計。他擔心一個任性的開發人員仍然可以編寫一個查詢,將一個客戶的數據公開給另一個客戶,或者其他的東西。
他希望我也使用ANSI SQL內置的ROLES(應用程序必須保持DB不可知性)爲每個用戶創建數據庫角色。該角色將詳細說明角色有權訪問哪些表格,共享表格中的哪些表格等。這樣,登錄後,Connection將是「安全」的,並且沒有開發人員的錯誤可能會導致問題。
- 這可能嗎?
- 是否存在與MySQL一起使用的DB-agnostic「Roles」這樣的事情?
- 如果主鍵爲'foo',角色是否可以指定允許您將行添加到表中?
- 按照行業標準,我的系統「足夠安全」嗎?