分享方式:


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

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

您可以使用 Power BI 為匯入 Power BI 的資料模型設定 RLS。 您也可以設定使用 DirectQuery 語意模型上的 RLS,例如 SQL Server。 對於 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 中的格式為「網域\使用者名稱」。 在 Power BI 服務和 Power BI 報表伺服器中,格式則為使用者的使用者主體名稱 (UPN)。 此外,在此運算式方塊中,即使您使用的地區設定 (例如法文或德文) 通常使用分號分隔符號,仍會使用逗號分隔 DAX 函式引數。

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

    有一個對話方塊確認您想要切換至預設編輯器的螢幕擷取畫面。

    注意

    在此運算式方塊中,即使您使用的地區設定 (例如法文或德文) 通常使用分號分隔字元,仍會使用逗號分隔 DAX 函式引數。

  9. 選取 [儲存]。

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

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

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

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

管理模型的安全性

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

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

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

  2. 選取安全性

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

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

使用成員

新增成員

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

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

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

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

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

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

移除成員

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

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

在 Power BI 服務中驗證角色

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

  1. 選取角色旁邊的 [更多選項] (...)。
  2. 選取 [以角色測試]

以角色測試選項的螢幕擷取畫面。

如果報表存在,系統會將您重新導向至從 Power BI Desktop 使用此語意模型發佈的報表。 儀表板無法使用 [以角色測試] 選項進行測試。

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

特定人員目前檢視身分下拉式清單的螢幕擷取畫面。

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

[檢視] 以選取要測試之不同報表的螢幕擷取畫面。

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

注意

[以角色測試] 功能不適用於已啟用單一登入 (SSO) 的 DirectQuery 模型。 此外,並非報表的所有層面都可以在 [以角色測試] 功能中進行測試,包括 Q&A 視覺效果、快速深入解析視覺效果,以及 Copilot。

使用 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 服務中的工作區,RLS 角色會套用至指派給工作區中「檢視人員」角色的成員。 即使「檢視人員」獲得語意模型的建置權限,RLS 仍適用。 例如,如果具有建置權限的檢視人員使用 [在 Excel 中進行分析],則其資料檢視會受到 RLS 的限制。 獲指派「管理員」、「成員」或「參與者」的工作區成員具有語意模型的編輯權限,因此 RLS 不適用於這些成員。 如果您想要將 RLS 套用至工作區中的人員,您只能指派「檢視人員」角色。 深入了解工作區中的角色

考量與限制

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

  • 如果先前已在 Power BI 服務中定義了角色與規則,就必須在 Power BI Desktop 中重新建立。
  • 您只能在使用 Power BI Desktop 建立的語意模型上定義 RLS。 如果您想要針對以 Excel 建立的語意模型啟用 RLS,必須先將檔案轉換成 Power BI Desktop (PBIX) 檔案。 深入了解
  • 服務主體無法新增至 RLS 角色。 因此,RLS 不適用於使用服務主體作為最終有效身分識別的應用程式。
  • 只支援匯入和 DirectQuery 連線。 Analysis Services 即時連接是在內部部署模型中處理。
  • [以角色測試/以角色檢視] 功能不適用於已啟用單一登入 (SSO) 的 DirectQuery 模型。
  • [以角色測試/以角色檢視] 功能只會顯示語意模型工作區中的報表。
  • [以角色測試/以角色檢視] 功能不適用於編頁報表。

請記住,如果 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 中的連線使用者施行安全性規則。 若您是使用 DirectQuery,將會使用資料來源中的安全性角色。 當使用者開啟報表時,Power BI 會傳送查詢給基礎資料來源,而基礎資料來源將會依據使用者的認證對資料套用安全性規則。

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

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