方法:在 Power Pages 上的 Power BI 中啟用資料列層級安全性
正如 Power Pages 是以網站的形式快速將 Microsoft Dataverse 部署擴展到公眾的首選工具一樣,Power BI 也是呈現極佳資料導向視覺效果的首選工具。 Power Platform 美妙之處在於它可以將這兩種無縫融合。 在過去,若要在網頁中呈現 Power BI 報表,管理員必須將報表發佈至 Web,並將它內嵌至 iFrame 中。 即使已套用頁面權限來鎖定包含報表的頁面,如果某人擁有用於內嵌報表的連結,則任何人都仍可以在網站之外存取該報表。
發佈至 Web 的目的是讓網站上的任何人都能使用資料,甚至可以再次分享報表。
警告
使用發佈至 Web 時,網際網路上的任何人都可以檢視您發佈的報表或視覺效果。 無須驗證即可檢視。 這包括查看報表中彙總的詳細等級資料。 發佈此報表之前,請確定您可以公開分享資料及視覺效果。 不要發佈機密性或專屬資訊。 如有疑問,請先核查貴組織的原則再發佈。
透過 Power BI Embedded,人們可以根據上下文向使用者提供 Power BI 元件,並使用篩選參數傳遞自動篩選,並啟用資料列層級安全性功能,讓組織保護使用者可以看到的資料,並只顯示他們能看到的資訊。
注意
只有 Power BI Embedded 才支援資料列層級安全性。
先決條件
- 已部署 Microsoft Dataverse 環境和 Power Pages 網站的租用戶。
- 用於內嵌 Power BI 報表或儀表板的網頁。
- 相關商務資料儲存在 Dataverse 中。
- Power BI Desktop。
- 發佈 Power BI Embedded 內容的容量。
- 租用戶全域管理權限。
- 在 Power BI 服務工作區中具有管理員角色的租用戶全域管理員。
- 組織,而不是個人 Power BI 工作區。
- 網站已開啟註冊/驗證。
案例
您在一家團體健身工作室工作,並使用 Dataverse 來追蹤團體健身課程及其出勤情況。 團體健身教練並不會駐留在您的租用戶身上,因為每個教練都視為承包商。 這些團體健身教練將使用您的網站登入並查看他們授課的歷史記錄、即將到來的時間表和參與率。 他們應該只能看到他們自己指導的課程,而不會看到所有教練的課程。
這些教練在 Dataverse 中表示為連絡人記錄。 存取 Power Pages 網站時,他們會按照連絡人記錄進行存取。 他們需要在網站中看到的資料來自於自訂課程資料表。 課程資料表與連絡人具有 N*:1 關係,因為課程表單具有名為教練的查詢欄位,該欄位用於連絡人資料表。
若要讓資料列層級安全性適用於 Power Pages 使用者 (連絡人),連絡人與您要報告的資料表之間需要存在直接關係。 以下是這種案例的範例資料模型:
設定 Power BI 報表或儀表板
在 Power BI Desktop 中打開 Power BI 報表或儀表板。
我們必須變更連絡人和資料表 (本例中為課程) 之間的關係,以使用雙向篩選。 若要這樣做,請選取最左邊的模型索引標籤。
選取將連絡人資料表連結到包含報表資料之資料表的行,在此範例案例中,這是 vbd_class,因為我們正在報告課程。
在編輯關聯性視窗中,有兩個挑選清單。 在頂端,選擇您要報告的資料表 ( vbd_class),並選取包含該記錄之唯一識別碼的資料行。
在底端挑選清單中,選取連絡人資料表,然後選取連絡人資料行。
基數表示多對一 (*:1)。 將跨篩選方向變更為兩者。
選取確定。
在我們實施資料列層級安全性 (RLS) 時,我們需要建立角色。 在上方首頁功能區中,選取管理角色。
在角色底下,選取建立。 角色名稱。 此範例案例使用 pagesuser。
在資料表。資料行中,選取連絡人。
使用 DAX 運算式填入右側的文字方塊:
[User Name] = username()
注意
[Username]
欄位會駐留在連絡人資料表中,而不是實際的使用者名。 這會參考 Power Pages 所使用的 adx_externalidentity 資料表。 這具有在 username() 函式中傳送至 Power BI 的 GUID。選取儲存,然後儲存檔案。
在 [首頁] 功能區中,選取發佈。
選取您是負責人且將由 Power Pages 整合使用的組織工作區。 選擇選取。
設定 Power BI 整合
參閱設定 Power BI 整合,讓您的網站可進行 Power BI 整合。
內嵌 Power BI 報表
瀏覽至 Power Pages。 找到要嵌入報表的 Power Pages 網站,然後選取編輯來打開 Power Pages 設計工作室。
在頁面工作區中,選取您要內嵌報表的網頁。
將區段新增至網頁的本文中。
當系統提示您選擇要在該區段中新增的元件時,選擇 Power BI 圖示。
當元件填入該區段時,請選取左上角上的編輯 Power BI。
選取存取類型。 選項是:
為您的客戶內嵌:可讓您將 Power BI 與外部使用者共用,而不需要 Power BI 授權或 Microsoft Entra 身分識別。
為您的組織嵌入:這會使用 Microsoft Entra 身分識別,來共用 Power BI 中的報表,以便內部使用者可以看到該報告。
發佈至網站:這允許網際網路上的任何人存取報表和資料。
注意
請確認這不是機密資訊!
其他資訊:發佈至 Web
選擇為您的客戶內嵌。
選取包含報表或儀表板的工作區,將 [類型] 指定為 [報表] 或 [儀表板],然後從最後一個下拉式清單中選擇報表或儀表板。 如果這是報表,您需要指定要嵌入的頁面。
若要查看嵌入報表或儀表板的程式碼,請從工作室的右上角選取編輯程式碼。
提示時,選取開啟 Visual Studio Code。 在左邊的 PowerPages (工作區) 底下,Power Pages 網站的名稱會有一個指向網頁的下拉式清單。 在該區段中,您會看到一個 .css 檔案、一個 .js 檔案和 HTML 複本。 請確認您在 HTML 複本檔案上。
選取 CTRL + F 並搜尋
{%
,這樣我們就可以快速找出包含參考 Power BI 儀表板或報表的程式碼。{%
表示打開標籤,這會建立語言 Liquid 的邏輯。 Liquid 是 Dataverse 與使用者在網站上互動內容的橋樑。 當我們使用工作室編輯器內嵌元件時,會在網頁的原始程式碼中會自動建立一段 Liquid 程式碼。 有關 Power BI Liquid 標籤的詳細資訊,請造訪:Dataverse Liquid 標籤和新增 Power BI 報表。您看到的完整 Liquid 程式碼會類似:
{% powerbi authentication_type:"powerbiembedded" path:"https://app.powerbi.com/groups/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/ReportSection" %}
關閉 Web 版 Visual Studio Code 索引標籤。
在 Power Pages 設計工作室中,選取內嵌 Power BI 元件,然後選擇編輯 Power BI。
向下捲動將套用角色切換至 True/Yes。
在角色文字方塊中,輸入您在 Power BI Desktop 中建立之角色的名稱。
若要查看對內嵌報表或儀表板的程式碼所做的變更,請再次選擇工作室右上角的編輯程式碼。
現在您看到的完整 Liquid 程式碼會類似:
{% powerbi authentication_type:"powerbiembedded" path:"https://app.powerbi.com/groups/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000001/ReportSection" roles:"pagesuser" %}
關閉 Visual Studio Code 索引標籤以返回至設計工作室。
選擇右上角的同步,然後選取預覽>桌面,在瀏覽器中預覽產生的內嵌報表或儀表板。
若要測試報表,在沒有用戶登錄的情況下,您可以看到 RLS 已套用,因為瀏覽到 Power Pages 網站時沒有傳回任何記錄:
此報表有基礎資料,當您在未套用 RLS 的情況下從 Power BI Desktop 查看此報表時,您可以看到總共有數個記錄,但是它們與連絡人記錄相關。
若要進一步測試,如果我們使用具有相應連絡人且有相關資料的使用者登入網站,則您只能在網頁上看到與登入使用者相關的記錄:
綜合
您已將使用資料列層級安全性的 Power BI 報表或儀表板內嵌到您的 Power Pages 網站中!
根據預設會顯示篩選窗格。 隱藏篩選窗格需要 JavaScript。 要執行此動作的步驟如下:將 Power BI 報表或儀表板新增至入口網站中的網頁。