天天看點

基于開源可視化資料探索平台 Superset 的資料安全管理

作者:資料築夢空間

資料驅動型的公司通常都會配備一個公司統一的 BI 報表系統,該系統承載着公司所有的 BI 報表,包括:産品銷量報表、公司營運效能名額報表、财務報表等等。由于資料的安全等級和敏感程度不同,BI 報表系統需要對接入的資料源和 BI 報表進行分級通路權限管控,以保障資料安全。同時,這套資料通路權限控制需要易于實施。

如果使用開源的 Superset 作為公司統一的 BI 報表系統,如何來進行權限管理呢?本文首先介紹 Superset 資料安全管理的能力和原理,再根據結合名額體系中資料域的劃分,梳理了一套行之有效的 Superset 資料安全管理方法和使用流程。

Superset 資料安全管理的能力介紹

根據官網(https://superset.apache.org/docs/security)的介紹,Superset 能夠對資料源、BI 報表(圖表)、報表看闆(圖表集合)、SQL 工具箱(SQL Lab)進行通路權限管控。Superset 2.0 之後的版本,具備了行級資料權限控制的能力,由于該功能較新,本文暫不作介紹。

Superset 采用了 Role-Based Access Control(RABC) 的權限管理政策。通過将上述權限綁定到自定義的 Role,再将 Role 賦給具體的使用者,使用者就具備了 Role 的資料通路權限。在 Superset 中,可以給一個使用者賦予多個 Role,該使用者擁有的權限是他所有 Role 綁定的權限的并集。

Superset 預設已經建立了以下幾個常用的 Role,可直接使用這些 Role 進行權限控制,也能夠基于這些 Role 自定義一些新 Role 來進行權限控制。但 Superset 官網不建議對以下這些基礎 Role 進行修改:

Admin:管理者,具備 Superset 所有權限。

Alpha:對所有資料源都有通路權限,但不能将權限授予他人。

Gamma:隻能檢視他們具備通路權限的資料源、BI 報表、資料看闆。這些資料源、BI 報表、資料看闆需要另外授權。

sql_lab:SQL 工具箱的通路權限。隻有具有 sql_lab 權限的使用者才能夠使用 SQL 工具箱進行自定義 SQL 探索資料。

Public:幾乎沒有權限,隻能了解 Superset 的 feature。

Superset 資料安全管理的工作原理

Superset 進行資料安全管理的基點是對資料源通路權限的控制。如果某一個使用者 A 對資料源 S 沒有通路權限,那麼該使用者無法通路基于 資料源 S 開發出來的 BI 報表和報表看闆;在 SQL 工具箱中也無法看到資料源 S。

當使用者 A 被授予資料源 S 通路權限之後,他能夠在資料源中看到資料源 S。如果想要的 SQL 工具箱中探索這些資料,他必須同時具備 sql_lab 這個 Role。同理,他想要通路基于資料源 S 開發出來的 BI 報表、報表看闆的話,他還需要擷取 BI 報表和報表看闆的通路權限。這通常是由報表的建立者通過報表分享的功能分享給使用者 A 的,并不需要 Superset 管理來進行控制。

看到這裡,我們也可以得到一個最佳實踐:資料源的通路權限由資料團隊管控;BI 報表的通路權限由業務團隊管控。

基于名額體系的資料域進行資料權限劃分

基于開源可視化資料探索平台 Superset 的資料安全管理

在名額體系中,通常會劃分成多個資料域,每一個資料域提供一張或者多張主題表對外提供名額通路與使用。将名額和報表的通路權限的管控粒度精确到 資料域 的級别,能夠讓使用者使用一個或者多個資料域中的名額和報表,而不能通路其他資料域中的名額和報表。

對于每一個資料域,可以根據資料的機密程度,劃分成 低 和 高 兩種。機密程度低的資料可以被該資料域下的所有使用者通路;機密程度高的資料隻能被該資料域下具備進階通路權限的使用者通路。

Superset 基于資料域的資料通路權限的劃分

結合資料域的劃分,根據資料域資料通路權限的大小,在 Superset 中可以分為 4 類,分别是:系統管理者、資料管理者、資料域進階使用者、資料域普通使用者。

  1. 系統管理者權限:管理系統中所有角色和使用者,管理系統中所有資料域的資料源。
  2. 資料管理者權限:管理和接入各個資料域的資料源。
  3. 資料域進階通路權限:能夠通路所屬資料域中的所有資料。
  4. 資料域普通通路權限:能夠通路所屬資料域中機密等級低的資料,無法通路機密等級高的資料。

下面通過報表開發的階段,描述一個以上4中權限發揮的作用。

在初始化階段,由 系統管理者 建立 資料管理者權限角色、各個 資料域進階通路權限角色 以及各個 資料域普通通路權限角色 ;建立使用者,為各個使用者賦予相應的角色。

在資料源接入階段,資料管理者開發和接入各個資料域的資料源。資料源的粒度可以是:資料庫、資料表、資料集(一個或者多個庫表加工好的資料計算結果),為所有的資料源辨別出高、低機密性(這需要跟各個資料的業務名額負責人讨論确定)。對于機密性高的資料源建議通過資料集(而不是資料庫、表)的方式接入資料源,便于安全管控。詳情見下文“BI 報表開發流程”部分。

在報表開發階段,各個資料域的使用者可以基于能夠通路的資料源,開發各類報表。各類報表開發完之後,預設情況下是報表開發人員私有的,隻能自己通路。如果其他使用者想要通路這些報表,可以向報表開發人員申請通路權限。報表開發人員隻要通過 Superset 界面,将報表共享給報表使用人員即可。詳情見下文“BI 報表使用流程”部分。

⚠️需要注意的是:隻有同時具備報表的通路權限和報表底層資料的通路權限時,報表使用人員才能通路報表。

Superset 報表開發流程與報表使用流程

BI 報表開發流程

基于開源可視化資料探索平台 Superset 的資料安全管理

BI 報表使用流程

基于開源可視化資料探索平台 Superset 的資料安全管理

參考資料:

https://superset.apache.org/docs/security/

繼續閱讀