共用方式為


授與維度資料的自訂存取權 (Analysis Services)

啟用 Cube 的讀取權限後,您可以設定額外的權限以明確允許或拒絕維度成員 (包括 Measures 維度中的量值,其中含有 Cube 中使用的所有量值) 的存取。 例如,假設指定了多個轉售商類別,您可能想要設定權限以排除特定商業類型的資料。 下圖為拒絕存取 Reseller 維度中之 Warehouse 商業類型之前與之後的效果。

具有和不含維度成員樞紐分析表的樞紐分析表

根據預設,如果您可以從 Analysis Services Cube 讀取資料,則會自動擁有與該 Cube 相關聯的所有量值和維度成員的讀取權限。 儘管這個行為對於許多案例可能已經足夠,但有時安全性需求會針對相同維度上的不同使用者來變動存取層級,藉以要求更多區段的授權策略。

您可以藉由選擇要允許 (AllowedSet) 或拒絕 (DeniedSet) 哪些成員存取,來限制存取權。 您可以選取或取消選取要在角色中包含或排除的維度成員,來完成這個動作。

基本維度安全性是最簡單的;您只需選取要在角色中包含或排除的維度屬性和屬性階層。 進階安全性較複雜,而且需要 MDX 指令碼的專業知識。 以下是這兩種方法的敘述。

必要條件

並非所有量值或維度成員均可用在自訂存取案例中。 如果某個角色禁止存取預設的量值或成員,或是該角色禁止存取的量值為量值運算式的一部分,則連線將會失敗。

檢查維度安全性的限制:預設量值、預設成員及量值運算式中使用的量值

  1. 在 SQL Server Management Studio中,以滑鼠右鍵按一下 Cube,然後選取 [將 Cube 腳本為 | ALTER To | New 查詢編輯器 Window]。

  2. 搜尋 DefaultMeasure。 您應該會在 Cube 中發現一個,在每個檢視方塊中各發現一個。 當您定義維度安全性時,請避免限制對預設量值的存取。

  3. 接著搜尋 MeasureExpression。 量值運算式是依據某項計算的量值,而計算通常還包含其他量值。 確認您要限制的量值並未使用於運算式中。 或者,當您限制存取的同時,務必也在整個 Cube 中一併排除對該量值的所有參考。

  4. 最後,搜尋 DefaultMember。 記下做為屬性預設成員的所有屬性。 設定維度安全性時,請避免對那些屬性設定限制。

基本維度安全性

  1. 在 SQL Server Management Studio中,連接到 Analysis Services 實例,展開 物件總管 中適當資料庫的[角色],然後按一下資料庫角色 (或建立新的資料庫角色) 。

    角色應該已具備 Cube 的讀取權限。 如果您需要此步驟的協助 ,請參閱授與 Cube 或模型許可權 (Analysis Services)

  2. [維度資料 | 基本]上,選取您要設定許可權的維度。

  3. 選擇屬性階層。 並非所有屬性都是可用的。 只有擁有 [AttributeHierarchyEnabled] 的屬性會出現在 [屬性階層] 清單中。

  4. 選擇要允許或拒絕存取的成員。 預設會透過 [選取全部成員] 選項來允許存取。 建議您保留這個預設值,然後清除不應透過這個角色讓 [成員資格] 窗格中的 Windows 使用者和群組帳戶看見的個別成員。 這麼做的好處在於以這個角色連線的使用者,都能夠使用後續處理作業中新增的成員。

    或者,您可以 [取消選取全部成員] 來全面撤銷存取,然後挑選要允許的成員。 在後續的處理作業中,一直到您手動編輯維度資料安全性來允許存取新成員為止,將無法看到任何新成員。

  5. 或者,按一下 [ 進階 ] 以啟用 Visual Totals 這個屬性階層。 這個選項會根據可透過這個角色使用的成員,重新計算彙總。

    注意

    在套用變更維度成員的權限時,並不會自動重新計算彙總的總計。 All假設屬性階層的成員會在套用許可權之前傳回 200 個計數。 套用拒絕存取某些成員的許可權之後, All 仍會傳回 200,即使使用者可以看到的成員值也比較少。 若要避免混淆 Cube 的取用者,您可以將成員設定 All 為只匯總角色成員的成員,而不是屬性階層中所有成員的匯總。 若要叫用此行為,您可以在設定維度安全性時,于 [進階] 索引標籤上啟用 Visual Totals 。 啟用之後,彙總會在查詢期間計算,而不是從預先計算的彙總中擷取。 這可以在查詢效能上產生顯著效果,因此只有在需要時才使用它。

隱藏量值

[授與資料格資料的自訂存取權 (Analysis Services) 中,已說明完全隱藏量值的所有視覺層面,而不只是其資料格資料,還需要維度成員的許可權。 本節說明如何拒絕存取量值的物件中繼資料。

  1. [維度資料 | 基本]上,向下捲動 [維度] 清單,直到您到達 Cube 維度為止,然後選取 [量值維度]。

  2. 從量值清單中,清除透過這個角色連接的使用者不應看見之量值的核取方塊。

注意

查看 [必要條件] 以了解如何識別可能破壞角色安全性的量值。

進階維度安全性

如果您精通 MDX,另一個方法是撰寫 MDX 運算式來設定條件以允許或拒絕成員的存取。 按一下[建立角色 | 維度資料 | 進階] 來提供腳本。

您可以使用 MDX 產生器來撰寫 MDX 陳述式。 如需詳細資訊,請參閱 MDX Builder (Analysis Services - 多維度資料) 。 [進階] 索引標籤具有下列選項:

Attribute
選取您要管理其成員安全性的屬性。

允許的成員集
AllowedSet 可以解析為沒有成員 (預設值)、全部成員或部分成員。 如果您允許屬性的存取,但未定義允許集合的成員,就會授與所有成員的存取權。 如果您允許對屬性的存取,而且有定義一組特定的屬性成員,則只有明確允許的成員會是可見的。

建立 AllowedSet,會在屬性參與多層級階層時產生漣漪效果。 例如,假設有一個角色允許存取 Washington 州 (假設已將公司的 Washington 州業務部門權限授與角色)。 對於透過這個角色連接的人員,包含上階 (United States) 或下階 (Seattle 和 Redmond) 的查詢將只會看見包含 Washington 州之鏈結中的成員。 因為並未明確允許其他州,所以效果會和拒絕它們一樣。

注意

如果您定義空集 () {} 屬性成員,資料庫角色就不會看到屬性的成員。 沒有允許的集合不會被解釋為空的集合。

拒絕的成員集
DeniedSet 屬性可以解析為沒有成員、全部成員 (預設值) 或部分屬性成員。 當拒絕的集合僅包含特定的屬性成員集合時,資料庫角色只會被拒絕存取這些特定成員以及下階 (如果屬性位於多層級階層中)。 請考量 Washington 州業務部門範例。 如果將 Washington 放在 DeniedSet 中,透過這個角色連接的人員將看見除了 Washington 及其下階屬性以外的所有其他州。

一如前文所述,拒絕的集合是固定的集合。 如果後續處理引進了也應該拒絕存取的新成員,您就需要編輯這個角色,來將這些成員新增到清單中。

預設成員
若屬性 (Attribute) 未明確包含在查詢中,則會由 DefaultMember 屬性 (Property) 決定要傳回至用戶端的資料集。 未明確包含屬性時,Analysis Services 會針對 屬性使用下列其中一個預設成員:

  • 如果資料庫角色定義屬性的預設成員,Analysis Services 會使用此預設成員。

  • 如果資料庫角色未定義屬性的預設成員,Analysis Services 會使用為屬性本身定義的預設成員。 除非您另外指定,否則屬性的預設成員就是 All 成員 (除非該屬性定義為非彙總)。

例如,假設資料庫角色指定 Male 做為 Gender 屬性的預設成員。 除非查詢同時明確包含 Gender 屬性,並指定此屬性的不同成員,否則 Analysis Services 會傳回只包含男性客戶的資料集。 如需設定預設成員的詳細資訊,請參閱 定義預設成員

啟用視覺化總計
VisualTotals 屬性會指出所顯示彙總資料格的值,是根據所有資料格值來計算,還是只根據資料庫角色所看見資料格的值來計算。

根據預設,VisualTotals 屬性會停用 (設為 False) 。 此預設設定可最大化效能,因為 Analysis Services 可以快速計算所有儲存格值的總計,而不需要花時間選取要計算的儲存格值。

不過,停用 VisualTotals 屬性會產生安全性問題,因為使用者有可能使用彙總資料格的值來推論該使用者的資料庫角色沒有存取權之屬性成員的值。 例如,Analysis Services 會使用三個屬性成員的值來計算匯總的資料格值。 資料庫角色有檢視這三個屬性成員當中兩個的存取權。 利用彙總資料格的值,此資料庫角色的成員即可推論出第三個屬性成員的值。

將 VisualTotals 屬性設定為 True 可消除此風險。 當您啟用 VisualTotals 屬性時,資料庫角色只能檢視該角色具有權限之維度成員的彙總。

檢查
按一下即可測試此頁面定義的 MDX 語法。

另請參閱

授與 Cube 或模型權限 (Analysis Services)
授與資料格資料的自訂存取權 (Analysis Services)
授與資料採礦結構和模型的權限 (Analysis Services)
授與資料來源物件的權限 (Analysis Services)