分享方式:


在內嵌的編頁報表中實作資料列層級安全性

適用於: 應用程式擁有資料 使用者擁有資料

本文說明如何將使用 RLS (資料列層級安全性) 的編頁報表內嵌至您的應用程式擁有資料應用程式。

注意

本文僅適用於應用程式擁有資料的客戶。

若要使用 RLS 處理編頁報表:

  1. 設定環境以篩選報表
  2. 在報表或查詢層級篩選資料
  3. 使用內嵌權杖傳遞設定的參數

必要條件

  • 本文假設您知道如何內嵌 Power BI 編頁報表。 其中說明如何產生內嵌權杖,讓報表只顯示使用者有權存取的內容。

  • 編頁報表是使用 SQL Server Reporting Services 引擎建立,而不是 Power BI (Analysis Services) 引擎,因此 RLS 篩選是在 Power BI Report Builder 中設定。

設定環境

若要將資料列層級安全性套用至 Power BI 編頁報表,請使用內建欄位 UserID 來指派參數。 此參數可用來篩選或查詢您的資料

然後,將 UserID 傳遞至內嵌權杖 - 產生權杖 API 以取得內嵌權杖

在報表或查詢層級使用 UserID 作為篩選

您可以使用 UserID 作為篩選條件或用於查詢資料來源。

篩選資料

  1. 在 [語意模型屬性] 視窗中,從左窗格中選取 [篩選]

    Power BI Report Builder 篩選的螢幕擷取畫面。

  2. 從 [運算式] 下拉式功能表中,選取您要用來篩選資料的參數。

    螢幕擷取畫面顯示已從 [運算式] 功能表選取 Color 值。

  3. 選取 [值] 功能按鈕。

    Power BI 報表產生器中的 [值]

  4. 在 [運算式] 視窗中,從 [類別] 清單中選取 [內建欄位]

    螢幕擷取畫面顯示 [運算式] 視窗,其中已針對 [類別] 選取 [內建欄位],並針對 [項目] 選取 [ExecutionTime]。

  5. 從 [項目] 清單中選取 [UserID],然後選取 [確定]

    Power BI 報表產生器中的 [UserID]

  6. 在 [語意模型屬性] 視窗中,確認運算式是「您選取的參數 = UserID」,然後選取 [確定]

    Power BI Report Builder 語意模型屬性

使用查詢

  1. 在 [語意模型屬性] 視窗中,從左側瀏覽窗格中選取 [參數],然後選取 [新增]

    Power BI 報表產生器中的 [參數]

  2. 在 [參數名稱] 欄位中輸入 @UserID,然後在 [參數值] 中新增 [&UserID]

    Power BI 報表產生器中的 [參數名稱]

  3. 從左窗格中選取 [查詢],在 [查詢] 中新增 UserID 參數作為查詢的一部分,然後選取 [確定]

    注意

    在下方的螢幕擷取畫面中,以 color 參數作為範例,WHERE FinalTable.Color = @UserID)。 必要時,您可以建立更複雜的查詢。

    Power BI 報表產生器的查詢編輯

產生內嵌權杖

為客戶內嵌編頁報表時,使用 Reports GenerateTokenInGroup API 取得內嵌權杖。 此權杖也可以用來從編頁報表篩選出一些資料。

您只能使用服務主體產生權杖。 您無法以主要使用者身分產生權杖。 服務主體必須至少要有 Power BI 服務中工作區的成員權限。 (如果服務主體是參與者或檢視人員,則無法產生權杖)。

若要產生權杖,請使用您要顯示的資訊來指派 username 欄位。 例如,在具有 color 參數的編頁報表中,如果您在 username 欄位輸入 green,內嵌權杖將會內嵌資料的範圍限制在只有色彩資料行中有 green 值的資料。

{
 "reports": [
 {
  "id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
 }
 ],
 "identities": [
 {
  "username": "green",
  "reports": [
  "8d57615e-cfed-4d60-bd21-7dc05727193c"
  ]
 }
 ]
}

注意

如果您在未指定 user-id 的情況下產生內嵌權杖,則會使用服務主體的 object-id

考量與限制

  • 主要使用者不支援客戶使用內嵌編頁報表。 主要使用者支援組織使用內嵌
  • 服務主體必須至少具備成員 (而非檢視人員或參與者) 的工作區權限。

產生內嵌權杖