資料沙盒
資料沙盒僅適用於 Pro 和 Enterprise 方案(包含自架和 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」(「帳戶」表格的「方案」資料行中不存在的值),沙盒化人員將會取得空白結果,而不是沙盒化表格。
實際運作的使用者屬性範例
建立基本沙盒
- 請務必先完成基本沙盒的先決條件。
- 前往管理設定 > 權限。
- 選取您要沙盒化的資料庫和表格。
- 尋找您要放入沙盒的群組。
- 按一下該群組檢視資料下方的下拉式選單。
- 選取「已沙盒化」。
- 按一下資料行下方的下拉式選單,然後輸入要篩選表格的資料行,例如「方案」。
- 按一下使用者屬性下方的下拉式選單,然後輸入使用者屬性金鑰,例如「方案」。
如果您有使用沙盒化資料的已儲存 SQL 問題,請務必將所有這些問題移至僅限管理員的集合。如需更多資訊,請參閱權限衝突:已儲存的 SQL 問題。
您可以在資料沙盒範例中找到基本沙盒設定範例。
自訂沙盒的先決條件
- 要新增至進階資料沙盒的人員群組。
- 僅限管理員的集合,其中集合權限設定為無存取權給所有群組,管理員除外。
- 已儲存的SQL 問題,其中包含要向自訂沙盒中的人員顯示的資料列和資料行,並儲存在僅限管理員的集合中。
- 選用:如果您想要在自訂沙盒中限制資料列,請為群組中的每個人設定使用者屬性。
建立 SQL 問題以供 Metabase 在自訂沙盒中顯示
在進階資料沙盒中,Metabase 將向特定群組顯示已儲存的問題,以取代原始表格。
使用 SQL 問題來定義要包含在沙盒中的確切資料列和資料行。如果您使用查詢產生器 (GUI) 問題,您可能會意外公開額外資料,因為 GUI 問題可能包含來自其他已儲存問題或模型的資料。
請務必將 SQL 問題儲存在僅限管理員的集合中(集合權限設定為無存取權給所有群組,管理員除外)。如需更多資訊,請參閱權限衝突:已儲存的 SQL 問題。
在自訂沙盒中顯示已編輯的資料行
除了從自訂沙盒排除資料列和資料行之外,您也可以顯示已編輯的資料行(而不會變更資料庫中的資料行)。
例如,您可以建立一個「沙盒化帳戶」SQL 問題,以截斷「電子郵件」資料行,以顯示使用者名稱而非完整的電子郵件地址。
如果您編輯資料行,則已儲存 SQL 問題(您想要在沙盒中顯示的問題)的結構描述,必須符合原始表格的結構描述。這表示「沙盒化帳戶」SQL 問題必須傳回與原始「帳戶」表格相同數量的資料行和對應的資料類型。
您無法將資料行新增至自訂沙盒。
建立自訂沙盒
- 請務必先完成自訂沙盒的先決條件。
- 前往管理設定 > 權限。
- 選取您要沙盒化的資料庫和表格。
- 尋找您要放入沙盒的群組。
- 按一下該群組資料存取權下方的下拉式選單。
- 選取「已沙盒化」。
- 選取「使用已儲存的問題來建立此表格的自訂檢視」。
- 選取您已儲存的問題。問題應以 SQL 撰寫。如果問題包含參數,則這些參數必須為必要參數(不得為選用參數)。
- 選用:根據人員的使用者屬性限制資料列。
如果您已儲存使用沙箱資料的 SQL 問題,請務必將所有這些問題移至僅限管理員的集合。
您可以在資料沙箱範例中找到自訂沙箱設定範例。
使用使用者屬性限制自訂沙箱中的資料列
您可以設定自訂沙箱,根據每個人的使用者屬性來限制不同資料列。例如,您可以顯示「沙箱帳戶」問題,並為一個群組設定篩選條件 Plan = "Basic"
,為另一個群組設定篩選條件 Plan = "Premium"
。
- 請確認您已完成自訂沙箱的先決條件。
- 前往將顯示給自訂沙箱中人員的已儲存 SQL 問題。
- 在您的 SQL 查詢中新增參數化
WHERE
子句,例如WHERE plan = {{ plan_variable }}
。 - 儲存 SQL 問題。
- 前往管理設定 > 權限。
- 找到您自訂沙箱的群組和表格。
- 開啟檢視資料下的下拉式選單。
- 點擊編輯沙箱存取權。
- 向下捲動並將參數或變數設定為已儲存 SQL 問題中參數的名稱(例如「Plan Variable」)。
- 將使用者屬性設定為使用者屬性鍵(例如鍵「User’s Plan」,而非值「Basic」)。
- 點擊儲存。
如需 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 版本的文件。