物件層級安全性

適用於: 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 類別的 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 和 C 之間有關聯性,則您無法保護資料表 B。如果數據表 B 受到保護,數據表 A 上的查詢就無法傳輸數據表 A 與 B 和 B 和 C 之間的關聯性。在此情況下,可以在數據表 A 與 C 之間設定個別的關聯性。

    資料表層級的安全性

  • 數據列層級安全性和物件層級安全性無法與不同的角色結合,因為它可能會對受保護的數據造成非預期的存取。 查詢時會產生錯誤給屬於這類角色組合成員的使用者。

  • 動態計算 (量值、KPI、DetailRows) 參考安全數據表或數據行時,會自動受到限制。 雖然沒有明確保護量值的機制,但可以藉由更新表達式來參考受保護的數據表或數據行,以隱含保護量值。

  • 參考安全數據行工作的關係,前提是數據行所在的數據表 並未 受到保護。

Power BI

參考語意模型對象的視覺效果,其已設定 OLS 會顯示與已刪除或不存在物件相同的訊息。

Power BI 視覺效果中的OLS訊息

限制

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

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

另請參閱

角色
Roles 物件 (TMSL)
表格式模型指令碼語言 (TMSL)
表格式物件模型 (TOM)