SaaS系統-應用安全

6 評論 20652 瀏覽 155 收藏 10 分鐘

本文作者將從產品的角度對SaaS產品設計時可能會涉及到的安全性問題進行大致的闡述,enjoy~

對于SaaS應用,由于如下原因:

  1. SaaS服務和數據部署在云端而不是用戶本地機房,可能存在不可控問題;
  2. SaaS基于多租戶架構,多個租戶共用一套實例,可能存在數據安全性問題;
  3. 租戶基于網絡進行訪問,可能存在網絡劫持等不確定性因素。

因此,潛在用戶在考量是否采用SaaS服務時,系統安全性及穩定性必將成為一個重點考量的方向。

下面將從產品的角度對SaaS產品設計時可能會涉及到的安全性問題進行大致的闡述,首先介紹的是如何實現應用的安全性

應用安全確保租戶在使用SaaS時能享有高可用性和高可靠性。為了實現應用安全,SaaS系統需要在身份認證,權限管理,日志管理等方面采取必要的措施。

身份認證

身份認證確保只有經過系統合法授權的用戶才能操作和使用系統,是保證整個系統應用安全的基礎。通常在系統設計時可選用三種常見的身份認證模式,分別是集中式認證,非集中式認證,混合式認證。

三種認證方式對比結果如下:

集中式身份認證

集中式身份認證的前提是通過部署一個統一的身份認證中心,該身份認證中心主要負責對登錄SaaS用戶的身份進行認證和維護,對應的圖示如下:

雖然采用集中式身份認證方案可以很好的保證登錄用戶的安全性。但是,該方案需要租戶在SaaS應用的身份認證中心維護自己的身份,這樣必將導致租戶信息不能與其他系統一起使用,更不能實現單點登錄。

非集中式身份認證中心

非集中式身份認證中心就是每個租戶采用自己獨有的身份認證系統,各租戶通過SaaS系統發布的安全令牌,也就是Token進行通信。SaaS系統的身份認證中心通過接受解析接受到的Token來獲取對應用戶的信息。

非集中式身份認證最大程度保證系統的靈活性,通過租戶現有的身份認證中心,能夠實現租戶身份的統一維護,便于實現租戶各個系統之間的單點登錄。但這種認證方式依賴各租戶自身的身份認證系統,十分容易導致SaaS應用的身份認證系統出現安全性問題。

混合式身份認證

不管是集中式身份認證抑或是非集中式身份認證,在實際生產環境中,這兩種身份認證方式都會被會被廣泛的使用到。而且對于SaaS應用而言,需要服務的客戶千差萬別,很對中小型租戶并沒有專門的身份認證中心,要求SaaS本身提供身份認證服務;而對于大型公司而言,已有成型的身份認證系統。所以跟進上述情況,在設計SaaS產品是,既要提供集中式的身份認證模式,已滿足中小型租戶的使用需求,又要提供非集中式的身份認證模式供大型客戶使用。也就是提供混合型身份認證模式滿足各類型用戶需求。

權限管理

權限管理就是對訪問SaaS系統的租戶進行訪問權限的控制,確保只有擁有對應權限的用戶才能操作對應的功能,下面將分別從權限模型,權限分配模式,權限校驗三個方向對SaaS應用的權限管理做詳細的介紹

權限模型

不管是傳統模式,還是SaaS模式,廣泛采用的權限模式就是RBAC模型。標準RBAC模型包含四種,分別是基礎模型RBAC0、角色分級模型RBAC1、角色限制模型RBAC2和統一模式RBAC3。

  • RBAC0:RBAC的基礎,定義了用戶、角色、會話、操作、操作指引的基礎概念及關系。
  • RBAC1:在RBAC0的基礎上強調角色間的繼承關系。
  • RBAC2:在RBAC0的基礎上強調角色間的限制,包含,約束關系。
  • RBAC3:強調繼承,也強調角色間的約束。

RBAC0基礎模型的基本原理圖:

RBAC0模型在SaaS系統中同樣強調用戶、會話、角色、操作、資源等基本概念。但相對傳統應用所有資源都是全局屬性的模式,SaaS系統有著更多的不同性和更高的復雜性。對于SaaS系統而言,用戶是租戶所特有的;角色既有全局的,也有租戶自身的,而租戶的角色是需要隔離的。

權限分配

從上面的權限模型中可以看出,權限分配主要涉及角色管理、用戶到角色、角色許可分配。

角色在SaaS系統權限分配中發揮著重要的作用。對于SaaS系統而言,角色既有全局角色,也有租戶相關的角色。全局角色包含系統管理員和各租戶都會使用到的通用角色,系統管理員主要對系統和租戶進行維護及管理。通用角色主要是為了簡化租戶的操作而統一定義的系統操作角色。租戶相關的角色也可以進一步分為租戶管理員和租戶自定義的業務角色。

SaaS系統中的用戶到角色主要由租戶自己操作,對應的租戶可根據自己的實際業務需求自定義相關的角色,也可以直接采用系統通用角色。

角色許可分配涉及到兩個方面:

  1. 系統通用角色許可的分配,由系統管理員創建通用角色時統一分配;
  2. 租戶自定義角色許可的分配。由租戶管理員分配。

由于角色許可分配涉及具體操作權限的分配,相關實現方式可查看老鬼前幾篇文章。

權限校驗

權限校驗主要實現驗證對應請求用戶是否具有操作權限。首先校驗租戶是否購買相應的功能,如果購買了,再來校驗該用戶是否被授予使用權限。需要注意的是權限校驗模塊作為一個通用模塊,在實際應用中會被反復調用。所以在實現時,需要盡最大的努力保證高性能,高并發。

日志記錄

SaaS系統獲取用戶信任是需要解決的核心問題,試想一下如果用戶在系統中做了一些錯誤操作導致重要數據丟失或出錯了,這個時候用戶可能會懷疑這些錯誤是系統導致的,或者是其他租戶的操作造成的。這種懷疑將會導致用戶對系統安全性的不信任,不信任的產生將會產生致命的結果。所以,對于完整的SaaS系統,其在設計之初,就需要考慮到安全性問題,通過日志的形式規避這種可能存在的風險。

日志記錄就是要對用戶在系統的操作行為和操作數據進行記錄,以便對用戶在系統中進行的操作進行查證,確保用戶的行為不可偽造,不可銷毀,不可否認。

日志具體記錄包含兩部分:行為日志記錄和數據日志記錄。

  • 行為日志記錄:行為日志記錄就是記錄用戶在系統中訪問的每一個頁面,在頁面中所做的每一個行為都被記錄下來,記錄用戶的身份和行為的時刻。例如:租戶A的用戶A1在2018:08:04-15:00訪問了重要客戶列表,做了刪除客戶操作。
  • 數據日志記錄:數據日志記錄,就是要對用戶在系統中所操作的數據進行記錄,記錄數據的變更過程和變更歷史。這在多人操作同一個數據的系統顯得尤為重要。

 

本文由 @老鬼 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自 Pexels,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. RBAC
    是指Role based還是Rulebased?我一直分不清

    來自香港 回復
  2. 老哥,最近怎么不更新了啊

    來自河北 回復
  3. 脫敏

    回復
  4. ??

    回復
  5. 有話不說憋得慌。支持

    回復
  6. 支持

    回復