Power BI 的資料列層級安全性 (RLS) 可用以限制指定使用者的資料存取。 篩選會限制資料列層級的資料。 您可以在角色中定義篩選。

您可以使用 Power BI Desktop 為匯入 Power BI 的資料模型設定 RLS。 您也可以針對使用 DirectQuery (如 SQL Server) 的資料集設定 RLS。 先前,您只能夠在 Power BI 外部的內部部署 Analysis Services 模型實作 RLS。 您可以在內部部署模型上,為 Analysis Services 即時連線設定資料列層級安全性。 即時連線資料集不會顯示安全性選項。

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

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

如果想要利用動態安全性,您必須啟用預覽切換 [啟用 DirectQuery 的雙向交叉篩選功能]。 這會啟用交叉篩選的功能,並在兩個方向都套用安全性篩選。

若要定義安全性角色,您可以執行下列作業。

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

    注意:

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

  2. 選取 [模型] 索引標籤。

  3. 選取 [管理角色]。

  4. 選取 [建立]。

  5. 提供角色名稱。

  6. 選取要套用 DAX 規則的資料表。

  7. 輸入 DAX 運算式。 此運算式應該傳回 true 或 false。 例如:[Entity ID] = “Value”。

    注意:

    這個運算式中可以使用 username()*。 請注意,*username() 在 Power BI Desktop 中的格式為「網域\使用者名稱」。 在 Power BI 服務中的格式則是使用者的 UPN。 或者,您可以使用 *userprincipalname()*,這一律會以使用者主體名稱的格式傳回使用者。

  8. 建立 DAX 運算式之後,您可以選取運算式上方的核取方塊,以驗證運算式。

  9. 選取 [儲存]。

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

在 Power BI Desktop 中驗證角色

建立角色之後,您就可以在 Power BI Desktop 中測試角色的結果。 若要這樣做,請選取 [以角色身分檢視]。

[以角色身分檢視] 對話方塊可讓您變更正在查看的特定使用者或角色的檢視。 您會看到您所建立的角色。

選取已建立的角色,然後選取 [確定] 將該角色套用到您正在檢視的內容。 報表只會呈現與該角色相關的資料。

您也可以選取 [其他使用者] 並提供指定的使用者。 最好提供使用者主體名稱 (UPN),因為這正是 Power BI 服務會使用的。 選取 [確定],報表就會顯示該使用者可以看到的內容。

注意:

如果您使用的是以 DAX 運算式為基礎的動態安全性,在 Power BI Desktop 中,這只會顯示不同的結果。

管理模型的安全性

若要管理資料模型的安全性,需要執行下列動作。

  1. 針對資料集選取省略符號 (...)
  2. 選取 [安全性]。

這樣會帶您到 RLS 頁面上,以將成員加入您在 Power BI Desktop 中建立的角色。 只有資料集的擁有者會看到 [安全性] 可供使用。 如果資料集是在群組中,只有群組的系統管理員會看到安全性選項。

您只能在 Power BI Desktop 中建立或修改角色。

使用成員

新增成員

您可以輸入想要新增的使用者、安全性群組或通訊群組清單的電子郵件地址或名稱,將成員加入角色中。 這個成員必須是貴組織的成員。 您無法加入在 Power BI 中建立的群組。

您也可以根據角色名稱或 [成員] 旁括弧內的數字,知道有多少成員屬於該角色。

移除成員

您可以選取成員名稱旁的 X 來移除成員。

在 Power BI 服務中驗證角色

您可以測試角色以驗證您定義的角色是否正常運作。

  1. 選取角色旁的省略符號 (...)
  2. 選取 [以角色測試資料]。

就會看到這個角色可以使用的報表。 這個檢視未顯示儀表板。 在上方的藍色列中,您會看到套用的功能。

您可以選取 [Now viewing as] (現在檢視為) 來測試其他角色或角色組合。

您可以選擇以特定人員身分檢視資料,或者選取可用的角色組合來驗證它們是否作用。

若要返回正常檢視,請選取 [返回資料列層級安全性]。

使用 username() 或 userprincipalname() DAX 函式

您可以在資料集內使用 DAX 函式 username() 或 *userprincipalname()*。 您可以在 Power BI Desktop 中將它們用在運算式內。 當您發行模型時,它會用在 Power BI 服務中。

在 Power BI Desktop 內,username() 會以「網域\使用者」格式傳回使用者,userprincipalname() 會以 user@contoso.com 格式傳回使用者。

在 Power BI 服務內,username()userprincipalname() 都會傳回使用者的使用者主體名稱 (UPN)。 這看起來類似電子郵件地址。

在 Power BI 中對應用程式工作區使用 RLS

如果您將 Power BI Desktop 報告發佈至 Power BI 服務內的應用程式工作區,角色會套用至唯讀成員。 您必須在應用程式工作區設定內指出成員只能檢視 Power BI 內容。

警告:

如果您已將應用程式工作區設定為讓成員具有編輯權限,則 RLS 角色不會套用至成員。 使用者可以查看所有的資料。

限制

以下是雲端模型的資料列層級安全性目前限制清單。

  • 如果先前已在 Power BI 服務中定義了角色/規則,就必須在 Power BI Desktop 中重新加以建立。
  • 您只能在使用 Power BI Desktop 用戶端建立的資料集上定義 RLS。 如果您想要針對使用 Excel 建立的資料集啟用 RLS,則必須先將檔案轉換成 PBIX 檔案。 深入了解
  • 只支援 ETL 和 DirectQuery 連線。 Analysis Services 即時連接是在內部部署模型中處理。
  • RLS 目前不支援問與答及 Cortana。 如果所有模型都已設定 RLS,您將不會看到儀表板的 [問與答] 輸入方塊。 這已在規劃中,但未建立時間軸。
  • 使用 RLS 的資料集目前不支援外部共用。
  • 對於任何給定的模型,可以指派給安全性角色的 Azure AD 主體 (也就是個別使用者或安全性群組) 的最大數目是 1,000。 若要將大量使用者指派給角色,請務必指派安全性群組,而不是個別使用者。

已知問題

已知問題:如果嘗試從 Power BI Desktop 發行已發行過的內容,會收到錯誤訊息。 案例如下。

  1. Anna 有個發佈到 Power BI 服務的資料集,並已設定 RLS。

  2. Anna 更新了 Power BI Desktop 中的報表,然後重新發行。

  3. Anna 會收到錯誤。

因應措施︰從 Power BI 服務重新發行 Power BI Desktop 檔案,直到此問題解決為止。 您可以選取 [Get Data](取得資料) > [檔案] 以執行此動作。

常見問題集

問題︰如果先前曾在 Power BI 服務中建立了資料集的角色/規則會如何? 如果什麼都不做,它們還可以運作嗎? 答: 否。 視覺效果不會正確呈現。 您必須在 Power BI Desktop 內重新建立角色/規則,然後將其發行至 Power BI 服務。

問題︰我可以為 Analysis Services 資料來源建立這些角色嗎? 回答︰如果已將資料匯入 Power BI Desktop 就可以。 如果您使用的是即時連線,就無法在 Power BI 服務中設定 RLS。 這定義在內部部署 Analysis Services 模型中。

後續步驟

使用 Power BI Desktop 的資料列層級安全性 (RLS)

有其他問題嗎? 嘗試在 Power BI 社群提問