Power BI 報表伺服器 中的數據列層級安全性 (RLS)

設定具有 Power BI 報表伺服器 的數據列層級安全性 (RLS) 可以限制指定使用者的數據存取。 篩選會限制數據列層級的數據存取,而且您可以在角色內定義篩選。 如果您使用 Power BI 報表伺服器 中的默認許可權,任何具有 Power BI 報表發行者或內容管理員許可權的使用者都可以將成員指派給該報表的角色。

您可以針對使用 Power BI Desktop 匯入 Power BI 的報表設定 RLS。 您也可以在使用 DirectQuery 的報表上設定 RLS,例如 SQL Server。 請記住,如果您的 DirectQuery 連線使用報表讀取器的整合式驗證,則不會遵守 RLS。 針對 Analysis Services 即時連線,您可以在內部部署模型上設定數據列層級安全性。 安全性選項不會針對即時連線數據集顯示。

在 Power BI Desktop 中定義角色和規則

您可以在 Power BI Desktop 中定義角色和規則。 當您發佈至 Power BI 時,也會發佈角色定義。

若要定義安全性角色:

  1. 將數據匯入 Power BI Desktop 報表,或設定 DirectQuery 連線。

    注意

    您無法在 Power BI Desktop 中定義 Analysis Services 即時連線的角色。 您必須在 Analysis Services 模型中執行此動作。

  2. 從 [模型] 索引 標籤 中,選取 [ 管理角色]。

    [模型化] 索引標籤的螢幕快照,其中醒目提示 [管理角色]。

  3. 從 [ 管理角色] 視窗中,選取 [ 建立]。

    [管理角色] 視窗的螢幕快照,其中醒目提示 [建立]。

  4. 在 [角色]下,提供角色的名稱。

    注意

    您無法使用逗號來定義角色,例如 London,ParisRole

  5. 在 [數據表] 下,選取您要套用 DAX (數據分析表示式) 規則的數據表。

  6. 在 [ 數據表篩選 DAX 表達式 ] 方塊中,輸入 DAX 運算式。 此表達式會傳回 true 或 false 的值。 例如: [Entity ID] = “Value”

    [管理角色] 視窗的螢幕快照,其中醒目提示範例 DAX 表達式。

    注意

    您可以在此表示式中使用username()。 請注意,username() 在 Power BI Desktop 中具有 DOMAIN\username 的格式。 在 Power BI 服務 和 Power BI 報表伺服器 中,其格式為用戶的用戶主體名稱(UPN)。 或者,您可以使用 userprincipalname(),其一律會以使用者主體名稱的格式傳回使用者: username@contoso.com

  7. 建立DAX表達式之後,請選取表達式方塊上方的複選標記來驗證表達式。

    [數據表篩選 DAX 表達式] 視窗的螢幕快照,其中醒目提示複選標記。

    注意

    在此表達式方塊中,即使您使用的是通常使用分號分隔符的地區設定(例如法文或德文),仍使用逗號分隔 DAX 函式自變數。

  8. 選取 [儲存]。

您無法將使用者指派給 Power BI Desktop 內的角色。 您會在 Power BI 服務 中指派它們。 您可以使用 username()userprincipalname() DAX 函式,並設定適當的關聯性,在 Power BI Desktop 中啟用動態安全性。

雙向交叉篩選

根據預設,數據列層級安全性篩選會使用單向篩選,不論關聯性是設定為單向還是雙向。 您可以使用資料列層級安全性手動啟用雙向交叉篩選。

  • 選取關聯性,然後核取 [ 雙向套用 安全性篩選] 複選框。

    套用安全性篩選

根據使用者名稱或登入標識碼實作動態數據列層級安全性時,請核取此方塊。

若要深入瞭解,請參閱 在Power BI Desktop 中使用 DirectQuery 的雙向交叉篩選,以及 保護表格式 BI 語意模型 技術白皮書。

驗證 Power BI Desktop 內的角色

建立角色之後,請在Power BI Desktop 中測試角色的結果。

  1. 從 [模型] 索引 標籤 中,選取 [ 檢視身分]。

    [模型] 索引標籤的螢幕快照,其中醒目提示 [檢視身分]。

    [ 以角色 身分檢視] 視窗隨即出現,您會看到您已建立的角色。

    [以角色身分檢視] 視窗的螢幕快照,其中已選取 [無]。

  2. 選取您建立的角色。 然後選擇 [ 確定 ] 以套用該角色。

    報表會轉譯與該角色相關的數據。

  3. 您也可以選取 [其他使用者 ],並提供指定的使用者。

    [檢視為角色] 視窗的螢幕快照,其中已輸入範例使用者。

    最好提供用戶主體名稱 (UPN),因為這是 Power BI 服務 和 Power BI 報表伺服器 使用的內容。

    在 Power BI Desktop 中,只有在您根據 DAX 運算式使用動態安全性時, 其他使用者 才會顯示不同的結果。 在此情況下,您必須包含使用者名稱和角色。

  4. 選取 [確定]。

    報表會根據 RLS 篩選條件允許使用者看到的內容來轉譯。

    注意

    已啟用 單一登錄 (SSO) 的 DirectQuery 模型無法使用 [檢視為角色 ] 功能。

將成員新增至角色

將報表儲存在 Power BI 報表伺服器 之後,您可以管理安全性,並在伺服器上新增或移除成員。 只有具有報表發行者或內容管理員許可權的使用者具有數據列層級安全性選項,且不會呈現灰色。

如果報表沒有所需的角色,您必須在Power BI Desktop 中開啟它、新增或修改角色,然後將它儲存回 Power BI 報表伺服器。

  1. 在 Power BI Desktop 中,將報表儲存至 Power BI 報表伺服器。 您必須使用適用於 Power BI 報表伺服器 的 Power BI Desktop 版本。

  2. 在 Power BI 報表服務中,選取報表旁邊的省略號 (...)。

  3. 選取 [管理>數據列層級安全性]。

    管理數據列層級安全性

    在 [ 數據列層級安全性 ] 頁面上,您會將成員新增至您在 Power BI Desktop 中建立的角色。

  4. 若要新增成員,請選取 [新增成員]。

  5. 在 [用戶名稱] 格式 (DOMAIN\user) 文字框中輸入使用者或群組,然後選取您想要指派給他們的角色。 成員必須位於您的組織內。

    將成員新增至角色

    視您設定 Active Directory 的方式而定,在這裡輸入用戶主體名稱也有效。 在此情況下,報表伺服器會在清單中顯示對應的用戶名稱。

  6. 按兩下 [ 確定 ] 以套用。

  7. 若要移除成員,請選取其名稱旁邊的方塊,然後選取 [ 刪除]。 您可以一次刪除多個成員。

    刪除成員

username() 和 userprincipalname()

您可以利用數據集內的DAX函式username() 或userprincipalname()。 您可以在 Power BI Desktop 的運算式中使用它們。 當您發佈模型時,Power BI 報表伺服器 會使用這些模型。

在 Power BI Desktop 中,username() 會以 DOMAIN\User 的格式傳回使用者,而 userprincipalname() 會以 的格式 user@contoso.com傳回使用者。

在 Power BI 報表伺服器 中,username() 和 userprincipalname() 都會傳回使用者的用戶主體名稱 (UPN),這類似於電子郵件位址。

如果您在 Power BI 報表伺服器 中使用自訂驗證,則會傳回您為使用者設定的使用者名稱格式。

考量與限制

以下是Power BI模型上資料列層級安全性的目前限制。

具有使用 username() DAX 函式報告的用戶現在會注意到新的行為,其中用戶主體名稱 (UPN) 會在搭配整合式安全性使用 DirectQuery 時傳回 EXCEPT。 由於該案例中未遵守 RLS,因此該案例中的行為不會變更。

您只能在使用 Power BI Desktop 建立的數據集上定義 RLS。 若要為使用 Excel 建立的數據集啟用 RLS,您必須先將檔案轉換成 Power BI Desktop (PBIX) 檔案。 深入了解 轉換Excel檔案

僅支援使用預存認證的擷取、轉換、載入 (ETL) 和 DirectQuery 連線。 使用整合式驗證的 Analysis Services 和 DirectQuery 連線即時聯機會在基礎數據源中處理。

如果您使用整合式安全性與 DirectQuery,則您的使用者可能會注意到:

  • RLS 已停用,並傳回所有數據。
  • 用戶無法更新其角色指派,並在 [RLS 管理] 頁面上收到錯誤。
  • 針對 DAX 使用者名稱函式,您會繼續以 DOMAIN\USER 的形式接收使用者名稱。

報表作者在上傳報表之後,無法存取 Power BI 報表伺服器 中檢視報表數據。

只有在 Power BI 報表伺服器 設定為使用NTLM或 Kerberos 驗證執行時,才支援透過群組成員資格的角色指派。 使用自訂驗證或 Windows Basic 執行的伺服器需要明確指派給角色的使用者。

常見問題集

我可以為 Analysis Services 數據源建立這些角色嗎?

您可以將數據匯入 Power BI Desktop。 如果您使用即時連線,則無法在 Power BI 服務 內設定 RLS。 RLS 定義於內部部署的 Analysis Services 模型內。

我可以使用 RLS 來限制使用者可存取的數據行或量值嗎?

否。 如果使用者可以存取特定數據列,他們可以看到該數據列的所有數據行。

RLS 是否讓我隱藏詳細數據,但可讓您存取視覺效果中摘要的數據?

否,您可以保護個別的數據列,但使用者一律可以看到詳細數據或摘要數據。

如果我已指派現有的角色和成員,是否可以在Power BI Desktop中新增角色?

是,如果您已定義現有的角色,且已在 Power BI 報表伺服器 中指派成員,您可以建立其他角色,並重新發佈您的報表,而不會影響目前的指派。

更多問題嗎? 嘗試在 Power BI 社群提問