資料沙箱範例

資料沙箱僅適用於 ProEnterprise 方案(自架設和 Metabase Cloud 均適用)。

資料沙箱 讓您可以

以下所有範例的設定

以下範例使用 Metabase 隨附的範例資料庫。以下是基本設定

  1. 封鎖「所有使用者」群組的權限:按下 cmd/ctrl + k 以開啟命令面板,並搜尋「權限」。在權限 > 資料 標籤中。按一下所有使用者群組。針對範例資料庫,將「所有使用者」的檢視資料權限設定為「已封鎖」。

  2. 建立名為「Customers」的群組。按下 cmd/ctrl + k 並搜尋人員設定。[建立名為「Customers」的群組。

  3. 為 Cloyd Beer 建立使用者帳戶。我們將建立使用者帳戶,給我們範例資料庫中「人員」表格中的隨機人員。我們選擇範例資料庫「人員」表格中的 Cloyd Beer

  4. 為帳戶新增使用者屬性:我們將使用者屬性新增至 Cloyd 的帳戶。由於我們希望能夠依使用者 ID 篩選資料,因此我們將從範例資料庫的「人員」表格中抓取 Cloyd 的 ID,並將該 ID 新增為使用者屬性user_id: 24992499 是 Mr. Beer 在範例資料庫中的 ID)。

User details

  1. 將 Mr. Beer 新增至「Customers」群組:請參閱將人員新增至群組

  2. 建立只有管理員可以檢視的集合。將其命名為「Admin collection」。我們將使用此集合來儲存 SQL 問題,以在範例 2 和 3 中沙箱化表格。請參閱集合權限

基本沙箱設定 - 依使用者屬性篩選資料列

在此範例中,我們將沙箱化「Orders」表格,以便「Customers」群組中的任何人只能看到「Orders」表格中 User ID 資料欄與人員 user_id 屬性相符的資料列。

  1. 前往管理設定 > 權限 > 資料。按一下「Customers」群組。

  2. 將檢視資料設定為「細微」。針對範例資料庫,將「Customer」群組的檢視資料設定為「細微」。設定為「細微」可讓我們為「Customer」群組的個別表格設定權限。

  3. 沙箱化「Orders」和「People」表格。在這裡,我們將「Orders」和「People」表格的「檢視資料」權限設定為「已沙箱化」。由於我們希望人員能夠自助服務其資料(透過提問、建立儀表板等),我們也將他們的建立查詢權限設定為「僅限查詢產生器」。

Grant sandboxed access

  1. 依每個表格的資料欄篩選。針對每個表格,Metabase 都會詢問我們「您要如何為此群組的使用者篩選此表格?」。在每種情況下,我們都將保留預設選項:「依此表格上的資料欄篩選」。針對「Orders」表格,我們將依 User ID 資料欄篩選,我們將其設定為等於「Customers」群組人員的 user_id 屬性。

Sandbox settings

針對「People」表格,我們將依 ID 資料欄篩選,我們將其設定為等於相同的 user_id 屬性。

  1. 儲存您的變更。否則,一切都將徒勞無功。

測試基本沙箱

為了測試 Mr. Beer 的沙箱,我們將開啟新的無痕/私密瀏覽器視窗,並使用 Mr. Beer 的帳戶登入。

  1. 以 Cloyd Beer 身分登入。
  2. 按一下瀏覽 > 資料庫
  3. 按一下Orders 表格。
  4. 確認 Metabase 只顯示 Mr. Beer 下的訂單,也就是與使用者 ID 2499 相關聯的訂單。

如果 Mr. Beer 檢視任何圖表、儀表板,甚至是包含沙箱化「Orders」資料的自動化X 光探索,Metabase 也會篩選這些結果,只顯示 Mr. Beer 獲准查看的資料。當 Mr. Beer 使用查詢產生器提出新問題時,他的結果將僅限於沙箱化的資料。

自訂沙箱設定

建立沙箱的第二種方式是使用已儲存的問題來定義要顯示的表格自訂檢視。當具有沙箱化表格存取權限的人員查詢該表格時,Metabase 會在幕後改用您建立的已儲存問題作為其查詢的來源資料。

您可以

自訂範例 1:篩選資料欄

在此範例中,我們有一個名為「People」的表格,我們想要修剪此表格,以便 Mr. Beer 和其他「Customers」可以檢視任何資料列,但只能檢視某些資料欄。

Original People table

  1. 建立限制「People」表格中資料欄的查詢。使用原生/SQL 編輯器,我們將撰寫一個查詢,只傳回我們希望「Customers」群組看到的表格中的資料欄,如下所示
  ID,
  Name,
  'Created At',
  State
FROM
  People

以下是結果

Filtering question

我們將此問題命名為「Filtered people table」。將其儲存至您在設定中建立的「Admins collection」(或只有管理員可以存取的任何集合)。

  1. 使用已儲存的問題,為此表格建立自訂檢視:我們將前往「權限」區段,並授予此群組對此表格的沙箱化存取權限。這次我們將選取第二個選項「使用已儲存的問題,為此表格建立自訂檢視」,並選取我們剛建立的已儲存問題(「Filtered people table」),如下所示

Sandbox options

  1. 儲存變更,以免我們的辛勞付諸東流。

  2. 驗證一切運作正常。我們可以以 Mr. Beer 身分登入,當我們前往開啟「People」表格時,我們應該會看到 Mr. Beer 可以改為看到篩選問題的結果。

當 Mr. Beer 檢視使用來自此沙箱化表格資料的圖表時,Metabase 也會套用篩選。如果圖表使用沙箱化表格排除的任何資料欄,則圖表將無法為 Mr. Beer 載入。

自訂範例 2:篩選資料列和資料欄

如果我們想要指定人員可以檢視哪些資料欄資料列,我們可以根據具有變數的 SQL 問題沙箱化表格,並將該變數與使用者屬性建立關聯。若要這麼做,我們將為「Customers」群組提供「Orders」表格的自訂檢視,但只允許每個人根據其 user_id 使用者屬性查看資料列。

  1. 建立具有變數的 SQL 問題。我們將建立一個查詢,僅從「Orders」表格中選取部分資料欄,然後新增具有變數的 WHERE 子句,我們可以將其與 Cloyd Beer 的 user_id 使用者屬性建立關聯。

Filtering question

以下是程式碼


SELECT
  id,
  created_at,
  product_id,
  quantity,
  total,
  user_id
FROM
  orders
WHERE
  user_id = {{user_id}}

將其儲存至您在設定中建立的「Admins collection」(或只有管理員可以存取的任何集合)。

  1. 設定沙箱:返回權限標籤。選取 Cloyd Beer 的「Customer」群組,並將「Orders」表格的檢視資料存取權設定為 已沙箱化。選取使用已儲存的問題,為此表格建立自訂檢視。開啟沙箱化存取模式,並選取第二個選項,然後選取我的篩選問題,我們將看到一個額外區段,可讓我將在問題中定義的變數對應至使用者屬性

Sandboxing options

  1. 儲存您的變更。否則就放棄所有希望。

  2. 驗證沙箱:現在,當我們以 Mr. Beer 身分登入並查看「Orders」表格時,Mr. Beer 將只會看到我們包含在篩選問題中的資料欄,且資料列會依問題 WHERE 子句中變數的指定方式進行篩選

Results

延伸閱讀

閱讀其他Metabase 版本的文件。