限制對 Power BI 模型的物件的存取權

已完成

身為資料建模者,您可以考慮限制使用者對 Power BI 模型物件的存取。 物件層級安全性 (OLS) 可以限制對特定資料表和資料行,及其中繼資料的存取。 一般而言,您可套用 OLS 來保護儲存敏感性資料的物件,例如員工個人資料。

Power BI 強制執行 OLS 時,不僅會限制對資料表和資料行的存取,也可以保護中繼資料。 在您保護中繼資料時,便無法使用動態管理檢視 (DMV) 來擷取安全資料表和資料行的相關資訊。

重要

表格式模型可以使用檢視方塊來隱藏資料表和資料行 (和其他物件)。 檢視方塊會定義模型物件的可檢視子集,以協助為報表作者提供特定的焦點。 檢視方塊旨在減少模型的複雜度,並協助報表作者尋找感興趣的資源。 不過,檢視方塊不是安全性功能,因為它們無法保護物件。 使用者即使看不到資料表或資料行,仍然可以查詢資料表或資料行。

請考慮 Adventure Works 的範例。 此組織有一個名為 DimEmployee 的資料倉儲維度資料表。 資料表包含儲存員工姓名、電話、電子郵件地址和薪資的資料行。 雖然一般報表取用者可以看到員工姓名和連絡人詳細資料,但不能看到薪資值。 只有資深人力資源員工才能查看薪資值。 因此,資料建模者使用 OLS,只將薪資資料行的存取權授與特定人力資源員工。

螢幕擷取畫面:顯示員工資料表的模型圖表檢視,其中包含受限制的 [薪資] 資料行。

OLS 是繼承自 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 的功能。 此功能可在 Power BI Premium 中使用,以便為移轉至 Power BI 的模型提供回溯相容性。 因此,您無法在 Power BI Desktop 中完全設定 OLS。

設定 OLS

若要設定 OLS,請從建立角色開始。 您可以在 Power BI Desktop 中以設定 RLS 的相同方式來建立角色。 接下來,您必須將 OLS 規則新增至角色。 Power BI Desktop 不支援這項功能,因此您必須採用不同的方法。

您可以使用 XML for Analysis (XMLA) 端點,將 OLS 規則新增至 Power BI Desktop 模型。 XMLA 端點可供 Power BI Premium 使用,並在Power BI 服務中提供 Analysis Services 引擎的存取權。 讀取/寫入端點支援資料集管理、應用程式生命週期管理、進階資料模型化等等。 您可以使用已啟用 XMLA 端點的 API 來編寫指令碼,例如表格式模型指令碼語言 (TMSL)、或 PowerShell SqlServer 模組。 或者您也可以使用 SSMS 等用戶端工具。 您還可以選擇協力廠商工具,例如 Tabular Editor,這是建立、維護及管理模型的開放原始碼工具。

根據預設,所有模型資料表和資料行都不會受到限制。 您可以將資料表和資料行設為讀取。 設為時,與該角色相關聯的使用者便無法存取物件。 設為讀取時,與該角色相關聯的使用者便能夠存取物件。 若要限制特定資料行,請確認資料表未設為

新增 OLS 規則後,您就可將模型發佈至 Power BI 服務。 使用與 RLS 相同的流程,將帳戶和安全性群組對應至角色。

考量

在 Power BI 報表中,若使用者沒有存取資料表或資料行的權限,就會收到錯誤訊息。 訊息會告知他們該物件不存在。

螢幕擷取畫面:顯示當報告視覺效果嘗試查詢受限制的資料行時,Power B I Desktop 的錯誤訊息。

請謹慎考慮 OLS 是否為適合您專案的解決方案。 在使用者開啟查詢受限物件 (對他們而言) 的 Power BI 報表時,錯誤訊息可能會造成混淆,並造成負面體驗。 在使用者看來,報表似乎是損壞了。 較好的方法是針對不同報表取用者需求,建立一組不同的模型或報表。

限制

實作 OLS 時,有一些要注意的限制。

您無法在相同的角色中混用 RLS 和 OLS。 如果您需要在相同的模型中套用 RLS 和 OLS,請建立每個類型專用的個別角色。 此外,如果資料表層級安全性會中斷關聯鏈結,您就無法設定資料表層級安全性。 例如,如果資料表 A 和 B,以及 B 和 C 之間,各有關聯性,則您無法保護資料表 B。如果資料表 B 受到保護,對資料表 A 的查詢就無法傳輸資料表 A 和 B,以及 B 和 C 之間的關聯性。在此情況下,您可以設定資料表 A 與 C 之間的個別關聯性。

此圖表會顯示上一段所述的關聯性範例。

不過,若模型關聯性參考的是受保護資料行,便可正常使用,前提是該資料行的資料表並未受到保護。

最後,雖然無法保護量值,但參考受保護物件的量值也會自動受到限制。

如需詳細資訊,請參閱物件層級安全性