Power BI 報表伺服器中的資料列層級安全性 (RLS)
在 Power BI 報表伺服器中設定資料列層級安全性 (RLS) 可以限制指定使用者的資料存取權。 篩選會限制資料列層級的資料存取,您可以在角色中定義篩選。 如果您目前在 Power BI 報表伺服器中使用預設權限,任何具有 Power BI 報表發行者或內容管理員權限的使用者,都可以指派成員給該報表的角色。
您可以使用 Power BI Desktop 對匯入 Power BI 的報表設定 RLS。 您也可以對使用 DirectQuery 的報表 (像是 SQL Server) 設定 RLS。 請注意,如果您的 DirectQuery 連線對報表讀取器使用整合式驗證,就不會採用 RLS。 針對 Analysis Services 即時連線,您可以在內部部署模型上設定資料列層級安全性。 即時連線資料集不會顯示安全性選項。
在 Power BI Desktop 中定義角色和規則
您可以在 Power BI Desktop 中定義角色和規則。 透過此編輯器,您可以在使用預設下拉式介面與使用 DAX 介面之間進行切換。 發佈至 Power BI 時,您也會發佈角色定義。
若要定義安全性角色:
將資料匯入 Power BI Desktop 報表,或設定 DirectQuery 連線。
注意
您不能在 Power BI Desktop 中定義 Analysis Services 即時連線的角色。 您必須在 Analysis Services 模型中進行此動作。
在 [模型] 索引標籤中,選取 [管理角色]。
從 [管理角色] 視窗中,選取 [新增] 以建立新角色。
在 [角色] 下,提供角色的名稱並選取 [輸入]。
注意
您無法使用逗號定義角色,例如
London,ParisRole
。在 [選取資料表] 下,選取要套用資料列層級安全性篩選條件的資料表。
在 [篩選資料] 下,使用預設編輯器來定義您的角色。 建立的運算式會傳回 true 或 false 值。
注意
並非所有在 Power BI 中支援的資料列層級安全性篩選條件都可以使用預設編輯器進行定義。 限制包含目前只能使用 DAX 定義的運算式,包括 username() 或 userprincipalname() 等動態規則。 若要使用這些篩選條件定義角色,請切換至使用 DAX 編輯器。
選擇性地選取 [切換至 DAX 編輯器],以切換至使用 DAX 編輯器定義您的角色。 DAX 運算式會傳回 true 或 false 值。 例如:
[Entity ID] = “Value”
。 DAX 編輯器會使用自動完成功能來完成公式 (intellisense)。 您可以選取運算式方塊上方的核取記號來驗證運算式,也可以選取運算式方塊上方的 X 按鈕來還原變更。注意
這個運算式中可以使用 username()。 請注意,username() 在 Power BI Desktop 中的格式為「網域\使用者名稱」。 在 Power BI 服務和 Power BI 報表伺服器中,格式則為使用者的使用者主體名稱 (UPN)。 此外,在此運算式方塊中,即使您使用的地區設定 (例如法文或德文) 通常使用分號分隔符號,仍會使用逗號分隔 DAX 函式引數。
您可以選取 [切換至預設編輯器],以切回預設編輯器。 切換介面時,任一編輯器介面中所做的所有變更都會盡可能保存。 使用 DAX 編輯器定義無法在預設編輯器中定義的角色時,如果嘗試切換至預設編輯器,系統會以切換編輯器可能導致某些資訊遺失的警告提示您。 若要保留此資訊,請選取 [取消],然後繼續僅在 DAX 編輯器中編輯此角色。
注意
在此運算式方塊中,即使您使用的地區設定 (例如法文或德文) 通常使用分號分隔字元,仍會使用逗號分隔 DAX 函式引數。
選取 [儲存]。
您無法在 Power BI Desktop 中指派使用者給角色。 請在 Power BI 服務中指派他們。 在 Power BI Desktop 內,您可以使用 username() 或 userprincipalname() DAX 函式,並設定合適的關聯性,以啟用動態安全性。
雙向交叉篩選
根據預設,不論關聯性設定為單向或雙向,資料列層級安全性篩選都會使用單向篩選。 您可以手動啟用資料列層級安全性的雙向交叉篩選。
選取關聯性,並選取 [雙向套用安全性篩選] 核取方塊。
在根據使用者名稱或登入識別碼實作動態資料列層級安全性時,請選取此方塊。
如需詳細資訊,請參閱在 Power BI Desktop 中使用 DirectQuery 雙向交叉篩選和保護表格式 BI 語意模型技術白皮書。
在 Power BI Desktop 中驗證角色
在建立角色之後,於 Power BI Desktop 中測試角色的結果。
從 [模型化] 索引標籤中,選取 [檢視身分]。
隨即顯示 [以角色身分檢視] 視窗,您會在此看到您已建立的角色。
選取您建立的角色。 然後,選擇 [確定] 來套用該角色。
報表會呈現該角色的相關資料。
您也可以選取 [其他使用者] 並提供指定的使用者。
最好提供使用者主體名稱 (UPN),因為 Power BI 服務和 Power BI 報表伺服器都會用到。
在 Power BI Desktop 中,只有當您使用以 DAX 運算式為基礎的動態安全性時,[其他使用者] 才會顯示不同的結果。 在此情況下,您必須包含使用者名稱以及角色。
選取 [確定]。
報表會根據 RLS 篩選條件允許使用者看到的內容進行轉譯。
注意
[以角色身分檢視] 功能不適用於已啟用單一登入 (SSO) 的 DirectQuery 模型。
將成員新增到角色
當您在 Power BI 報表伺服器中儲存報表後,可以在伺服器上管理安全性,以及新增或移除成員。 僅具有該報表發行者或內容管理員權限的使用者具有而且可使用資料列層級安全性選項。
如果報表沒有所需角色,您必須在 Power BI Desktop 中將其開啟,新增或修改角色,然後將其儲存回 Power BI 報表伺服器。
請在 Power BI Desktop 中,將報表儲存到 Power BI 報表伺服器。 您必須使用適用於 Power BI 報表伺服器的 Power BI Desktop 版本。
在 Power BI 報表服務中,選取報表旁邊的省略符號 (…)。
選取 [管理]>[資料列層級安全性]。
在 [資料列層級安全性] 頁面上,將成員新增到您在 Power BI Desktop 中建立的角色。
若要新增成員,請選取 [新增成員]。
以使用者名稱格式 (網域\使用者) 在文字方塊中輸入使用者或群組,並選取您要指派給他們的角色。 這個成員必須在您組織中。
您也可以在這裡輸入使用者主體名稱,視您設定 Active Directory 的方式而定。 在此情況下,報表伺服器會在清單中顯示相對應的使用者名稱。
按一下 [確定] 以套用。
若要移除成員,請選取其名稱旁邊的方塊,並選取 [刪除]。 您可以同時刪除多名成員。
username() 和 userprincipalname()
您可以在資料集內使用 DAX 函式 username() 或 userprincipalname()。 您可以在 Power BI Desktop 中將它們用在運算式內。 當您發佈了模型後,Power BI 報表伺服器就會使用它們。
在 Power BI Desktop 內,username() 會以「網域\使用者」的格式傳回使用者,userprincipalname() 會以 user@contoso.com 的格式傳回使用者。
在 Power BI 報表伺服器中,username() 和 userprincipalname() 都會傳回使用者的使用者主體名稱 (UPN),這類似於電子郵件地址。
如果您目前在 Power BI 報表伺服器中使用自訂驗證,它會傳回您為使用者設定的使用者名稱格式。
考量與限制
以下為 Power BI 模型上資料列層級安全性目前的限制。
具有使用 username() DAX 函式之報表的使用者現在將會發現有新行為,當以整合式安全性使用 DirectQuery 時,使用者主體名稱 (UPN) 會傳回 EXCEPT。 因為該案例中不採用 RLS,所以該案例中的行為不會變更。
您只能在使用 Power BI Desktop 建立的資料集上定義 RLS。 如果您想要針對以 Excel 建立的資料集啟用 RLS,必須先將檔案轉換成 Power BI Desktop (PBIX) 檔案。 深入了解轉換 Excel 檔案。
僅支援使用所儲存認證的擷取、轉換、載入 (ETL) 及 DirectQuery 連線。 使用整合式驗證對 Analysis Services 和 DirectQuery 連線的即時連線會在基礎資料來源中處理。
如果您目前以整合式安全性使用 DirectQuery,您的使用者可能會注意到:
- RLS 已停用,而且所有檔案皆會傳回。
- 使用者無法更新其角色指派,並會在 [RLS 管理] 頁面上發生錯誤。
- 在 DAX 使用者名稱函式方面,您會繼續收到格式為「網域\使用者」的使用者名稱。
報表作者要在上傳報表後,跟著將角色指派給自己,才有權檢視 Power BI 報表伺服器中的報表資料。
僅在 Power BI 報表伺服器設定為搭配 NTLM 或 Kerberos 驗證執行時,才支援透過群組成員資格進行角色指派。 搭配自訂驗證或 Windows Basic 執行的伺服器需要明確指派給角色的使用者。
常見問題集
我可以為 Analysis Services 資料來源建立這些角色嗎?
如果已將資料匯入 Power BI Desktop,就可建立。 如果您目前使用即時連線,就無法在 Power BI 服務中設定 RLS。 已在 Analysis Services 模型內部部署中定義 RLS。
我可以使用 RLS 來限制使用者能夠存取的資料行或量值嗎?
否。 如果使用者具有特定資料列的存取權,就可以查看該資料列的所有資料行。
RLS 是否可讓我隱藏詳細資料,但允許存取以視覺效果摘要的資料?
否,您可以保護個別資料列,但使用者一律可以查看詳細資料或摘要的資料。
如果我已經指派現有的角色和成員,還可以在 Power BI Desktop 中新增角色嗎?
可以,如果您目前已經在 Power BI 報表伺服器中定義角色或指派成員,您還是可以建立其他角色並重新發佈報表,您目前的指派並不會受到影響。
相關內容
更多問題嗎? 嘗試在 Power BI 社群提問