共用方式為


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

Power BI 的資料列層級安全性 (RLS) 可用以限制指定使用者的資料存取。 篩選會限制資料列層級的資料存取,您可以在角色中定義篩選。 在 Power BI 服務中,具有工作區存取權的使用者可以存取該工作區中的語意模型。 RLS 僅限具有檢視人員權限使用者的資料存取。 不適用於管理員、成員或參與者。

您可以使用 Power BI 為匯入 Power BI 的資料模型設定 RLS。 您還可以在使用 DirectQuery(例如 SQL Server)的語義模型上設定 RLS(列級安全)。 針對 Analysis Services 或 Azure Analysis Services 即時連線,您可以在模型中設定數據列層級安全性,而不是在 Power BI 中設定。 即時連線語意模型不會顯示安全性選項。

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

您可以在 Power BI Desktop 中定義角色和規則。 透過此編輯器,您可以在使用預設下拉式介面與使用 DAX 介面之間進行切換。 發佈至 Power BI 時,您也會發佈角色定義。

若要定義安全性角色:

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

    注意

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

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

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

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

    [管理角色] 視窗的螢幕擷取畫面,其中醒目提示 [建立新角色] 按鈕。

  4. 在 [角色] 下,提供角色的名稱並選取 [輸入]。

    [管理角色] 視窗的螢幕擷取畫面,其中醒目提示 [重新命名角色]。

    注意

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

  5. 在 [選取資料表] 下,選取要套用資料列層級安全性篩選條件的資料表。

  6. 在 [篩選資料] 下,使用預設編輯器來定義您的角色。 建立的運算式會傳回「true」或「false」的值。

    [管理角色] 視窗預設編輯器的螢幕擷取畫面,此編輯器用於定義資料列層級安全性。

    註解

    並非所有在 Power BI 中支援的資料列層級安全性篩選條件都可以使用預設編輯器進行定義。 限制包含目前只能使用 DAX 定義的運算式,包括 username()userprincipalname() 等動態規則。 若要使用這些篩選條件定義角色,請切換至使用 DAX 編輯器。

  7. 選擇性地選取 [切換至 DAX 編輯器],以切換至使用 DAX 編輯器定義您的角色。 DAX 運算式會傳回 true 或 false 值。 例如: [Entity ID] = “Value” 。 DAX 編輯器具備公式自動完成功能 (intellisense)。 您可以選取運算式方塊上方的核取記號來驗證運算式,也可以選取運算式方塊上方的 X 按鈕來還原變更。

    [管理角色] 視窗的截圖,其中著重顯示了一個範例 DAX 運算式。

    備註

    這個運算式中可以使用 username()。 請注意,username() 在 Power BI Desktop 中的格式為「網域\使用者名稱」。 Within the Power BI service and Power BI Report Server, it's in the format of the user's User Principal Name (UPN). 此外,在此運算式方塊中,即使您使用的地區設定通常會使用分號作為分隔符號(例如法文或德文),仍需使用逗號來分隔 DAX 函式引數。

  8. 您可以選取 [切換至預設編輯器],以切回預設編輯器。 切換介面時,任一編輯器介面中所做的所有變更都會盡可能保存。 使用 DAX 編輯器定義無法在預設編輯器中定義的角色時,如果嘗試切換至預設編輯器,系統會以切換編輯器可能導致某些資訊遺失的警告提示您。 若要保留此資訊,請選取 [取消],然後繼續僅在 DAX 編輯器中編輯此角色。

    螢幕擷取畫面顯示了一個對話方塊,確認您想要切換到預設編輯器。

    備註

    In this expression box, use commas to separate DAX function arguments even if you're using a locale that normally uses semicolon separators, such as French or German.

  9. 請選擇儲存

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

根據預設,資料列層級安全性篩選使用單一方向的篩選條件,不論關聯性設定為單向或雙向。 您可以透過選取關聯性並勾選 [在雙向篩選中套用資料列層級安全性] 核取方塊,手動啟用具備資料列層級安全性的雙向交叉篩選功能。 請注意,如果資料表參與多個雙向關聯性,您只能針對其中一個關聯性選取此選項。 當同時在伺服器層級實作動態資料列層級安全性 (其中資料列層級安全性是依據使用者名稱或登入識別碼) 時,請選取此選項。

如需詳細資訊,請參閱在 Power BI 中使用 DirectQuery 雙向交叉篩選保護表格式 BI 語意模型技術文件。

模型關聯圖設定的螢幕擷取畫面,以雙向套用安全性篩選。

管理模型的安全性

若要管理語意模型的安全性,請開啟您在 Fabric 服務中儲存語意模型的工作區,然後執行下列步驟:

  1. 在 Fabric 中,選取語意模型的 [更多選項] 功能表。 當您將滑鼠停留在語意模型名稱上時,即會顯示此功能表。

    顯示導覽功能表中 [更多選項] 功能表的螢幕擷取畫面。

  2. 選取安全性

    顯示 [更多選項] 功能表的螢幕擷取畫面,其中已選取 [安全性]。

[安全性] 會帶您前往 [角色層級安全性] 頁面,您可在其中將成員新增至您建立的角色。 貢獻者(以及更高的工作區角色)將看到安全性,並可以將使用者指派到某個角色。

備註

您只能在已在 Power BI Desktop 中定義數據列層級安全性角色的模型,或在 Power BI 服務中編輯數據模型時管理安全性。 如果您的模型尚未定義角色,就無法管理 Power BI 服務的安全性。

與成員合作

新增成員

在 Power BI 服務中,您可以藉由輸入電子郵件地址或使用者名稱或安全性群組,將成員新增至角色。 您無法新增在 Power BI 中建立的群組。 您可以新增組織的外部成員

您可以使用以下群組來設定列級安全性。

請注意,不支援 Microsoft 365 群組,且無法新增至任何角色。

顯示如何新增成員的螢幕擷取畫面。

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

顯示角色中成員的螢幕擷取畫面。

移除成員

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

顯示如何移除成員的螢幕擷取畫面。

在 Power BI 服務中驗證角色

您可以測試角色以驗證您定義的角色是否在 Power BI 服務中正常運作。

  1. Select More options (...) next to the role.
  2. Select Test as role.

Screenshot of Test as role option.

如果報表存在,系統會將您重新導向至從 Power BI Desktop 使用此語意模型發佈的報表。 Dashboards aren't available for testing using the Test as role option.

在頁面標題中,會顯示應用的角色。 您可以選取 [目前檢視身分] 來測試其他角色、角色組合或特定人員。 在這裡,您會看到與所測試個人或角色相關的重要權限詳細資料。 如需權限如何與 RLS 互動的詳細資訊,請參閱 RLS 使用者體驗

顯示為特定人員的下拉選單的截圖。

測試連線至語意模型的其他報表,方法是選取頁首中的 [檢視]。 您只能測試位於與語意模型相同工作區的報表。

Screenshot of Viewing to select a different report to test.

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

注意

The Test as role feature doesn't work for DirectQuery models with Single Sign-On (SSO) enabled. Additionally, not all aspects of a report can be validated in the Test as role feature including Q&A visualizations, Quick insights visualizations, and Copilot.

Using the username() or userprincipalname() DAX function

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

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

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

Using RLS with workspaces in Power BI

如果您將 Power BI Desktop 報表發佈至 Power BI 服務中的工作區,RLS 角色會套用至指派給工作區中「檢視人員」角色的成員。 即使觀眾被授予語義模型的構建權限,RLS仍然適用。 例如,如果具有建置權限的檢視人員使用 [在 Excel 中進行分析],則其資料檢視會受到 RLS 的限制。 獲指派「管理員」、「成員」或「參與者」的工作區成員具有語意模型的編輯權限,因此 RLS 不適用於這些成員。 如果您希望在工作區內對人員套用 RLS,您只能為他們指派檢視者角色。 深入了解工作區中的角色

考量與限制

您可以在這裡看到雲端模型目前的資料列層級安全性限制:

  • 如果先前已在 Power BI 服務中定義了角色與規則,就必須在 Power BI Desktop 中重新建立。
  • 您只能在使用 Power BI Desktop 建立的語意模型上定義 RLS。 如果您想要針對以 Excel 建立的語意模型啟用 RLS,必須先將檔案轉換成 Power BI Desktop (PBIX) 檔案。 深入了解
  • 無法將服務主體新增至RLS角色中。 因此,RLS 不適用於使用服務主體作為最終有效身分識別的應用程式。
  • 只支援匯入和 DirectQuery 連線。 Live connections to Analysis Services are handled in the on-premises model.
  • [以角色測試/以角色檢視] 功能不適用於已啟用單一登入 (SSO) 的 DirectQuery 模型。
  • The Test as role/view as role feature shows only reports from semantic models workspace.
  • The Test as role/View as role feature doesn't work for paginated reports.

請記住,如果 Power BI 報表參考已設定 RLS 的資料列,則會針對已刪除或不存在的欄位顯示相同訊息。 對這些使用者來說,報表看似已毀損。

常見問題集

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

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

問題:我可以使用 RLS 來限制使用者能夠存取的資料行或量值嗎?
回答:否,如果使用者具有特定資料列的存取權,就可以查看該資料列的所有資料行。 若要限制對資料行和資料列中繼資料的存取,請考慮使用物件層級安全性

問題:RLS 是否可讓我隱藏詳細資料,但允許存取以視覺效果摘要的資料?
回答:否,您可以保護個別資料列,但使用者一律可以查看詳細資料或摘要的資料。

回答:我的資料來源已定義了安全性角色 (例如 SQL Server 角色或 SAP BW 角色)。 這些角色與 RLS 之間有何關聯性?
回答:答案取決於您是匯入資料,或是使用 DirectQuery。 若您是將資料匯入 Power BI 資料集,便不會使用資料來源中的安全性角色。 此時您應定義 RLS,對 Power BI 中的連線使用者施行安全性規則。 If you're using DirectQuery, the security roles in your data source are used. 當使用者開啟報表時,Power BI 會傳送查詢給基礎資料來源,而基礎資料來源將會依據使用者的認證對資料套用安全性規則。

問題:使用者可以屬於一個以上的角色嗎?
答案:使用者可以屬於多個角色,這些角色是可以疊加的。 例如,如果使用者同時屬於「銷售」和「行銷」角色,他們可以看到這兩個角色的資料。

有任何問題嗎? 請嘗試詢問 Power BI 社群建議? 貢獻想法來改善 Power BI