分享方式:


在內嵌編頁報表中實作數據列層級安全性

適用於: 應用程式擁有數據 用戶擁有數據

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

注意

本文僅適用於應用程式擁有的數據客戶。

若要針對編頁報表使用 RLS:

  1. 設定環境 以篩選報表
  2. 篩選報表或查詢層級的數據
  3. 使用內嵌令牌傳遞已設定的參數

必要條件

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

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

設定環境

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

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

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

您可以使用 UserId 做為 篩選 ,或在數據源的 查詢 中。

篩選資料

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

    Power BI 報表產生器 篩選的螢幕快照。

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

    此螢幕快照顯示 [表達式] 選單中選取的 [色彩] 值。

  3. 選取 [ ] 函式按鈕。

    Power BI 報表產生器 值

  4. 在 [ 表達式] 視窗中,從 [類別 ] 列表中,選取 [內建字段]。

    顯示 [表達式] 視窗的螢幕快照,內建字段已選取為 [類別],並選取 [執行時間] 作為 [專案]。

  5. 從 [ 專案 ] 清單中,選取 [UserID ],然後選取 [ 確定]。

    Power BI 報表產生器 UserID

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

    Power BI 報表產生器 語意模型屬性

使用查詢

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

    Power BI 報表產生器 參數

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

    Power BI 報表產生器 參數名稱

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

    注意

    在下方的螢幕快照中,色彩參數會作為範例使用 (WHERE FinalTable.Color = @UserID)。 如有需要,您可以建立更複雜的查詢。

    Power BI 報表產生器 查詢編輯

產生內嵌令牌

當您為客戶內嵌編頁報表時,請使用 Reports GenerateTokenInGroup API 來取得內嵌令牌。 此令牌也可以用來篩選分頁報表中的一些數據。

您只能使用 服務主體產生令牌。 您無法以主要使用者身分產生令牌。 服務主體必須至少具有 Power BI 服務 中工作區的成員許可權。 (如果服務主體是參與者或查看器,則無法產生令牌。

若要 產生令牌,請使用您想要顯示的資訊來指派 username 欄位。 例如,在具有色彩參數的編頁報表中,如果您在欄位中輸入綠色,則內嵌標記會將內嵌數據限製為只有綠色作為色彩數據行值的數據username

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

注意

如果您在未指定使用者標識符的情況下產生內嵌令牌,則會使用服務主體的物件識別碼

考量與限制

  • 主使用者不支援編頁報表來 內嵌客戶。 主用戶支援為組織內嵌。
  • 服務主體必須具有至少 成員 或(而非查看器或參與者)的工作區許可權。

產生內嵌令牌