在內嵌的編頁報表中實作資料列層級安全性
適用於: 應用程式擁有資料 使用者擁有資料
本文說明如何將使用 RLS (資料列層級安全性) 的編頁報表內嵌至您的應用程式擁有資料應用程式。
注意
本文僅適用於應用程式擁有資料的客戶。
若要使用 RLS 處理編頁報表:
必要條件
本文假設您知道如何內嵌 Power BI 編頁報表。 其中說明如何產生內嵌權杖,讓報表只顯示使用者有權存取的內容。
編頁報表是使用 SQL Server Reporting Services 引擎建立,而不是 Power BI (Analysis Services) 引擎,因此 RLS 篩選是在 Power BI Report Builder 中設定。
設定環境
若要將資料列層級安全性套用至 Power BI 編頁報表,請使用內建欄位 UserID 來指派參數。 此參數可用來篩選或查詢您的資料。
然後,將 UserID 傳遞至內嵌權杖 - 產生權杖 API 以取得內嵌權杖。
在報表或查詢層級使用 UserID 作為篩選
您可以使用 UserID 作為篩選條件或用於查詢資料來源。
篩選資料
在 [語意模型屬性] 視窗中,從左窗格中選取 [篩選]。
從 [運算式] 下拉式功能表中,選取您要用來篩選資料的參數。
選取 [值] 功能按鈕。
在 [運算式] 視窗中,從 [類別] 清單中選取 [內建欄位]。
從 [項目] 清單中選取 [UserID],然後選取 [確定]。
在 [語意模型屬性] 視窗中,確認運算式是「您選取的參數 = UserID」,然後選取 [確定]。
使用查詢
在 [語意模型屬性] 視窗中,從左側瀏覽窗格中選取 [參數],然後選取 [新增]。
在 [參數名稱] 欄位中輸入 @UserID,然後在 [參數值] 中新增 [&UserID]。
從左窗格中選取 [查詢],在 [查詢] 中新增 UserID 參數作為查詢的一部分,然後選取 [確定]。
注意
在下方的螢幕擷取畫面中,以 color 參數作為範例,WHERE FinalTable.Color = @UserID)。 必要時,您可以建立更複雜的查詢。
產生內嵌權杖
為客戶內嵌編頁報表時,使用 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。
考量與限制
- 主要使用者不支援客戶使用內嵌編頁報表。 主要使用者支援組織使用內嵌。
- 服務主體必須至少具備成員 (而非檢視人員或參與者) 的工作區權限。