模擬身分權限

模擬身分存取僅適用於 ProEnterprise 方案(包括自架和 Metabase Cloud)。

目前,模擬身分存取僅適用於 PostgreSQL、Redshift 和 Snowflake。

本頁涵蓋名為「模擬身分」的檢視資料權限層級。

模擬身分存取允許管理員將「檢視資料」權限「外包」給資料庫中的角色。管理員可以將使用者屬性與資料庫定義的角色及其權限相關聯。如果某人所在的群組將其「檢視資料」權限設定為「模擬身分」,則該人員將能夠根據授予其使用者屬性指定的角色的權限來檢視和查詢資料。

設定連線模擬身分

**為了使模擬身分適用於 Redshift 資料庫,Metabase 用於連線到您的 Redshift 資料庫的使用者帳戶必須是超級使用者,因為 Metabase 需要能夠執行 SET SESSION AUTHORIZATION 命令,而該命令只能由資料庫超級使用者執行。

為了使模擬身分存取能夠運作,您首先需要在資料庫中設定 Metabase 要模擬的角色,然後設定 Metabase 在人員檢視或查詢資料時模擬這些角色。

在您的資料庫中,設定角色

  1. 建立新角色(在 Redshift 中,這將是新使用者)。
  2. 授予該角色權限。

關於如何在資料庫中建立新角色以及授予該角色權限的確切方法,您需要查閱資料庫的文件。我們也有一些關於使用者、角色和權限的文件,可以幫助您入門。

在您的 Metabase 中,設定模擬身分並指定使用者屬性

  1. 建立新群組,或選取現有群組。

  2. 使用者屬性指派給該群組中的人員。 您將使用此使用者屬性將該群組中的人員與您在資料庫中建立的角色相關聯。例如,如果您在資料庫中建立了一個名為 sales 的角色,該角色可以存取與銷售團隊相關的表格子集,則您可以新增一個名為 db_role (或您想要呼叫該屬性的任何名稱)的使用者屬性,並將值 sales 指派給人員的 db_role。屬性的值(在本例中為 sales)應與資料庫中角色的名稱相符。只有某些資料庫會強制執行區分大小寫,因此您可能需要確保屬性的值和資料庫的角色完全相符。

  3. 將模擬身分存取套用至該群組。。按下 Cmd/Ctrl + K 以叫出命令面板。搜尋權限。或前往管理設定 > 權限 > 資料

  4. 選取您要設定權限的資料庫。

  5. 找到您要與您建立的資料庫角色相關聯的群組。在該群組的檢視資料設定下,選取模擬身分

  6. 從下拉式選單中,選取您新增的、對應到您希望群組在查詢資料庫時使用的角色的使用者屬性。

  7. 儲存您的變更。

具有資料模擬身分存取權限的群組中的人員不一定共享相同的權限

Metabase 將針對每個人使用您在使用者屬性中指定的任何角色。例如,如果您為模擬身分選取 db_role 屬性,則一個人的 db_role 可能是 sales,另一個人的可能是 engineering,或任何其他對應到資料庫中有效角色的值。

使用模擬身分設定列層級 SQL 存取權限

您可以使用模擬身分授予人員對原生/SQL 編輯器的存取權,同時根據特定的資料庫角色限制其對資料的存取權限。不僅限於表格層級的存取權限,還包括列層級的存取權限,或您在資料庫中為該角色定義的任何存取權限。實際上,您可以使用模擬身分來設定類似資料沙盒的資料存取權限,同時讓人們使用 SQL 編輯器來查詢該資料。不同之處在於,您需要在資料庫中透過授予角色的權限來設定該列層級安全性,而不是在 Metabase 中設定資料沙盒。

相反地,如果您想授予群組對該資料庫中某些(但非全部)結構描述或表格的 SQL 存取權限,您可以於資料庫中建立另一個僅包含這些表格子集(甚至特定的列層級存取權限)的角色,然後使用 Metabase 的模擬身分功能將使用者屬性與該角色相關聯。Metabase 基本上會執行的動作是取得使用者屬性,並在 Metabase 執行查詢之前,將該屬性作為字串傳遞到資料庫的 SET ROLEUSE ROLE 命令中。

連線模擬身分不適用於 Metabase 管理員群組中的人員,因為他們更寬鬆的權限優先。

如需更多關於如何設定此功能的資訊,請查看使用模擬身分取得同時適用於 GUI 和 SQL 查詢的列層級權限

Metabase 授予人員在其所有群組中對資料最寬鬆的存取權限

因此,如果某人屬於兩個針對同一個資料庫具有不同權限的群組

  • 紅色群組具有模擬身分存取權限,限制了他們可以看到的內容。
  • 藍色群組的「檢視資料」設定為「可以檢視」,「建立查詢」設定為「查詢產生器和原生」。

紅色群組更寬鬆的存取權限將會覆寫模擬身分存取權限。

延伸閱讀

閱讀其他Metabase 版本的文件。