ERP

透過 XDS 在 D365 中實現更細緻的資料權限控管

企業在尋求系統解方時,最終的目標皆是單一整合,如此才能最大化提升管理效益並降低操作成本。只是單一整合的系統,往往會衍伸出權限控管的問題。

在 Microsoft Dynamics 365(D365)中,雖然已有內建權限管理的功能,不過現有系統中的權限管理只能用來管理大方向的物件。換句話說,只能用來限制使用者是否有權限使用系統中的某項功能,卻沒辦法讓使用者僅能查看到該功能中的部分資料。

比如以專案管理功能為例,現有的系統只能限制使用者有無權限使用專案管理功能,但沒辦法讓使用者僅能看到屬於自己的各別專案資料。不過有了XDS (Extensible Data Security) policies,就能完美擴展這個使用需求,讓開發人員可以透過此功能在D365中做到更細緻的權限控管

什麼是XDS?

Extensible Data Security (XDS) policies,可透過擴展安全資料策略,允許開發人員根據各別的安全性策略需求,來限制使用者對於資料表的存取權限。

這種擴展後的安全性策略裡的query運用了過濾器,讓符合過濾器條件的資料才能從受限制的表中存取。換句話說,就是可以實現讓特定使用者僅能在受限制的表中察看到特定的資料,而非所有資料。

實際應用範例:專案資料授權

在接下來的範例中,我會透過實際操作畫面,讓您了解 XDS 在 D365 中可以如何運用。

在這個示範中,我將透過 XDS 功能,限制專案管理功能中的資料,透過權限控管讓使用者僅能查看與自己相關的專案。

專案資料授權控管畫面

程式實作過程

1. 新增”專案資料授權”功能,用來設定使用者可以管控的專案。

1.1. 增加 Table:KD_ProjAccessRule,加入專案管控需要的欄位,如:使用者編號、專案代號、生效時間…等。

1.2. 增加Form:KD_ProjAccessRule,將使用者及專案資料授權表作為資料源,設計畫面及欄位。
1.3. 增加Menu Item和權限,即可在環境使用。 之後要增加XDS功能,才能真正限制使用者存取。

2. 增 XDS 限制表

2.1. 新增 Table:KD_ProjAccessRuleXdsTmp,型態為 TempDB。

2.2. 新增欄位,此次需求為專案資料限制,故增加專案 key 值 ProjId。

2.3. 新增 method:xds,將”專案資料授權”表中的資料當作依據,限制使用者對專案資料的存取。

3. 新增Query:KD_ProjAccessRuleQuery,增加資料源專案表和XDS限制表。

將專案表和 XDS 限制表用 ProjId 關聯起來,以達到限制專案存取之目的。

4. 新增 Role:KD_ProjAccessRuleConstrainedRole,做為套用 XDS 權限控管的角色,只有添加此角色的使用者才會被約束專案存取。

5. 製作安全策略

5.1. 新增 Policy:KD_ProjAccessRulePolicy,加入剛剛新增的 Query 和Role,建立角色與 XDS 限制程式的連結。

5.2. 在 Policy 裡新增需要限制的子表,將他們與專案表關聯,即可讓使用者被限制只能存取授權的專案。

實際應用(展示案例)

用我的帳號作演示,示範有無使用專案限制前的差異。
還沒加入限制存取的角色之前,我是可以看見所有專案的。

將使用者加入[專案資料授權約束角色]
目前由於沒分配給我任何專案所以空空如也
將 101A 專案授權給使用者後
就能使用到此專案了
跟專案關聯的欄位一樣也只能看到授權給我的專案

是進階顧問,也是住在家裡的媽寶