共用方式為


物件層級安全性

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

資料模型安全從有效實作 角色 與列級過濾器開始,以定義使用者對資料模型物件與資料的權限。 對於表格式 1400 及以上的模型,你也可以定義物件層級安全(OLS),其中包含角色 物件中的表格層級安全與欄級安全。 設定時,會保護數據表和數據行數據,以及元數據,協助防止惡意用戶發現這類物件存在。

OLS 可透過開源的 Tabular EditorTabular Model Scripting Language(TMSL)Tabular Object Model(TOM)來設定。

數據表層級安全性

使用資料表層級安全性時,您不僅可以限制資料表數據的存取,還可以限制機密數據表名稱元數據的存取。 在 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 類別的 metadataPermission 屬性設為 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 視覺化中的 OLS 訊息

局限性

這些 Power BI 功能不支援為一或多個資料表或資料行物件設定 OLS 的模型:

  • 問答視覺化
  • 快速深入解析視覺效果
  • 智慧型敘事視覺效果
  • Excel 數據類型資源庫

另請參閱

Roles
角色物件(TMSL)
表格模型腳本語言(TMSL)
表格物件模型(TOM)。