SSAS 安全模型核心原則
- 權限僅通過角色授予,無法直接授予用戶/組
- 角色成員必須是 Windows/AD 身份,SQL 登錄 (如 sa) 不支持
- 權限層級:服務器角色 (管理員) → 數據庫角色 → 維度/單元格數據
- UAC 開啟時,BIDS/SSDT 需「以管理員身份運行」配置才生效
安裝階段:配置 SSAS 管理員
安裝精靈「Analysis Services 配置」頁面,添加 Windows 用戶/組為管理員。此賬戶擁有所有 SSAS 數據庫、Cube、維度的完全控制權。
三大權限層級配置
1. 數據庫角色 (Database Roles)
-- SSMS 連接 SSAS 實例 → 數據庫 → 角色 → 新建角色
-- 權限頁簽:完全控制 / 讀取定義 / 讀取 / 寫入 / 管理
- 完全控制:結構修改、處理、權限管理
- 讀取定義:瀏覽元數據、不看數據
- 讀取:查詢 Cube 數據
- 寫入:回寫分區啟用時允許數據修改
2. 維度數據安全 (Dimension Data Security)
限制角色成員僅能看到特定維度成員(如:銷售區域經理只看自己區域)。
-- 角色 → 維度數據 → 選擇維度 (如 Geography)
-- 勾選「啟用」→ 選擇「允許的成員集合」或「拒絕的成員集合」
-- 使用 MDX 表達式動態過濾:
-- { [Geography].[Region].&[North] } -- 靜態集合
-- StrToSet('[Geography].[Region].[' + Username() + ']') -- 動態按登錄用戶
3. 單元格數據安全 (Cell Data Security)
細粒度控制到度量值單元格(如:薪資度量值僅 HR 角色可見)。
-- 角色 → 單元格數據 → 新建
-- MDX 表達式:[Measures].[Salary] > 0 -- 允許條件
-- 或拒絕:NOT IsMember([HR].[User].CurrentMember, [HR].[User].[Admin])
透視與部署
- 透視:為角色定義可見的 Cube 子集(隱藏敏感度量值/維度)
- 部署:SSDT 中設置 `Deployment Target`,生產環境建議腳本化部署 (XMLA)
最佳實踐檢查清單
- 安裝時正確配置 SSAS 管理員組
2. 採用「最小權限原則」創建業務角色
3. 維度安全優先用「允許集合」,避免「拒絕集合」維護地獄
4. 單元格安全慎用(性能影響大),優先考慮透視隱藏敏感度量值
5. 定期審計角色成員與權限矩陣
6. 文檔化:角色 → 權限 → 維度過濾 → 成員映射關係表
