使用 LDAP 進行驗證和存取控制

瞭解如何使用 LDAP 來驗證人員身分並管理他們對資料的存取權。

驗證和存取控制對於確保適當的人員可以存取他們需要的資料,以及只有適當的人員才能存取資料至關重要。本教學課程示範如何將 Metabase 連接到 LDAP 伺服器進行驗證,以及如何使用來自該 LDAP 伺服器的群組資訊來控制誰可以檢視 Metabase 中的表格。我們不會嘗試教您 LDAP 本身,但我們只會假設您瞭解一些基本概念。

設定 LDAP

Metabase 隨附的範例資料庫有四個表格。People 表格包含個人識別資訊 (PII),因此我們只希望人力資源部門的人員能夠看到它。由於我們公司已經使用 LDAP 進行單一登入 (SSO),因此我們想要從 LDAP 取得關於誰在(以及誰不在)人力資源部門的資訊。我們已經在 LDAP 中有公司的記錄

dn: dc=metabase,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Metabase

我們也有 Farrah(隸屬人力資源部門)和 Rasmus(不隸屬人力資源部門)的記錄

dn: uid=farrah,dc=metabase,dc=com
objectClass: person
objectClass: inetOrgPerson
cn: Farrah Zubin
mail: farrah@example.metabase.com
givenName: Farrah
sn: Zubin
uid: farrah
userPassword: ------

dn: uid=rasmus,dc=metabase,dc=com
objectClass: person
objectClass: inetOrgPerson
cn: Rasmus Verdorff
mail: rasmus@example.metabase.com
givenName: Rasmus
sn: Verdorff
uid: rasmus
userPassword: ------

Farrah 和 Rasmus 的記錄未指定他們所屬的群組。相反地,我們需要使用者群組的個別 Groups 記錄,以及其下方的 groupOfNames 記錄,以指定 Farrah 和另一位名為 Luis 的員工隸屬於 Human Resources

dn: ou=Groups,dc=metabase,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Groups

dn: cn=Human Resources,ou=Groups,dc=metabase,dc=com
objectClass: top
objectClass: groupOfNames
description: Human Resources
member: uid=farrah,dc=metabase,dc=com
member: uid=luis,dc=metabase,dc=com

如果您正在使用 OpenLDAP 並從頭開始設定它,您可能需要修改 slapd.conf 組態檔,以包含 cosine.schemainetorgperson.schema 綱要檔案以及 core.schema,才能使其運作。

連線到 LDAP

一旦 LDAP 具有正確的記錄,我們就可以使用具有管理員權限的帳戶登入 Metabase。我們需要執行四件事

  1. 建立群組.
  2. 告訴 Metabase 人員可以透過 LDAP 驗證身分.
  3. 指定該群組可以存取哪些表格.
  4. 告訴 Metabase 從 LDAP 取得群組資訊.

建立群組

首先,我們按一下導覽側邊欄底部的齒輪圖示,然後選取管理設定 > 人員 > 群組,並選取建立群組。我們將我們的群組命名為「人力資源」,但我們不會在這裡的 Metabase 中新增任何人員:我們將依賴 LDAP 來管理成員資格。

驗證

下一個步驟是告訴 Metabase 它可以透過 LDAP 驗證人員身分。若要執行此操作,我們按一下驗證,啟用 LDAP,然後填寫設定以告訴 Metabase 它可以在哪裡找到伺服器。我們正在使用連接埠 389 上的本機執行個體,並且我們希望 Metabase 使用「管理員」帳戶來存取 LDAP。我們所有的人員都在 metabase.com 下,而且我們可以透過預設搜尋篩選器找到他們(預設搜尋篩選器會依 ID 或電子郵件地址尋找人員)。

此時,人員可以透過 LDAP 登入。若要測試,我們可以開啟匿名瀏覽器視窗,並以 Rasmus 或 Farrah 的身分登入。他們都還看不到 People 表格,因為我們尚未告訴 Metabase 從 LDAP 取得群組資訊。

權限

接下來,我們前往管理設定 > 權限 > 資料,並停用對 People 表格的一般存取權,讓人員預設無法看到該表格。然後,我們授與 Human Resources 群組存取權。(這篇關於沙盒的文章有關於在 Metabase 中管理表格存取權的更多資訊。)

群組管理

讓我們回到管理設定中的 LDAP 設定頁面。在底部,我們告訴 Metabase 將群組成員資格與來自 LDAP 的資訊同步,並且它可以找到 metabase.com 網域下的群組。

最後一個步驟是告訴 Metabase 它的群組和 LDAP 的群組如何相關。如果我們按一下編輯對應建立對應,我們可以填寫識別 LDAP 中群組的辨別名稱,在本例中,即是我們稍早建立的人力資源群組的 DN。然後,我們按一下新增,選取 LDAP 群組對應到的 Metabase 群組,並儲存我們的變更。

這是一個大量的設定。若要測試它,讓我們開啟匿名視窗並以 Rasmus 的身分登入。果然,Rasmus 仍然看不到 People 表格,因為他不是人力資源群組的成員。但是,如果我們關閉該視窗、開啟另一個視窗,並以 Farrah 的身分登入,我們可以看到 People 表格。而且,如果我們回到管理員的視窗並查看 People,我們可以看見圖示,這些圖示向我們顯示誰的帳戶是來自 LDAP,而不是由 Metabase 管理。

延伸閱讀