物件層級安全性
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
數據模型安全性一開始會有效實作 角色 和數據列層級篩選,以定義數據模型對象和數據的用戶許可權。 針對表格式 1400 和更新版本的模型,您也可以定義物件層級安全性 (OLS),其中包含 Roles 物件中的數據表層級安全性和數據行層級安全性。 設定時,會保護數據表和數據行數據,以及元數據,協助防止惡意用戶發現這類物件存在。
您可以使用開放原始碼 表格式編輯器、表格式模型腳本語言 (TMSL),或 表格式物件模型 (TOM)來設定 OLS。
數據表層級安全性
使用資料表層級安全性時,您不僅可以限制資料表數據的存取,還可以限制機密數據表名稱元數據的存取。 將 Roles 物件中 tablePermissions 類別的 metadataPermission 屬性設定為 none。
在此範例中,Product 數據表之 tablePermissions 類別的 metadataPermission 屬性設定為 none:
"roles": [
{
"name": "Users",
"description": "All allowed users to query the model",
"modelPermission": "read",
"tablePermissions": [
{
"name": "Product",
"metadataPermission": "none"
}
]
}
數據行層級安全性
與數據表層級安全性類似,使用數據行層級安全性,您不僅可以限制數據行數據的存取,也可以限制機密數據行名稱元數據的存取。 在 Roles 物件中,將 columnPermissions 類別的 metadataPermissions 屬性設定為 none。
在此範例中,Employees 數據表中 Base Rate 數據行之 columnPermissions 類別的 metadataPermission 属性設定為 none:
"roles": [
{
"name": "Users",
"description": "All allowed users to query the model",
"modelPermission": "read",
"tablePermissions": [
{
"name": "Employee",
"columnPermissions": [
{
"name": "Base Rate",
"metadataPermission": "none"
}
]
}
]
}
限制
如果模型中斷關聯性鏈結,則無法為模型設定數據表層級安全性。 設計時間會產生錯誤。 例如,如果數據表 A 與 B 和 B 之間有關聯性,則無法保護數據表 B。如果數據表 B 受到保護,則數據表 A 上的查詢無法傳輸數據表 A 與 B 之間的關聯性,以及 B 和 C。在此情況下,可以在數據表 A 與 C 之間設定個別關聯性。
數據列層級安全性和物件層級安全性無法與不同的角色結合,因為它可能會對受保護的數據引入非預期的存取權。 查詢時會產生錯誤給屬於這類角色組合的使用者。
動態計算(量值、KPI、DetailRows)在參考安全數據表或數據行時,會自動受到限制。 雖然沒有明確保護量值的機制,但可以藉由更新表達式來參考受保護的數據表或數據行,以隱含保護量值。
參考安全數據行工作的關聯性,前提是數據行位於的數據表 未 安全。
Power BI
參考語意模型對象的視覺效果,且已設定 OLS 的視覺效果會顯示與已刪除或非現有物件的相同訊息。
在 Power BI 視覺效果中
局限性
這些 Power BI 功能不支援為一或多個資料表或資料行物件設定 OLS 的模型:
- Q&視覺效果
- 快速深入解析視覺效果
- 智慧型敘事視覺效果
- Excel 數據類型資源庫