首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 Analysis Services 多維資料集權限設定實戰

     編輯:關於SqlServer

前言:BI 專案的資料安全第一道防線

在採用 SQL Server 2005 Analysis Services (SSAS) 建構商業智慧 (BI) 方案時,資料存取控制分為兩個層面:多維資料集 (Cube) 層級與前端展現工具層級。本文以 Adventure Works 範例為背景,詳細示範如何在 Cube 內透過角色定義,實現「總經理看全球、分公司經理只看自家」的資料級安全。

業務情境與解決方案

Adventure Works Cycles 依國家/地區劃分六大分公司(澳洲、加拿大、法國、德國、英國、美國)。需求:

  • CEO 需瀏覽所有分公司銷售資料。
  • 各分公司經理僅能看見所屬分公司資料。

解決路徑:在 SSAS 專案中定義角色,於角色內設定維度資料過濾條件(透過 MDX 表達式),再將 Windows 網域/本地帳戶加入對應角色。角色定義可在開發環境 (BIDS) 中完成,部署後亦可在 SSMS 伺服器端維護。

步驟實作:以澳洲分公司經理 Jeffrey 為例

1. 建立測試帳號

在 Windows 建立標準使用者 Jeffrey,勿加入 Administrators 群組(否則自動擁有 Cube 完整存取權)。

2. 在 BIDS 中新增角色

開啟 Analysis Services 專案,於「角色」資料夾右鍵 → 「新增角色」,命名為 Australia_Manager。

3. 設定 Cube 存取權限

於「一般」頁籤:

  • 存取權限:選「讀取」。
  • 本地鑽取:勾選「鑽取」。
  • 若需處理 (Process) Cube,可依需求授與「處理」權限。

圖 1:角色一般權限設定

4. 設定維度資料安全(核心步驟)

切換至「維度資料」頁籤:

  1. 選擇 Customer 維度。
  2. 於「成員」區域,展開屬性階層至 Country-Region 層級。
  3. 僅勾選 Australia,取消其他國家/地區。
  4. 進階頁籤可撰寫 MDX 表達式進行動態過濾(如 {[Customer].[Country-Region].[Australia]})。

圖 2:選擇 Customer 維度

圖 3:限制僅可看 Australia 資料

5. 加入角色成員

切換「成員資格」頁籤 → 「加入」 → 輸入 Jeffrey → 「檢查名稱」確認解析成功。

圖 4:加入 Windows 使用者 Jeffrey

6. 部署與驗證

儲存專案 → 部署至 SSAS 伺服器。使用前端工具(如 ProClarity、Excel、Reporting Services)以 Jeffrey 身分連線,展開 Customer 維度下的 Country-Region 層級,僅顯示 Australia,達到資料隔離目標。

圖 5:前端驗證結果——僅見 Australia 資料

最佳實務提醒

  • 角色設計原則:遵循最小權限,按業務職能而非個人建立角色。
  • 動態安全:搭配 UserName()、CustomData() 等 MDX 函數,可實現單一角色動態過濾,減少角色維護數量。
  • 效能考量:維度資料安全會影響查詢計畫,大量成員過濾時建議使用「允許的成員集合」而非「拒絕的成員集合」。
  • 測試驗證:部署後務必以實際使用者帳號進行端對端測試,確認權限生效。

結語

SSAS 角色型安全模型提供直觀且強大的資料級存取控制。透過維度資料頁籤的視覺化成員選擇與 MDX 進階表達式,開發人員能快速實現複雜的業務安全需求,確保 BI 系統「人看人見、權責分明」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved