資料沙盒

資料沙盒僅適用於 ProEnterprise 方案(包含自架和 Metabase Cloud)。

資料沙盒讓您可以針對不同人員群組,授予資料列和資料行的精細權限。您可以沙盒化群組可以檢視的資料,以及群組可以使用查詢產生器查詢的資料。

您可以使用沙盒來設定自助式分析,讓您的每位客戶僅檢視符合其客戶 ID 的資料列。例如,如果您有一個「帳戶」表格,其中包含您客戶的資訊,您可以沙盒化該表格,讓每位客戶僅看到與其相關的資料。

資料沙盒範例

您可以跳過理論,直接前往沙盒範例

沙盒的運作方式

您可以將資料沙盒視為一組權限,其中包含:

  • 表格的篩選版本,將取代您的原始表格,在 Metabase 中使用原始表格的任何地方皆是如此。
  • 應該查看表格篩選版本的人員群組

您可以在 Metabase 中,為每個表格/群組組合定義最多一個資料沙盒。這表示您可以為不同群組顯示不同版本的表格,例如對您的銷售人員顯示「銷售用的沙盒化帳戶」,以及對銷售經理顯示「經理用的沙盒化帳戶」。

資料沙盒的類型

資料沙盒會根據每個人的使用者屬性,向其顯示特定資料。您可以:

  • 使用基本沙盒限制特定人員的資料列
  • 使用自訂沙盒(也稱為進階沙盒),限制特定人員的資料行(以及資料列)。
  基本沙盒(依表格中的資料行篩選) 自訂沙盒(使用已儲存的 SQL 問題)
依單一資料行篩選來限制資料列
依多個資料行篩選來限制資料列
限制資料行
編輯資料行

基本資料沙盒:依表格中的資料行篩選

若要限制資料列,請使用基本沙盒。基本沙盒會向群組顯示表格的篩選版本,而不是原始表格。篩選器會將表格中的資料行設定為特定的使用者屬性值

例如,您可以建立基本沙盒,為群組篩選「帳戶」表格,以便:

  • 使用者屬性值為「Basic」的人員,將看到 方案 = "Basic" 的資料列(「方案」資料行符合值「Basic」的資料列)。
  • 使用者屬性值為「Premium」的人員,將看到 方案 = "Premium" 的資料列(「方案」資料行符合值「Premium」的資料列)。

自訂資料沙盒:使用已儲存的問題來建立表格的自訂檢視

若要限制資料行以及資料列,請使用自訂沙盒(也稱為進階沙盒)。自訂沙盒會顯示已儲存 SQL 問題的結果,以取代您的原始表格。

例如,假設您的原始「帳戶」表格包含以下資料行:ID、「電子郵件」、「方案」和「建立時間」。如果您想要隱藏「電子郵件」資料行,您可以建立一個「沙盒化帳戶」SQL 問題,其中包含以下資料行:「ID」、「方案」和「建立時間」。

對於特定群組,自訂沙盒將顯示「沙盒化帳戶」問題的結果,而不是原始「帳戶」表格,在 Metabase 中使用「帳戶」的任何地方皆是如此。

您也可以使用自訂沙盒來:

限制

在沙盒中無法良好運作的事項。

具有原生查詢權限(存取 SQL 編輯器)的群組無法沙盒化

您無法為沙盒化群組設定查詢產生器和原生權限。

若要使用原生查詢編輯器強制執行資料列層級權限,請查看模擬

SQL 問題無法沙盒化

由於 Metabase 無法剖析 SQL 查詢,因此 SQL 問題的結果將永遠使用原始表格,而非沙盒化表格。

使用集合權限來防止沙盒化群組檢視具有受限資料的已儲存 SQL 問題。

非 SQL 資料庫無法沙盒化

資料沙盒權限不適用於非 SQL 資料庫,例如 Apache Druid 或 MongoDB。

基本沙盒的先決條件

基本沙盒會向特定群組顯示表格的篩選版本,以取代原始表格。Metabase 如何篩選該表格取決於每個人使用者屬性中的值。

例如,您可以設定基本沙盒,以便:

  • 使用者屬性金鑰為「方案」且值為「Basic」的人員,將看到「帳戶」表格的版本,其中篩選條件為 方案 = "Basic"(也就是說,僅限「方案」資料行符合值「Basic」的資料列)。
  • 使用者屬性「方案」設定為「Premium」的人員,將看到不同版本的「帳戶」表格,其中已套用篩選條件 方案 = "Premium"

為資料沙盒選擇使用者屬性

基本沙盒需要使用者屬性,而自訂沙盒則為選用。當新增使用者屬性時,您將為每個人設定金鑰/值組。

Metabase 使用使用者屬性金鑰來查閱特定人員的使用者屬性值。使用者屬性金鑰可以對應至 Metabase 中的參數。

使用者屬性值必須與沙盒化表格的篩選值完全相符(區分大小寫)。例如,如果您要在「帳戶」表格上建立基本沙盒,篩選條件為 方案 = "Basic",請確保您輸入「Basic」作為使用者屬性值。如果您將使用者屬性值設定為小寫「basic」(「帳戶」表格的「方案」資料行中不存在的值),沙盒化人員將會取得空白結果,而不是沙盒化表格。

實際運作的使用者屬性範例

建立基本沙盒

  1. 請務必先完成基本沙盒的先決條件
  2. 前往管理設定 > 權限
  3. 選取您要沙盒化的資料庫和表格。
  4. 尋找您要放入沙盒的群組。
  5. 按一下該群組檢視資料下方的下拉式選單。
  6. 選取「已沙盒化」。
  7. 按一下資料行下方的下拉式選單,然後輸入要篩選表格的資料行,例如「方案」。
  8. 按一下使用者屬性下方的下拉式選單,然後輸入使用者屬性金鑰,例如「方案」。

如果您有使用沙盒化資料的已儲存 SQL 問題,請務必將所有這些問題移至僅限管理員的集合。如需更多資訊,請參閱權限衝突:已儲存的 SQL 問題

您可以在資料沙盒範例中找到基本沙盒設定範例。

自訂沙盒的先決條件

  • 要新增至進階資料沙盒的人員群組
  • 僅限管理員的集合,其中集合權限設定為無存取權給所有群組,管理員除外。
  • 已儲存的SQL 問題,其中包含要向自訂沙盒中的人員顯示的資料列和資料行,並儲存在僅限管理員的集合中。
  • 選用:如果您想要在自訂沙盒中限制資料列,請為群組中的每個人設定使用者屬性

建立 SQL 問題以供 Metabase 在自訂沙盒中顯示

在進階資料沙盒中,Metabase 將向特定群組顯示已儲存的問題,以取代原始表格。

使用 SQL 問題來定義要包含在沙盒中的確切資料列和資料行。如果您使用查詢產生器 (GUI) 問題,您可能會意外公開額外資料,因為 GUI 問題可能包含來自其他已儲存問題或模型的資料。

請務必將 SQL 問題儲存在僅限管理員的集合中(集合權限設定為無存取權給所有群組,管理員除外)。如需更多資訊,請參閱權限衝突:已儲存的 SQL 問題

在自訂沙盒中顯示已編輯的資料行

除了從自訂沙盒排除資料列和資料行之外,您也可以顯示已編輯的資料行(而不會變更資料庫中的資料行)。

例如,您可以建立一個「沙盒化帳戶」SQL 問題,以截斷「電子郵件」資料行,以顯示使用者名稱而非完整的電子郵件地址。

如果您編輯資料行,則已儲存 SQL 問題(您想要在沙盒中顯示的問題)的結構描述,必須符合原始表格的結構描述。這表示「沙盒化帳戶」SQL 問題必須傳回與原始「帳戶」表格相同數量的資料行和對應的資料類型。

您無法將資料行新增至自訂沙盒。

建立自訂沙盒

  1. 請務必先完成自訂沙盒的先決條件
  2. 前往管理設定 > 權限
  3. 選取您要沙盒化的資料庫和表格。
  4. 尋找您要放入沙盒的群組。
  5. 按一下該群組資料存取權下方的下拉式選單。
  6. 選取「已沙盒化」。
  7. 選取「使用已儲存的問題來建立此表格的自訂檢視」。
  8. 選取您已儲存的問題。問題應以 SQL 撰寫。如果問題包含參數,則這些參數必須為必要參數(不得為選用參數)。
  9. 選用:根據人員的使用者屬性限制資料列

如果您已儲存使用沙箱資料的 SQL 問題,請務必將所有這些問題移至僅限管理員的集合。

您可以在資料沙箱範例中找到自訂沙箱設定範例。

使用使用者屬性限制自訂沙箱中的資料列

您可以設定自訂沙箱,根據每個人的使用者屬性來限制不同資料列。例如,您可以顯示「沙箱帳戶」問題,並為一個群組設定篩選條件 Plan = "Basic",為另一個群組設定篩選條件 Plan = "Premium"

  1. 請確認您已完成自訂沙箱的先決條件
  2. 前往將顯示給自訂沙箱中人員的已儲存 SQL 問題。
  3. 在您的 SQL 查詢中新增參數化 WHERE 子句,例如 WHERE plan = {{ plan_variable }}
  4. 儲存 SQL 問題。
  5. 前往管理設定 > 權限
  6. 找到您自訂沙箱的群組和表格。
  7. 開啟檢視資料下的下拉式選單。
  8. 點擊編輯沙箱存取權
  9. 向下捲動並將參數或變數設定為已儲存 SQL 問題中參數的名稱(例如「Plan Variable」)。
  10. 使用者屬性設定為使用者屬性鍵(例如鍵「User’s Plan」,而非值「Basic」)。
  11. 點擊儲存

如需 SQL 變數和使用者屬性設定範例,請參閱資料沙箱範例

自訂沙箱中的資料列限制運作方式

使用者屬性、SQL 參數和自訂沙箱如何協同運作,向不同人員顯示不同的資料列。

標準 WHERE 子句透過將欄位設定為固定值來篩選表格

WHERE column_name = column_value

在上方資料列限制設定的步驟 2 中,您將新增 SQL 變數,以便 WHERE 子句接受動態值。SQL 變數類型必須是文字、數字或日期

WHERE plan = {{ plan_variable }}

在上方資料列限制設定的步驟 9-10 中,您正在告訴 Metabase 將 SQL 變數 plan_variable 對應到使用者屬性鍵(例如「User’s Plan」)。Metabase 將使用此鍵來查詢與人員 Metabase 帳戶關聯的特定使用者屬性值(例如「Basic」)。當該人員登入 Metabase 並使用沙箱表格時,他們將看到依以下條件篩選的查詢結果

WHERE plan = "Basic"

請注意,參數必須是建立自訂沙箱所用 SQL 問題的必要參數。例如,您不能使用選用參數;以下方法將無法運作

[[WHERE plan = {{ plan_variable }}]]

深入瞭解SQL 參數

防止資料沙箱權限衝突

某些 Metabase 權限可能會與資料沙箱衝突,導致資料存取權限比您預期的更寬鬆或更嚴格。

假設您有一個自訂沙箱,它會隱藏「帳戶」表格中的「電子郵件」欄位(針對特定群組)。

如果沙箱人員符合以下條件,「電子郵件」欄位可能會對其公開

多個資料沙箱權限

同一表格上的多個資料沙箱可能會造成權限衝突。您最多可以將一個人新增到每個表格的一個資料沙箱(透過該人員的群組)。

例如,如果您有

  • 針對「基本帳戶」群組的一個沙箱,該沙箱依 Plan = "Basic" 篩選「帳戶」表格。
  • 針對「已轉換帳戶」群組的另一個沙箱,該沙箱依 Trial Converted = true 篩選「帳戶」表格。

如果您將 Vincent Accountman 放入這兩個群組,他將在「帳戶」表格中處於衝突的沙箱中,並且每當他嘗試在 Metabase 中使用「帳戶」時,都會收到錯誤訊息。

若要解決資料沙箱權限衝突

  • 將該人員從除一個群組之外的所有群組中移除。
  • 將除一個群組之外的所有群組的檢視資料資料庫存取權設定為「已封鎖」。

已儲存的 SQL 問題無法進行沙箱處理

資料沙箱權限不適用於 SQL 問題的結果。也就是說,已儲存的 SQL 問題將始終顯示來自原始表格而非沙箱表格的結果。

假設您有一個自訂沙箱,它會隱藏「帳戶」表格中的「電子郵件」欄位。如果非沙箱人員建立包含「電子郵件」欄位的 SQL 問題,任何具有檢視該 SQL 問題的集合權限的人員都將能夠

  • 在 SQL 問題結果中看到「電子郵件」欄位。
  • 使用 SQL 問題來開始包含「電子郵件」欄位的新問題。

若要防止「電子郵件」欄位透過 SQL 問題公開

  • 將任何包含「電子郵件」欄位的 SQL 問題放入個別集合中。
  • 針對不應看到「電子郵件」欄位的沙箱群組,將集合權限設定為無存取權

必須使用集合權限來防止沙箱群組檢視參考沙箱表格的已儲存 SQL 問題。這就是為什麼當您建立自訂沙箱時,必須將已儲存的 SQL 問題(您想要在沙箱中顯示的問題)放入僅限管理員的集合中。

公開分享

資料沙箱權限不適用於公開問題或公開儀表板。如果非沙箱人員使用原始表格建立公開連結,則原始表格將顯示給任何擁有公開連結 URL 的人員。

若要防止這種情況發生,您必須停用 Metabase 執行個體的公開分享

Metabase 只能使用已登入人員的群組成員資格或使用者屬性來建立資料沙箱。由於公開連結不需要登入,因此 Metabase 將沒有足夠的資訊來建立沙箱。

延伸閱讀

閱讀其他Metabase 版本的文件。