在採用 SQL Server 2005 Analysis Services (SSAS) 建構商業智慧 (BI) 方案時,資料存取控制分為兩個層面:多維資料集 (Cube) 層級與前端展現工具層級。本文以 Adventure Works 範例為背景,詳細示範如何在 Cube 內透過角色定義,實現「總經理看全球、分公司經理只看自家」的資料級安全。
Adventure Works Cycles 依國家/地區劃分六大分公司(澳洲、加拿大、法國、德國、英國、美國)。需求:
解決路徑:在 SSAS 專案中定義角色,於角色內設定維度資料過濾條件(透過 MDX 表達式),再將 Windows 網域/本地帳戶加入對應角色。角色定義可在開發環境 (BIDS) 中完成,部署後亦可在 SSMS 伺服器端維護。
在 Windows 建立標準使用者 Jeffrey,勿加入 Administrators 群組(否則自動擁有 Cube 完整存取權)。
開啟 Analysis Services 專案,於「角色」資料夾右鍵 → 「新增角色」,命名為 Australia_Manager。
於「一般」頁籤:

圖 1:角色一般權限設定
切換至「維度資料」頁籤:
{[Customer].[Country-Region].[Australia]})。
圖 2:選擇 Customer 維度

圖 3:限制僅可看 Australia 資料
切換「成員資格」頁籤 → 「加入」 → 輸入 Jeffrey → 「檢查名稱」確認解析成功。

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

圖 5:前端驗證結果——僅見 Australia 資料
UserName()、CustomData() 等 MDX 函數,可實現單一角色動態過濾,減少角色維護數量。SSAS 角色型安全模型提供直觀且強大的資料級存取控制。透過維度資料頁籤的視覺化成員選擇與 MDX 進階表達式,開發人員能快速實現複雜的業務安全需求,確保 BI 系統「人看人見、權責分明」。